こんにちは!
今回はプログラミングではなくlinuxのコマンドを紹介します!
macOSを利用している方やubuntuなどのlinuxを使用している方はコマンドラインで操作をする機会が多いと思います。
もし今CUIが苦手だなと感じている方もよく使うコマンドだけでも覚えておくと格段に効率が上がるのでぜひチャレンジしてみてください!
では早速紹介していきます!
よく使うコマンド一覧
pwd 現在のディレクトリを表示
自分が現在作業しているディレクトリへのパスを表示するときにpwdコマンドを使用します。
pwd
例えば、ホームディレクトリでpwdコマンドを実行した場合以下のような結果が得られます。
/Users/username
usernameは実際にはMac上でのユーザー名です。
複数のウィンドウやタブを開いて作業をしていると、今どこで作業をしているのか迷子になることがあります。そんなときにpwdコマンドを使用して現在の位置を確認することができます。
lsにはよく使うオプションがいくつかあるので合わせて紹介します。
ls ディレクトリ直下のファイル•ディレクトリを表示
今いるディレクトリの直下にどんなファイルやディレクトリがあるのかを調べるときにlsコマンドを使います。
windowsのコマンドプロンプトでいうdirコマンドです。
ls # 基本のリスト
ls -l # 詳細情報付きでリストアップ
ls -a # 隠しファイルも含めてリストアップ
それぞれの使用した結果の例も載せておきます!
ls (オプションなし)
# lsの使用結果の例
Desktop Documents Downloads Music Pictures Videos
オプションなしでlsコマンドを使用すると、シンプルにファイルとディレクトリが表示されます。
このときあとで説明しますが、隠しファイルは表示されません。
ls -l
# ls -l の使用結果の例
total 0
drwx------@ 5 username staff 160 Oct 7 09:30 Desktop
drwx------@ 7 username staff 224 Oct 7 09:45 Documents
drwx------@ 10 username staff 320 Oct 7 11:00 Downloads
drwx------@ 8 username staff 256 Oct 7 12:00 Music
drwx------@ 9 username staff 288 Oct 7 10:15 Pictures
drwx------@ 6 username staff 192 Oct 7 13:00 Videos
-lオプションを使用するとそれぞれのファイル、ディレクトリの情報が詳しくみれます。
見方がわかりにくいと思うので説明します。
最初のtotal 0はディレクトリに含まれるファイルやサブディレクトリがディスク上で占めるブロックサイズが0もしくは非常に少ないことを表しています。
ブロックサイズはファイルシステムに依存していますが、Linuxでは1ブロックが4KBです。
それぞれのファイルやサブディレクトリの先頭にあるdrw….はファイルタイプと権限を表します。
例えば、drwxr-xr-xだった場合で説明します。
一番最初のdはファイルタイプを表します。dはディレクトリです。ファイルであれば-が表示されます。
続くrwxはそのディレクトリ(ファイル)に対する所有者の権限を表します。読み取り、書き込み、実行が許可されている場合rwxとなり、許可されてない部分は-になります。
例えば読み取りだけが許可されているファイルの場合、最初の4文字は-r–となります。一応例を載せておきます。
# 所有者に読み取りだけが許可されているファイルの場合の例
# 最初の-はファイル
# その後の3文字r--で所有者が読み取り権限のみ与えられている
-r--r--r--
これに続く3文字はそのディレクトリ(ファイル)に対するグループの権限を表しています。
グループについてイメージができないかもしれませんが、ユーザーをグループに所属させてそのグループに権限を与えて管理することができます。
グループAに所属している人は読み取りだけ許可、グループBに所属している人は読み取りと書き込みを許可などです。
なのでグループ権限が読み取りと書き込みが許可されている場合は次のようになります。
# 最初の4文字はファイルで所有者は読み取りだけ許可
# その後のrw-がグループの権限(読み取りと書き込み許可)
-r--rw-r--
最後の三文字はその他のユーザーの権限を表します。つまりここに許可されているものは全てのユーザーで許可されていることになります。
全てのユーザーが読み取り許可されている場合は次のようになります。
#最初の4文字-r--はファイルで所有者は読み取りだけ許可
#その後の3文字rw-はグループの権限
#最後の3文字r--が全ての人に許可される権限
-r--rw-r--
権限の後に書いてある数字はファイルシステム上でそのアイテムが何回参照されているかを表します。
そしてその後の名前(今回の例だとusername)はファイルの所有者、その後のstaffは所属グループを表します。
その後の数字はファイルサイズ、そしてその後の日付はアイテムの最終更新日時です。
長くなりましたが-lオプションの説明は終わりです。
ls -a
-aオプションで隠しファイルも表示することができます。aはallのaです。
隠しファイルは「.」から始まるファイルのことです。githubとかは使ってる人は.gitignoreなんかでみたことがあると思います。
# ls -aの出力例
# 隠しファイルだけではなく全てのファイル(サブディレクトリ)が表示される
. .. .bash_history .gitconfig Desktop Documents Downloads
cd ディレクトリの変更
cdコマンドを使用して作業ディレクトリを変更します。ターミナルで作業するなら必須のコマンドです。
ちなみにcdはchange directoryの略です。
cd ディレクトリパス
cd .. # 一つ上のディレクトリに移動
cd # ホームディレクトリに戻る
使い方は簡単でcdの後に移動したいディレクトリのパスを書くだけです。絶対パスを書いて移動することもありますが多くは、lsコマンドで一個下のディレクトリを確認して移動したいディレクトリにncdコマンドで移動します。
例えば下のように使います。
# lsコマンドの結果 (今はUserディレクトリにいる)
User % Desktop Documents Downloads Music Pictures Videos
# Desktopに移動
cd Desktop
#一個上のディレクトリに戻る(この例だとDesktopからUserに移動)
cd ..
cdコマンドは必須なので使えるようにしておきましょう!
mkdir ディレクトリの作成
mkdirコマンドでディレクトリを作成することができます。いちいち右クリック、新規作成、、とやるのは面倒なのでコマンドでできると便利です。
使い方はシンプルで、コマンドの後に新しいディレクトリ名を指定するだけです。
mkdir 新しいディレクトリ名
rm ファイルやディレクトリの削除
rmコマンドでファイルやディレクトリの削除ができます。
rm ファイル名
rm -r ディレクトリ名
注意点が二つあります。
- ディレクトリを削除する場合は-rオプションをつける必要がある
- -rオプションを付けても空じゃないディレクトリは削除できない
削除したいディレクトリが空の時ってあんまりないですよね。じゃあどうすればいいのか。
-fオプションを付けます。このオプションをつけるとどんなファイルもディレクトリも指定したものは強制的に削除されます。
「本当に消しますか?」みたいな確認もなく強制的に消されるので-fオプションを使用する場合は気をつけてください!
# 空ではないディレクトリを削除する
rm -r -f HogeHoge
chmod ファイルの権限を設定する
chmodコマンドを使用してファイルやディレクトリのアクセス権限を設定することができます。
アクセス権限には以下の3種類があります。
- 読み取り(r) : ファイルの内容を読むことができる
- 書き込み(w) : ファイルに変更を加えることができる
- 実行(x) : ファイルをプログラムとして実行することができる
これらのアクセス権限はlsコマンドの-lオプションで説明したものと同じです。
各種アクセス権には数字が与えられています。
- 読み取り : 4
- 書き込み : 2
- 実行 : 1
これらの数字の合計で与える権限を設定します。例えな読み取りと書き込みの権限だけを与えたければ、4 + 2で6となります。
chmodコマンド自体は簡単に使うことができます。以下が使用例です。
chmod 755 filename
この755はそれぞれファイルの所有者、グループ、その他のユーザーの権限を表しています。
なので所有者には読み取り、書き込み、実行の全ての権限を与えて、グループとその他のユーザーには読み取りと実行の権限だけを与えています。
実際に使うときは755で指定することが多いです。(batファイルなど実行してほしくても勝手に中身を変えられたくないことが多いので)
グループやその他のユーザーについての説明もls -lの時に説明した内容と同じです。
cat ファイルの内容をターミナルで表示
catコマンドはターミナルでファイルの内容を表示する時に使用します。たまに使います。
VSCodeとか他のエディタで開くまでもなく、ちょっとだけファイルの中身を確認したいときに使います。
設定ファイルなど比較的短めのファイルに対して使うことが多いです。
使い方はシンプルです。ファイル名を指定するとそのファイルの中身がターミナルに表示されます。
cat filename
echo メッセージの出力
echoコマンドは一番基本的な使い方はメッセージの出力です。例えば次のように使えます。
echo "Hello, World!"
こうするとターミナルにHello, Worldという文字列が出力されます。
基本的な使い方はこれなのですが正直使い道がないです。echoコマンドをただ単にターミナルで文字出力のために使うことはほぼないと思います。
ではどんなときに使うのか。例を二つ紹介します。
テキストファイルに書き込む
echoコマンドを使用してテキストファイルに書き込むことができます。
echo "新しい行をファイルに追加" >> output.txt
例えば上記のように実行することでoutput.txtというファイルに「新しい行をファイルに追加」という内容を書き込むことができます。
スクリプトでのメッセージ表示
echoの基本の使い方はメッセージ表示だと最初に書きましたが、スクリプトでメッセージを表示するときにechoコマンドを使うことができます。
バッチファイルを作成するときにターミナル上にも今何の処理をしているのか出力したいことがあります。そういうときに使います。
echo "プロセスを開始します..."
# プロセス実行
echo "プロセスが完了しました。"
実際にはechoでのメッセージの間に何らかの処理を実行します。
grep テキスト検索
grepはファイル内の文字列検索をすることができます。
grep "hoge" fuga.txt
上の例ではfuga.txtというファイルの中からhogeという文字列を検索します。一致する行がターミナルに表示されます。
grepに「-数字」でオプションをつけると検索した行の前後の行も検索結果に出すことができます。
grep "hoge" fuga.txt -5
上のように使うとfuga.txtからhogeを検索して、一致した行の前後5行を表示します。
またgrepコマンドはもっとよく使う場面があります!紹介します!
他のコマンドとgrepコマンドを併用して使う
ターミナルでは「|」を使うことでコマンドを併用することができます。catコマンドとgrepコマンドを一緒に使う例を紹介します。
cat fuga.txt | grep "hoge" -5
上記のように使うことで先ほどの例と同じ検索をすることができます。
もちろんcatコマンド以外とも一緒に使うことができます。開発をしていてターミナル上でログを出力することがよくあります。
ログを出力するコマンドとgrepコマンドを一緒に使うことでログの中で必要な部分だけを表示することができます。
これは結構使う方法なので覚えておくといつか役に立つかもしれません!
まとめ
今回はターミナルで使うコマンドの中で特によく使うものをまとめました。コマンド操作に慣れると作業の効率が格段に上がります。
まだ慣れていない人も今回紹介したものだけでも覚えてみてください!この他にも便利なコマンドはたくさんあるので一個ずつ覚えて快適な開発ライフを送りましょう!
Noteもやっています。是非そちらもご覧ください!
コメント