Core utilities
Core utilitiy は、GNU/Linux システムにおける基本的で基礎的なツールのことです。この記事では、それらのツールに関する完全ではない概要や、ドキュメントへのリンク、有用な代替プログラムに関する情報を提供します。この記事の扱う範囲は GNU coreutils にとどまりません。ほとんどの core utility は伝統的な Unix ツールで、多くが POSIX によって標準化されました。しかし、さらに多くの機能を提供するように開発され続けています。
ほとんどのコマンドラインインターフェイスは man ページ に、GNU プロジェクト によるユーティリティは Info マニュアルにドキュメント化されています。一部のシェルは help
コマンドをシェルの組み込みコマンドとして提供しています。加えて、ほとんどのユーティリティは --help
フラグで実行すると使用方法を表示します。
目次
基本コマンド
以下の表には ArchLinux ユーザーが知っておくべきいくつかの重要なユーティリティを載せています。intro(1) も参照してください。
パッケージ | ユーティリティ | 説明 | ドキュメント | 代替品 |
---|---|---|---|---|
シェル組み込み | cd | ディレクトリを変更 | cd(1p) | #cd の代替 |
GNU coreutils | ls | ファイルを一覧表示 | ls(1), info | tree, #ls の代替 |
cat | ファイルを連結して表示 | cat(1), info | tac(1), #cat の代替 | |
mkdir | ディレクトリを作成 | mkdir(1), info | ||
rmdir | 空のディレクトリを削除 | rmdir(1), info | ||
rm | ファイルやディレクトリを削除 | rm(1), info | shred unlink(1) | |
cp | ファイルやディレクトリをコピー | cp(1), info | #cp の代替 | |
mv | ファイルやディレクトリを移動 | mv(1), info | ||
ln | ハードリンクやシンボリックリンクを作成 | ln(1), info | sln(8) (soname リカバリ) | |
chown | ファイルの所有者やグループを変更 | chown(1), info | chgrp(1) | |
chmod | ファイルのパーミッションを変更 | chmod(1), info | ||
dd | ファイルを変換・コピー | dd(1), info | #dd の代替 | |
df | ファイルシステムの使用状況を表示 | df(1), info | #df の代替 | |
du | ファイルとディレクトリによって使用されているディスクの容量を推定します | du(1), info | #du の代替 | |
GNU tar | tar | tar アーカイバ | tar(1), info | アーカイバ |
GNU less | less | ターミナルページャ | less(1) | ターミナルページャ |
GNU findutils | find | ファイルやディレクトリを検索 | find(1), info, [[1]] | #find の代替 |
GNU diffutils | diff | ファイルを行毎に比較 | diff(1), info | #diff の代替 |
GNU grep | grep | パターンに一致する行を表示 | grep(1), info | #grep の代替 |
GNU sed | sed | ストリームエディタ | sed(1), info, one-liners | sad |
GNU gawk | awk | パターンスキャンとデータ処理言語 | gawk(1), info | nawk, mawkAUR, goawkAUR |
util-linux | dmesg | カーネルリングバッファを出力/制御 | dmesg(1) | systemd/ジャーナル |
lsblk | ブロックデバイスを一覧表示 | lsblk(8) | ||
mount | ファイルシステムをマウント | mount(8) | ||
umount | ファイルシステムをアンマウント | umount(8) | ||
su | ユーザを変更 | su(1) | sudo, doas | |
kill | プロセスを終了 | kill(1) | pkill(1), killall(1) | |
procps-ng | pgrep | 名前や属性によってプロセスを検索 | pgrep(1) | pidof(1) |
ps | プロセスの情報を表示 | ps(1) | top(1), タスクマネージャ | |
free | メモリの使用/未使用量を表示 | free(1) |
データの損失を防ぐ
rm
や mv
、cp
、シェルのリダイレクトは問答無用でファイルを削除/上書きします。rm
と mv
、cp
はすべて -i
フラグをサポートしており、このフラグを使うとファイルを削除/上書きする前にユーザに尋ねるようになります。エイリアスを使って -i
フラグをデフォルトで有効化したいユーザもいるでしょう。しかし、これらのシェルオプションに頼りっきりなるのは危険です。これらのオプションに慣れてしまうと、これらを使用していない他のシステムやユーザを使うときにデータ損失を招く可能性があります。データ損失を防ぐ最良の方法はバックアップを取ることです。
その他のコマンド
以下の表にはしばしば便利なコアユーティリティをリストしています。
パッケージ | ユーティリティ | 説明 | ドキュメント | 代替品 |
---|---|---|---|---|
シェル組み込み | alias | エイリアスを定義/表示 | alias(1p) | |
type | コマンドのタイプを表示 | type(1p) | command(1p), whereis(1), which(1) | |
time | コマンドの所要時間を計測 | time(1p) | ||
GNU coreutils | tee | 標準入力を読み込み、標準出力やファイルに書き出す | tee(1), info | pee(1) |
mktemp | テンポラリファイルやテンポラリディレクトリを作成 | mktemp(1), info | ||
mknod | 名前付きパイプやデバイスノードを作成する | mknod(1), mkfifo(1), info | ||
truncate | ファイルのサイズを縮小/拡張する | truncate(1), info | fallocate(1) | |
basenc | 入力をエンコードし、結果を出力する | basenc(1), base64(1), info | ||
cut | 行の選択した部分を表示 | cut(1), info | colrm(1), hck, choose | |
tr | 文字を置換/削除 | tr(1), info | uconv(1) | |
od | ファイルを8進数や他の基数でダンプ | od(1), info | hexdump(1), vim の xxd(1) | |
sort | 行をソート | sort(1), info | ||
uniq | 繰り返される行を表示/省略 | uniq(1), info | anewer, runiqAUR, huniq-gitAUR | |
comm | 2つのソート済みのファイルを行単位で比較 | comm(1), info | zetAUR | |
head | ファイルの最初の部分を出力 | head(1), info | ||
join | 2 つの入力のフィールドが共通な行を結合する | join(1), info | combine(1) zetAUR | |
md5sum | 入力の暗号ハッシュ関数の値を計算し、出力する | sha256sum(1), sha512sum(1), info | shasum(1), hashdeep(1), rhash(1) | |
tail | ファイルの最後の部分を出力/追従 | tail(1), info | ||
wc | 改行や単語、バイト数を表示 | wc(1), info | ||
GNU binutils | strings | バイナリファイル内の表示可能な文字を表示 | strings(1), info | stringsextAUR |
util-linux | column | ファイルを複数列に整形する、任意でグリッド付きの表で綺麗に出力する | column(1) | paste(1), csviewAUR |
GNU findutils | xargs | 標準入力からの引数を組み合わせる、またはテンプレート化し、外部コマンドを呼び出す | xargs(1) | parallel(1) (parallel_alternatives(7)) |
GNU glibc | iconv | 文字コードを変換 | iconv(1) | recode, uconv(1) |
GNU sharutils | uudecode | ファイルを email に適したテキストにエンコードする | uuencode(1), uudecode(1), info | uudeview(1) |
file | file | ファイルタイプを推測 | file(1) |
moreutils パッケージには GNU coreutils に無い sponge(1) のような便利なツールを提供します。
代替コマンド
コアユーティリティの代替は以下のパッケージによって提供されています:
- BusyBox — レスキューや組み込みシステム向けのユーティリティ。
- Toybox — オールインワンの Linux コマンドライン。
- uutils — GNU coreutils を Rust で書き直したクロスプラットフォームなユーティリティ。このスクリプトを使用すればデフォルトにすることができます。
- Heirloom Toolchest — 標準的な Unix ユーティリティの伝統的な実装。
- 9base — Plan9 の様々なツールを Unix に移植したもの。
- sbase — *nix core ユーティリティの suckless 版。
- ubase — sbase ユーティリティの拡張。
cat の代替
- bat — シンタックスハイライトと Git 統合機能を備えた cat クローン
cd の代替
- zoxide — ユーザーの癖を学習するスマートな cd コマンド。たった数個のキーストロークでどこへでも移動できます。
- autojump — コマンドラインからファイルシステムを移動する高速な方法。
Bash#パスを入力したら自動で "cd" と Zsh#最近のディレクトリを記憶させる も見てください。
cp の代替
rsync を cp/mv の代わりとして使うことで、失敗したファイル転送の再開、転送状況の表示、すでに存在するファイルのスキップ、チェックサムによる転送先ファイルの整合性の確認が可能になります。
ls の代替
- broot — ディレクトリツリーを表示・移動する新しい方法
- clifm — ls(1) のようにファイルを一覧表示し、さらにアイコン表示と RGB カラーサポートを備えたファイルマネージャ
- exa — カラー表示、ツリー表示、git 統合などの機能を備えたもう一つの ls 代替
- lsd — 多くの美しい色と素晴らしいアイコンを備えたモダンな ls
find の代替
- fd — シンプルで速く、ユーザーフレンドリーな find の代替。隠しファイルや
.gitignore
にあるファイルをデフォルトで無視します。
- fuzzy-find — ファイル検索のためのあいまい補完。
- mlocate — locate/updatedb の実装をマージ。
- plocate — よりさらに速い locate
グラフィカルなファイル検索ソフトウェアは アプリケーション一覧/ユーティリティ#ファイル検索 をご覧ください。
diff の代替
diffutils では単語単位の差分表示ができませんが、それが可能なプログラムがいくつか存在します:
- git の diff は
--color-words
フラグを使用すると単語単位の差分表示が可能です。--no-index
フラグを使用すれば Git のワークツリー外でも使用可能です。 - cwdiff — 出力をカラー表示化する GNU wdiff ラッパー
- git-delta — git や diff 、grep 用の出力をシンタックスハイライトするページャ
- dwdiff — 単語単位で差分表示する diff のフロントエンド。カラー表示サポート付き。
- icdiff — Python で書かれたカラー表示 diff ツール。"Improved color diff" は通常の diff の使用を補助するという意味です。
- wdiff — GNU diff の単語単位の実装。カラー表示はサポートしません。
アプリケーション一覧/ユーティリティ#Comparison, diff, merge もご覧ください。
grep の代替
- mgrep — 複数行 grep
- pdfgrep — PDF ファイル内のテキストを検索するツール
- ripgrep-all — プレーンテキストのみならず、PDF ファイルや E-Books、Office ドキュメント、zip、tar.gz ファイル内のテキストも検索できます。
コード検索ソフトウェア
以下のツールはコード検索の場面で grep を置き換えることを目的としています。これらはデフォルトで再帰検索をし、バイナリファイルや .gitignore
内にあるファイルをスキップします。
- ack — Perl ベースの grep 置き換え。多種多様なソースコードの大きなツリーを扱うプログラマに向けです。
- ripgrep (rg) — ag の使いやすさと grep のそのままの速さを組み合わせた検索ツール。
- The Silver Searcher (ag) — Ack に似ているがより速いコード検索ツール。
- ugrep (ug) — インタラクティブなユーザインターフェイス、曖昧検索、boolean クエリ、16進数表示などの機能を持つ非常に高速な grep。
cscope も参照。
インタラクティブフィルター
- fzf — 汎用のコマンドラインあいまい検索ソフトウェア。デフォルトで find を使用します。
- fzy — 高度なスコアリングアルゴリズムを搭載した速くてシンプルなあいまいテキストセレクタ。
- peco — シンプルなインタラクティブフィルタリングツール。
- percol — UNIX シェルの伝統的なパイプにインタラクティブフィルタリングを追加。
- skim — Rust で書かれたあいまい検索ソフトウェア。fzf に似ています。
dd の代替
代替 dd の実装
このサブセクションでは、dd(1p) の POSIX 仕様に (ほぼ) 準拠しているインターフェイスとデフォルトの挙動を持つ dd の実装をリストアップしています。
- ddpt — Linux カーネルの SCSI サブシステムのメンテナによる、sg_dd(8) のポータブルな代替。オプションですが、非常に特殊化されたハードウェア I/O (SCSI コマンドセット) をサポートし、さらに他の多くの機能を有しています。
- sdd — Joerg Schilling による、UNIX 環境間で移植性の高い dd の実装。コピーされたデータのチェックサムや、不良ブロックを再読込させることができます。
GNU dd のスピンオフ
coreutils にある dd の GNU 実装も POSIX に準拠しています。このサブセクションでは GNU dd のフォークをリストアップしています。
- dcfldd — 科学捜査やセキュリティの場面のための、機能が強化された GNU dd フォーク。次のような機能を有しています: 臨機応変なハッシュ検証機能、柔軟なディスク消去、書き込み検証、同時に複数のターゲットに出力、出力の分割やパイプ。
- dc3dd — アメリカ国防総省サイバー犯罪センター (DC3) による、GNU dd のパッチ済みバージョン。dcfldd とよく似た目的と機能を有しています。
モダンな dd の類似品
このサブセクションでは、(JCL に似たコマンドライン構文とデフォルトの挙動という点で) POSIX に準拠していない dd の代替をリストアップしています。
- dd_rescue — 多くの機能が積み込まれたモダンな dd の類似品。日々のスクリプティングやディスク複製、データリカバリに適しています。
- rw — 従来のコマンドラインフラグ付きの必要最低限でポータブルな dd 類似品。
- https://sortix.org/rw/ || rwAUR
buffer のスピンオフ
このサブセクションでは、bufferAUR のフォークをリストアップしています。buffer は、dd に似た汎用 I/O バッファリングユーティリティですが、動的サイズバッファを持っています。ブロック単位の I/O をサポートしており、LTO テープを書き込み/読み込みする際に摩耗を防ぐために使用できます。
- mbuffer — buffer ユーティリティにマルチスレッディングや他の機能を組み合わせたもの。
df の代替
- duf — ディスクの使用量と空き容量を調べるユーティリティ
du の代替
- cdu — カラー出力で、美しいヒストグラムを出力する du ラッパ。
- dust — Rust で記述された du のより直感的なバージョン。
- ncdu — ncurses のシンプルなディスク使用量アナライザ。
- gdu — Go で記述された、コンソールインターフェイスのディスク使用量アナライザ。
アプリケーション一覧/ユーティリティ#ディスク使用量表示プログラム も見てください。
参照
- GNU Coreutils ドキュメント
- GNU Coreutils FAQ
- Coreutils Gotchas: coreutils コンポーネントにおけるいくつかの紛らわしい挙動に関する、GNU coreutils メンテナのノート
- POSIX utilities