BioErrorLog Tech Blog

試行錯誤の記録

Linuxコマンドまとめ | 使用例とマニュアル

おはよう。@bioerrorlogです。

Linux基本コマンドを一覧でまとめていきます。

ネット上には良質なLinuxコマンドのまとめがたくさんありますが1、自分が覚えておきたいコマンドの一覧は、やはり自分で作るしかありません。

備忘録としてまとめます。



基本コマンド

man

マニュアルを表示します。

使用例:

$ man ls

これでlsコマンドのマニュアルが表示されます。

詳しくは別途記事にしました。
www.bioerrorlog.work

manコマンドのマニュアル: man(1) - Arch manual pages


cd

ディレクトリを移動します。

使用例#1:

$ cd ./Desktop

"./"は相対パスで、カレントディレクトリを示します。
つまりこの例では、カレントディレクトリ直下にある"Desktop"ディレクトリに移動します。

使用例#2:

$ cd

引数を与えないと、ホームディレクトリに戻ります。

使用例#3:

$ cd ../

"../"は相対パスで、一つ上の親ディレクトリを示します。
よって"../"を引数に渡すと、一つ上のディレクトリに移動します。

使用例#4:

$ cd /

"/"を引数に渡すと、ルートディレクトリに移動します。

cdコマンドのマニュアル: cd(1p) - Arch manual pages


ls

ディレクトリに含まれるファイルを表示します。

使用例#1:

$ ls

これでカレントディレクトリにあるファイルが列挙されます。
カレントディレクトリ以外のファイルは、パスを引数に渡すことで調べることができます。

使用例#2:

$ ls -l

長いリスト形式でファイルが表示され、より多くの情報が得られます。
ここで得られるパーミッション情報については、別途記事にしました。
www.bioerrorlog.work

使用例#3:

$ ls -a

隠しファイルを含め、ディレクトリ下にあるすべてのファイルを表示します。

なお、上記のオプションは ls -la のように組み合わせることも可能です。

lsコマンドのマニュアル: ls(1) - Arch manual pages


cat

ファイルの中身を表示します。

使用例#1:

$ cat test.txt

カレントディレクトリ直下のファイル名(test.txt)を指定した場合、ファイルの中身が表示されます。
カレントディレクトリ以外のファイルは、パスを指定することで中身を見ることができます。

catコマンドのマニュアル: cat(1) - Arch manual pages


echo

文字列を表示します。

使用例:

$ echo Hello, Lain.
Hello, Lain.

文字列Hello, Lain.が出力されました。

echoコマンドのマニュアル: echo(1) - Arch manual pages


pwd

カレントディレクトリを表示します。

使用例:

$ pwd

例えば /home/user/Desktop のように、カレントディレクトリが表示されます。

pwdコマンドのマニュアル: pwd(1) - Arch manual pages


touch

新規ファイルを作成します。

使用例:

$ touch test.txt

これで、空のファイル"test.txt"が作成されます。

touchコマンドのマニュアル: touch(1) - Arch manual pages


mkdir

新規ディレクトリを作成します。

使用例:

$ mkdir testdir

これで、空のディレクトリ"testdir"が作成されます。

mkdirコマンドのマニュアル: mkdir(1) - Arch manual pages

rm

ファイルやディレクトリを削除します。

使用例#1:

$ rm test.txt

ファイル(test.txt)が削除されます。

使用例#2:

$ rm -r test
#testはディレクトリ

ディレクトリ(test)が削除されます。

rmコマンドのマニュアル: rm(1) - Arch manual pages


入出力制御

" | " パイプ

|の左側のコマンドの出力を、|の右側のコマンドの入力として渡します。

使用例:

$ man ls | grep all
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci‐
       -a, --all
       -A, --almost-all
              print the allocated size of each file, in blocks
       -X     sort alphabetically by entry extension
       Written by Richard M. Stallman and David MacKenzie.
       or available locally via: info '(coreutils) ls invocation'

man lsコマンドの結果を、grep allコマンドに渡したことで、lsコマンドマニュアルから"all"という文字列を含む列が検索されました。


" > " リダイレクト

>の左側の出力を、>の右側に渡します。

使用例:

$ echo Hello, Lain. > hello.txt
#hello.txt
Hello, Lain.

Hello, Lain.という文字列が、hello.txtファイルとして出力されました。


ファイル分析

file

ファイルの形式を表示します。

使用例:

$ file your_pass
your_pass: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=92e8f5e9bc90478dfdcb5fc4bd6c63f414ed2f6e, not stripped

"your_pass"という名前のファイルの形式が表示されました。 たとえば、実行ファイル形式ELF 64-bitであることなどがわかります。

fileコマンドのマニュアル: file(1) - Arch manual pages


tree

ディレクトリ内容を木構造で表示します。

使用例:

$ tree radare2
radare2
├── AUTHORS.md
├── autogen.sh
├── binr
│   ├── blob
│   │   ├── main.c
│   │   ├── Makefile
│   │   └── version.c
│   ├── Makefile
│   ├── preload
│   │   ├── alloc.c
│   │   ├── libr2.c
│   │   ├── Makefile
│   │   ├── trap-darwin-x86-32.asm
│   │   ├── trap-darwin-x86-64.asm
│   │   ├── trap-linux-x86-32.asm
│   │   └── trap-linux-x86-64.asm
│   ├── r2agent
│   │   ├── index.h
│   │   ├── Makefile
│   │   ├── meson.build
│   │   ├── r2agent
│   │   ├── r2agent.c
│   │   ├── r2agent.d
│   │   └── r2agent.o
│   ├── r2bb
│   │   ├── Makefile
│   │   └── r2bb.c
│   ├── r2pm
│   │   ├── meson.build
│   │   └── r2pm
#以下略

radare2ディレクトリの構造が視覚的に分かりやすく表示されました。

なお、デフォルトではインストールされていないので、自分でインストールする必要があります。

$ sudo apt install tree


オプション-Lで、表示する階層を指定することが出来ます。

$ tree -L 3


オプション-aで、すべてのファイルを表示します。

$ tree -a


treeコマンドのマニュアル: tree(1) - Arch manual pages


ファイル検索系

locate

ファイルを名前で検索します。

使用例:

$ locate gdbinit
/etc/gdb/gdbinit
/home/nori/.gdbinit
/usr/share/gdb/system-gdbinit
/usr/share/gdb/system-gdbinit/elinos.py
/usr/share/gdb/system-gdbinit/wrs-linux.py

"gdbinit"を含むファイルを検索し、その結果が出力されました。

※findコマンドとの違い:
locateはupdatedbによって予め作成されたデータベースから検索されます。 findはリアルタイムにファイルが検索されます。 個人的には、findコマンドの挙動がいまいち把握できていないので、locateコマンドを使っています。

locateコマンドのマニュアル: locate(1) - Arch manual pages


grep

与えたパターンにマッチした行を出力します。

使用例:

$ man ls | grep help
       --help display this help and exit
       GNU coreutils online help: <http://www.gnu.org/software/coreutils/>

lsコマンドのマニュアルのなかで、"help"という文字列がある行が2つ抽出されました。
あらゆるコマンドの後に| grep <key>と付け加えて検索できるので、大変重宝しています。

grepを使ってある文字列を含むファイルを検索する方法は、以下の記事に別途まとめています: www.bioerrorlog.work

grepコマンドのマニュアル: grep(1) - Arch manual pages

whereis

コマンドのバイナリファイル、ソースファイル、マニュアルページファイルのパスを表示します。

使用例:

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

lsコマンドを渡したことで、lsコマンドのバイナリファイルとマニュアルページファイルのパス
ls: /bin/ls /usr/share/man/man1/ls.1.gz
が表示されました。

whreisコマンドのマニュアル: whereis(1) - Arch manual pages


which

コマンドのパスを表示します。

使用例:

$ which ls
/bin/ls

whichコマンドのマニュアル: which(1) - Arch manual pages


OS関連

gnome-system-monitor | システムモニターの起動

システムモニター(Windowsのタスクマネージャーのようなもの)を起動します。

使用例:

$ gnome-system-monitor

システムモニターのヘルプ: System Monitor - GNOME Library


free

メモリの使用状況を表示します。

使用例#1:

$ free

freeコマンドを実行すると、次のようにメモリ使用量が表示されます。

              total        used        free      shared  buff/cache   available
Mem:        5934616      962216     3785240        3132     1187160     4686364
Swap:        969960           0      969960

メモリとスワップ領域について、使用中・未使用のメモリサイズが表示されます。

使用例#2:

$ free -h

"-h"オプションをつけると見やすくなります。

              total        used        free      shared  buff/cache   available
Mem:           5.7G        972M        3.4G        5.1M        1.3G        4.4G
Swap:          947M          0B        947M

freeコマンドのマニュアル: free(1) - Arch manual pages


df

ディスクの使用状況を表示します。

使用例:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            2.9G     0  2.9G   0% /dev
tmpfs           580M  1.8M  578M   1% /run
/dev/sda1        20G  7.3G   12G  40% /
tmpfs           2.9G  4.0K  2.9G   1% /dev/shm
~
#以下略


dfコマンドのマニュアル: df(1) -Arch manual pages


ps

処理しているプロセスの状況を表示します。

使用例#1:

$ ps
   PID TTY          TIME CMD
  1769 pts/0    00:00:00 bash
  4424 pts/0    00:00:00 ps

このPID, TTY, TIME, CMDは、psコマンドのマニュアルによると、

PID: the process ID (プロセスID)
TTY: the terminal associated with the process (プロセスを行っているターミナル)
TIME: the cumulated CPU time (累積CPU使用時間)
CMD: the executable name (実行コマンド)

(括弧内は私の意訳)
ということでした。

使用例#2:

$ ps aux

プロセスに関して、すべての情報が表示されます。

psコマンドのマニュアル: ps(1) - Arch manual pages

uname

OSの情報を表示します。

使用例:

$ uname -a
Linux my-virtual-machine 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

64bitなのか、32bitなのか等も、ここで表示されています。

unameコマンドのマニュアル: uname(1) - Arch manual pages


Web関連

curl

URLからデータを移行します。

使用例:

$ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"

Pythonのpipパッケージをインストールする際に行った操作。 URL"https://bootstrap.pypa.io/get-pip.py"のデータを取得し、"get-pip.py"として出力されました。

curlコマンドのマニュアル: curl(1) - Arch manual pages




  1. 例えばCore utilities - ArchWikiは、とてもお世話になっている記事です。