Linuxを使いこなすためには、様々なコマンドを理解して使えるようになることが大切です。しかし、一つひとつのコマンドが完了するまで待ってから実行していると、時間がかかることがありますよね。そんな時は、複数のコマンドを連続で実行する方法を使うと便利です。
この記事では、状況にあわせて使い分けることができる、3通りの「複数のコマンドを一度にまとめて実行する方法」を紹介します。
1. セミコロン(;)を使う
一番簡単な方法は、コマンドをセミコロン(;)で区切って一度に入力することです。これにより、左から順にコマンドが実行されます。
command1 ; command2 ; command3
この方法は、前のコマンドが成功したかどうかに関係なく、全てのコマンドが実行されます。
以下の例は、「python test1.py」を実行後、「sleep 60」で60秒間停止した後、「python test2.py」を実行します。
python test1.py; sleep 60; python test2.py
2. アンパサンド(&&)を使う
アンパサンド(&&)を使うと、前のコマンドが成功した場合のみ、次のコマンドが実行されます。
command1 && command2 && command3
この方法は、前のコマンドの生成したファイルを後のコマンドが利用する場合など、途中でエラーが出た場合に次のコマンドを実行したくない時に便利です。
以下の例は、gccコマンドでprogram.cをコンパイルして実行ファイルprogramを生成し、それが成功したときのみprogramを実行します。
gcc program.c -o program && ./program
3. パイプライン(|)を使う
パイプライン(|)は、前のコマンドの出力を次のコマンドの入力として使います。これにより、複数のコマンドを連鎖させて複雑な操作を行うことができます。
command1 | command2 | command3
この方法は、コマンドの出力を加工したり、絞り込んだりする際に便利です。
以下は、dmesgコマンドの出力から、大文字・小文字を無視して「error」という文字列を抽出し、lessでページ送りしながら確認する、という例です。
dmesg | grep -i "error" | less
まとめ
Linuxでは、コマンドを組み合わせて使うことで、より高度な操作を行うことができます。この記事で紹介した、複数のコマンドを一度に実行する3つの方法は、その基本となるものです。
今回紹介した方法以外にも、シェルスクリプトを作成して複数のコマンドをまとめて実行する方法などもあります。Linuxのコマンド実行に慣れてきて、さらに複雑な処理を自動的に行いたくなったら、チャレンジしてみるといいでしょう。
sudoを使って特権ユーザーとして複数のコマンドを実行したい場合、以下のようにすべてのコマンドにsudoを書くのは面倒です。
sudo apt update && sudo apt -y upgrade && sudo apt -y autoremove
面倒なだけでなく、途中のコマンドの実行に時間がかかりすぎると、再認証のためのパスワード入力待ちとなり、停止してしまう場合もあります。そのため、sudoで複数のコマンドを連続実行したい場合は、以下のように「sudo sh -c」を使うのがお勧めです。
sudo sh -c 'apt update && apt -y upgrade && apt -y autoremove'
これにより、”で囲って書いたコマンドが、特権ユーザーとして実行されたシェル内で実行されます。
コメント