実務で使えるLinuxコマンドあれこれ

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_ALLC 以外が指定されていると意図した結果になりません。

    $ 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