目次
- 目次
- mkdirコマンド
- touchコマンド
- ファイルやディレクトリを削除するコマンド
- catコマンド
- テキストファイルとバイナリファイル
- cpコマンド
- mvコマンド
- パス名展開
- リンクとは何か
- ハードリンクとシンボリックリング
- 感想
- 参考記事
mkdirコマンド
mkdirコマンドを実行することで、 新しい空のディレクトリを作成することができます。
[ec2-user@ip-10-0-10-10 ~]$ mkdir repos [ec2-user@ip-10-0-10-10 ~]$ ls latest-ja.tar.gz repos wordpress
mkdirコマンドは複数階層からなるディレクトリの作成には対応していません。
[ec2-user@ip-10-0-10-10 repos]$ mkdir rails/rails-practice mkdir: cannot create directory ‘rails/rails-practice’: No such file or directory
複数階層からなるディレクトリを作成したい場合、-p
オプションを指定します。 pはparents(親)の意味です。つまり、親ディレクトリもまとめてディレクトリを作成するという意味になります。
[ec2-user@ip-10-0-10-10 repos]$ mkdir rails/rails-practice
mkdir: cannot create directory ‘rails/rails-practice’: No such file or directory
[ec2-user@ip-10-0-10-10 repos]$ mkdir -p rails/rails-practice
[ec2-user@ip-10-0-10-10 repos]$ ls
rails
[ec2-user@ip-10-0-10-10 repos]$ cd rails
[ec2-user@ip-10-0-10-10 rails]$ ls
rails-practice
[ec2-user@ip-10-0-10-10 rails]$
touchコマンド
touchコマンドを実行することで、カレントディレクトリ配下に新しいファイルを作成することができます。
touch 新規作成するファイル名 or パス
ファイルやディレクトリを削除するコマンド
rmコマンド
rmコマンドでファイルを削除することができます。
rm ファイル名 or パス
rmdirコマンド
rmdirコマンドで 空のディレクトリを削除することができます。
rmdir ディレクトリ名 or パス
空ではないディレクトリを指定するとエラーが起きます。
[ec2-user@ip-10-0-10-10 rails]$ rmdir rails-practice/ rmdir: failed to remove ‘rails-practice/’: Directory not empty [ec2-user@ip-10-0-10-10 rails]$
空ではないディレクトリを削除したい場合、rmコマンドに-r
オプションを指定して実行します。 -r
はリカーシブ(再帰的な)という意味で、中に入っているファイルやディレクトリも再帰的にまとめて削除します。
[ec2-user@ip-10-0-10-10 rails]$ rm -r rails-practice [ec2-user@ip-10-0-10-10 rails]$ ls [ec2-user@ip-10-0-10-10 rails]$
catコマンド
catコマンドを実行することで、ファイルの中身を確認できます。ちなみにlessを使うと、スクロール表示させることができます。
テキストファイルとバイナリファイル
Linuxには大きく分けて、2種類のファイルがあります。一つがテキストファイル(人間が読めて編集できるファイル)です。もう一つがバイナリファイル(2進数で書かれているファイル)です。 テキストファイルをコンピュータで実行する場合、バイナリファイルに変換してから実行する必要があるので、実行速度が遅いです。人間がそのファイルを編集しないなら、最初からバイナリファイルで用意しておく方が、早く実行することができます。
cpコマンド
cpコマンドを実行することで、 ファイルやディレクトリをコピーすることができます。 cpはコピーの略です。最初にコピーしたいファイル名を指定して、2番目にどういう名前でコピーするかを指定します。コピーするだけなので、元のファイルやディレクトリは削除されたしません。
cp ファイル名 or パス ファイル名 or パス
[ec2-user@ip-10-0-10-10 repos]$ ls rails react [ec2-user@ip-10-0-10-10 repos]$ ls react react-practice [ec2-user@ip-10-0-10-10 repos]$ cp rails/rails-practice/sample.rb react/react-practice/react-sample.rb [ec2-user@ip-10-0-10-10 repos]$ ls react/react-practice/ react-sample.rb [ec2-user@ip-10-0-10-10 repos]$ ls rails/rails-practice/ sample.rb
あるディレクトリを別のディレクトリ配下にコピーするのもcpコマンドでできます。その場合、-r
オプションをつけます(再帰的)。第二引数はどういう名前でコピーするかを指定するので、気をつけましょう。
[ec2-user@ip-10-0-10-10 react-1]$ cp -r ~/repos/rails rails [ec2-user@ip-10-0-10-10 react-1]$ ls rails
(注)cpコマンドの第二引数にディレクトリ名を指定する際に、カレントディレクトリ配下に存在するディレクトリ名を指定すると、カレントディレクトリにディレクトリがコピーされず、同名のディレクトリ配下に元々の名前でディレクトリがコピーされます(ディレクトリの一意性を守るため)。カレントディレクトリには存在しないディレクトリ名でcpコマンドを実行する場合、指定したディレクトリ名でカレントディレクトリ配下にコピーされます。
mvコマンド
mvコマンドを実行することで、 ファイル名を変更したり、ファイルを移動させたりできます。 第一引数には対象のファイル、第二引数には命名したいファイル名 or パスを指定します。mvはmoveの略です。
mv ファイル名 or パス ファイル名 or パス
[ec2-user@ip-10-0-10-10 react]$ ls ../rails/rails-practice/ sample.rb [ec2-user@ip-10-0-10-10 react]$ mv ../rails/rails-practice/sample.rb ../rails/rails-practice/sample5.rb [ec2-user@ip-10-0-10-10 react]$ ls [ec2-user@ip-10-0-10-10 react]$ ls ../rails/rails-practice/ sample5.rb [ec2-user@ip-10-0-10-10 react]$
第二引数の部分にディレクトリを指定すると、そこにファイルが移動します。cpコマンドと違ってmvコマンドの場合、本当にファイルが移動します。
[ec2-user@ip-10-0-10-10 react]$ mv ../rails/rails-practice/sample.rb ./ [ec2-user@ip-10-0-10-10 react]$ ls sample.rb [ec2-user@ip-10-0-10-10 react]$ ls ../rails/rails-practice/sample.rb ls: cannot access ../rails/rails-practice/sample.rb: No such file or directory [ec2-user@ip-10-0-10-10 react]$ ls ../rails/rails-practice/ [ec2-user@ip-10-0-10-10 react]$
(注) mvコマンドには-rオプションは指定しなくて大丈夫です。
パス名展開
パス名展開を使うことで、文字列をパターンで表現することができます。
記号 | 意味 |
---|---|
*(アスタリスク) | 長さ0以上の文字列にマッチします。 |
? | 任意の1文字 |
??と書くことで任意の2文字を指定できます。
(注)正規表現とは記号の意味が違うので、気をつけましょう。
リンクとは何か
リンクとは、 ファイルに別名をつける機能のことです。リンクを使うことで、ファイルに別名を付けて一つのファイルを複数の名前で呼び出すことができます。
リンクを使うメリット
リンクを使うメリットは、長いパス名を省略できることです。長いパス名を省略することで、ファイルの指定が簡単になります。また、ファイルを移動させたとしても、プログラムを修正する必要がなくなります。
ハードリンクとシンボリックリング
リンクには大きく分けて2種類のリンクがあります。ハードリンクとシンボリックリンクです。
ハードリンク
ハードリンクとは、 名前と実体を結びつける形でファイルに別名をつける機能です。 ざっくりいうと一つのファイルに複数の名前をつける機能です。 ハードリンクはファイルに対して設定できますが、ディレクトリに対しては設定できません。 以下のコマンドでファイルにハードリンクを設定します。lnはLinkの略語です。
ln ハードリンクをつけたいファイル名 ハードリンク名
以下のように実行すると、指定した名前でハードリンクが作成されています。実体は同じファイルです。
[ec2-user@ip-10-0-10-10 repos]$ ls rails react react-1 sample.rb [ec2-user@ip-10-0-10-10 repos]$ ln sample.rb sample-ruby [ec2-user@ip-10-0-10-10 repos]$ ls rails react react-1 sample.rb sample-ruby
ハードリンクを消したい場合、rmコマンドを実行します。
シンボリックリンク
ハードリンクはディレクトリに対して設定できなかったりして、結構不便です。そのため、実際に使われているリンクはシンボリックリンクです。 シンボリックリンクは、名前と名前を結びつける機能です。 シンボリックリンクによって、元々のファイル名を通じてファイルに別名を付けることができます。シンボリックリンクで指定した名前はファイルの実体とは直接的に紐づいていません。元々のファイル名に日もづけられています。
シンボリックリンクを作成するには、ln
コマンドに-s
オプションを指定します。sはシンボリックの略です。
ln シンボリックリンクをつけたいファイル名 or パス シンボリックリンク名
ls -F
で確認すると、@がついているものがシンボリックリンクなので、sample-rubyはシンボリックリンクであることが分かります。
[ec2-user@ip-10-0-10-10 repos]$ ls rails react react-1 sample.rb [ec2-user@ip-10-0-10-10 repos]$ ln -s sample.rb sample-ruby [ec2-user@ip-10-0-10-10 repos]$ ls rails react react-1 sample.rb sample-ruby [ec2-user@ip-10-0-10-10 repos]$ ls -F rails/ react/ react-1/ sample.rb sample-ruby@ [ec2-user@ip-10-0-10-10 repos]
[ec2-user@ip-10-0-10-10 repos]$ ls -l | grep sample-ruby lrwxrwxrwx 1 ec2-user ec2-user 9 Nov 11 14:35 sample-ruby -> sample.rb
シンボリックリンクを消したい場合、ハードリンクを削除するときと同じでrmコマンドを実行します。
シンボリックリンクの特徴
シンボリックリンクを実際に作ってみる
実際にシンボリックリンクを深い階層のファイルに対して作ってみました。そうすると、カレントディレクトリにシンボリックリンクが作成されました。そのシンボリックリンクをvimで開くとsample.rbの内容が表示されたり、catコマンドで指定するとちゃんと中身が表示されたりしました。長いパスを何回も入力してファイルを指定しないといけない場面で、シンボリックリンクを作成すると便利だと感じました。
[ec2-user@ip-10-0-10-10 repos]$ ls rails react react-1 sample.rb [ec2-user@ip-10-0-10-10 repos]$ ls rails/rails-practice/ruby-practice/sample.rb rails/rails-practice/ruby-practice/sample.rb [ec2-user@ip-10-0-10-10 repos]$ ln -s rails/rails-practice/ruby-practice/sample.rb sample-ruby [ec2-user@ip-10-0-10-10 repos]$ ls rails react react-1 sample.rb sample-ruby [ec2-user@ip-10-0-10-10 repos]$ ls sample-ruby sample-ruby [ec2-user@ip-10-0-10-10 repos]$ ls -l total 0 drwxrwxr-x 3 ec2-user ec2-user 28 Nov 11 10:40 rails drwxrwxr-x 2 ec2-user ec2-user 23 Nov 11 11:28 react drwxrwxr-x 3 ec2-user ec2-user 19 Nov 11 10:57 react-1 -rw-rw-r-- 1 ec2-user ec2-user 0 Nov 11 14:17 sample.rb lrwxrwxrwx 1 ec2-user ec2-user 44 Nov 11 14:42 sample-ruby -> rails/rails-practice/ruby-practice/sample.rb [ec2-user@ip-10-0-10-10 repos]$ cat sample-ruby [ec2-user@ip-10-0-10-10 repos]$ vim sample-ruby [ec2-user@ip-10-0-10-10 repos]$ vim rails [ec2-user@ip-10-0-10-10 repos]$ vim sample-ruby [ec2-user@ip-10-0-10-10 repos]$ cat sample-ruby a = 1 puts a
感想
Vimが使えると、ファイルの中身を見たりファイル内検索したりがコマンドを覚えなくてもできるので、やっぱVimって良いなと感じました。
参考記事
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】 | Udemy