複数コマンドの実行
コマンドライン上ではもちろんコマンド実行を行うのですが、特殊文字を活用することによって1行で複数コマンドを順次実行することができます。
私事ですが、実践的に複数コマンドを実行することはあまりなかったのでこれを機会に覚えます。
コマンドを順次実行する
コマンドの実行結果に関わらず、二つのコマンドを実行するには「;」を使用します。
cat test.txt ; pwd
・実行例
[wantan@localhost ~]$ cat test.txt ; pwd 合計 0 -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 hardttt.txt drwxrwxr-x. 2 wantan wantan 177 7月 17 22:57 rpm -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 test.txt lrwxrwxrwx. 1 root root 8 7月 7 00:02 ttt.txt -> test.txt /home/wantan
二つのコマンドの実行結果が表示されていることがわかります。
ちなみに1個目のコマンドが異常終了した場合でも以下のように2個目のコマンドが実行されていることがわかります。
・実行例
[wantan@localhost ~]$ cat test2.txt ; pwd cat: test2.txt: そのようなファイルやディレクトリはありません /home/wantan
正常終了した場合に次のコマンドを実行
最初のコマンドの実行結果が正常終了の場合のみ、次のコマンドを実行するには「&&」。
cat test.txt && pwd
・実行例
[wantan@localhost ~]$ cat test.txt && pwd 合計 0 -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 hardttt.txt drwxrwxr-x. 2 wantan wantan 177 7月 17 22:57 rpm -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 test.txt lrwxrwxrwx. 1 root root 8 7月 7 00:02 ttt.txt -> test.txt /home/wantan
上記だけでは「;」との違いが分かりにくいですが、1個目のコマンドが異常終了すると違いがわかります。
・実行例
[wantan@localhost ~]$ cat test2.txt && pwd cat: test2.txt: そのようなファイルやディレクトリはありません
コマンドが異常終了した場合に次のコマンドを実行
前のコマンドが異常終了した場合に次のコマンドを実行するには「||」を使用します。
cat test.txt || pwd
・実行例
[wantan@localhost ~]$ cat test.txt || pwd 合計 0 -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 hardttt.txt drwxrwxr-x. 2 wantan wantan 177 7月 17 22:57 rpm -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 test.txt lrwxrwxrwx. 1 root root 8 7月 7 00:02 ttt.txt -> test.txt
前のコマンドが実行された場合には2つ目の「pwd」コマンドが実行されていないことがわかります。
・実行例
[wantan@localhost ~]$ cat test2.txt || pwd cat: test2.txt: そのようなファイルやディレクトリはありません /home/wantan
前のコマンドが異常終了した場合には次のコマンドが実行されていることがわかります。
「&&」はAND演算子と考えればよく、「 || 」はOR演算子と考えれば一個目のコマンドが正常終了した時点で打ち切られるというのも理解できます。
引用符
Linuxにおける引用符は内部を文字列として認識するためのものですが、種類によって内部の変数やコマンドに関する扱いが変わってきます。
実践的にも重要ですが、試験的にも確実抑えておくべきところだと思います。
ダブルクォーテーション(”)
ダブルクォーテーション(”)は内部を文字列として扱います。
その特徴としては、内部に変数が存在する場合には変数の中身が表示されます。
いくつかの実行例を見ていきます。
・実行例
[wantan@localhost ~]$ echo "これはテストです。" これはテストです
変数はその中身が表示されます。
[wantan@localhost ~]$ echo "カレントディレクトリは$PWD" カレントディレクトリは/home/wantan
コマンドは実行されず、そのまま表示されます。
[wantan@localhost ~]$ echo "カレントディレクトリはpwd" カレントディレクトリはpwd
シングルクォーテーション(’)
シングルクォーテーション(')は内部を文字列として扱います。
その特徴としては、その中身は完全に文字列として表示されます。
・実行例
[wantan@localhost ~]$ echo 'これはテストです。' これはテストです。
変数はそのまま文字列として表示されます。
[wantan@localhost ~]$ echo 'カレントディレクトリは$PWD' カレントディレクトリは$PWD
コマンドもそのまま文字列として表示されます。
[wantan@localhost ~]$ echo 'カレントディレクトリはpwd' カレントディレクトリはpwd
バッククォーテーション(‘)
バッククォーテーション(‘)は内部をコマンドとして扱います。
その特徴としては、変数はその中身が表示され、コマンドはコマンドとして実行されます。
・実行例
文字列もコマンドとみなされます。
[wantan@localhost ~]$ echo `これはテストです。` -bash: これはテストです。: コマンドが見つかりません
変数はその中身が参照され、コマンドとして実行されます。
[wantan@localhost ~]$ echo `$PWD` -bash: /home/wantan: ディレクトリです
コマンドはそのまま実行されます。
[wantan@localhost ~]$ echo `pwd` /home/wantan
そのままだとあまり活用方法が思い当たりませんが、他の引用符と組み合わせることで部分的にコマンド実行を行うことができます。
[wantan@localhost ~]$ echo "カレントディレクトリは`pwd`" カレントディレクトリは/home/wantan
コマンド履歴
Linuxでは過去に使用したコマンドを再度実行する際にコマンド履歴を参照することができます。
一番簡単なもので言うとコマンドライン上で入力する「↑」とか「↓」を入力して過去のコマンドを参照するものです。
「↑」キーを入力すると直前に実行したコマンドを呼び出すことができます。
historyコマンド
コマンド履歴はhistoryコマンドを実行することで、一覧で表示することができます。
[wantan@localhost ~]$ history 1 ll 2 nmcli d 3 ip addr 4 ll 5 ifconfig 6 ifcfg 7 ll 8 cd /etc/ 9 ll 10 ls <・・・省略・・・>
また、コマンド履歴を参照し、「![履歴番号]」形式で入力することで履歴番号でコマンドを再度実行することもできます。
90 ll 91 cat test.txt 92 history 93 top 94 history [wantan@localhost ~]$ !91 cat test.txt 合計 0 -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 hardttt.txt drwxrwxr-x. 2 wantan wantan 177 7月 17 22:57 rpm -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 test.txt lrwxrwxrwx. 1 root root 8 7月 7 00:02 ttt.txt -> test.txt
コマンド履歴は、各ユーザごとにホームディレクトリに「.bash_history」ファイルに保存されています。
[wantan@localhost ~]$ ll -a 合計 28 drwx------. 4 wantan wantan 172 7月 25 18:26 . drwxr-xr-x. 3 root root 20 7月 3 09:00 .. -rw-------. 1 wantan wantan 1247 7月 25 18:26 .bash_history -rw-r--r--. 1 wantan wantan 18 4月 1 11:17 .bash_logout -rw-r--r--. 1 wantan wantan 193 4月 1 11:17 .bash_profile -rw-r--r--. 1 wantan wantan 231 4月 1 11:17 .bashrc
コマンド履歴の検索実行
コマンド履歴は文字列から検索することも可能です。
個人的には慣れてないせいかやや使い勝手が悪い。
■指定した文字列から始まるコマンドを実行する
コマンドライン上で「![文字列]」形式の入力を行うと文字列から始まる直近のコマンドを実行します。
・実行例
[wantan@localhost ~]$ !cat cat test.txt 合計 0 -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 hardttt.txt drwxrwxr-x. 2 wantan wantan 177 7月 17 22:57 rpm -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 test.txt lrwxrwxrwx. 1 root root 8 7月 7 00:02 ttt.txt -> test.txt
■指定した文字列を含むコマンドを実行する
コマンドライン上で「!?[文字列]」形式の入力を行うと文字列を含む直近のコマンドを実行します。
・実行例
[wantan@localhost ~]$ !?test cat test.txt 合計 0 -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 hardttt.txt drwxrwxr-x. 2 wantan wantan 177 7月 17 22:57 rpm -rwxr-xr-x. 2 wantan root 0 7月 25 02:04 test.txt lrwxrwxrwx. 1 root root 8 7月 7 00:02 ttt.txt -> test.txt
マニュアルの参照
Linuxではmanコマンドにより各種コマンドのマニュアルを参照することができます。
マニュアルは同一キーワードで複数のページが用意されているためにセクションという単位で用意されています。
セクション | 説明 |
---|---|
1 | ユーザコマンド |
2 | システムコール |
3 | ライブラリ |
4 | デバイスファイル |
5 | 設定ファイル |
6 | ゲーム |
7 | その他 |
8 | システム管理コマンド |
9 | Linux独自カーネル |
セクションを生ですべて覚えるのは結構きつそう。
manコマンド
一番基本的な実行方法は「man [コマンド]」形式でマニュアルの参照。
man cat
マニュアルを参照するための検索にはキーワードの部分一致と完全一致がありオプションについては試験的には覚えておいた方がいいものに含まれると思います。
マニュアルを部分一致で検索
マニュアルを部分一致で検索するには2種の方法があります。試験的にはセットで覚えておいた方がいいでしょう。
・manコマンドのオプション
[wantan@localhost ~]$ man -k cat catman (8) - 整形済みマニュアルページを作成、更新... PAM (8) - Pluggable Authentication Modules for Linux <・・省略・・>
・aproposコマンド
[wantan@localhost ~]$ apropos cat catman (8) - 整形済みマニュアルページを作成、更新... PAM (8) - Pluggable Authentication Modules for Linux <・・省略・・>
マニュアルを完全一致で検索
完全一致で検索する場合にも部分一致と同様に同じ使用感の2種のコマンドが用意されています。
・manコマンドのオプション
[wantan@localhost ~]$ man -f cat cat (1) - concatenate files and print on the standard output
・whatisコマンド
[wantan@localhost ~]$ whatis cat cat (1) - concatenate files and print on the standard output
ーーーーーーーーーーーーーー
・前回(第九回)
www.wantanblog.com
・次回(第十一回)
www.wantanblog.com