Linux サーバ(主に CentOS)の運用など、業務でよく使う割にすぐに忘れてしまうコマンドやオプションの中から、汎用的に(どんな現場でも)使えそうなものをピックアップしました。
目次
sort
sort(ソート)は、テキストファイルを行単位で並べ替えるコマンドです。
テストファイル
$ cat difftest2.txt
#include /usr/share/taskwarrior/solarized-dark-256.theme
#include /usr/share/taskwarrior/solarized-light-256.theme
#include /usr/share/taskwarrior/no-color.theme
並び替え
sort コマンドはデフォルトで昇順になります。
$ sort difftest2.txt
#include /usr/share/taskwarrior/no-color.theme
#include /usr/share/taskwarrior/solarized-dark-256.theme
#include /usr/share/taskwarrior/solarized-light-256.theme
並び替え(高速)
sort コマンドは、locale(ロケール)に C
(英語 / POSIX システム標準)を指定すると、高速に並べ替えが可能です。
これは、(GB単位のテキストファイルなど)サイズが大きくなってきたときに効力を発揮します。
※ロケールは、画面表示や処理に使われるローカライズ情報(言語・記号など)を指定する環境変数です。
- LC_ALL
$ LC_ALL=C sort difftest2.txt #include /usr/share/taskwarrior/no-color.theme #include /usr/share/taskwarrior/solarized-dark-256.theme #include /usr/share/taskwarrior/solarized-light-256.theme
- LANG
下記でもLC_ALL=C
と同じですが、LANG
よりもLC_ALL
のほうが優先度が高いため、注意が必要です。
※LC_ALL
にC
以外が指定されていると意図した結果になりません。$ LANG=C sort difftest2.txt #include /usr/share/taskwarrior/no-color.theme #include /usr/share/taskwarrior/solarized-dark-256.theme #include /usr/share/taskwarrior/solarized-light-256.theme
diff
diff(ディフ)は、テキストの差分チェックができるコマンドです。
テストファイル
$ cat difftest.txt
# Color theme (uncomment one to use)
#include /usr/share/taskwarrior/dark-gray-blue-256.theme
#include /usr/share/taskwarrior/solarized-dark-256.theme
$ cat difftest2.txt
#include /usr/share/taskwarrior/solarized-dark-256.theme
#include /usr/share/taskwarrior/solarized-light-256.theme
#include /usr/share/taskwarrior/no-color.theme
実行
git っぽい形式で差分を表示
- u
比較内容をマージして表示します。Unified(ユニファイド)形式と呼ばれています。$ diff -u difftest.txt difftest2.txt -# Color theme (uncomment one to use) -#include /usr/share/taskwarrior/dark-gray-blue-256.theme #include /usr/share/taskwarrior/solarized-dark-256.theme +#include /usr/share/taskwarrior/solarized-light-256.theme +#include /usr/share/taskwarrior/no-color.theme
変更のある行だけを(左右分割で)表示
- y
比較内容を左右に並べて表示します。 - --suppress-common-lines
変更のある行だけを表示します。$ diff -y --suppress-common-lines difftest.txt difftest2.txt # Color theme (uncomment one to use) < #include /usr/share/taskwarrior/dark-gray-blue-256.theme < > #include /usr/share/taskwarrior/solarized-light-256.theme > #include /usr/share/taskwarrior/no-color.theme
ソートして比較
- sort
上記 sort コマンドを併用すると、並べ替え後に比較してくれます。$ diff -u <(sort difftest.txt ) <(sort difftest2.txt) -# Color theme (uncomment one to use) -#include /usr/share/taskwarrior/dark-gray-blue-256.theme +#include /usr/share/taskwarrior/no-color.theme #include /usr/share/taskwarrior/solarized-dark-256.theme +#include /usr/share/taskwarrior/solarized-light-256.theme
ls
ls(list segments)コマンドは、ファイルやディレクトリの一覧を表示するコマンドです。
(Windows でいうところの dir コマンドです)。
-
lh
l(list)、h(human / 可読性重視)を指定すると、名称順になります。$ ls -lh /tmp/ | grep -v systemd 合計 40K drwx------ 2 link link 4.0K 6月 19 20:42 Buttercup Crashesz srwxrwxr-x 1 link link 0 6月 19 20:41 com.awsomeness.notes -rw------- 1 link link 0 6月 19 20:36 config-err-dAmWeX -rw-rw-r-- 1 link link 151 6月 19 21:35 difftest.txt -rw-rw-r-- 1 link link 162 6月 19 21:35 difftest2.txt srw------- 1 link link 0 6月 19 20:36 fcitx-socket-:0 drwx------ 2 link link 4.0K 6月 19 21:37 medit-link-0 drwx------ 3 root root 4.0K 6月 19 20:36 snap.brave drwx------ 2 link link 4.0K 6月 19 20:36 ssh-4JjDvXgndW7N drwx------ 2 link link 4.0K 6月 19 20:36 ssh-AR0wPmrT0Nvw
-
t
タイムスタンプ順(降順)になります。$ ls -lht /tmp/ | grep -v systemd 合計 40K drwx------ 2 link link 4.0K 6月 19 21:37 medit-link-0 -rw-rw-r-- 1 link link 162 6月 19 21:35 difftest2.txt -rw-rw-r-- 1 link link 151 6月 19 21:35 difftest.txt drwx------ 2 link link 4.0K 6月 19 20:42 Buttercup Crashes srwxrwxr-x 1 link link 0 6月 19 20:41 com.awsomeness.notes drwx------ 3 root root 4.0K 6月 19 20:36 snap.brave srw------- 1 link link 0 6月 19 20:36 fcitx-socket-:0 drwx------ 2 link link 4.0K 6月 19 20:36 ssh-4JjDvXgndW7N drwx------ 2 link link 4.0K 6月 19 20:36 ssh-AR0wPmrT0Nvw -rw------- 1 link link 0 6月 19 20:36 config-err-dAmWeX
-
r
r オプションは降順です。t オプションと併用すると(t オプションは初期値が降順のため)結果的に昇順になります。$ ls -lhtr /tmp/ | grep -v systemd 合計 40K -rw------- 1 link link 0 6月 19 20:36 config-err-dAmWeX drwx------ 2 link link 4.0K 6月 19 20:36 ssh-AR0wPmrT0Nvw drwx------ 2 link link 4.0K 6月 19 20:36 ssh-4JjDvXgndW7N srw------- 1 link link 0 6月 19 20:36 fcitx-socket-:0 drwx------ 3 root root 4.0K 6月 19 20:36 snap.brave srwxrwxr-x 1 link link 0 6月 19 20:41 com.awsomeness.notes drwx------ 2 link link 4.0K 6月 19 20:42 Buttercup Crashes -rw-rw-r-- 1 link link 151 6月 19 21:35 difftest.txt -rw-rw-r-- 1 link link 162 6月 19 21:35 difftest2.txt drwx------ 2 link link 4.0K 6月 19 21:37 medit-link-0
-
S
S オプションは、ファイルサイズ(降順)です。$ ls -lhS /tmp/ | grep -v systemd 合計 40K drwx------ 2 link link 4.0K 6月 19 20:42 Buttercup Crashes drwx------ 2 link link 4.0K 6月 19 21:37 medit-link-0 drwx------ 3 root root 4.0K 6月 19 20:36 snap.brave drwx------ 2 link link 4.0K 6月 19 20:36 ssh-4JjDvXgndW7N drwx------ 2 link link 4.0K 6月 19 20:36 ssh-AR0wPmrT0Nvw -rw-rw-r-- 1 link link 162 6月 19 21:35 difftest2.txt -rw-rw-r-- 1 link link 151 6月 19 21:35 difftest.txt srwxrwxr-x 1 link link 0 6月 19 20:41 com.awsomeness.notes -rw------- 1 link link 0 6月 19 20:36 config-err-dAmWeX srw------- 1 link link 0 6月 19 20:36 fcitx-socket-:0
-
X
X オプションは、拡張子順(昇順)で並び替えてくれます。$ ls -lhX /tmp/ | grep -v systemd 合計 40K drwx------ 2 link link 4.0K 6月 19 20:42 Buttercup Crashes -rw------- 1 link link 0 6月 19 20:36 config-err-dAmWeX srw------- 1 link link 0 6月 19 20:36 fcitx-socket-:0 drwx------ 2 link link 4.0K 6月 19 21:37 medit-link-0 drwx------ 2 link link 4.0K 6月 19 20:36 ssh-4JjDvXgndW7N drwx------ 2 link link 4.0K 6月 19 20:36 ssh-AR0wPmrT0Nvw drwx------ 3 root root 4.0K 6月 19 20:36 snap.brave srwxrwxr-x 1 link link 0 6月 19 20:41 com.awsomeness.notes -rw-rw-r-- 1 link link 151 6月 19 21:35 difftest.txt -rw-rw-r-- 1 link link 162 6月 19 21:35 difftest2.txt
-
1
名称(ファイル名・ディレクトリ名)だけ出力したい時は、1 オプションを使います。
このオプションを使うと、改行しながら表示してくれます。- オプション無し
$ ls /tmp/ 'Buttercup Crashes' difftest.txt medit-link-0 ssh-AR0wPmrT0Nvw com.awsomeness.notes difftest2.txt snap.brave config-err-dAmWeX fcitx-socket-:0 ssh-4JjDvXgndW7N
- 1 オプションあり
$ ls /tmp/ | grep -v systemd Buttercup Crashes com.awsomeness.notes config-err-dAmWeX difftest.txt difftest2.txt fcitx-socket-:0 medit-link-0 snap.brave ssh-4JjDvXgndW7N ssh-AR0wPmrT0Nvw
- オプション無し