はじめに
こんにちはJUNOです。
私の周りには未経験でエンジニアになったメンバーが勢揃いで、エンジニアの経験を教えられるのが私しかいないため今後の勉強会のためのアウトプットをしようと思います。
今回は題材は「Linuxコマンド」についてということで、
エンジニアになる前に(なってからでも)業務をする上で知っておきたい最低限のLinuxコマンドについて紹介します。
覚えておきたいコマンド一覧はこちら
pwd
ls
mv
cp
mv
cd
vi(vim)
cat
less
mkdir
rm
rmdir
一つでもわからないコマンドがあればターミナルを開いて確認してみてみましょう!
覚えておきたいコマンド一覧
pwd
$ pwd
/home/juno
pwdは今のいるディレクトリの場所を表示します。
「ディレクトリ」って何?
WindowsやMacでいう「フォルダ」と同じものだと思ってもらえば大丈夫です。
厳密にディレクトリは、「ハードディスクなどの記録メディア上のファイルの保存場所」を表します。
この単語はエンジニアでないとあまり聞き慣れない言葉ですが、普段から常に使う言葉なので覚えておきましょう!
つまりpwdとは、windowsでいうと今開いているフォルダの場所を表示しているということです。
print working directoryの略
ls
$ ls
fileA.txt fileB.txt fileC.txt folderA
今いるディレクトリに存在するファイルを表示します。
lsコマンドは数あるコマンドの中でも最も多く使うコマンドかもしれません。
ちなみに各Linuxコマンドにはオプションというものが存在します。
例えばlsに-l
というオプションを付与すると以下のようになります。
$ ls -l
total 4
-rw-rw-r-- 1 juno juno 0 May 2 04:48 fileA.txt
-rw-rw-r-- 1 juno juno 0 May 2 04:48 fileB.txt
-rw-rw-r-- 1 juno juno 0 May 2 04:48 fileC.txt
drwxrwxr-x 2 juno juno 4096 May 2 04:49 folderA
各ファイルの詳細が縦になって一覧で表示することができます。
また、オプションは複数付与することもでき、例えば上記のコマンドに-a
も追加すると以下のようになる。
$ ls -al
total 24
drwxr-xr-x 3 juno juno 4096 May 2 04:58 .
drwxr-xr-x 1 root root 4096 May 2 04:27 ..
-rw-r--r-- 1 juno juno 220 Apr 4 2018 .bash_logout
-rw-r--r-- 1 juno juno 3771 Apr 4 2018 .bashrc
-rw-rw-r-- 1 juno juno 0 May 2 04:48 fileA.txt
-rw-rw-r-- 1 juno juno 0 May 2 04:48 fileB.txt
-rw-rw-r-- 1 juno juno 0 May 2 04:48 fileC.txt
drwxrwxr-x 2 juno juno 4096 May 2 04:49 folderA
-rw-r--r-- 1 juno juno 807 Apr 4 2018 .profile
-rw-rw-r-- 1 juno juno 0 May 2 04:58 .secret_file.txt
-a
は隠しファイルも含め全ファイルを表示するオプションです。
ファイルの1文字目が「.」のものが隠しファイルです。
lsコマンドでは-l
や-a
はよく使うオプションなので覚えておきましょう!
list segmentsの略
cd
$ cd folderA
$
$ pwd
/home/juno/folderA
cdはディレクトリを移動するコマンドです。
WindowsやMacでフォルダをクリックしてフォルダを開くのと同じですね。
cd {移動したいディレクトリ}
で移動できます。
また、便利なので以下の使い方も覚えておきましょう。
$ cd
"cd"のみ実行した場合はhomeディレクトリへ移動する
$ cd ..
".."をつけると一個前の階層に移動する
$ cd -
"-"をつけるとcdで移動する前にいたディレクトリへ戻る(1つ前の階層に移動するわけではない)
またLinuxにはディレクトリの指定の仕方として「絶対パス」と「相対パス」というものがあります。
「絶対パス」
絶対パスとはルートディレクトリからのフルパスのことです。
ルートディレクトリとは、ディレクトリの中でも最も上部の根に当たる場所のことです。
ルートディレクトリは「/」で表します。
cd /
でルートディレクトリに移動することができます。
そのルートディレクトリからの該当のファイル(orディレクトリ)までのパスが絶対パスとなります。
例えば、今いる場所の絶対パスはpwdコマンドで表示することができます。
/home/juno/folderA
これはルートディレクトリ(/)の中のhomeディレクトリの中のjunoディレクトリの中のfolderAディレクトリを表しています。
「相対パス」
絶対パスは「ルートディレクトリ」を起点としたパスの指定でした。
一方で、相対パスは「今いるディレクトリ」を起点としたパスの指定です。
例えば、今いる場所からディレクトリを指定する場合
folderA/fileD.txt
or
./folderA/fileD.txt
これは今いるディレクトリのfolderAディレクトリ内のfileD.txtを示しています。
ちなみに「./」は現在のディレクトリを意味します。これは省略可能です。
絶対パスと相対パスでcdコマンドを使ってfolderAに移動する場合は以下のようになります。
絶対パス
$ cd /home/juno/folderA
相対パス
$ cd folderA
絶対パスと相対パスの使い分けは、基本的に楽な方で大丈夫です。
もし、どの場所でも使えるようにするなら絶対パスを使いますし、今いる場所からそこにあるディレクトリにただ移動するだけなら相対パスが楽です。
change directoryの略
cat
$ cat fileD.txt
Hello fileD!!
ファイルDの中身です。
catファイルの中身を表示するコマンドです。
catは「キャット」と呼びます。猫ですね。
cat {ファイル名}
で使います。
less
$ less fileD.txt
Hello fileD!!
ファイルDの中身です。
あ
い
う
え
お
カ
キ
ク
ケ
コ
さ
し
す
せ
そ
fileD.txt (END)
lessコマンドもcat同様ファイルの中身を出力するコマンドです。
less {ファイル名}
で使います。
違いはcatコマンドは中身をコマンドライン上にバーーーっと表示しますが、
lessコマンドはファイルの頭から表示し、上下カーソルで中身の表示を操作することができます。
ファイルの行数が多い場合はlessコマンドで中身を表示します。
言葉だけでは難しいので実際やってみて下さい(あきらめ)。
lessコマンドを終了するときはq
を押すと元のコマンドラインに戻ります。
lessのようなコマンドでmore
コマンドもあります。
一度試しに使ってみて下さい。
mkdir
$ mkdir folderB
mkdirはディレクトリを作成するコマンドです。
私は「メイクディーアイアール」と言っています。
make directoryの略
mv
$ mv fileC.txt folderA
mvはファイルを移動させるコマンドです。
mv {移動元(ファイル名)} {移動先(ディレクトリ)}
で指定します。
また、ファイル名を変更したい場合にも使います。
$ mv fileC.txt fileCCC.txt
こうすると、fileC.txtファイルがfileCCC.txtに名前が変わります。
mv {変更前} {変更後}
とおぼえましょう!
moveの略
cp
$ cp fileC.txt folderA
ファイルをコピーするコマンドです。
mvコマンドと同様で、
cp {移動元} {移動先}
とおぼえましょう!
copyの略
vi(vim)
$ vi fileA.txt
viはファイルを編集するコマンドです。
LINUXではコマンドを使ってファイルを操作します。そのファイル編集で代表的なコマンドがviです。
viはこれだけで1つの記事がかけるくらい奥が深いのでここでは省略します(さぼり)。
viは絶対使うコマンドなのでぜひ勉強をしてみてください。
ちなみにviからぬけだすには
esc
をおして:q
で抜け出せます。
1箇所でも編集して保存する場合は:wq
で保存して抜け出せます。
編集はしたけど保存はしたくない場合は:q!
で保存せず抜け出せます。
rm
$ rm fileA.txt
rmはファイルを削除するコマンドです。
消してしまうともう元には戻せないので注意しましょう!
(このコマンドでこれまで何人のエンジニアが冷や汗をかいてきたのか。むしろはじめは覚えないほうがいいコマンドなのかもしれない...)
removeの略です。
rmdir
$ rmdir folderB
rmdirはディレクトリを削除するコマンドです。
このコマンドを使う場合はディレクトリの中身が空である必要があります。
もしも中身がはいったディレクトリを削除する場合はrm -rf {ディレクトリ名}
を使います。
ちなみに-r
は再帰的にという意味でディレクトリ内のものも削除するという意味で、-f
は確認をせず強制的に削除するという意味です。
絶対知っておきたい豆知識
矢印キー上下(過去のコマンドを表示する)
ターミナルで上下キーを押すと過去に実行したコマンドを表示することができます。
何度もタイピングをするのは効率が悪いので同じコマンドを使う場合は上下キーを使いましょう。
タブキー(コマンドの補完機能)
コマンドを入力するとき、コマンドやパスを途中まで入力した状態でタブキーを押すと入力を自動的に補完してくれます。
例えば、forlderAを指定するとき、fo
と入力してタブキーを押すとfolderAとなります(他にfoに当てはまるフォルダやディレクトリがなければ)。
すべてタイピングするのも時間の無駄なのでこちらも積極的に使用しましょう!
ctrl + a
カーソルを先頭に移動します。
カーソルを先頭に移動させるとき、いちいち左右の矢印キーで戻るのは時間がかかる場合があります。
そんなとき、一発で移動させたいときに使います。
ctrl + e
ctrl + a
とは逆にカーソルを最後に移動する方法です。
これも一緒に覚えましょう!
おわりに
Linuxコマンドはたくさんありますが、その中でも今回紹介したコマンドを知っていればとりあえずLinux使えます!といっても問題ないかと思います。しかし、普段から使っていないと忘れてしまうものなのでぜひ毎日使っていきましょう!
次は「知って得する!便利なLinuxコマンド」みたいな記事をかければいいなと思います。