SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【LPIC101】コマンドラインの基本操作 LPICで学ぶLinux⑩

複数コマンドの実行

コマンドライン上ではもちろんコマンド実行を行うのですが、特殊文字を活用することによって1行で複数コマンドを順次実行することができます。
私事ですが、実践的に複数コマンドを実行することはあまりなかったのでこれを機会に覚えます。

コマンドを順次実行する

コマンドの実行結果に関わらず、二つのコマンドを実行するには「;」を使用します。

cat test.txt ; pwd

・実行例

[wantan@localhost ~]$ cat test.txt ; pwd
合計 0
-rwxr-xr-x. 2 wantan root     0  725 02:04 hardttt.txt
drwxrwxr-x. 2 wantan wantan 177  717 22:57 rpm
-rwxr-xr-x. 2 wantan root     0  725 02:04 test.txt
lrwxrwxrwx. 1 root   root     8  77 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  725 02:04 hardttt.txt
drwxrwxr-x. 2 wantan wantan 177  717 22:57 rpm
-rwxr-xr-x. 2 wantan root     0  725 02:04 test.txt
lrwxrwxrwx. 1 root   root     8  77 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  725 02:04 hardttt.txt
drwxrwxr-x. 2 wantan wantan 177  717 22:57 rpm
-rwxr-xr-x. 2 wantan root     0  725 02:04 test.txt
lrwxrwxrwx. 1 root   root     8  77 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  725 02:04 hardttt.txt
drwxrwxr-x. 2 wantan wantan 177  717 22:57 rpm
-rwxr-xr-x. 2 wantan root     0  725 02:04 test.txt
lrwxrwxrwx. 1 root   root     8  77 00:02 ttt.txt -> test.txt

コマンド履歴は、各ユーザごとにホームディレクトリに「.bash_history」ファイルに保存されています。

[wantan@localhost ~]$ ll -a
合計 28
drwx------. 4 wantan wantan  172  725 18:26 .
drwxr-xr-x. 3 root   root     20  73 09:00 ..
-rw-------. 1 wantan wantan 1247  725 18:26 .bash_history
-rw-r--r--. 1 wantan wantan   18  41 11:17 .bash_logout
-rw-r--r--. 1 wantan wantan  193  41 11:17 .bash_profile
-rw-r--r--. 1 wantan wantan  231  41 11:17 .bashrc
コマンド履歴の検索実行

コマンド履歴は文字列から検索することも可能です。
個人的には慣れてないせいかやや使い勝手が悪い。

■指定した文字列から始まるコマンドを実行する

コマンドライン上で「![文字列]」形式の入力を行うと文字列から始まる直近のコマンドを実行します。

・実行例

[wantan@localhost ~]$ !cat
cat test.txt
合計 0
-rwxr-xr-x. 2 wantan root     0  725 02:04 hardttt.txt
drwxrwxr-x. 2 wantan wantan 177  717 22:57 rpm
-rwxr-xr-x. 2 wantan root     0  725 02:04 test.txt
lrwxrwxrwx. 1 root   root     8  77 00:02 ttt.txt -> test.txt

■指定した文字列を含むコマンドを実行する

コマンドライン上で「!?[文字列]」形式の入力を行うと文字列を含む直近のコマンドを実行します。

・実行例

[wantan@localhost ~]$ !?test
cat test.txt
合計 0
-rwxr-xr-x. 2 wantan root     0  725 02:04 hardttt.txt
drwxrwxr-x. 2 wantan wantan 177  717 22:57 rpm
-rwxr-xr-x. 2 wantan root     0  725 02:04 test.txt
lrwxrwxrwx. 1 root   root     8  77 00:02 ttt.txt -> test.txt

マニュアルの参照

Linuxではmanコマンドにより各種コマンドのマニュアルを参照することができます。
マニュアルは同一キーワードで複数のページが用意されているためにセクションという単位で用意されています。

セクション 説明
1 ユーザコマンド
2 システムコール
3 ライブラリ
4 デバイスファイル
5 設定ファイル
6 ゲーム
7 その他
8 システム管理コマンド
9 Linux独自カーネル

セクションを生ですべて覚えるのは結構きつそう。

manコマンド

一番基本的な実行方法は「man [コマンド]」形式でマニュアルの参照。

man cat

f:id:wantanBlog:20200725185700p:plain

マニュアルを参照するための検索にはキーワードの部分一致と完全一致がありオプションについては試験的には覚えておいた方がいいものに含まれると思います。

マニュアルを部分一致で検索

マニュアルを部分一致で検索するには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