Help us understand the problem. What is going on with this article?

Linuxコマンドを連続して使うには

More than 3 years have passed since last update.

どうも、江川(egawa)くんです。

Linuxでシェルスクリプトなどを書いていると以下のような条件に遭遇することがあるので、
備忘録的に残していきたいと、おっもいま〜す。

  • 複数のコマンド実行を一行で記述したい
  • あるコマンドが問題なく実行された場合のみ、次のコマンドを実行したい
  • あるコマンドが失敗したら、次のコマンドを実行したい

更新情報

  • 2016/7/8 新規作成
  • 2016/7/8 レイアウトなど見やすく修正
  • 2016/8/18 テキストを一部修正

種類

ここで出てくるのは以下のみです。
- ; (セミコロン)
- &(アンパサント)
- &&(アンパサントアンパサント)
- |(パイプ)
- ||(パイプパイプ)

使用例

コマンド1が終了したらコマンド2を実行する(実行結果に関わらず)

コマンド1が異常終了しても、コマンド2は実行されます
使い方

コマンド1 ; コマンド2 

使用例1. 5分後にdateコマンドを実行する(普段使わないので、いい例が思いつきませんww)

# sleep 5m ; date


コマンド1を実行しつつコマンド2も実行する

バックグラウンドでコマンド1を実行しつつ、コマンド2も実行できます
使い方

コマンド1 & コマンド2

使用例1. /home/egawa/egawa.shを実行しログを出力しつつ、viegawa.txtを編集する

# sh /home/egawa/egawa.sh >> /var/log/egawa.log & vi /home/egawa/egawa.txt


コマンド1が正常終了したらコマンド2を実行する

コマンド1が正常終了したときのみ、コマンド2が実行されます
使い方

コマンド1 && コマンド2

使用例1. /home/egawaにディレクトリ移動ができたら、egawa.txtを作成する

# cd /home/egawa/ && touch egawa.txt

使用例2. ダウンロードしてきたtar.gzを解凍後、ディレクトリへ移動

# tar zxf xxx-2.x.tar.gz && cd xxx-2.x

使用例3. 何かのパッケージをソースからインストールする

# ./configure && make && make install


コマンド1の結果をコマンド2に渡して実行

コマンド1の結果をコマンド2へ渡して結果を出力します
使い方

コマンド1 | コマンド2

使用例1. ps auxで実行中のプロセスを出力し(ターミナルには出力されない)、その中からキーワードhttpdにマッチする行を出力する

# ps aux | grep httpd


コマンド1が異常終了したらコマンド2が実行される

コマンド1が異常終了したときのみ、コマンド2が実行されます
使い方

コマンド1 || コマンド2

使用例1. /home/egawa/abcにディレクトリ移動ができなかったら、/home/egawa/abcディレクトリを作成する
(使用例だと、ディレクトリがなかった場合エラーが出力されるが、その結果としてディレクトリが作成される)

# cd /home/egawa/abc || mkdir /home/egawa/abc


egawa_kun
投稿は筆者の個人的な見解であり、所属する団体やほにゃらら〜とか公式なあれじゃありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした