初級レベルでよく使うUNIXコマンド

「よく使う」の定義は、どのような作業をするかによって異なりますが、一般的によく使う(覚えておくべき)と思われるコマンドをまとめておきます。コマンドオプション等、代表的な使い方のみを記載していますので、他にどのような使い方があるかは各自で研究してみてください。

カレントディレクトリの移動・確認

カレントディレクトリ current directory = 作業中のディレクトリ、現在いる場所

cd
カレントディレクトリを移動する Change Directory
cd [パス名] で指定したディレクトリに移動。ディレクトリ名の指定は絶対パスでも相対パスでもよい。
cd のみの場合はホームディレクトリに移動する。

pwd
カレントディレクトリを表示する Print Working Directory

pushd, popd
カレントディレクトリを覚えておいて、指定したディレクトリに移動する。覚えておいた1段階前のディレクトリに戻るにはpopdを使う。
pushd [パス名]
popd

ファイル・ディレクトリ操作

ls
ファイル・ディレクトリ一覧の表示 LiSt
ls [ディレクトリ名]で、指定したディレクトリの一覧を表示する。
ls のみの場合はカレントディレクトリの一覧を表示する。

代表的なオプション:
-a 隠しファイル(.で始まる名前のファイル)も表示する
-l 詳細情報も表示する
-F ファイルの種類を表す記号を付けて表示する。ディレクトリには/、実行可能ファイルには*が付く。
-R サブディレクトリの一覧も表示する。

mv
ファイルの移動およびファイル名の変更 MoVe
mv [元のファイル名] [変更後のファイル名] ファイル名を変更する
mv [元のファイル名] [移動後のディレクトリ名] 指定したディレクトリにファイルを移動する

名前の変更かディレクトリの移動かは2つめの引数がファイル名かディレクトリ名かで変わるので注意。間違えないように、ディレクトリ名を指定するときは/を最後に付けるようにするとよい。

変更後のファイル名と同じ名前のファイルが既に存在する場合は上書きする(つまり、既にあったファイルは消えてしまう)ので注意。-nオプションを付けると上書きしないように防止できる。-iオプションを付けると上書きして良いか尋ねてくる。

cp
ファイルの複製 CoPy
cp [元のファイル名] [複製先のファイル名]

複製先のファイル名と同じ名前のファイルが既に存在する場合は上書きする(つまり、既にあったファイルは消えてしまう)ので注意。-nオプションを付けると上書きしないように防止できる。-iオプションを付けると上書きして良いか尋ねてくる。

代表的なオプション:
-R サブディレクトリも含めてディレクトリごとコピーする。この場合、元のファイル名にはディレクトリ名を指定する。

rm
ファイルの削除 ReMove
rm [ファイル名]

代表的なオプション:
-R または -r サブディレクトリも含めてディレクトリごと削除する。この場合、ファイル名ではなくディレクトリ名を指定する。

注意!! rmコマンドで一旦削除したファイルは復活させることはできない。

mkdir
ディレクトリの作成 MaKeDIRectory
mkdir [ディレクトリ名]

指定したディレクトリ名と同じ名前のディレクトリやファイルが既に存在するとエラーになる(File existsと表示される)。

rmdir
ディレクトリの削除 ReMoveDIRectory
rmdir [ディレクトリ名]

指定したディレクトリ内に、隠しファイルも含めてファイルが無い状態でないと削除されない。OSXのファインダで表示させると自動的に.DS_Storeという表示状態を記録している隠しファイルが作られることに注意。

ファイルの内容確認

file
ファイルの種類を表示する
file [ファイル名]

cat
ファイルの内容を表示する CATenate(「連結する」という意味)
cat [ファイル名]

代表的なオプション:
-n 行番号を付けて表示する

リダイレクトやパイプラインを使うことで複数のファイルを結合したり別のコマンドの入力データとして使うことができる。
例:
cat file1 file2 > file3 (file1とfile2をつないだ内容をfile3に保存する)
cat file1 | sort (file1の内容を辞書順に並び替えて表示する)

注意!! ファイルがバイナリデータ(文字でないデータ)であったり、ターミナルの文字コードとファイルの文字コードが一致しない場合は文字化けして表示される。

more (あるいはless、macOSでは実質的に同じようである)
ファイルの内容を表示する。ページ単位で表示が止まり、次ページ送りや逆戻しができる。
more [ファイル名]

表示時の操作:
space、f、control+vなど 次ページに切り替える
return、j、control+nなど 1行進める
k、control+pなど 1行戻る
u、control+u 半ページ戻る
q moreを終了する
他にも山ほどあるが必要に応じて覚えていけばよい

head
ファイルの先頭だけ表示する(オプション省略時は10行)
head [ファイル名]

代表的なオプション:
-n [行数] 表示する行数を指定する。例:head -n 5 file1
nの代わりに直接行数を指定できるようである。例:head -5 file1

tail
ファイルの末尾だけ表示する(オプション省略時は10行)
tail [ファイル名]

代表的なオプション:
-n [行数] 表示する行数を指定する。例:tail -n 5 file1
nの代わりに直接行数を指定できるようである。例:tail -5 file1

diff
ファイルの違いを表示する DIFFerence
diff file1 file2

表示結果の見方は各自で研究すべし。

grep
指定した文字列(パタン)を探して表示する
grep [パタン] [ファイル名]
パタンには文字列(""で囲んでおくと無難)以外に、正規表現で表される文字列パタンを指定できる。正規表現についてはここでは省略。

sort
行単位で並べ替える(辞書順)
sort [ファイル名]

代表的なオプション
-r 辞書の逆順に並び替える

ファイル検索

find
ファイルを探す。多様な使い方(探したファイルに対する処理の指定など)ができるが、複雑なので省略。
代表的な使い方としては、
find [探索対象となるパス名] -name [ファイル名] -print
で指定したファイル名の絶対パスが表示される。
例:find ~ -name hoge.txt -print (ホームディレクトリ以下でhoge.txtを探す)
ファイル名にはワイルドカードを指定できる。使う場合はシェルがワイルドカード文字を先に解釈してしまわないように、""で囲む。
例:find ~ -name "hoge*.txt" -print

ファイルが沢山あると時間がかかるので注意。

which
実行可能なファイルが存在する場所を表示する。コマンドの探索パスのみを対象とするので、何かコマンド名を与えてみてそのコマンドが使えるかどうかを判断するのに使える(無い場合は何も表示されない)。
which [コマンド名]

ファイルを開く

open
ファイルを「開く」。Finder上でファイルをダブルクリックすると、アプリケーションやプログラムなら起動するし、通常のファイルならば対応するアプリケーションが起動してそのファイルを開く。これと同じ事ができるのがopenコマンドである。引数には開くファイルを指定する。
例:open hoge.pdf(hoge.pdfというファイルを開く。「プレビュー」アプリが起動してhoge.pdfを表示する)
-aオプションを使うと開くアプリケーションを指定できる。
例:
open -a Emacs.app hello.c(hello.cをEmacsで開く)
open . (カレントディレクトリーをFinderのウィンドウで表示する)

macOS特有のコマンド。openを使えばターミナルで作業しているときにいちいちFinderに切り替える必要が無くなるので便利。

シェルの機能

以下はコマンドではないが、シェルが提供してくれる便利な機能を紹介する。

ワイルドカード文字

ファイル名を指定する際には、ファイル名のパタンを与えて当てはまる複数のファイルを一度に処理させることができる。よく使うのがワイルドカード文字の?と*。

ワイルドカードとはポーカーなどのトランプゲームのルールで、好きなカードに解釈してよいというカードの名称。Jokerや2などがワイルドカードとしてよく使われる。

? 任意の1文字
例:foo??.txt → foo01.txt, foo02.txt, fooaa.txtなどが相当。
fool.txtは当てはまらないことに注意。

* 0文字以上の任意の文字列
例:foo* → foo01.txt, foo02.txt, fooaa.txt, fool.txtなどが相当。
0文字以上、というのは無くてもよいという意味。

?と*を組み合わせて使うこともできる。
例:foo??.* → foo01.txt, foo02.htmlなどが相当。

使用例:
    ls *.c (拡張子が.cであるファイルのみを表示)
    rm *~ (ファイル名の最後に~が付いているものをすべて削除)
rmで不要なファイルを一括削除する前に、指定したファイル名が意図したものになっているか lsで確認するようにしよう。うっかりrm *なんてやると目も当てられない。

より複雑なパタンを指定する正規表現も使えるが、高度な内容なのでここでは省略する。

ファイル名補完

ファイル名やディレクトリ名をある程度入力した状態でTabキーを押すと、一致する名前の残りの部分を自動的に入力してくれる。複数のファイルやディレクトリが一致する場合は、それらが異なる部分まで入力してくれる。実際にどうなるのかは試してみるのが早いだろう。

ヒストリ

上下キー(あるいはC-pとC-n)でこれまでに実行したコマンドを呼び出せる。左右キー(あるいはC-bとC-f)でカーソルを左右に移動できるので、必要に応じて修正して実行することができる。コマンドを入力し間違えた場合や似たようなコマンドを別のパラメータ(ファイル名など)で実行したい場合に便利。Controlキーを使った操作はEmacsと同じである。