Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

【もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】セクション3: シェルとコマンドラインの基本で知らなかったことをざっくりまとめてみた

目次

シェルとは

シェルとは、 ユーザーが入力したコマンドを解釈して、それを実行するためのソフトウェアのことです。 ソフトウェアということは何らかのプログラムが書かれた一つのファイルです。シェル自体にキーボードやディスプレイは備わっていません。シェルへの入力や結果の出力を表示するためにターミナルエミュレータ(ターミナル)というソフトウェアが使われます。ターミナルエミュレータは入出力装置です。実際のコマンドの実行はシェルが行なっています。

(※)厳密にいうと、シェルはコマンドに対応したファイルを探しているだけです。コマンドの実行はLinuxカーネルが行います。また、多くの場合、ターミナルと呼ばれるものはターミナルエミュレータを指します。

echoコマンドとは

echoコマンドとは、指定した文字列を出力してくれるコマンドのことです。echoは日本語で反響や木霊(こだま)という意味です。

[ec2-user@ip-10-0-10-10 www]$ echo hello world
hello world
[ec2-user@ip-10-0-10-10 www]$ 

また以下のコマンドを実行することで、現在動いているシェルを表示させることができます。bashというシェルが動いていることが分かります。デフォルトで起動するシェルをログインシェルと呼びます。

[ec2-user@ip-10-0-10-10 www]$ echo $SHELL
/bin/bash
[ec2-user@ip-10-0-10-10 www]$

(※)$から始まる変数をシェル変数と呼びます。

プロンプトとコマンドラインの違い

プロンプトとは、[ec2-user@ip-10-0-10-10 www]$の部分です。コマンドラインとはプロンプトの右側のコマンド入力部分のことです。プロンプトは促すという意味です。

[ec2-user@ip-10-0-10-10 www]$ ls
cgi-bin  html
[ec2-user@ip-10-0-10-10 www]$

historyコマンド

historyコマンドで過去に実行したコマンドの一覧を取得できます。それぞれのコマンドには番号が振られていて、!番号でそのコマンドを実行できます。

[ec2-user@ip-10-0-10-10 www]$ history

// 省略

[ec2-user@ip-10-0-10-10 www]$ !78
ls
cgi-bin  html
[ec2-user@ip-10-0-10-10 www]$

lsコマンドのよく使うオプション

Fオプション

F(ラージエフ)オプションを使うことで、ファイル種別を表示してくれます。ファイルなのかディレクトリなのかを判断することができます。ディレクトリには後ろにスラッシュがついていて、シンボリックリンクには@がついています(シンボリックリンクはファイルの一種です)。普通のファイルには何もついていません。このFはclassify(分類する)のfです。

[ec2-user@ip-10-0-10-10 ~]$ ls -F /
bin@  boot/  dev/  etc/  home/  lib@  lib64@  local/  media/  mnt/  opt/  proc/  root/  run/  sbin@  srv/  sys/  tmp/  usr/  var/

aオプション

aオプションは隠しファイルも込みで全て表示します。 .から始まるファイルのことを隠しファイルと呼びます。ファイル名の先頭に.をつけると隠しファイルになります。 aはオールの略です。

[ec2-user@ip-10-0-10-10 wordpress]$ ls -a /
.  ..  .autorelabel  bin  boot  dev  etc  home  lib  lib64  local  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

lオプション

lオプションはロングの略です。長く表示するので、ファイルやディレクトリのより詳細な情報を表示します。

[ec2-user@ip-10-0-10-10 /]$ ls -l
total 16
lrwxrwxrwx   1 root root    7 Oct 12 18:54 bin -> usr/bin
dr-xr-xr-x   4 root root 4096 Nov  5 09:44 boot
drwxr-xr-x  15 root root 2900 Nov 11 07:54 dev
drwxr-xr-x  86 root root 8192 Nov  6 17:32 etc
drwxr-xr-x   3 root root   22 Nov  5 08:10 home
lrwxrwxrwx   1 root root    7 Oct 12 18:54 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Oct 12 18:54 lib64 -> usr/lib64
drwxr-xr-x   2 root root    6 Oct 12 18:53 local
drwxr-xr-x   2 root root    6 Apr  9  2019 media
drwxr-xr-x   2 root root    6 Apr  9  2019 mnt
drwxr-xr-x   4 root root   27 Oct 12 18:57 opt
dr-xr-xr-x 166 root root    0 Nov 11 07:54 proc
dr-xr-x---   3 root root  119 Nov  7 14:20 root
drwxr-xr-x  30 root root 1000 Nov 11 07:58 run
lrwxrwxrwx   1 root root    8 Oct 12 18:54 sbin -> usr/sbin
drwxr-xr-x   2 root root    6 Apr  9  2019 srv
dr-xr-xr-x  13 root root    0 Nov 11 07:54 sys
drwxrwxrwt  10 root root  328 Nov 11 09:39 tmp
drwxr-xr-x  13 root root  155 Oct 12 18:54 usr
drwxr-xr-x  20 root root  280 Nov  5 09:47 var

ロングオプションとショートオプション

オプションには大きく分けて2種類のオプションがあります。ロングオプションとショートオプションです。ショートオプションはハイフンと何らかの一文字からなる短いオプションです。ロングオプションはハイフン2つと英単語からなる長いオプションです。ショートオプションもロングオプションも同じ挙動になります。コマンドによってはどちらかしか用意されていない場合もあります。コマンドにどんなオプションが用意されているかを知りたい場合、以下のマニュアルコマンドを実行します。

man コマンド名

(※)オプションの中には引数を取るオプションもあります。

ls -w30

オプションを複数指定する

オプションを複数指定する場合、スペースを上けて指定するか、英字1文字を連続させて指定します。後者の方が記述量が少ないのでおすすめです。

[ec2-user@ip-10-0-10-10 /]$ ls -a -l

or 

[ec2-user@ip-10-0-10-10 /]$ ls -al

参考記事

もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】 | Udemy