2019.04.09
STAFF BLOG
スタッフブログ
TECHNICAL
テクログ
こんにちはうなぎです。
IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。
本日は「~基本編~」。
基本的かつ必要不可欠となるコマンドです。
- ls
- cd
- cp
■ ls
`ls` は指定されたディレクトリにあるディレクトリ・ファイルの情報を出力するコマンドです。
オプションに `ls -la` などとすれば、隠しファイル、カレントリ・親ディレクトリを含む全てのディレクトリ・ファイル(`-a`)を詳細な(`-l` )情報とともに出力することができます。
オプション `-la` は便利なので、しばしば `l` や `ls` のエイリアスに設定されることもあります。
`-la` しか普段使いされないといってもよいほどですが、もちろんオプションはそれだけではありません。
`-h` `–human-readable` はファイルサイズの単位を 4096 であれば 4.0K のように読みやすい形で出力してくれます。
`-m` はリスト対象をカンマ区切りで出力してくれます。
などなど、ほかにも意外と便利なオプションが揃っています。
また、他のコマンドと組み合わせて使われることもあります。
例えばカレントリディレクトリ内にあるファイル数を知りたい場合は
ls -A | wc -l
などとすることで、カレントリ・親ディレクトリを除く(`-A`)全てのディレクトリ・ファイルの数を集計(`wc -l`)できます。
Linux には“パイプ”と呼ばれるものがあり、パイプはコマンド(プロセス)の出力を別のコマンド(プロセス)に入力することができ、上記のように縦線(|)で書き表されます。
`ls` コマンドで出力した情報をこの“パイプ”機能によって他のコマンドに渡すことにより、より有用な情報を得ることができるわけです!
■ cd
`cd` はディレクトリを移動するためのコマンドです。
オプションはあまりないので、しばしば使う小技をご紹介します。
ホームディレクトリに移動する
cd
`cd` だけです。
ホームディレクトリとは echo $HOME などとすると表示されるディレクトリで、
ログイン直後は大体そのディレクトリに居ることになります。
ひとつ前のディレクトリに戻る
cd -
ハイフン(`-`)をパスにすることで、ひとつ前に居たディレクトリに移動することができます。
一つ前のコマンドで指定したディレクトリに移動する
cd $_
`$_` は Bash の環境変数で、最後に実行したコマンドの引数が格納されています。
例えばあるファイルの場所を確認するために `ls` コマンドを使用し、そのファイルが見つかったとします。
次にそのディレクトリに移動したいものの、もう一度パスを指定するのが面倒ですよね?
そんな時に上記のコマンドを実行することで、入力を省略することができます!
※ Bash とは Linux OS を動かしているコア部分(カーネル)に処理を中継いでくれる、コマンドベースのインターフェースを持ったソフトウェアの一つです
※ 他にも csh, ash, zsh などがあり、最近では fish が人気のようです
`$_` 他、Bash の環境変数については以下を参照
https://www.gnu.org/software/bash/manual/html_node/Special-Parameters.html
■ cp
`cp` はファイルやディレクトリをコピーするコマンドです。
第一引数にコピー元、第二引数にコピー先を指定します。
また、ディレクトリをコピーする時には、再帰コピーを示す `-R, -r, –recursive` のいずれかのオプションをつける必要があります。
他にもコピー先が既に存在していた場合に強制上書き(`-f`)したり、上書き時に確認をする(`-1`)オプションなどがあります。
単純にディレクトリやファイルを別の場所にコピーする際に使用する他にも、例えば設定ファイルを編集する前にバックアップを取っておきたいときなどは、
cp file{,.back}
とすると便利です。
上記ではコピー先となる第二引数を省略し、コピー元のファイル名に `{,.back}` を付け加えています。
こうすることで結果、実行したディレクトリでは file.back が生成されます。
わざわざ第二引数を指定しなくて済むわけです!
この `{}` は“ブレース展開”というもので、cp コマンドに限ったものではなく、
例えば ファイルを移動する・ファイル名を変更する際に使用する `mv` では、
mv file{,.old}
とすることで、ちょっと名前を変えてファイルを置いておくこともできます。
“ブレース展開”は他にも一度に複数のファイルを指定したりできるなど面白い機能ですが、今回は割愛します。
`{}` については以下を参照
https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html
以上少ないですが、`ls`, “cp”, “mv” のご紹介でした。