#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)