テクノロジー

2022年8月4日

シェルの便利な機能とは

ゴール

  • シェルの簡単なコマンドを操作できるようになる

標準入力/標準出力とは

シェルの便利な機能を説明する前に、標準入力/標準出力について説明します。

ユーザが入力するコマンドは1つのプログラムと言われており、プログラムには1つの入り口と2つの出口があります。
それぞれ、入り口は標準入力、出口は標準出力と標準エラー出力といいます。

名称 意味 備考
標準入力 プログラムにデータを入れるもの キーボード
標準出力 プログラムの実行結果を書き出す先 端末のディスプレイ
標準エラー プログラムの実行エラーを書き出す先 端末のディスプレイ

例として、lsコマンドを打ったときにカレントディレクトリとファイルの一覧が画面に表示されます。
コマンドを実行した結果が画面に表示されることを「標準出力に出力される」と表現します。

シェルの便利な機能に触れてみる

ショートカットキー(tabキー)

tabキーを使うと、文字の入力を省く補完機能が利用できます。

実際に試してみましょう。
ホームディレクトリの下に、ディレクトリを2つ作成します。

$ mkdir document/
$ mkdir download/
$ ls
document  download

cdコマンドを使って、documentディレクトリに移動しましょう。
このとき、コマンドの入力途中でtabキーを押します。

1.補完候補が1つのとき

コマンドをcd docuまで入力したらtabキーを押します。

$ cd docu

tabキーを押すと、候補の文字が表示されます。

$ cd document/

2.補完候補が複数存在するとき

コマンドをcd doまで入力したらtabキーを押します。

$ cd do

tabキーを押すと補完候補が表示されます。

$ cd do
document/   download/     

ショートカットキー(上下矢印キー)

上下矢印キーを使うと、前に入力したコマンドをもう一度表示できます。

まず、lsコマンドを実行します。

$ ls
document/   download/ 

ここで上矢印キーを押すと、先ほど実行したlsが表示されます。

$ ls

このまま上矢印キーを押し続けると、前に入力したコマンドが切り替わりながら表示されます。
その後下矢印キーを押すと、上矢印で遡りながら切り替わったコマンドが戻りつつ表示されます。

historyコマンド

コマンド入力の履歴(ヒストリー)を表示します。
historyコマンドを使うと、入力履歴を番号付きで一覧表示し、コマンドの再実行を助けます。

実際に実行してみましょう。

$ history

1 pwd
2 ls

# 省略

50 cd Documents/

パイプ

コマンドの標準出力を次のコマンドに渡します。
処理と処理の間に縦線の記号 | (通称パイプ)を使うため、コマンド1 | コマンド2のように記載することで、コマンド1の実行結果をコマンド2に渡すことができます。

実際に実行してみましょう。
ファイルやディレクトリの一覧の中から、”do”の文字が含まれるものを抽出します。

$ ls | grep do
document
download

リダイレクト

他の入出力に切り替えることをいいます。
ディスク上のファイルに出力したり、ファイルから入力を受け取ります。
出力をリダイレクトするには > を、入力をリダイレクトする場合は < を使います。

実際に実行してみましょう。
ファイルやディレクトリの一覧を表示し、表示した内容をls-outputファイルに書き出します。

$ ls > ls-output

こうすることで、ls-outputというファイルが自動的に作成されます。
ls-outputファイルの中身を見てみましょう。

$ cat ls-output
document
download

# 省略

この表示結果はテキスト通りでなくても問題ありません

なお、>> は、ファイルへの追記になります。

$ echo "hello" >> hello.txt

echoコマンドのはたらきについては、ご自分で調べてみてください

上記のコマンドを実行すると、hello.txtファイルに”hello”という文字が追記されます。
なお、hello.txtというファイルが存在しなければ、実行と同時に作成されます。

シェルスクリプトとは

コマンドをまとめて実行できるように、ドキュメントにしたものを示します。
複数のコマンドを並べて制御し、作業を自動化するための手段です。

実際にシェルスクリプト用のファイルを作ってみましょう。

$ touch shell_test.sh

シェルスクリプトファイルの拡張子は.shです。
エディタを使って、shell_test.shファイルに以下の3行を加えて保存します。

[shell_test.sh]

echo "今の時間は"
date
echo "です"

最後に、シェルスクリプトファイルを実行します。

$ zsh shell_test.sh
今の時間は
2020年 10月 10日 土曜日 16時08分53秒 JST
です

現在の日付や時間が表示されるはずです。
ここでは簡単な文章の表示を試しましたが、実務ではさらに複雑な処理をまとめて活用します。

まとめ

  • シェルのコマンド操作は、ショートカットキーや特定コマンドをを使うことで作業効率がアップする。
  • シェルスクリプトは、コマンドをまとめて処理するための便利な手段である。

この記事の続きは、こちらの「1週間の無料お試しを開始する」から学習できます!

DIVE INTO CODEのことをもっと知ってみませんか?