「Core utilities」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(9人の利用者による、間の51版が非表示)
1行目: 1行目:
[[Category:システム管理]]
+
[[Category:コマンドライン]]
[[Category:コマンドシ]]
+
[[Category:ソフトウア一覧]]
[[en:Core Utilities]]
+
[[en:Core utilities]]
[[it:Core Utilities]]
+
[[es:Core utilities]]
[[zh-CN:Core Utilities]]
+
[[fa:Core utilities]]
[[zh-TW:Core Utilities]]
+
[[pt:Core utilities]]
  +
[[ru:Core utilities]]
  +
[[zh-hans:Core utilities]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|Bash}}
+
{{Related|コマンドラインシェル}}
{{Related|Zsh}}
+
{{Related|ユーザーとグループ}}
  +
{{Related|Systemd}}
  +
{{Related|Pacman}}
 
{{Related|一般的な推奨事項}}
 
{{Related|一般的な推奨事項}}
{{Related|GNU プロジェクト}}
 
 
{{Related articles end}}
 
{{Related articles end}}
この記事では ''less'', ''ls'', ''grep'' などの GNU/Linux システムの''コア''ユーティリティを扱っています。この記事の扱う範囲は GNU {{Pkg|coreutils}} パッケージに含まれているユーティリティに留まりません。ユーティリティに関連する様々なヒント・小技、その他便利な情報を載せています。
 
   
  +
''Core utilitiy'' は、[[GNU]]/[[Linux]] システムにおける基本的で基礎的なツールのことです。この記事では、それらのツールに関する完全ではない概要や、ドキュメントへのリンク、有用な代替プログラムに関する情報を提供します。この記事の扱う範囲は [https://www.gnu.org/software/coreutils/coreutils.html GNU coreutils] にとどまりません。ほとんどの core utility は伝統的な [[Wikipedia:Unix|Unix]] ツールで、多くが [[Wikipedia:POSIX|POSIX]] によって標準化されました。しかし、さらに多くの機能を提供するように開発され続けています。
== cat ==
 
   
  +
ほとんどのコマンドラインインターフェイスは [[man ページ]] に、[[GNU|GNU プロジェクト]] によるユーティリティは [[GNU#Texinfo|Info マニュアル]]にドキュメント化されています。一部の[[シェル]]は {{ic|help}} コマンドをシェルの組み込みコマンドとして提供しています。加えて、ほとんどのユーティリティは {{ic|--help}} フラグで実行すると使用方法を表示します。
[[Wikipedia:ja:cat (UNIX)|cat]] (''catenate'') はファイルを連結して表示する標準の Unix ユーティリティです。
 
   
  +
== 基本コマンド ==
* ''cat'' はシェルにビルトインされていないため、多くの場合で[[wikipedia:ja:リダイレクト (CLI)|リダイレクション]]を使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際 {{ic|< ''file''}} は {{ic|cat ''file''}} と全く同じです。
 
   
  +
以下の表には ArchLinux ユーザーが知っておくべきいくつかの重要なユーティリティを載せています。{{man|1|intro}} も参照してください。
* ''cat'' は複数行でも動作しますが、バッドプラクティスとして言われることもあります:
 
   
  +
{| class=wikitable
{{bc|
 
  +
! パッケージ !! ユーティリティ !! 説明 !! ドキュメント !! 代替品
$ cat << EOF >> ''path/file''
 
  +
|-
''first line''
 
  +
| シェル組み込み || cd || ディレクトリを変更 || {{man|1p|cd}} || [[#cd の代替]]
...
 
  +
|-
''last line''
 
  +
|rowspan=13| GNU {{Pkg|coreutils}}
EOF
 
  +
| ls || ファイルを一覧表示 || {{man|1|ls}}, [https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html info] || {{Pkg|tree}}, [[#ls の代替]]
}}
 
  +
|-
代わりに ''echo'' コマンドを使うほうが良いでしょう:
 
  +
| cat || ファイルを連結して表示 || {{man|1|cat}}, [https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html info] || {{man|1|tac}}, [[#cat の代替]]
{{bc|
 
  +
|-
$ echo "\
 
  +
| mkdir || ディレクトリを作成 || {{man|1|mkdir}}, [https://www.gnu.org/software/coreutils/manual/html_node/mkdir-invocation.html info]
''first line''
 
  +
|-
...
 
  +
| rmdir || 空のディレクトリを削除 || {{man|1|rmdir}}, [https://www.gnu.org/software/coreutils/manual/html_node/rmdir-invocation.html info]
''last line''" \
 
  +
|-
>> ''path/file''
 
  +
| rm || ファイルやディレクトリを削除 || {{man|1|rm}}, [https://www.gnu.org/software/coreutils/manual/html_node/rm-invocation.html info] || [[shred]] {{man|1|unlink}}
}}
 
  +
|-
 
  +
| cp || ファイルやディレクトリをコピー || {{man|1|cp}}, [https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html info] || [[#cp の代替]]
* ファイルの行を逆順で cat する必要がある場合、[[Wikipedia:tac (Unix)|tac]] (''cat'' reversed) という名前のユーティリティがあります。
 
  +
|-
 
  +
| mv || ファイルやディレクトリを移動 || {{man|1|mv}}, [https://www.gnu.org/software/coreutils/manual/html_node/mv-invocation.html info]
== cron ==
 
  +
|-
 
  +
| ln || ハードリンクやシンボリックリンクを作成 || {{man|1|ln}}, [https://www.gnu.org/software/coreutils/manual/html_node/ln-invocation.html info] || {{man|8|sln}} (soname リカバリ)
[[Wikipedia:ja:cron|cron]] は Unix ライクなコンピュータオペレーティングシステムにおける時間基準のジョブスケジューラです。
 
  +
|-
 
  +
| [[chown]] || ファイルの所有者やグループを変更 || {{man|1|chown}}, [https://www.gnu.org/software/coreutils/manual/html_node/chown-invocation.html info] || {{man|1|chgrp}}
[[cron|メインの記事]]を参照してください。
 
  +
|-
{{Note|''systemd'' は様々な ''cron'' のユースケースを処理することが可能です。[[systemd/cron_functionality|関連記事]]を見て下さい。}}
 
  +
| [[chmod]] || ファイルのパーミッションを変更 || {{man|1|chmod}}, [https://www.gnu.org/software/coreutils/manual/html_node/chmod-invocation.html info]
 
  +
|-
== dd ==
 
  +
| [[dd]] || ファイルを変換・コピー || {{man|1|dd}}, [https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html info] || [[#dd の代替]]
 
  +
|-
[[Wikipedia:ja:dd (UNIX)|dd]] は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。
 
  +
| df || ファイルシステムの使用状況を表示 || {{man|1|df}}, [https://www.gnu.org/software/coreutils/manual/html_node/df-invocation.html info] || [[#df の代替]]
 
  +
|-
{{Note|''cp'' はいくつかのオペランドを除いて ''dd'' と同じですが、多目的のディスク消去作業向きには作られてはいません。}}
 
  +
| du || ファイルとディレクトリによって使用されているディスクの容量を推定します || {{man|1|du}}, [https://www.gnu.org/software/coreutils/manual/html_node/du-invocation.html info] || [[#du の代替]]
 
  +
|-
=== 実行中に dd の進行度を確認する ===
 
  +
| GNU {{Pkg|tar}} || [[tar]] || tar アーカイバ || {{man|1|tar}}, [https://www.gnu.org/software/tar/manual/html_chapter/index.html info] || [[アーカイブと圧縮|アーカイバ]]
 
  +
|-
デフォルトでは、''dd'' は作業が完了するまで何も出力をしません。''kill'' と {{ic|USR1}} シグナルを使うことでプログラムを終了することなく状態を出力させることが可能です。新しい root のターミナルを開いて次のコマンドを実行してください:
 
  +
| GNU {{Pkg|less}} || less || ターミナルページャ || {{man|1|less}} || [[アプリケーション一覧/ユーティリティ#Terminal pagers|ターミナルページャ]]
# killall -USR1 dd
 
  +
|-
  +
| GNU {{Pkg|findutils}} || find || ファイルやディレクトリを検索 || {{man|1|find}}, [https://www.gnu.org/software/findutils/manual/html_node/find_html/index.html info], [[https://mywiki.wooledge.org/UsingFind|GregsWiki]] || [[#find の代替]]
  +
|-
  +
| GNU {{Pkg|diffutils}} || diff || ファイルを行毎に比較 || {{man|1|diff}}, [https://www.gnu.org/software/diffutils/manual/html_node/Invoking-diff.html info] || [[#diff の代替]]
  +
|-
  +
| GNU {{Pkg|grep}} || grep || パターンに一致する行を表示 || {{man|1|grep}}, [https://www.gnu.org/software/grep/manual/html_node/index.html info] || [[#grep の代替]]
  +
|-
  +
| GNU {{Pkg|sed}} || sed || ストリームエディタ || {{man|1|sed}}, [https://www.gnu.org/software/sed/manual/html_node/index.html info], [http://sed.sourceforge.net/sed1line.txt one-liners] || {{Pkg|sad}}
  +
|-
  +
| GNU {{Pkg|gawk}} || awk || パターンスキャンとデータ処理言語 || {{man|1|gawk}}, [https://www.gnu.org/software/gawk/manual/html_node/index.html info] || {{Pkg|nawk}}, {{AUR|mawk}}, {{aur|goawk}}
  +
|-
  +
|rowspan=6| {{Pkg|util-linux}}
  +
| [[Wikipedia:ja:dmesg|dmesg]] || カーネルリングバッファを出力/制御 || {{man|1|dmesg}} || [[systemd/ジャーナル]]
  +
|-
  +
| [[lsblk]] || ブロックデバイスを一覧表示 || {{man|8|lsblk}}
  +
|-
  +
| [[mount]] || ファイルシステムをマウント || {{man|8|mount}}
  +
|-
  +
| [[umount]] || ファイルシステムをアンマウント || {{man|8|umount}}
  +
|-
  +
| [[su]] || ユーザを変更 || {{man|1|su}} || [[sudo]], [[doas]]
  +
|-
  +
| kill || プロセスを終了 || {{man|1|kill}} || {{man|1|pkill}}, {{man|1|killall}}
  +
|-
  +
|rowspan=3| {{Pkg|procps-ng}}
  +
| pgrep || 名前や属性によってプロセスを検索 || {{man|1|pgrep}} || {{man|1|pidof}}
  +
|-
  +
| ps || プロセスの情報を表示 || {{man|1|ps}} ||rowspan=2| {{man|1|top}}, [[アプリケーション一覧/ユーティリティ#タスクマネージャ|タスクマネージャ]]
  +
|-
  +
| free || メモリの使用/未使用量を表示 || {{man|1|free}}
  +
|}
   
  +
=== データの損失を防ぐ ===
{{Note|これは動作中の全ての ''dd'' プロセスに影響を与えます。}}
 
   
  +
{{ic|rm}} や {{ic|mv}}、{{ic|cp}}、シェルのリダイレクトは問答無用でファイルを削除/上書きします。{{ic|rm}} と {{ic|mv}}、{{ic|cp}} はすべて {{ic|-i}} フラグをサポートしており、このフラグを使うとファイルを削除/上書きする前にユーザに尋ねるようになります。[[エイリアス]]を使って {{ic|-i}} フラグをデフォルトで有効化したいユーザもいるでしょう。しかし、これらのシェルオプションに頼りっきりなるのは危険です。これらのオプションに慣れてしまうと、これらを使用していない他のシステムやユーザを使うときにデータ損失を招く可能性があります。データ損失を防ぐ最良の方法は[[バックアップ]]を取ることです。
もしくは:
 
# kill -USR1 ''pid_of_dd_command''
 
   
  +
== その他のコマンド ==
例えば:
 
# kill -USR1 $(pidof dd)
 
   
  +
以下の表にはしばしば便利なコアユーティリティをリストしています。
これで ''dd'' は当面の進捗をターミナルに出力するようになります。例:
 
605+0 records in
 
605+0 records out
 
634388480 bytes (634 MB) copied, 8.17097 s, 77.6 MB/s
 
   
  +
{| class=wikitable
=== dd 派生 ===
 
  +
! パッケージ !! ユーティリティ !! 説明 !! ドキュメント !! 代替品
 
他の ''dd'' ライクなプログラムには定期的に状態を出力する (例: シンプルなプログレスバー) 機能があります。
 
 
; dcfldd : {{Pkg|dcfldd}} は dd にフォレンジクスやセキュリティの面で改良を加えたバージョンです。ほとんどの dd のパラメータを扱うことができステータスの出力もできます。dcfldd の最後の安定版は2006年12月19日にリリースされました。<sup>[http://dcfldd.sourceforge.net/]</sup>
 
 
; ddrescue : GNU {{Pkg|ddrescue}} はデータ復旧ツールです。ディスク消去でほとんどの場合無用な機能である読み込みエラーを無視できます。詳しくは [http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html 公式マニュアル] を見て下さい。
 
 
== grep ==
 
 
[[Wikipedia:ja:grep|grep]] ([[Wikipedia:ja:ed|ed]] の ''g/re/p'', ''global/regular expression/print'' から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。''grep'' コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。
 
* Remember that ''grep'' はファイルを処理できるので、{{ic|cat ''file'' <nowiki>|</nowiki> grep ''pattern''}} のようなコンストラクトは {{ic|grep ''pattern'' ''file''}} に置き換えられます
 
 
* VCS のソースコードを ''grep'' する場合、{{Pkg|ack}} や {{Pkg|the_silver_searcher}} などの最適化されたユーティリティが存在します。
 
 
=== 出力のカラー化 ===
 
 
''grep'' のカラー出力は画面が美しくなるだけでなく [[Wikipedia:ja:正規表現|regexp]] や ''grep'' の機能を学ぶのにとても便利です。
 
 
''grep'' のデフォルトカラーを使うには、以下のエントリをシェルの設定ファイルに書いて下さい。例えば [[Bash]] を使っている場合:
 
{{hc|~/.bashrc|2=alias grep='grep --color=auto'}}
 
また、{{ic|GREP_OPTIONS}} [[Environment variables|環境変数]]を設定することも可能ですが、これを使うと ''grep'' を使うスクリプトを壊してしまう可能性があるので注意してください [http://brainstorm.ubuntu.com/idea/24141/]:
 
export GREP_OPTIONS='--color=auto'
 
ファイルの行番号を出力に含めたいときは、{{ic|-n}} を追加してください:
 
alias grep='grep -n --color=auto'
 
 
環境変数 {{ic|GREP_COLORS}} を使ってデフォルトとは異なる色を指定することもできます。
 
 
== iconv ==
 
 
{{ic|iconv}} は文字列のエンコーディングをあるコードセットから他のコードセットへ変換します。
 
 
次のコマンドはファイル {{ic|foo}} を ISO-8859-15 から UTF-8 へ変換して {{ic|foo.utf}} として保存します:
 
 
$ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf
 
 
詳しくは {{ic|man iconv}} を読んで下さい。
 
 
== ip ==
 
[[wikipedia:Iproute2|ip]] を使うことで Linux の [[Wikipedia:ja:Internet Protocol|IP]] ソフトウェアスタックにおけるネットワークデバイス・IP アドレス・ルーティングテーブルなどの情報を表示することができます。様々なコマンドを加えることで、オブジェクトの操作や設定をすることも可能です。
 
 
{{Note|''ip'' ユーティリティは {{Pkg|iproute2}} パッケージに含まれており、このパッケージは {{Grp|base}} グループに入っています。}}
 
 
{| class="wikitable"
 
! オブジェクト !! 用途 !! man ページ
 
 
|-
 
|-
  +
|rowspan=3| シェル組み込み
| ip addr || プロトコルアドレス管理 || ip-address
 
  +
| [[alias]] || エイリアスを定義/表示 || {{man|1p|alias}}
 
|-
 
|-
  +
| type || コマンドのタイプを表示 || {{man|1p|type}} || {{man|1p|command}}, {{man|1|whereis}}, {{man|1|which}}
| ip addrlabel || プロトコルアドレスラベル管理 || ip-addrlabel
 
 
|-
 
|-
  +
| time || コマンドの所要時間を計測 || {{man|1p|time}}
| ip l2tp || tunnel ethernet over IP (L2TPv3) || ip-l2tp
 
 
|-
 
|-
  +
|rowspan=16| GNU {{Pkg|coreutils}}
| ip link || ネットワークデバイス設定 || ip-link
 
  +
| [[tee]] || 標準入力を読み込み、標準出力やファイルに書き出す || {{man|1|tee}}, [https://www.gnu.org/software/coreutils/manual/html_node/tee-invocation.html info] || {{man|1|pee}}
 
|-
 
|-
  +
| mktemp || テンポラリファイルやテンポラリディレクトリを作成 || {{man|1|mktemp}}, [https://www.gnu.org/software/coreutils/manual/html_node/mktemp-invocation.html info]
| ip maddr || マルチキャストアドレス管理 || ip-maddress
 
 
|-
 
|-
  +
| mknod || 名前付きパイプやデバイスノードを作成する || {{man|1|mknod}}, {{man|1|mkfifo}}, [https://www.gnu.org/software/coreutils/manual/html_node/mkfifo-invocation.html#mkfifo-invocation info]
| ip monitor || netlink メッセージの監視 || ip-monitor
 
 
|-
 
|-
  +
| truncate || ファイルのサイズを縮小/拡張する || {{man|1|truncate}}, [https://www.gnu.org/software/coreutils/manual/html_node/truncate-invocation.html#truncate-invocation info] || {{man|1|fallocate}}
| ip mroute || マルチキャストルーティングキャッシュ管理 || ip-mroute
 
 
|-
 
|-
  +
| basenc || 入力をエンコードし、結果を出力する || {{man|1|basenc}}, {{man|1|base64}}, [https://www.gnu.org/software/coreutils/manual/html_node/basenc-invocation.html info]
| ip mrule || マルチキャストルーティングポリシー db のルール
 
 
|-
 
|-
  +
| cut || 行の選択した部分を表示 || {{man|1|cut}}, [https://www.gnu.org/software/coreutils/manual/html_node/cut-invocation.html info] || {{man|1|colrm}}, {{pkg|hck}}, {{pkg|choose}}
| ip neigh || neighbour/arp テーブル管理 || ip-neighbour
 
 
|-
 
|-
  +
| tr || 文字を置換/削除 || {{man|1|tr}}, [https://www.gnu.org/software/coreutils/manual/html_node/tr-invocation.html info] || {{man|1|uconv}}
| ip netns || プロセスネットワーク名前空間管理 || ip-netns
 
 
|-
 
|-
  +
| od || ファイルを8進数や他の基数でダンプ || {{man|1|od}}, [https://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html info] || {{man|1|hexdump}}, [[vim]] の {{man|1|xxd}}
| ip ntable || neighbour テーブル設定 || ip-ntable
 
 
|-
 
|-
  +
| sort || 行をソート || {{man|1|sort}}, [https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html info]
| ip route || ルーティングテーブル管理 || ip-route
 
 
|-
 
|-
  +
| uniq || 繰り返される行を表示/省略 || {{man|1|uniq}}, [https://www.gnu.org/software/coreutils/manual/html_node/uniq-invocation.html info] || {{pkg|anewer}}, {{aur|runiq}}, {{aur|huniq-git}}
| ip rule || ルーティングポリシーデータベース管理 || ip-rule
 
 
|-
 
|-
  +
| comm || 2つのソート済みのファイルを行単位で比較 || {{man|1|comm}}, [https://www.gnu.org/software/coreutils/manual/html_node/comm-invocation.html info] || {{aur|zet}}
| ip tcp_metrics || TCP Metrics の管理 || ip-tcp_metrics
 
 
|-
 
|-
  +
| head || ファイルの最初の部分を出力 || {{man|1|head}}, [https://www.gnu.org/software/coreutils/manual/html_node/head-invocation.html info]
| ip tunnel || トンネル設定 || ip-tunnel
 
 
|-
 
|-
  +
| join || 2 つの入力のフィールドが共通な行を結合する || {{man|1|join}}, [https://www.gnu.org/software/coreutils/manual/html_node/join-invocation.html info] || {{man|1|combine}} {{aur|zet}}
| ip tuntap || TUN/TAP デバイスの管理
 
 
|-
 
|-
  +
| md5sum || 入力の暗号ハッシュ関数の値を計算し、出力する || {{man|1|sha256sum}}, {{man|1|sha512sum}}, [https://www.gnu.org/software/coreutils/manual/html_node/md5sum-invocation.html info] || {{man|1|shasum}}, {{man|1|hashdeep}}, {{man|1|rhash}}
| ip xfrm || IPsec ポリシーの管理 || ip-xfrm
 
  +
|-
  +
| tail || ファイルの最後の部分を出力/追従 || {{man|1|tail}}, [https://www.gnu.org/software/coreutils/manual/html_node/tail-invocation.html info]
  +
|-
  +
| wc || 改行や単語、バイト数を表示 || {{man|1|wc}}, [https://www.gnu.org/software/coreutils/manual/html_node/wc-invocation.html info]
  +
|-
  +
| GNU {{Pkg|binutils}} || strings || バイナリファイル内の表示可能な文字を表示 || {{man|1|strings}}, [https://sourceware.org/binutils/docs/binutils/strings.html info] || {{AUR|stringsext}}
  +
|-
  +
| {{pkg|util-linux}} || column || ファイルを複数列に整形する、任意でグリッド付きの表で綺麗に出力する || {{man|1|column}} || {{man|1|paste}}, {{aur|csview}}
  +
|-
  +
| GNU {{Pkg|findutils}} || xargs || 標準入力からの引数を組み合わせる、またはテンプレート化し、外部コマンドを呼び出す || {{man|1|xargs}} || {{man|1|parallel}} ({{man|7|parallel_alternatives}})
  +
|-
  +
| GNU {{Pkg|glibc}} || iconv || 文字コードを変換 || {{man|1|iconv}} || {{Pkg|recode}}, {{man|1|uconv}}
  +
|-
  +
| GNU {{pkg|sharutils}} || uudecode || ファイルを email に適したテキストにエンコードする || {{man|1|uuencode}}, {{man|1|uudecode}}, [https://www.gnu.org/software/sharutils/manual/html_node/uuencode-Invocation.html info] || {{man|1|uudeview}}
  +
|-
  +
| {{Pkg|file}} || file || ファイルタイプを推測 || {{man|1|file}}
 
|}
 
|}
   
  +
{{Pkg|moreutils}} パッケージには GNU coreutils に無い {{man|1|sponge}} のような便利なツールを提供します。
全てのオブジェクトで {{ic|help}} コマンドが利用可能です。例えば、{{ic|ip addr help}} と入力すればアドレスオブジェクトで利用できるコマンド構文が表示されます。
 
   
  +
== 代替コマンド ==
[[Network Configuration]] の記事では実際問題として ''ip'' コマンドを様々な作業でどうやって使えばいいのか解説しています。
 
   
  +
コアユーティリティの代替は以下のパッケージによって提供されています:
{{Note|もしかしたら [[Wikipedia:ifconfig|ifconfig]] コマンドの方が親しみがあるかもしれません。このコマンドは Linux の旧バージョンでインターフェイス設定に使われていました。現在 Arch Linux では廃止されているため、代わりに ''ip'' を使って下さい。}}
 
   
  +
* {{App|[[BusyBox]]|レスキューや組み込みシステム向けのユーティリティ。|https://busybox.net|{{Pkg|busybox}}}}
== less ==
 
  +
* {{App|[[Wikipedia:ja:Toybox|Toybox]]|オールインワンの Linux コマンドライン。|https://landley.net/toybox|{{AUR|toybox}}}}
  +
* {{App|uutils|GNU coreutils を Rust で書き直したクロスプラットフォームなユーティリティ。|https://github.com/uutils/coreutils|{{Pkg|uutils-coreutils}}}}
  +
* {{App|Heirloom Toolchest|標準的な Unix ユーティリティの伝統的な実装。|https://heirloom.sourceforge.net|{{AUR|heirloom-sh}}, {{AUR|heirloom-doctools}}}}
  +
* {{App|9base|Plan9 の様々なツールを Unix に移植したもの。|https://tools.suckless.org/9base|{{Pkg|9base}}}}
  +
* {{App|[[Wikipedia:sbase|sbase]]|*nix core ユーティリティの suckless 版。|https://core.suckless.org/sbase|{{AUR|sbase-git}}}}
  +
* {{App|ubase|sbase ユーティリティの拡張。|https://core.suckless.org/ubase|{{AUR|ubase-git}}}}
   
  +
=== cat の代替 ===
[[Wikipedia:ja:less|less]] はテキストファイルの中身を一画面単位で表示するのに使われるターミナルページャプログラムです。[[Wikipedia:ja:more (UNIX)|more]] や [[Wikipedia:pg (Unix)|pg]] といった他のページャと同じですが、''less'' はより高度なインターフェイスと完全な [http://www.greenwoodsoftware.com/less/faq.html feature-set] を提供します。
 
   
  +
* {{App|bat|シンタックスハイライトと Git 統合機能を備えた cat クローン|https://github.com/sharkdp/bat|{{Pkg|bat}}}}
=== 環境変数を使った出力のカラー化 ===
 
   
  +
=== cd の代替 ===
以下の行をシェルの設定ファイルに加えて下さい:
 
   
  +
* {{App|zoxide|ユーザーの癖を学習するスマートな cd コマンド。たった数個のキーストロークでどこへでも移動できます。|https://github.com/ajeetdsouza/zoxide|{{Pkg|zoxide}}}}
{{hc|~/.bashrc|2=
 
  +
* {{App|autojump|コマンドラインからファイルシステムを移動する高速な方法。|https://github.com/wting/autojump|{{AUR|autojump}}}}
export LESS=-R
 
export LESS_TERMCAP_me=$(printf '\e[0m')
 
export LESS_TERMCAP_se=$(printf '\e[0m')
 
export LESS_TERMCAP_ue=$(printf '\e[0m')
 
export LESS_TERMCAP_mb=$(printf '\e[1;32m')
 
export LESS_TERMCAP_md=$(printf '\e[1;34m')
 
export LESS_TERMCAP_us=$(printf '\e[1;32m')
 
export LESS_TERMCAP_so=$(printf '\e[1;44;1m')
 
}}
 
   
  +
[[Bash#パスを入力したら自動で "cd"]] と [[Zsh#最近のディレクトリを記憶させる]] も見てください。
値は好きなように変更してください。参照: [[Wikipedia:ANSI_escape_code#Colors|ANSI escape code]]。
 
   
=== wrappers を使った出力カラー化 ===
+
=== cp代替 ===
   
  +
[[rsync#cp/mv の代わりとして使う|rsync を cp/mv の代わりとして使う]]ことで、失敗したファイル転送の再開、転送状況の表示、すでに存在するファイルのスキップ、チェックサムによる転送先ファイルの整合性の確認が可能になります。
''less'' でシンタックスハイライトを有効にすることができます。まず、{{Pkg|source-highlight}} をインストールし、次に以下の行をシェルの設定ファイルに追加してください:
 
{{hc|~/.bashrc|<nowiki>
 
export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"
 
export LESS='-R '
 
</nowiki>}}
 
   
  +
=== ls の代替 ===
コマンドラインインターフェイスを頻繁に使う場合 {{Pkg|lesspipe}} をインストールすると良いかもしれません。
 
   
  +
* {{App|broot|ディレクトリツリーを表示・移動する新しい方法|https://github.com/Canop/broot|{{Pkg|broot}}}}
ページャを使ってアーカイブの中の圧縮されたファイルを表示することができるようになります:
 
  +
* {{App|clifm|ls(1) のようにファイルを一覧表示し、さらにアイコン表示と RGB カラーサポートを備えたファイルマネージャ|https://github.com/leo-arch/clifm/wiki/Advanced#files-lister-ls-mode|{{AUR|clifm}}}}
  +
* {{App|eza|カラー表示、ツリー表示、git 統合などの機能を備えたもう一つの ls 代替。もはやサポートされていない exa をベースとしています。|https://github.com/eza-community/eza|{{Pkg|eza}}}}
  +
* {{App|lsd|多くの美しい色と素晴らしいアイコンを備えたモダンな ls|https://github.com/Peltoche/lsd|{{Pkg|lsd}}}}
   
  +
=== find の代替 ===
{{hc|$ less ''compressed_file''.tar.gz|2=
 
==> use tar_file:contained_file to view a file in the archive
 
-rw------- ''username''/''group'' 695 2008-01-04 19:24 ''compressed_file''/''content1''
 
-rw------- ''username''/''group'' 43 2007-11-07 11:17 ''compressed_file''/''content2''
 
''compressed_file''.tar.gz (END)
 
}}
 
   
  +
* {{App|fd|シンプルで速く、ユーザーフレンドリーな find の代替。隠しファイルや {{ic|.gitignore}} にあるファイルをデフォルトで無視します。|https://github.com/sharkdp/fd|{{Pkg|fd}}}}
''lesspipe'' はファイルタイプに関連付けられたコマンドの代替として (例えば {{Pkg|html2text}} で HTML を回覧する)、アーカイブ以外のファイルも ''less'' のインターフェイスに接続します。
 
  +
* {{App|fuzzy-find|ファイル検索のためのあいまい補完。|https://github.com/silentbicycle/ff|{{AUR|ff-git}}}}
  +
* {{App|[[mlocate]]|locate/updatedb の実装をマージ。|https://pagure.io/mlocate|{{Pkg|mlocate}}}}
  +
* {{App|plocate|よりさらに速い locate|https://plocate.sesse.net/|{{Pkg|plocate}}}}
  +
* {{App|rawhide|C 言語のきれいな式を使ってファイルを検索します。|https://raf.org/rawhide/|{{AUR|rawhide}}}}
   
  +
グラフィカルなファイル検索ソフトウェアは [[アプリケーション一覧/ユーティリティ#ファイル検索]] をご覧ください。
''lesspipe'' を有効にするにはログインしなおすか、{{ic|/etc/profile.d/lesspipe.sh}} を実行してください。
 
   
=== もうひとつページャとしての Vim ===
+
=== diff 代替 ===
   
  +
{{Pkg|diffutils}} では単語単位の差分表示ができませんが、それが可能なプログラムがいくつか存在します:
[[Vim|Vim]] (''visual editor improved'') にはテキストファイル・圧縮ファイル・バイナリ・ディレクトリの中身を表示するスクリプトが含まれています。次の行をシェルの設定ファイルに追加することでページャとして使うことが可能です:
 
{{hc|~/.bashrc|2=alias less='/usr/share/vim/vim74/macros/less.sh'}}
 
   
  +
* [[git]] の diff は {{ic|--color-words}} フラグを使用すると単語単位の差分表示が可能です。{{ic|--no-index}} フラグを使用すれば Git のワークツリー外でも使用可能です。
また、''less.sh'' マクロの代替も存在し、{{ic|PAGER}} 環境変数として使えます。{{AUR|vimpager-git}} をインストールしてシェルの設定ファイルに以下を加えて下さい:
 
  +
* {{App|cwdiff|出力をカラー表示化する GNU wdiff ラッパー|https://github.com/junghans/cwdiff|{{AUR|cwdiff}}}}
{{hc|~/.bashrc|2=
 
  +
* {{App|git-delta|git や diff 、grep 用の出力をシンタックスハイライトするページャ|https://dandavison.github.io/delta/|{{Pkg|git-delta}}}}
export PAGER='vimpager'
 
  +
* {{App|dwdiff|単語単位で差分表示する diff のフロントエンド。カラー表示サポート付き。|https://os.ghalkes.nl/dwdiff.html|{{AUR|dwdiff}}}}
alias less=$PAGER
 
  +
* {{App|icdiff|Python で書かれたカラー表示 diff ツール。"Improved color diff" は通常の diff の使用を補助するという意味です。|https://github.com/jeffkaufman/icdiff|{{AUR|icdiff}}}}
}}
 
  +
* {{App|wdiff|GNU diff の単語単位の実装。カラー表示はサポートしません。|https://www.gnu.org/software/wdiff/|{{Pkg|wdiff}}}}
   
  +
[[アプリケーション一覧/ユーティリティ#Comparison, diff, merge]] もご覧ください。
これで {{ic|PAGER}} 環境変数を使うプログラム、[[git]] などはページャとして ''vim'' を使うようになります。
 
   
== locate ==
+
=== grep の代替 ===
   
  +
* {{App|mgrep|複数行 grep|https://sourceforge.net/projects/multiline-grep/|{{AUR|mgrep}}}}
[[Wikipedia:locate (Unix)|locate]] はファイルシステム上のファイルを探します。''updatedb'' やデーモンによって生成しインクリメンタルエンコードを使って圧縮した、事前に作ったファイルのデータベースを使って検索を行います。''find'' よりも圧倒的に高速ですが、データベースの定期的な更新が必要です。
 
  +
* {{App|pdfgrep|PDF ファイル内のテキストを検索するツール|https://pdfgrep.org/|{{Pkg|pdfgrep}}}}
  +
* {{App|ripgrep-all|プレーンテキストのみならず、PDF ファイルや E-Books、Office ドキュメント、zip、tar.gz ファイル内のテキストも検索できます。|https://github.com/phiresky/ripgrep-all|{{Pkg|ripgrep-all}}}}
   
  +
==== コード検索ソフトウェア ====
[[locate|メインの記事]]を参照してください。
 
   
  +
以下のツールはコード検索の場面で grep を置き換えることを目的としています。これらはデフォルトで再帰検索をし、バイナリファイルや {{ic|.gitignore}} 内にあるファイルをスキップします。
== ls ==
 
   
  +
* {{App|ack|Perl ベースの grep 置き換え。多種多様なソースコードの大きなツリーを扱うプログラマに向けです。|https://beyondgrep.com/|{{Pkg|ack}}}}
[[Wikipedia:ja:ls|ls]] (''list'') は Unix や Unix ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。
 
  +
* {{App|ripgrep (rg)|ag の使いやすさと grep のそのままの速さを組み合わせた検索ツール。|https://github.com/BurntSushi/ripgrep|{{Pkg|ripgrep}}}}
  +
* {{App|The Silver Searcher (ag)|Ack に似ているがより速いコード検索ツール。|https://github.com/ggreer/the_silver_searcher|{{Pkg|the_silver_searcher}}}}
  +
* {{App|ugrep (ug)|インタラクティブなユーザインターフェイス、曖昧検索、boolean クエリ、16進数表示などの機能を持つ非常に高速な grep。|https://github.com/Genivia/ugrep|{{Pkg|ugrep}}}}
   
  +
{{Pkg|cscope}} も参照。
* ''ls'' は[[File permissions and attributes#Viewing_permissions|ファイルのパーミッション]]を表示できます。
 
* カラー出力はシンプルなエイリアスで有効にできます。{{ic|~/.bashrc}} ファイルには {{ic|/etc/skel/.bashrc}} からコピーされた次のエントリが既に含まれているはずです:
 
: {{ic|1=alias ls='ls --color=auto'}}
 
: 次のステップはカラーになった ''ls'' 出力をさらに向上させることです; 例えば、壊れた (孤立した) シンボリックリンクを赤色で表示するようにします。以下をシェルの設定ファイルに追加してください:
 
: {{ic|eval $(dircolors -b)}}
 
   
  +
==== インタラクティブフィルター ====
== man ==
 
   
  +
* {{App|[[fzf]]|汎用のコマンドラインあいまい検索ソフトウェア。デフォルトで find を使用します。|https://github.com/junegunn/fzf|{{Pkg|fzf}}}}
[[Wikipedia:ja:manページ|man]] (''manual page'') はオンラインのソフトウェアドキュメントの一つで基本的に Unix や Unix ライクなオペレーティングシステムで使われます。(ライブラリやシステムコールを含む) コンピュータプログラム、正式の標準・規則、さらに抽象的な概念などをカバーしています。[[Man Pages]] を見て下さい。
 
  +
* {{App|fzy|高度なスコアリングアルゴリズムを搭載した速くてシンプルなあいまいテキストセレクタ。|https://github.com/jhawthorn/fzy|{{Pkg|fzy}}}}
  +
* {{App|peco|シンプルなインタラクティブフィルタリングツール。|https://github.com/peco/peco|{{Pkg|peco}}}}
  +
* {{App|percol|UNIX シェルの伝統的なパイプにインタラクティブフィルタリングを追加。|https://github.com/mooz/percol|{{Pkg|percol}}}}
  +
* {{App|skim|Rust で書かれたあいまい検索ソフトウェア。fzf に似ています。|https://github.com/lotabout/skim|{{Pkg|skim}}}}
   
== mkdir ==
+
=== dd の代替 ===
   
  +
[[dd]] や [[ddrescue]] も参照してください。
[[Wikipedia:ja:mkdir|mkdir]] (''make directory'') はディレクトリを作成するコマンドです。
 
   
  +
==== 代替 dd の実装 ====
* ディレクトリと階層全体を作るには、{{ic|-p}} スイッチを使って下さい。そうしないとエラーが表示されます。{{ic|-p}} スイッチをデフォルトで使うようにすることもできます。
 
: {{bc|1=alias mkdir='mkdir -p -v'}}
 
: {{ic|-v}} スイッチはメッセージを有効にします。
 
   
  +
このサブセクションでは、{{man|1p|dd}} の POSIX 仕様に (ほぼ) 準拠しているインターフェイスとデフォルトの挙動を持つ ''dd'' の実装をリストアップしています。
* 作成したディレクトリのモードを変更するのに ''chmod'' を使う必要はありません。{{ic|-m}} オプションでアクセス権限を定義できます。
 
   
  +
* {{app|ddpt|Linux カーネルの SCSI サブシステムのメンテナによる、{{man|8|sg_dd}} のポータブルな代替。オプションですが、非常に特殊化されたハードウェア I/O (SCSI コマンドセット) をサポートし、さらに他の多くの機能を有しています。|http://sg.danny.cz/sg/ddpt.html|{{aur|ddpt}}}}
{{Tip|一時ディレクトリが欲しいときは代わりに [[Wikipedia:Temporary file|mktemp]] (''make termporary'') を使って下さい: {{ic|mktemp -p}}。
 
  +
* {{app|sdd|Joerg Schilling による、UNIX 環境間で移植性の高い dd の実装。コピーされたデータのチェックサムや、不良ブロックを再読込させることができます。|https://schilytools.sourceforge.net/|{{aur|schily-tools-sdd}}}}
}}
 
   
  +
===== GNU dd のスピンオフ =====
== mv ==
 
   
  +
{{pkg|coreutils}} にある ''dd'' の GNU 実装も POSIX に準拠しています。このサブセクションでは GNU dd のフォークをリストアップしています。
[[Wikipedia:ja:mv_(UNIX)|mv]] (''move'') はファイルやディレクトリを移動したり名前の変更をするコマンドです。危険なコマンドになる可能性があるので範囲に制限をしたほうが賢明です:
 
alias mv=' timeout 8 mv -iv'
 
このエイリアスは8秒後に ''mv'' を中止し、3つ以上のファイルの削除を確認し、進行中の操作を表示し、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。
 
   
  +
* {{App|[[Wikipedia:Dd_(Unix)#dcfldd|dcfldd]]|科学捜査やセキュリティの場面のための、機能が強化された GNU dd フォーク。次のような機能を有しています: 臨機応変なハッシュ検証機能、柔軟なディスク消去、書き込み検証、同時に複数のターゲットに出力、出力の分割やパイプ。|https://dcfldd.sourceforge.net|{{AUR|dcfldd}}}}
== rm ==
 
  +
* {{App|[[Wikipedia:Dd_(Unix)#dc3dd|dc3dd]]|アメリカ国防総省サイバー犯罪センター (DC3) による、GNU dd のパッチ済みバージョン。dcfldd とよく似た目的と機能を有しています。|https://sourceforge.net/projects/dc3dd/|{{AUR|dc3dd}}}}
   
  +
==== モダンな dd の類似品 ====
[[Wikipedia:ja:rm_(UNIX)|rm]] (''remove'') はファイルやディレクトリを削除するコマンドです。
 
   
  +
このサブセクションでは、(JCL に似たコマンドライン構文と[https://unix.stackexchange.com/a/192114 デフォルトの挙動]という点で) POSIX に準拠していない dd の代替をリストアップしています。
* 使い方によっては危険性があるので範囲に制限をかけると良いでしょう:
 
: {{bc|1=alias rm=' timeout 3 rm -Iv --one-file-system'}}
 
: このエイリアスは3秒後に ''rm'' を中止し、3つ以上のファイルの削除を確認し、進行中の操作を表示し、複数のファイルシステムに影響を与えず、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。たった1つのファイルでも確認が必要ならば {{ic|-I}} の代わりに {{ic|-i}} を使って下さい。
 
: Zsh のユーザーは {{ic|timeout}} の前に {{ic|noglob}} を記述することで暗示的な拡張を避けることができます。
 
   
  +
* {{app|dd_rescue|多くの機能が積み込まれたモダンな dd の類似品。日々のスクリプティングやディスク複製、データリカバリに適しています。|http://www.garloff.de/kurt/linux/ddrescue/|{{pkg|dd_rescue}}}}
* 空のディレクトリを削除するときは、''rmdir'' を使ってください。
 
  +
* {{app|rw|従来のコマンドラインフラグ付きの必要最低限でポータブルな ''dd'' 類似品。|https://sortix.org/rw/|{{aur|rw}}}}
   
  +
==== buffer のスピンオフ ====
== sed ==
 
   
  +
このサブセクションでは、{{aur|buffer}} のフォークをリストアップしています。buffer は、''dd'' に似た汎用 I/O バッファリングユーティリティですが、動的サイズバッファを持っています。ブロック単位の I/O をサポートしており、LTO テープを書き込み/読み込みする際に摩耗を防ぐために使用できます。
[[Wikipedia:ja:sed (コンピュータ)|sed]] (''stream editor'') は文章をパース・変換する Unix ユーティリティです。
 
   
  +
* {{app|mbuffer|''buffer'' ユーティリティにマルチスレッディングや他の機能を組み合わせたもの。|https://www.maier-komor.de/mbuffer.html|{{Pkg|mbuffer}}}}
ここに ''sed'' を使ったワンライナーの [http://sed.sourceforge.net/sed1line.txt 一覧] があります。
 
   
  +
=== df の代替 ===
{{Tip|より強力に sed を置き換えるものとして [[Wikipedia:ja:AWK|AWK]] や [[Wikipedia:Perl|Perl]] 言語があります。}}
 
   
  +
* {{App|duf|ディスクの使用量と空き容量を調べるユーティリティ|https://github.com/muesli/duf|{{Pkg|duf}}}}
== seq ==
 
   
  +
=== du の代替 ===
'''seq''' (''sequence'') は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、[[Wikipedia:seq|Wikipedia]] で説明されているように使うと良いでしょう。
 
   
  +
* {{App|cdu|カラー出力で、美しいヒストグラムを出力する du ラッパ。|http://arsunik.free.fr/prog/cdu.html|{{aur|cdu}}}}
== shred ==
 
  +
* {{App|dust|Rust で記述された du のより直感的なバージョン。|https://github.com/bootandy/dust|{{Pkg|dust}}}}
  +
* {{App|ncdu|ncurses のシンプルなディスク使用量アナライザ。|https://dev.yorhel.nl/ncdu|{{Pkg|ncdu}}}}
  +
* {{App|gdu|Go で記述された、コンソールインターフェイスのディスク使用量アナライザ。|https://github.com/Dundee/gdu|{{Pkg|gdu}}}}
   
  +
[[アプリケーション一覧/ユーティリティ#ディスク使用量表示プログラム]] も見てください。
[[Wikipedia:Shred_(Unix)|shred]] は完全にファイルやディレクトリを削除するコマンドです。使い方によっては大変危険なので範囲は限るべきです:
 
alias shred=' timeout 3 shred -v'
 
このエイリアスは3秒後に ''shred'' を中止し、進行中の操作を表示し、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。
 
   
  +
== 参照 ==
Zsh のユーザーは {{ic|timeout}} の前に {{ic|noglob}} を記述することで暗示的な拡張を避けることができます。
 
   
  +
* [https://www.gnu.org/software/coreutils/manual/coreutils.html GNU Coreutils ドキュメント]
== sudo ==
 
  +
* [https://www.gnu.org/software/coreutils/faq/coreutils-faq.html GNU Coreutils FAQ]
 
  +
* [https://www.pixelbeat.org/docs/coreutils-gotchas.html Coreutils Gotchas]: coreutils コンポーネントにおけるいくつかの紛らわしい挙動に関する、GNU coreutils メンテナのノート
[[Wikipedia:ja:Sudo|Sudo]] (''as superuser do'') はユーザーが他のユーザー (通常はスーパーユーザー、もしくは root) のセキュリティ特権を使ってプログラムを実行することができる、Unix ライクなコンピュータオペレーティングシステムのためのプログラムです。[[Sudo]] を見て下さい。
 
  +
* [https://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html POSIX utilities]
 
== パーミッションに関連するユーティリティ ==
 
 
* [[Wikipedia:chmod|chmod]] (''change mode'') はファイルシステムオブジェクト (ファイルとディレクトリ) のアクセス権限を変更したり特別なフラグを指定する Unix のシェルコマンドとシステムコールの名前です。
 
 
* [[Wikipedia:chown|chown]] (''change owner'') はファイルの所有者を変更するために Unix ライクなシステムで使われます。
 
 
* [[Wikipedia:chattr|chattr]] (''change attributes'') は様々な Linux ファイルシステムに入っているファイルに特定の属性を設定する Linux オペレーティングシステムのコマンドです。
 
 
* [[Wikipedia:lsattr|lsattr]] (''list attributes'') は Linux の extended file system の属性を表示するコマンドラインプログラムです。
 
 
* {{ic|ls -l}} はファイルの属性を表示します。
 
 
以上のユーティリティは [[File permissions and attributes]] の記事で説明しています。もっと高度なパーミッションの使い方は [[Using File Capabilities Instead Of Setuid|capabilities]] や [[ACL]] を参照してください。
 
 
== 参照 ==
 
   
  +
{{TranslationStatus|Core utilities|2023-09-09|787190}}
* [http://www.reddit.com/r/commandline/comments/19garq/a_sampling_of_coreutils_120/ A sampling of coreutils] [http://www.reddit.com/r/commandline/comments/19ge6v/a_sampling_of_coreutils_2040/ , part 2] [http://www.reddit.com/r/commandline/comments/19j1w3/a_sampling_of_coreutils_4060/ , part 3] - Overview of commands in coreutils
 
* [http://www.gnu.org/software/coreutils/manual/coreutils.html GNU Coreutils Manpage]
 
* [http://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/ Learn the DD command]
 

2023年9月9日 (土) 12:09時点における最新版

関連記事

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)

データの損失を防ぐ

rmmvcp、シェルのリダイレクトは問答無用でファイルを削除/上書きします。rmmvcp はすべて -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), vimxxd(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 — レスキューや組み込みシステム向けのユーティリティ。
https://busybox.net || busybox
  • Toybox — オールインワンの Linux コマンドライン。
https://landley.net/toybox || toyboxAUR
  • uutils — GNU coreutils を Rust で書き直したクロスプラットフォームなユーティリティ。
https://github.com/uutils/coreutils || uutils-coreutils
  • Heirloom Toolchest — 標準的な Unix ユーティリティの伝統的な実装。
https://heirloom.sourceforge.net || heirloom-shAUR, heirloom-doctoolsAUR
  • 9base — Plan9 の様々なツールを Unix に移植したもの。
https://tools.suckless.org/9base || 9base
  • sbase — *nix core ユーティリティの suckless 版。
https://core.suckless.org/sbase || sbase-gitAUR
  • ubase — sbase ユーティリティの拡張。
https://core.suckless.org/ubase || ubase-gitAUR

cat の代替

  • bat — シンタックスハイライトと Git 統合機能を備えた cat クローン
https://github.com/sharkdp/bat || bat

cd の代替

  • zoxide — ユーザーの癖を学習するスマートな cd コマンド。たった数個のキーストロークでどこへでも移動できます。
https://github.com/ajeetdsouza/zoxide || zoxide
  • autojump — コマンドラインからファイルシステムを移動する高速な方法。
https://github.com/wting/autojump || autojumpAUR

Bash#パスを入力したら自動で "cd"Zsh#最近のディレクトリを記憶させる も見てください。

cp の代替

rsync を cp/mv の代わりとして使うことで、失敗したファイル転送の再開、転送状況の表示、すでに存在するファイルのスキップ、チェックサムによる転送先ファイルの整合性の確認が可能になります。

ls の代替

  • broot — ディレクトリツリーを表示・移動する新しい方法
https://github.com/Canop/broot || broot
  • clifm — ls(1) のようにファイルを一覧表示し、さらにアイコン表示と RGB カラーサポートを備えたファイルマネージャ
https://github.com/leo-arch/clifm/wiki/Advanced#files-lister-ls-mode || clifmAUR
  • eza — カラー表示、ツリー表示、git 統合などの機能を備えたもう一つの ls 代替。もはやサポートされていない exa をベースとしています。
https://github.com/eza-community/eza || eza
  • lsd — 多くの美しい色と素晴らしいアイコンを備えたモダンな ls
https://github.com/Peltoche/lsd || lsd

find の代替

  • fd — シンプルで速く、ユーザーフレンドリーな find の代替。隠しファイルや .gitignore にあるファイルをデフォルトで無視します。
https://github.com/sharkdp/fd || fd
  • fuzzy-find — ファイル検索のためのあいまい補完。
https://github.com/silentbicycle/ff || ff-gitAUR
  • mlocate — locate/updatedb の実装をマージ。
https://pagure.io/mlocate || mlocate
  • plocate — よりさらに速い locate
https://plocate.sesse.net/ || plocate
  • rawhide — C 言語のきれいな式を使ってファイルを検索します。
https://raf.org/rawhide/ || rawhideAUR

グラフィカルなファイル検索ソフトウェアは アプリケーション一覧/ユーティリティ#ファイル検索 をご覧ください。

diff の代替

diffutils では単語単位の差分表示ができませんが、それが可能なプログラムがいくつか存在します:

  • git の diff は --color-words フラグを使用すると単語単位の差分表示が可能です。--no-index フラグを使用すれば Git のワークツリー外でも使用可能です。
  • cwdiff — 出力をカラー表示化する GNU wdiff ラッパー
https://github.com/junghans/cwdiff || cwdiffAUR
  • git-delta — git や diff 、grep 用の出力をシンタックスハイライトするページャ
https://dandavison.github.io/delta/ || git-delta
  • dwdiff — 単語単位で差分表示する diff のフロントエンド。カラー表示サポート付き。
https://os.ghalkes.nl/dwdiff.html || dwdiffAUR
  • icdiff — Python で書かれたカラー表示 diff ツール。"Improved color diff" は通常の diff の使用を補助するという意味です。
https://github.com/jeffkaufman/icdiff || icdiffAUR
  • wdiff — GNU diff の単語単位の実装。カラー表示はサポートしません。
https://www.gnu.org/software/wdiff/ || wdiff

アプリケーション一覧/ユーティリティ#Comparison, diff, merge もご覧ください。

grep の代替

  • mgrep — 複数行 grep
https://sourceforge.net/projects/multiline-grep/ || mgrepAUR
  • pdfgrep — PDF ファイル内のテキストを検索するツール
https://pdfgrep.org/ || pdfgrep
  • ripgrep-all — プレーンテキストのみならず、PDF ファイルや E-Books、Office ドキュメント、zip、tar.gz ファイル内のテキストも検索できます。
https://github.com/phiresky/ripgrep-all || ripgrep-all

コード検索ソフトウェア

以下のツールはコード検索の場面で grep を置き換えることを目的としています。これらはデフォルトで再帰検索をし、バイナリファイルや .gitignore 内にあるファイルをスキップします。

  • ack — Perl ベースの grep 置き換え。多種多様なソースコードの大きなツリーを扱うプログラマに向けです。
https://beyondgrep.com/ || ack
  • ripgrep (rg) — ag の使いやすさと grep のそのままの速さを組み合わせた検索ツール。
https://github.com/BurntSushi/ripgrep || ripgrep
  • The Silver Searcher (ag) — Ack に似ているがより速いコード検索ツール。
https://github.com/ggreer/the_silver_searcher || the_silver_searcher
  • ugrep (ug) — インタラクティブなユーザインターフェイス、曖昧検索、boolean クエリ、16進数表示などの機能を持つ非常に高速な grep。
https://github.com/Genivia/ugrep || ugrep

cscope も参照。

インタラクティブフィルター

  • fzf — 汎用のコマンドラインあいまい検索ソフトウェア。デフォルトで find を使用します。
https://github.com/junegunn/fzf || fzf
  • fzy — 高度なスコアリングアルゴリズムを搭載した速くてシンプルなあいまいテキストセレクタ。
https://github.com/jhawthorn/fzy || fzy
  • peco — シンプルなインタラクティブフィルタリングツール。
https://github.com/peco/peco || peco
  • percol — UNIX シェルの伝統的なパイプにインタラクティブフィルタリングを追加。
https://github.com/mooz/percol || percol
  • skim — Rust で書かれたあいまい検索ソフトウェア。fzf に似ています。
https://github.com/lotabout/skim || skim

dd の代替

ddddrescue も参照してください。

代替 dd の実装

このサブセクションでは、dd(1p) の POSIX 仕様に (ほぼ) 準拠しているインターフェイスとデフォルトの挙動を持つ dd の実装をリストアップしています。

  • ddpt — Linux カーネルの SCSI サブシステムのメンテナによる、sg_dd(8) のポータブルな代替。オプションですが、非常に特殊化されたハードウェア I/O (SCSI コマンドセット) をサポートし、さらに他の多くの機能を有しています。
http://sg.danny.cz/sg/ddpt.html || ddptAUR
  • sdd — Joerg Schilling による、UNIX 環境間で移植性の高い dd の実装。コピーされたデータのチェックサムや、不良ブロックを再読込させることができます。
https://schilytools.sourceforge.net/ || schily-tools-sddAUR
GNU dd のスピンオフ

coreutils にある dd の GNU 実装も POSIX に準拠しています。このサブセクションでは GNU dd のフォークをリストアップしています。

  • dcfldd — 科学捜査やセキュリティの場面のための、機能が強化された GNU dd フォーク。次のような機能を有しています: 臨機応変なハッシュ検証機能、柔軟なディスク消去、書き込み検証、同時に複数のターゲットに出力、出力の分割やパイプ。
https://dcfldd.sourceforge.net || dcflddAUR
  • dc3dd — アメリカ国防総省サイバー犯罪センター (DC3) による、GNU dd のパッチ済みバージョン。dcfldd とよく似た目的と機能を有しています。
https://sourceforge.net/projects/dc3dd/ || dc3ddAUR

モダンな dd の類似品

このサブセクションでは、(JCL に似たコマンドライン構文とデフォルトの挙動という点で) POSIX に準拠していない dd の代替をリストアップしています。

  • dd_rescue — 多くの機能が積み込まれたモダンな dd の類似品。日々のスクリプティングやディスク複製、データリカバリに適しています。
http://www.garloff.de/kurt/linux/ddrescue/ || dd_rescue
  • rw — 従来のコマンドラインフラグ付きの必要最低限でポータブルな dd 類似品。
https://sortix.org/rw/ || rwAUR

buffer のスピンオフ

このサブセクションでは、bufferAUR のフォークをリストアップしています。buffer は、dd に似た汎用 I/O バッファリングユーティリティですが、動的サイズバッファを持っています。ブロック単位の I/O をサポートしており、LTO テープを書き込み/読み込みする際に摩耗を防ぐために使用できます。

  • mbufferbuffer ユーティリティにマルチスレッディングや他の機能を組み合わせたもの。
https://www.maier-komor.de/mbuffer.html || mbuffer

df の代替

  • duf — ディスクの使用量と空き容量を調べるユーティリティ
https://github.com/muesli/duf || duf

du の代替

  • cdu — カラー出力で、美しいヒストグラムを出力する du ラッパ。
http://arsunik.free.fr/prog/cdu.html || cduAUR
  • dust — Rust で記述された du のより直感的なバージョン。
https://github.com/bootandy/dust || dust
  • ncdu — ncurses のシンプルなディスク使用量アナライザ。
https://dev.yorhel.nl/ncdu || ncdu
  • gdu — Go で記述された、コンソールインターフェイスのディスク使用量アナライザ。
https://github.com/Dundee/gdu || gdu

アプリケーション一覧/ユーティリティ#ディスク使用量表示プログラム も見てください。

参照

翻訳ステータス: このページは en:Core utilities の翻訳バージョンです。最後の翻訳日は 2023-09-09 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。