(ほぼ)はじめてのUNIXコマンドあれこれ

全部書いてるとキリがないので、「覚えておきたい、けど忘れそう」ということだけメモ。

  • cd だけでホームディレクトリに戻れる
  • ディレクトリをコピーするときはcpコマンドに-r(再帰recursiveオプション)をつける。再帰的というのは、「コピー元ディレクトリに子ディレクトリがあればそれもコピー、子ディレクトリに孫ディレクトリがあればそれもコピー…」という意味。
  • cpコマンドの-aオプションは、再帰的かつファイル属性(所有者やタイムスタンプ)もコピーしてくれる。
  • cpコマンドと同様の理由で、ディレクトリ以下のファイルを丸ごと削除する場合はrmコマンドに-rオプションをつける。
  • lessで画面を切り替えて表示できる。
  • カレントディレクトリは.(ドット)で表現できる
  • ファイルの作成はtouch(中身からっぽ)、ファイルの削除はrm
  • 動かなくなってプロセスを中止したいときはCtrl+c(キャンセル)
  • Ctrl+rでコマンド履歴を検索できる
  • historyでコマンド履歴表示、!99で99番のコマンドを実行
  • コマンドのヘルプはコマンド名 --help又はman コマンド名(manualの略)
  • あるディレクトリを作成するとき、その親ディレクトリもあわせて作成するにはmkdirコマンドで-pオプション(parentオプション)を指定する。
  • ls -aで隠しファイルを含む全てのファイルを表示(allオプション)。
  • ls -lで詳細表示(long formatオプション)。最初の1文字は、d:ディレクトリ、-:ファイル、l:シンボリックリンク。続く9文字は3文字ずつ所有ユーザー(u: user)、所有グループ(g: group)、それ以外のユーザー(o: other)のPermission(アクセス権)を表す。r:read, w:write, x:execute.
  • パーミッションを変更したい場合はchmod 権限を付与する対象+付与する権限 ファイル名。たとえばsample.txtというファイルについて、所有ユーザーと所有グループに書き込みと実行の権限を付与したい場合はchmod ug+wx sample.txt。権限を外したい場合は+を-にする。chmod 774 ファイル名のように、パーミッションを数値によって表現することもよくある(詳細は省略)。
  • シンボリックリンクというショートカットみたいのがある。
  • /etc/passwdとか/etc/groupとかにユーザーやグループの情報が入っている。
  • 環境変数はexportで設定、unsetで解除する。ターミナルを閉じても消えないようにするには、~/.bashrc又は~/.bashprofileにexportを記述すれば毎回ターミナルを起動するときに実行してくれる。
  • which コマンド名でコマンドが定義されている場所を調べることができる。
  • su ユーザー名で異なるユーザーに切り替えることができる(substitute)。ユーザー名を省略するとルートユーザーに切り替わる。-lオプションでsubstitute userとしてloginしなおす。なお-lのlを省略して-のみとしても同義。
  • ほとんどの場合はユーザーの切り替えは行わず、sudo コマンド名として、そのコマンドのみをルートユーザー権限で実行する。
  • コマンド > ファイル名で、コマンドの実行結果をファイルに上書きする。
  • コマンド >> ファイル名で、コマンドの実行結果をファイルの末尾に追記する。>や>>をリダイレクションという。
  • find 検索基点とするディレクトリ名 -name ファイル名orディレクトリ名で検索できる。タイプを絞り込みたい場合はtypeオプションをつかう。検索基点とするディレクトリ名を省略した場合はカレントディレクトリが基点となる。
  • 標準入力を終えるときはCtrl+d(めっちゃ重要)
  • ディレクトリやファイルを検索するならfind、ファイルの中身を検索するならgrep(混同しないで)。
  • grep 検索正規表現 ファイル名でファイルの中身を検索する。
  • コマンド1 | コマンド2と書くと、あるコマンドの実行結果を次のコマンドに標準入力として渡す。これをパイプという。
  • コマンド1 | xargs コマンド2と書くと、あるコマンドの実行結果を次のコマンドにコマンドライン引数として渡す。(この2つの違いがややこしかったが、かなりすっきり理解できた。)
  • コマンド1 && コマンド2で複数のコマンドを1行で実行できる。