2020/04/27
はじめに
そろそろ、Linux を使い始めて1年半ほど、Mac を使い始めて1年ほど経過する(2020/05 現在)。 そして、ターミナルをできるだけ触るように心がけているため、当初よりはコマンドを扱えるようになってきた。 ターミナルの始めたては色々戸惑う事も多いと思うので、自分のよく使うコマンドを記しておこうと思う。
ただし、全コマンドを網羅してあるわけでもないし、一覧内のコマンドも、自分が使う範囲でしか記していないため、ある程度慣れてきたら他のサイトで情報収集することを勧める。
シンプル
cd
ディレクトリを移動。
$ cd ./dir # カレントディレクトリ内のdirというディレクトリ内へ移動
$ cd dir # カレントディレクトリ内のdirというディレクトリ内へ移動
$ cd .. # 親ディレクトリに移動
$ cd # ホームへ移動
$ cd ~/ # ホームへ移動
$ cd $HOME # ホームへ移動
$ cd /dir/dir # ルート内のdir内のdirへ移動
ls
ファイル・ディレクトリを表示。
$ ls # カレント内を表示
$ ls dir # カレント内のdir内を表示
$ ls ~ # ホーム内を表示
$ ls ~/dir # ホーム内のdir内を表示
$ ls /dir/dir # ルート内のdir内のdir内を表示
$ ls -a # 隠しファイル(.から始まる名前)も表示
$ ls -l # ファイル情報も表示
$ ls -al # 隠しファイルもファイル情報も表示
touch
ファイルを生成。
$ touch file # fileという名前のファイルを生成
mkdir
ディレクトリを生成。
$ mkdir dir # dirという名前のディレクトリを生成
rm
ファイル・ディレクトリを削除 (注)GUI による削除とは違い、元に戻すのが難しいので注意が必要である。ターミナルに慣れていない場合は、使わない方が無難。
$ rm file # fileを削除
$ rm -d dir # 空ディレクトリdirを削除
$ rm -r dir # ディレクトリdirを再帰的に(中身ごと)削除
cat
ファイルの中身を表示。
$ cat file # fileの中身を表示
cp
ファイル・ディレクトリをコピー
$ cp file file2 # fileをfile2という名前でコピー
$ cp file dir/file2 # fileをdir内にfile2という名前でコピー
$ cp -r dir dir2 # dirを内部ごとdir2という名前でコピー (-rは再帰の意)
mv
ファイル・ディレクトリを置き換える(移動・名前変更)
$ mv file file2 # fileをfile2に名前変更
$ mv file ./dir/ # fileをdir内に移動
$ mv dir ./dir2/ # dirをdir2内に移動
curl
HTTP アクセス 他にももっと色々できる。
$ curl https://...
$ curl https://... > file.html # 出力結果を`file.html`に保存
wget
インターネット上のファイルをダウンロード。
$ wget https://...
alias
alias の設定の表示、alias の設定(現在のログインシェルのみで)
$ alias # 全エイリアス表示
$ alias setted-alias # `setted-alias`という名前のエイリアスの内容を表示
$ alias new-alias="command" # `new-alias`という名前の`command`という内容のエイリアスを設定
unalias
alias を削除(現在のログインシェルのみで)
$ unalias setted-alias # `setted-alias`という名前のエイリアスを削除
unzip
Zip ファイルを解凍。
$ unzip file.zip
history
コマンド履歴を出力
$ history
exit
ターミナルを終了。
$ exit
vim
テキストを編集。vim はクセが強いので、使いながらキーバインドを覚えていくと良いだろう。
間違えて開いてしまった人は、Esc
を押して:q!
と入力する事でコマンドラインに戻る事ができる。
$ vim file # fileを編集
$ vimdiff file1 file2 # file1,file2を比較
よく使うコマンドのセット
特定の名前を持つファイルを PC 内部から探す
find
コマンドでは、アクセス権限のエラーであるPermission denied
が延々と表示され、目的のファイルやフォルダを見つける時に苦労する事がある。そんな時は、標準エラーを表示しなければ良い。
$ find . -name <filename> 2>/dev/null
コマンド履歴を遡りながら表示
history
で出力した履歴を、スクロールせずに遡る事が可能。less
にパイプすると良い。
$ history | less
コマンド履歴から特定のコマンドを表示
history
コマンドの結果をgrep
コマンドにパイプすると良い。
$ history | grep keyword # 単一のキーワード
$ history | grep -e keyword1 -e keyword2 # OR検索(どちらかを含むものを表示)
$ history | grep keyword1 | grep keyword2 # AND検索(どちらも含むものを表示)
ファイル内から特定のキーワードを持つ行を表示
$ cat file | grep keyword # 単一のキーワード
$ cat file | grep -e keyword1 -e keyword2 # OR検索(どちらかを含むものを表示)
$ cat file | grep keyword1 | grep keyword2 # AND検索(どちらも含むものを表示)
C++で make する際に、error と表示された行のみ表示
コンパイルメッセージとして余計なものが表示されてしまう場合、すっきりとしたエラー表示にする事ができる。ただし、必要なメッセージが排除されてしまう場合があるので、注意が必要。
$ make | grep error # 'error'と含まれた行のみ表示
$ make | grep -e error -e warning # 'error'または'warning'と含まれた行のみ表示