シェルでコマンドを打つ際の基本的な機能
bashでコマンドを打つ際の基本的な操作のメモ。
入力
補完(コマンド・ファイル名)
- tabキー : 補完
- tabキー2回 : 候補の一覧を表示
履歴
- Ctrl + P or ↑ : 新しいものから、古いものへ
- Ctrl + N or ↓ : 古いものから、新しいものへ
インクリメンタル検索
- Ctrl + P : 開始
- Ctrl + C : 終了
パイプ
コマンドの結果を別のコマンドへ渡す。
結果が膨大で画面がスクロールしてしまう時に、lessコマンドに渡して1ページづつ確認するなど。
# ファイル一覧と行数・単語数・バイト数を表示するコマンドを連携し
# ファイル数を数える
$ ls | wc -l
# /etcディレクトリのファイル一覧をlessコマンドで1ページづつ表示
$ ls -l /etc | less
リダイレクト
コマンドの出力結果をファイルに出力する。
もしくはファイルの内容をコマンドに送る。
リダイレクト | 内容 |
---|---|
> | 出力(上書き) |
>> | 出力(追加) |
< | 入力 |
<< | 終端文字列の指定 |
# > : 上書き
$ date > today.txt
# >> : 末尾に追加
$ date >> today.txt
# < : sample.txtの中身から"Linux"を検索
$ grep "Linux" < sample.txt
# << : 入力終端文字列を指定し、複数行のファイルを作成する
$ cat << _END_ > result.txt
> test1
> test2
> _END_
$ cat result.txt
test1
test2
標準エラー出力のみをファイルへ
処理の記録からエラーメッセージだけを除外する時など。
# 通常
$ ls -l today.txt nofile.txt
ls: nofile.txt: No such file or directory
-rw-r--r-- 1 mzgk staff 96 9 6 18:23 today.txt
# エラーのみerror.txtへ
$ ls -l today.txt nofile.txt 2> error.txt
-rw-r--r-- 1 mzgk staff 96 9 6 18:23 today.txt
# error.txtの中身
$ cat error.txt
ls: nofile.txt: No such file or directory
連結
複数のコマンドを連結して使う場合。
連結 | 内容 |
---|---|
; | コマンド1の実行後、コマンド2を実行する |
& | コマンド1の完了を待たず、コマンド2を実行する |
&& | コマンド1が正常終了したなら、コマンド2を実行する |
|| | コマンド1が失敗した場合、コマンド2を実行する |
メタキャラクタ
ファイル名の指定などに利用する特殊な文字。
メタキャラクタ | 説明 |
---|---|
* | 0文字以上の任意の文字列 |
? | 任意の1文字 |
[] | []内の任意の1文字 |
# *.txt : .txt全て
$ ls *.txt
# 201?.txt : 201+1文字の.txt
$ ls 201?.txt
2016.txt 201a.txt
# 201??.txt : 201+2文字の.txt
20160.txt 201ab.txt
# [ab]*.txt : aまたはbで始まる.txt
$ ls [ab]*.txt
a1.txt a200.txt aA.txt b.txt bcd.txt
# [1-3].txt : 1〜3の範囲の.txt
$ ls [1-3].txt
1.txt 2.txt 3.txt
# *[24]*.txt : ファイル名に2か4が含まれる.txt
$ ls *[24]*.txt
2.txt a2.txt a4bc.txt