複数のコマンドを連続して実行する

はじめに

コマンドを連続して実行する方法が意外と多かったため備忘録、知識として記載。

種類

・;(セミコロン)

コマンド1が正常、異常関係なく終了したらコマンド2を実行する。

よくcdコマンドでディレクトリを移動する際に使用されているのが見られる。

$ cd パス;pwd

pwdコマンドは現在の作業ディレクトリを表示するコマンド。

上記のように使用される理由としては、cdコマンドだけではディレクトリに移動出来たか視覚的に分かりづらいため(人による)、pwdコマンドを付与して視覚的に分かりやすいようにしている。

・&(アンパサンド)

コマンド1とコマンド2を並行で実行する。

使用例は人にもよるとは思うが、自分はツール実行とログ監視を同時に実施する際に使用したり、コマンド実行後の標準出力が多い場合などに使用する。

$ ツール名 & tail -f ログファイル

※tailコマンドはファイルの最後の行を表示するコマンド。-fオプションを付与することによりファイルの追記を監視できる。

・&&(アンド)

コマンド1が正常に終了した場合のみコマンド2を実行する。

自分が使用したことがあるものはfindコマンドでファイルを検索し、検索出来た場合削除するという使用方法。

$ find 検索先 -name ファイル名 && rm -rf ファイル名

※findコマンドはファイルやディレクトリを検索するコマンド。-nameオプションを付与することによりファイル名を指定して検索できる。

・|(パイプ)

コマンド1の結果をコマンド2へ渡して結果を出力する。

多分この|(パイプ)が一番使用されていると思う。

使用例としてはpsコマンドで動作しているプロセスを確認し、その結果をgrepコマンドで特定のものだけ抽出する。

$ ps -aux |grep 検索文字列

※psコマンドは上記に記載している通り動作しているプロセスを確認するコマンド。-auxオプション(それぞれ-a、-u、-xと別々)を付与することにより全プロセスをかくにんできる。

grepコマンドはファイルの文字列に対して検索し表示するコマンド。ファイルを指定しなかった場合は、標準出力から読み込み検索する。

・||(オア)

コマンド1が異常終了した場合のみコマンド2を実行する。

||を使用したことがないため例を調べてみると、cdコマンドを実行し移動先のディレクトリが存在しなかった場合mkdirコマンドでディレクトリを作成するという使用方法があった。

$ cd パス || mkdir ディレクトリ名

参考にさせていただいたサイト

https://armadillo.atmark-techno.com/blog/8700/3722