私は普段WSL環境で開発を行っています。開発する中で、mkdir
やtouch
、cd
コマンド等は頻繁に使うので覚えているのですが、他のコマンドは使うたびに調べている状況です。
さすがに面倒になってきたので、自分がよく使うなと思ったコマンドや、使ったことないけど便利そうだなというコマンドをまとめました。
Linux初心者なので、間違いなどがあれば指摘していただけると幸いです。
よく使うコマンド
cd
cd path/to/dir
でディレクトリを移動することができる。
ホームディレクトリに移動したいときは、cd
か cd ~
とすればよい。
ls
カレントディレクトリ内のファイルやフォルダを一覧表示する。
-a
このオプションを付けると、ドットファイル(例:.git)も表示する。
-l
ファイルの詳細も表示するオプション。
左から、ファイルタイプ、パーミッション、ハードリンク数、オーナー名、グループ名、バイトサイズ、タイムスタンプ、ファイル名の順で表示される。
$ ls
dir file
$ ls -a
. .. dir file
$ ls -l
total 4
drwxr-xr-x 2 user user 4096 Feb 15 16:35 dir
-rw-r--r-- 1 user user 0 Feb 15 16:34 file
mv
ファイルやディレクトリを移動させたり、名前を変更する時に使う。
以下のようにすることで、複数のファイルを移動先ディレクトリに移動させられる。
mv ファイル1 ファイル2 ・・・ 移動先ディレクトリ
また、以下のようにして、ファイル名を変更する。
mv 古いファイル名 新しいファイル名
具体的な仕様例を以下に示す。
$ ls # 現在の状態
file1 file2 file3 dir
$ mv file1 file4 # ファイル名の変更
$ ls
file4 file2 file3 dir
$ mv file4 dir/file1 # ファイル名の変更かつ移動
$ ls dir/*
dir/file1
$ mv file2 file3 dir # 複数ファイルの移動
$ cd dir
$ ls
file1 file2 file3
-i
移動先に同名のファイルがある場合は、上書きするかどうかの確認メッセージを表示する。
clear
ターミナルの画面をクリアにする。
mkdir
mkdir dir-name
でディレクトリを作成する。
-p
必要に応じて親ディレクトリも一緒に作成する。
$ ls # 現在の状態(何もない)
$ mkdir dir
$ ls
dir
$ mkdir -p p-dir/dir # 親ディレクトリも作成
$ ls
dir p-dir
touch
touch file-name
でファイルを作成する。
rmdir
rmdir dir-name
で中身が空のディレクトリを削除する。
-p
必要に応じて親ディレクトリも削除する。
$ ls # 現在の状態
p-dir file
$ ls p-dir
dir
$ rmdir p-dir/dir # 親ディレクトリも削除
$ ls
file
rm
rm file-name
でファイルを削除する。
-r
ファイルだけでなく、ディレクトリも削除する。
vi
vi file-name
でLinux標準のエディタ(Vim)を起動する。
Vimは慣れるまでかなり時間がかかるが、慣れてしまうと他のエディタが使えなくなってしまう、らしい。ちなみに私はちょっとしたファイルの編集程度でしか使ったことがない。
いつか使いこなせるようになってみたい。
vimについて書きだすと今回の趣旨からずれてしまうため、割愛させていただく。
たまに使うコマンド
cat
cat file-name
でファイルの中身を閲覧する。
cat file1 > file2
でfile1の中身をfile2に書き込むことができる(上書き)。
cat file1 >> file2
で追加書き込み。
具体的な仕様例を以下に示す。
$ ls # 現在の状態
file1 file2
$ cat file1 # file1の中身を確認
file1
$ cat file2 # file2の中身を確認
$ cat file1 > file2 # file2にfile1の中身を上書き
$ cat file2
file1
$ cat file1 >> file2 # file2にfile1の中身を追加書き込み
$ cat file2
file1
file1
-n
行番号を付けて出力する。
-b
空行以外に行番号を付ける。
echo
与えられた文字、数値、変数などを表示する。
環境変数の中身を確認したいときによく使う。
$ echo $HOME
/home/user
また、ファイルへの書き込みもできる。使い方としては cat
コマンドと変わらない。
$ echo "Hello" > file
$ cat file
Hello
$ echo "World" >> file
$ cat file
Hello
World
ssh
ssh 接続先
でリモートマシンにSSH接続する。
$ ssh example.com # example.comに接続
$ ssh user@example.com # ユーザ名(user)を指定
-i
秘密鍵を使用するときに使うオプション。
$ ssh -i key-file.pem user@example.com
-p
ポート番号を指定する。
curl
APIを叩くときに使用するコマンド。
curl localhost:8080/api/users # GETリクエスト
[
{
"id": 1,
"name": "chellwo"
}
]
-X
メソッドを指定。
-H
リクエストヘッダを使用してリクエストするときに使用。
-d
リクエストボディを使用してリクエストするときに使用。
$ curl -X POST -H "Content-type:application/json" -d '{"name":"super-chellwo"}' localhost:8080/api/users
{
"id": 1,
"name": "chellwo"
}
$ curl -X GET -H localhost:8080/api/users
[
{
"id": 1,
"name": "chellwo"
},
{
"id": 2,
"name": "super-chellwo"
}
]
-I
レスポンスヘッダを表示する時に使用。
$ curl -I localhost:8080/api/users
HTTP/1.1 200 OK
Content-Type: application/json
...
help
help コマンド名
でコマンドのマニュアルを表示する。
使ったことがあるコマンド
cp
cp コピー元 コピー先
でファイルをコピーする。コピー先ファイルが存在しなければ、新規作成する。
cp コピー元1 コピー元2 コピー先ディレクトリ
で複数ファイルをコピーする。ディレクトリは新規作成されない。
$ ls # 現在の状態
file dir
$ cat file
Hello
$ cp file cp-file # ファイルをコピー
$ cat cp-file
Hello
$ cp file cp-file dir # 複数ファイルをディレクトリにコピー
$ ls dir
file cp-file
-r
ディレクトリごとコピーする。
-i
上書きされるファイルがある場合、確認メッセージを表示する。
grep
grep 検索文字列 ファイル名
でファイル内の文字を検索する。
$ ls # 現在の状態
file1 file2
$ cat file1 file2
Hello # file1の中身
World # file2の中身
$ grep He * # 文字列Heを検索
file1:Hello
-i
大文字と小文字を区別せずに検索する。
-n
検索結果に行番号を表示する。
-l
検索結果にファイル名のみを表示する。
-r
ディレクトリ内も検索する。
free
free
でメモリ状況を確認する。
-h
人間が読みやすい単位に変換してくれる。
$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 783Mi 2.0Gi 227Mi 1.1Gi 2.6Gi
Swap: 1.0Gi 147Mi 876Mi
使ったことないけど、便利そうなコマンド
pwd
カレントディレクトリを表示する。例えば、ホームディレクトリで実行すると、以下のようになる。
$ pwd
/home/user
find
find ファイル名
でファイルが存在するかを検索する。
-name
fine 検索先 -name ファイル名
とすることで、ファイル名やディレクトリ名があやふやな時にも検索できる。
$ ls dir # 検索したいファイルの場所
file1
$ find /home/ -name file1 # 検索
/home/user/dir/file1
less
less ファイル名
でファイルの中身を1画面ずつ表示する。
q
キーを押すと閲覧を終了する。
history
history
で過去に使用したコマンドを表示する。
-c
端末に記録されているコマンド履歴を消去する。
-w
history -w ファイル名
でコマンド履歴をファイルに書き込む。
-r
history -r ファイル名
でファイルに書き込まれているコマンド履歴を端末に書き込む。
最後に
今回は特に重要そうだと感じたLinuxコマンドをまとめてみました。
他にもコマンドやオプションはいろいろありますが、ここに書いたコマンドを使いこなせるようになるだけでもかなり楽になると思います。
Linuxコマンドで爆速開発できるように頑張ります。