bashでコマンドを複数、連続で実行!コマンド制御について

コマンドの実行制御

Linuxでコマンドの実行方法を制御!

Linuxはユーザーのコマンド入力でコンピュータを制御します。

LinuxOSとユーザーの入力をつなげるパイプに当たるプログラムが「シェル」です。

代表的なシェルは「Bash」です。

bashの使い方Linuxのシェル Bashのコマンドと使い方

コマンド基本的には1行、1コマンドずつ実行しますが、複数同時に実行したり、一つずつ連続で実行することも可能です。

コマンドを連続して実行「;」

複数のコマンドを連続して実行したい場合があります。

一つずつ入力してEnterを押すよりも早かったり、結果が見やすかったりします。

連続実行するには「;」でコマンド同士を連結します。

実際に「pwd;ls;cd ~」を実行したのが下の画像です。

コマンドの連続実行

コマンドの連続実行

3つのコマンドが連続して実行しているのがわかります。

正常に実行された時のみ実行「&&」

コマンドを「;」で挟んだ場合は前のコマンドから順番に実行しますが、前部のコマンドがエラーで実行できなくてもすべてのコマンドが実行されます。

「&&」で挟んだ場合は前のコマンドが正常に実行されたときのみに後のコマンドが実行されます。&&は論理積「AND」の意味と同じです。

cd /etc/test && mkdir /etc/test/example

/etc/testのディレクトリに移動できた場合のみ/etc/test/exampleのディレクトリを作成するコマンド

エラーが出たときのみ実行「||」

&&とは違って前部のコマンドがエラーで実行できなかった時だけ後のコマンドを実行するコマンドです。

cd /etc/test || mkdir /etc/test

コマンドの先頭の「$」は一般ユーザーを表す

bashのコマンドラインの先頭に「$」のマークがあることがあります。これはユーザーの権限を表していて一般ユーザーを表しています。

root権限とは違って書き込みできるディレクトリが制限されたり、実行できないコマンドなどがあったりします。

たとえば「yum install ~」コマンドは一般ユーザーでは実行できません。

コマンドの先頭の「#」は管理者 rootユーザーを表す

Bashのコマンドラインの行頭にある「#」は管理者ユーザーを表しています。rootユーザーは一般ユーザーとは異なり、制限なくどんな操作も可能です。一般ユーザーからrootユーザーに変更するにはsuコマンドを使います。

バックグラウンド実行する「&」

「&」一文字は直感的な意味とは違います。「&」をコマンドの後に付けるとバックグラウンド実行します。バックグラウンド実行はプロセスは動きますが、画面には結果はでてきません。

# jobs & pstree &

と実行すると実行プロセスIDが表示されるだけで、jobsやpstreeの結果は表示されません。&はコマンドを挟むのではなく、コマンドの後につけます。

ちなみに「fg」と入力して実行すると最後にバックグラウンド実行したプロセスがフォアグラウンド実行されます。

リダイレクション

リダイレクションとはコマンドの入出力をコントロールする方法です。

  • パイプ「|」 パイプでコマンドを挟むと前のコマンドの出力を後のコマンドに入力することを意味します。よく使うのはls | grep etc
  • 「>」出力結果をファイルに上書き保存
  • 「>>」出力結果をファイルに追加保存
  • 「<」ファイルの内容を前のコマンドの入力とする cat < test.txt
  • 「<<」ヒアドキュメント

コメントを残す

メールアドレスが公開されることはありません。