#Linux shellコマンド概要図鑑


基礎を知ろう

「教えられるまま、ターミナルやコマンドを使っていたけどそもそも、何ができるの?
基礎を知れば、作業がもっとできることが広がるのでは…?」

という事で、ターミナルとは?
どんなコマンドがあって何が出来るの?
拙いながらに、調べて結果を議事録に残しています。

🔍ボリュームがあるので、概要を簡単に

ということで、いざ本題へ!🚪

対象者:初心者・コマンド怖い・どんなコマンドあるのか概要を知りたい人
環境:Windows10・Linux・Visual Studio Code


もくじ

  1. ターミナル
  2. デイレクトリ
  3. ssh
  4. たぶん、よく使うコマンド
  5. このコマンド、どこで使う?
  6. 番外編:シェルスクリプト~作成から実行~

本題

ターミナル

https://www.sejuku.net/blog/4202
特別な文字(コマンド)にてパソコンの設定や操作を行う場所

ディレクトリ

  • pass
    ファイルやフォルダ(ディレクトリ)が存在する場所
    例:C:\Users\OWNER
    • カレントディレクトリ
      自分が今いるディレクトリ(フォルダ)
      例:git-repositoryファイルにいるとき 👉 C:\Users\OWNER\git-repository
  • pwd
    https://eng-entrance.com/linux-command-pwd
    今、どの階層にいるのか(カレントディレクトリ)を表示する
    例:/home/vagrant/bootcamp

ssh

別のコンピューターを遠隔で操作する際、送信するファイルなどのデータが他者に読まれぬよう、暗号化する仕組み

たぶん、よく使うコマンド

  • cd
    https://eng-entrance.com/linux-command-cd
    作業するディレクトリを移動するときのコマンド
    例:cd 移動したいディレクトリ・ファイル名

    👀 cdでerror発生した!違う階層にいる可能性が高い…。

    1. cd test 👉 自分がいる階層にtest.txtファイルあるか?
    2. lsで今の階層には何があるのか確認する
    3. 目的のファイルがある階層まで移動する
      または、
      cdコマンドで一気にディレクトリを移動しながらファイルへ飛ぶ
      cd ディレクトリ1/ディレクトリ2/test
  • ls
    https://www.atmarkit.co.jp/ait/articles/1606/27/news018.html
    ファイルの一覧や詳細情報を表示する
    例:ls

  • ls -la
    頭にドットがついたファイル(隠しファイル)を含めたすべてのファイルの一覧と、権限やタイムスタンプなど詳細情報を表示す
    例:ls -la

コマンド実行例
例:drwxrwxr-x  4 vagrant vagrant 4096  5月  4 18:57 .
  drwxr-xr-x 11 vagrant vagrant 4096  5月  3 16:17 ..
  drwxrwxr-x  8 vagrant vagrant 4096  5月  4 18:56 .git
  -rw-rw-r--  1 vagrant vagrant   26  5月  4 18:56 README.md
  -rw-rw-r--  1 vagrant vagrant  866  5月  4 18:58 sheet_shell.md
  drwxrwxr-x  2 vagrant vagrant 4096  5月  4 18:57 shell

このコマンド、どこで使う?

ここからは、よく聞くけど、使い方がいまいちわからないコマンドを軽く紹介。

---どう使う?---
ps aux
  自分以外の実行中プロセスを含めた全てのプロセス一覧を確認
  実行の妨げになるプロセスを見つける

---使用オプション---

  a:ほかのユーザーの端末操作プロセスの表示
  u:ユーザー名・開始時刻・UPU・メモリの使用率などを表示
  x:いま実行しているプロセスを表示

---どう使う?---
top -u ユーザー名
  指定したユーザーのプロセス状況を確認する
top -p プロセスID
  指定したプロセスの状況を確認する
top -d 更新間隔の秒数
  指定した秒数の感覚でtopの内容を更新する

---使用オプション---

  -u:表示するユーザーを名またはIDにて指定
  -p:表示するプロセスをIDにて指定
  -d:表示更新の感覚を秒数指定

---どう使う?---
grep "指定ワード" file_A.txt file_B.txt file_C.txt
  複数のファイルの中から指定ワードを検索する
grep "指定ワード" directoryA/fileA.txt
  他のディレクトリのファイルから指定ワードを検索
コマンド | grep 指定ワード
  最初のコマンドの結果から指定検索パターンで検索
  例:ls -l | grep 指定ワード
 👉 今のディレクトリにあるファイルを一覧表示、
  表示したファイルから指定したワードが含まれるファイル名を表示
  
---使用オプション---

  -l:検索結果にファイル名のみ表示

---どう使う?---
tail directoryA/file_A.txt
  他のディレクトリのファイルから末尾内容を表示
tail file_A.txt file_B.txt file_C.txt
  複数のファイルの末尾内容をまとめて表示
tail *.txt
  ファイル名に.txtが含まれるファイルの末尾内容をまとめて表示
tails -f fileA.txt
  ログファイルのように、末尾に情報が追記されるファイルの内容をリアルタイムで監視
tail -n 5 fileA.txt
  ファイルの末尾内容5行のみ表示
   省略:fail -5 fileA.txt
👀リアルタイム更新を終了:Ctrl+C

---使用オプション---

-f:ファイルの内容を監視し、表示結果をリアルタイムで更新
-n:出力する行数を指定

---どう使う?---
*(ワイルドカード)を使用したファイル名の指定をすると、キーワードの場所を指定(前とか後とか)
例:find . -name "shell*"
  先頭にshellを含むファイルをカレントディレクトリから検索
find ディレクトリ名 -name 検索ワード
  指定したディレクトリ内でファイルを検索
  指定したワードの大文字・小文字を区別して検索
    区別しない場合:-iname
find ディレクトリ名 -name 検索ワード -type d
  指定したディレクトリ内でディレクトリを検索
find file_A.txt file_B.txt file_C.txt (-type f)
  複数のファイルを検索する
find ./ -name "*.sh" -exec chmod 755 {} \;
  .shがつくファイル全ての権限を755に変更
find ディレクトリ名 -empty
  指定したディレクトリ内で、空のファイル・ディレクトリを表示
find ディレクトリ名 -ls
  指定したディレクトリ内のファイル情報を表示

---使用オプション---

-empty:サイズ0ファイル、空のディレクトリを検索
-exec:検索結果のファイルに指定したコマンドを実行
-ls:検索結果のファイルの情報を表示
-name:ファイルやディレクトリ名を指定し大文字・小文字を区別して検索
  -iname:ファイルやディレクトリ名を指定し大文字・小文字を区別せず検索
-type:指定したファイル種類に一致するファイルやディレクトリを検索
  -type f:ファイル
  -type d:ディレクトリ
  • chmod
    https://eng-entrance.com/linux-command-chmod
    ファイルやフォルダのアクセス権権限(パーミッション)を設定
    パーミッションは実行・書き込み変更・読み込みの設定が出来る
    例:chmod パーミッション番号 ファイル名
 7 rwx    読み書き実行可
 6 rw-    読み書き可
 5 r-x    読み  実行可
 4 r--    読み可
 3 -wx  書き実行可
 2 -w-    書き可
 1 --x    実行可
 0    --- なし

---どう使う?---
chmod -v 755(仮) file_A.txt | ls -la
  指定したファイルのアクセス権限を変更し、確認する
chmod ユーザー 追加解除 アクセス権限 file_A.txt

ユーザー:
  所有者 u
  グループ g
  その他ユーザー o
  すべてのユーザー a
追加解除:
  追加 +
  解除 -
アクセス権限:
  実行許可 x
  書き込み許可 w
  読み取り許可 r

---使用オプション---

-v:コマンド実行の結果を表示

---どう使う?---
chown -R 所有者名 ./
  カレントディレクトリ下、すべてのファイルやディレクトリの所有者を変更

---使用オプション---

  -R:ディレクトリ内の所有者を変更
  • &&
    https://eng-entrance.com/linux-basic-and
    複数のコマンドを実行(AND制御演算子)
    👀;と&&の違い:&&はコマンド1が成功したらコマンド2を実行する
    例:toush test.txt && ls -la test.txt

---どう使う?---
  複数のコマンド実行したいとき
  コマンド1が成功した後にコマンド2を実行させたいとき

番外編:シェルスクリプト~作成から実行~

  • シェルスクリプトファイルを実行する際の事前準備
    👀作成した.shファイルには、
    ファイル内のスクリプトを実行するための権限がないため、権限を与える必要がある
  $ touch test.sh  <!-- ファイルの作成 -->
  $ chmod 755 test.sh  <!-- ファイルの権限変更 -->
  $ ./test.sh  <!-- ファイルの実行 -->


省略系:作成と権限変更をまとめて実行:touch test.sh && chmod 755 test.sh

参考サイト