#author("2018-04-17T08:51:38+09:00","","")
#navi(../)
* bashのちょっと便利な使い方 [#i11b5d12]
bash(シェル)で操作をしている時に、こんな時、こんなふうに使うと便利だよ!というTipsを以下に記します。

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 以前いたディレクトリに戻る [#b71f63ae]
cdコマンドでディレクトリ移動したあと、以前のディレクトリに戻りたい場合、以下のコマンドで簡単に戻ることができます。
 cd -
cdコマンドのオプションに-(ハイフン)のみ指定しEnterキーを押します。

以下、実行例です。
 sakura@stream:~$ cd /etc/
 sakura@stream:/etc$ cd /var/log/postgresql/
 sakura@stream:/var/log/postgresql$ cd -
 /etc
 sakura@stream:/etc$ pwd
 /etc
/etcに移動したあと、/var/log/postgres/に移動し、cd - コマンドを実行することにより、~
/etcに戻ってきたのが確認できます。

* ホームディレクトリに移動する [#v8f7fb26]
自分のホームディレクトリに移動する場合は、以下のコマンドで簡単に戻ることができます。
 cd ~
または
 cd $HOME
チルダ(~)は自分のホームディレクトリを示しているので、cdコマンドの移動先に~を指定すると~
ホームディレクトリに移動できます。~
また、$HOMEには、ホームディレクトリの文字列が環境変数として格納されているので、~
$HOMEを移動先のディレクトリに指定すると、$HOMEに設定されている文字列が展開され、ホームディレクトリに移動できます。

以下、実行例です。
 sakura@stream:~$ cd /etc/
 sakura@stream:/etc$ echo $HOME
 /home/sakura
 sakura@stream:/etc$ cd $HOME
 sakura@stream:~$ cd /var
 sakura@stream:/var$ cd ~
 sakura@stream:~$ pwd
 /home/sakura
 sakura@stream:~$ 

* 過去のコマンドを再度実行する(historyを使用) [#bb2708e6]
過去に実行したコマンドを再実行したい場合は、historyコマンドを実行し出力された番号を!を付けて実行すれば、~
再実行することができます。~

sakura@stream11 ~
 $ history | grep ssh | tail -10
   321  ssh sakura@192.168.1.32
   322  ssh sakura@192.168.1.38
   323  ssh sakura@192.168.1.38
   324  ssh sakura@192.168.1.38
   325  ssh sakura@192.168.1.83
   342  ssh sakura@192.168.1.83
   358  ssh sakura@192.168.1.83
上記のように左側に番号が表示されます。~
以下のように番号の先頭に!を付けることにより、指定した番号のコマンドを再実行することができます。
 !番号
例えば上記で表示された358番を実行したい場合は、
 !358
となります。

* Ctrl+rでコマンド再実行 [#ub6017ab]
直近のコマンドを検索し実行するには、Ctrl+rを使用します。~
以下の操作になります。
+ Ctrl+r を押下すると以下のように表示されます。(キャンセルする場合は、ESCキーを押してください。)
 sakura@stream11 ~
 (reverse-i-search)`':

+ 再実行したいコマンドのキーワードを入力~
以下の例では、キーワードにsshと入力した時の出力です。
 sakura@stream11 ~
 (reverse-i-search)`ssh': history | grep ssh | tail -10
+ESCキーを押すとコマンドは実行されず、キーワードで検索されたコマンドが表示されます。~
Enterキーを押すと、検索されたキーワードが実行されます。~
(間違ってコマンドを実行すると事故になるかもしれませんので、ESCキーを押して確認後、Enterキーを押すことをお勧めします。)~
キャンセルする場合は、Ctrl+cを押してください。

尚、上記のようにsshで接続したいのに、直近のsshコマンドが表示されない場合、ホスト名やIPアドレスを入力してみるのもよいのかもしれません。~
以下は、83と入力したときの出力です。
 sakura@stream11 ~
 (reverse-i-search)`83': ssh sakura@192.168.1.83

* 日付のディレクトリを作成したい・ファイル名に日付に付与したい [#z54341bb]
dateコマンドのオプションを使うことにより、簡単に実現することができます。~
コマンドは以下の構文になります。
 `date +%Y%m%d`

** ファイル名に現在日付を付与する [#f69beff3]
ファイル名の後部に日付を付けた例を以下に記します。
 sakura@stream11 ~
 $ echo HELLO > hello_`date +%Y%m%d`
 
 sakura@stream11 ~
 $ cat hello_20180417
 HELLO

** 現在日付のディレクトリを作成する [#f390a449]
現在日付のディレクトリを作成する例を以下に記します。
 sakura@stream11 ~
 $ mkdir `date +%Y%m%d`
 
 sakura@stream11 ~
 $ ls -F | grep /
 20180417/


以上、bashシェルのちょっと便利な使い方でした。

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS