「Core utilities」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎基本コマンド: 英語版に同期 & 翻訳)
(コマンドの使い方に関する記述をサブセクション化)
94行目: 94行目:
 
{{ic|rm}} や {{ic|mv}}、{{ic|cp}}、シェルのリダイレクトは問答無用でファイルを削除/上書きします。{{ic|rm}} と {{ic|mv}}、{{ic|cp}} はすべて {{ic|-i}} フラグをサポートしており、このフラグを使うとファイルを削除/上書きする前にユーザに尋ねるようになります。[[エイリアス]]を使って {{ic|-i}} フラグをデフォルトで有効化したいユーザもいるでしょう。しかし、これらのシェルオプションに頼りっきりなるのは危険です。これらのオプションに慣れてしまうと、これらを使用していない他のシステムやユーザを使うときにデータ損失を招く可能性があります。データ損失を防ぐ最良の方法は[[バックアップ]]を取ることです。
 
{{ic|rm}} や {{ic|mv}}、{{ic|cp}}、シェルのリダイレクトは問答無用でファイルを削除/上書きします。{{ic|rm}} と {{ic|mv}}、{{ic|cp}} はすべて {{ic|-i}} フラグをサポートしており、このフラグを使うとファイルを削除/上書きする前にユーザに尋ねるようになります。[[エイリアス]]を使って {{ic|-i}} フラグをデフォルトで有効化したいユーザもいるでしょう。しかし、これらのシェルオプションに頼りっきりなるのは危険です。これらのオプションに慣れてしまうと、これらを使用していない他のシステムやユーザを使うときにデータ損失を招く可能性があります。データ損失を防ぐ最良の方法は[[バックアップ]]を取ることです。
   
== cat ==
+
== 代替コマンド ==
  +
  +
代替のコアユーティリティは [[BusyBox]]、[[Heirloom|Heirloom Toolchest]]、{{Pkg|9base}}、 {{AUR|sbase-git}}、{{AUR|ubase-git}} により提供されています。
  +
  +
=== cat の代替 ===
  +
  +
* {{App|bat|シンタックスハイライトと Git 統合機能を備えた cat クローン|https://github.com/sharkdp/bat|{{Pkg|bat}}}}
  +
  +
=== cd の代替 ===
  +
  +
* {{App|zoxide|ユーザーの癖を学習するスマートな cd コマンド。たった数個のキーストロークでどこへでも移動できます。|https://github.com/ajeetdsouza/zoxide|{{Pkg|zoxide}}}}
  +
  +
=== cp の代替 ===
  +
  +
[[rsync#cp/mv の代わりとして使う|rsync を cp/mv の代わりとして使う]]ことで、失敗したファイル転送の再開、転送状況の表示、すでに存在するファイルのスキップ、チェックサムによる転送先ファイルの整合性の確認が可能になります。
  +
  +
=== ls の代替 ===
  +
  +
* {{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|exa|カラー表示、ツリー表示、git 統合などの機能を備えたもう一つの ls 代替|https://github.com/ogham/exa|{{Pkg|exa}}}}
  +
* {{App|lsd|多くの美しい色と素晴らしいアイコンを備えたモダンな ls|https://github.com/Peltoche/lsd|{{Pkg|lsd}}}}
  +
  +
=== find の代替 ===
  +
  +
* {{App|fd|シンプルで速く、ユーザーフレンドリーな find の代替。隠しファイルや {{ic|.gitignore}} にあるファイルをデフォルトで無視します。|https://github.com/sharkdp/fd|{{Pkg|fd}}}}
  +
* {{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}}}}
  +
  +
グラフィカルなファイル検索ソフトウェアは [[アプリケーション一覧/ユーティリティ#File searching]] をご覧ください。
  +
  +
=== diff の代替 ===
  +
  +
{{Pkg|diffutils}} では単語単位の差分表示ができませんが、それが可能なプログラムがいくつか存在します:
  +
  +
* [[git]] の diff は {{ic|--color-words}} フラグを使用すると単語単位の差分表示が可能です。{{ic|--no-index}} フラグを使用すれば Git のワークツリー外でも使用可能です。
  +
* {{App|cwdiff|出力をカラー表示化する GNU wdiff ラッパー|https://github.com/junghans/cwdiff|{{AUR|cwdiff}}}}
  +
* {{App|git-delta|git や diff 、grep 用の出力をシンタックスハイライトするページャー|https://dandavison.github.io/delta/|{{Pkg|git-delta}}}}
  +
* {{App|dwdiff|単語単位で差分表示する diff のフロントエンド。カラー表示サポート付き。|https://os.ghalkes.nl/dwdiff.html|{{Pkg|dwdiff}}}}
  +
* {{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]] もご覧ください。
  +
  +
=== grep の代替 ===
  +
  +
* {{App|mgrep|複数行 grep|https://sourceforge.net/projects/multiline-grep/|{{AUR|mgrep}}}}
  +
* {{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}}}}
  +
  +
==== コード検索ソフトウェア ====
  +
  +
以下の3つのツールはコード検索の場面で grep を置き換えることを目的としています。これらはデフォルトで再帰検索をし、バイナリファイルや {{ic|.gitignore}} 内にあるファイルをスキップします。
  +
  +
* {{App|ack|Perl ベースの grep 置き換え。多種多様なソースコードの大きなツリーを扱うプログラマに向けです。|https://beyondgrep.com/|{{Pkg|ack}}}}
  +
* {{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|[[fzf]]|汎用のコマンドラインあいまい検索ソフトウェア。デフォルトで find を使用します。|https://github.com/junegunn/fzf|{{Pkg|fzf}}}}
  +
* {{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}}}}
  +
  +
== 使い方 ==
  +
  +
=== cat ===
   
 
[[Wikipedia:ja:cat (UNIX)|cat]] (''catenate'') はファイルを連結して表示する標準の Unix ユーティリティです。
 
[[Wikipedia:ja:cat (UNIX)|cat]] (''catenate'') はファイルを連結して表示する標準の Unix ユーティリティです。
114行目: 183行目:
 
* ファイルの行を逆順で cat する必要がある場合、[[Wikipedia:tac (Unix)|tac]] (''cat'' reversed) という名前のユーティリティがあります。
 
* ファイルの行を逆順で cat する必要がある場合、[[Wikipedia:tac (Unix)|tac]] (''cat'' reversed) という名前のユーティリティがあります。
   
== chmod ==
+
=== chmod ===
   
 
[[ファイルのパーミッションと属性#パーミッションを変更]]を見てください。
 
[[ファイルのパーミッションと属性#パーミッションを変更]]を見てください。
   
== chown ==
+
=== chown ===
   
 
[[ファイルのパーミッションと属性#所有者を変更]]を見てください。
 
[[ファイルのパーミッションと属性#所有者を変更]]を見てください。
   
== dd ==
+
=== dd ===
   
 
[[Wikipedia:ja:dd (UNIX)|dd]] は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。
 
[[Wikipedia:ja:dd (UNIX)|dd]] は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。
147行目: 216行目:
 
詳しくは {{man|1|dd}} や [https://www.gnu.org/software/coreutils/dd ドキュメント] を読んでください。
 
詳しくは {{man|1|dd}} や [https://www.gnu.org/software/coreutils/dd ドキュメント] を読んでください。
   
=== dd 派生 ===
+
==== dd 派生 ====
   
 
他の ''dd'' ライクなプログラムには定期的に状態を出力する (例: シンプルなプログレスバー) 機能があります。
 
他の ''dd'' ライクなプログラムには定期的に状態を出力する (例: シンプルなプログレスバー) 機能があります。
155行目: 224行目:
 
; ddrescue : GNU {{Pkg|ddrescue}} はデータ復旧ツールです。ディスク消去でほとんどの場合無用な機能である読み込みエラーを無視できます。詳しくは [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html 公式マニュアル] を見て下さい。
 
; ddrescue : GNU {{Pkg|ddrescue}} はデータ復旧ツールです。ディスク消去でほとんどの場合無用な機能である読み込みエラーを無視できます。詳しくは [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html 公式マニュアル] を見て下さい。
   
== find ==
+
=== find ===
   
 
''find'' は {{Pkg|findutils}} パッケージに含まれており、{{Pkg|base}} パッケージグループのひとつとしてインストールされます。
 
''find'' は {{Pkg|findutils}} パッケージに含まれており、{{Pkg|base}} パッケージグループのひとつとしてインストールされます。
165行目: 234行目:
 
find はディレクトリのセットとマッチするファイルの正規表現を引数として取ります。非常に強力なワンライナーを作ることができますが、直感的な検索コマンドとしては使えません。詳しい使用方法は [http://mywiki.wooledge.org/UsingFind UsingFind] を見てください。
 
find はディレクトリのセットとマッチするファイルの正規表現を引数として取ります。非常に強力なワンライナーを作ることができますが、直感的な検索コマンドとしては使えません。詳しい使用方法は [http://mywiki.wooledge.org/UsingFind UsingFind] を見てください。
   
== grep ==
+
=== grep ===
   
 
[[Wikipedia:ja:grep|grep]] ([[Wikipedia:ja:ed|ed]] の ''g/re/p'', ''global/regular expression/print'' から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。''grep'' コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。
 
[[Wikipedia:ja:grep|grep]] ([[Wikipedia:ja:ed|ed]] の ''g/re/p'', ''global/regular expression/print'' から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。''grep'' コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。
176行目: 245行目:
 
カラー出力については[[コンソールのカラー出力#grep]] を見てください。
 
カラー出力については[[コンソールのカラー出力#grep]] を見てください。
   
== iconv ==
+
=== iconv ===
   
 
{{ic|iconv}} は文字列のエンコーディングをあるコードセットから他のコードセットへ変換します。
 
{{ic|iconv}} は文字列のエンコーディングをあるコードセットから他のコードセットへ変換します。
186行目: 255行目:
 
詳しくは {{man|1|iconv}} を読んで下さい。
 
詳しくは {{man|1|iconv}} を読んで下さい。
   
=== ファイルを変換する ===
+
==== ファイルを変換する ====
 
{{Tip|mtime を変えてほしくない場合 iconv の代わりに {{pkg|recode}} を使うことができます。}}
 
{{Tip|mtime を変えてほしくない場合 iconv の代わりに {{pkg|recode}} を使うことができます。}}
 
[[#sed|sed]] とは異なり、''iconv'' にはファイルを変換するオプションはありません。しかしながら、({{pkg|moreutils}} に含まれている) {{ic|sponge}} を使うことでファイルを変換することもできます:
 
[[#sed|sed]] とは異なり、''iconv'' にはファイルを変換するオプションはありません。しかしながら、({{pkg|moreutils}} に含まれている) {{ic|sponge}} を使うことでファイルを変換することもできます:
194行目: 263行目:
 
詳しくは {{man|1|sponge}} を参照。
 
詳しくは {{man|1|sponge}} を参照。
   
== ip ==
+
=== ip ===
 
[[wikipedia:Iproute2|ip]] を使うことで Linux の [[Wikipedia:ja:Internet Protocol|IP]] ソフトウェアスタックにおけるネットワークデバイス・IP アドレス・ルーティングテーブルなどの情報を表示することができます。様々なコマンドを加えることで、オブジェクトの操作や設定をすることも可能です。
 
[[wikipedia:Iproute2|ip]] を使うことで Linux の [[Wikipedia:ja:Internet Protocol|IP]] ソフトウェアスタックにおけるネットワークデバイス・IP アドレス・ルーティングテーブルなどの情報を表示することができます。様々なコマンドを加えることで、オブジェクトの操作や設定をすることも可能です。
   
243行目: 312行目:
 
{{Note|もしかしたら [[Wikipedia:ifconfig|ifconfig]] コマンドの方が親しみがあるかもしれません。このコマンドは Linux の旧バージョンでインターフェイス設定に使われていました。現在 Arch Linux では廃止されているため、代わりに ''ip'' を使って下さい。}}
 
{{Note|もしかしたら [[Wikipedia:ifconfig|ifconfig]] コマンドの方が親しみがあるかもしれません。このコマンドは Linux の旧バージョンでインターフェイス設定に使われていました。現在 Arch Linux では廃止されているため、代わりに ''ip'' を使って下さい。}}
   
== less ==
+
=== less ===
   
 
[[Wikipedia:ja:less|less]] はテキストファイルの中身を一画面単位で表示するのに使われるターミナルページャプログラムです。[[Wikipedia:ja:more (UNIX)|more]] や [[Wikipedia:pg (Unix)|pg]] といった他のページャと同じですが、''less'' はより高度なインターフェイスと完全な [http://www.greenwoodsoftware.com/less/faq.html feature-set] を提供します。
 
[[Wikipedia:ja:less|less]] はテキストファイルの中身を一画面単位で表示するのに使われるターミナルページャプログラムです。[[Wikipedia:ja:more (UNIX)|more]] や [[Wikipedia:pg (Unix)|pg]] といった他のページャと同じですが、''less'' はより高度なインターフェイスと完全な [http://www.greenwoodsoftware.com/less/faq.html feature-set] を提供します。
249行目: 318行目:
 
less の代替プログラムについては[[アプリケーション一覧#ターミナルページャ]]を見て下さい。
 
less の代替プログラムについては[[アプリケーション一覧#ターミナルページャ]]を見て下さい。
   
== locate ==
+
=== locate ===
   
 
{{Pkg|mlocate}} パッケージを[[インストール]]してください。インストール後、自動的にデータベースを更新するスクリプトが毎日実行されるようになります。手動で root で ''updatedb'' を実行することでいつでもデータベースは更新できます。デフォルトでは {{ic|/media}} や {{ic|/mnt}} などのパスは無視されるので ''locate'' は外部デバイスのファイルを検索できません。詳しくは {{man|8|updatedb}} を見てください。
 
{{Pkg|mlocate}} パッケージを[[インストール]]してください。インストール後、自動的にデータベースを更新するスクリプトが毎日実行されるようになります。手動で root で ''updatedb'' を実行することでいつでもデータベースは更新できます。デフォルトでは {{ic|/media}} や {{ic|/mnt}} などのパスは無視されるので ''locate'' は外部デバイスのファイルを検索できません。詳しくは {{man|8|updatedb}} を見てください。
259行目: 328行目:
 
[http://jvns.ca/blog/2015/03/05/how-the-locate-command-works-and-lets-rewrite-it-in-one-minute/ How locate works and rewrite it in one minute] も参照。
 
[http://jvns.ca/blog/2015/03/05/how-the-locate-command-works-and-lets-rewrite-it-in-one-minute/ How locate works and rewrite it in one minute] も参照。
   
=== もうひとつのページャとしての Vim ===
+
==== もうひとつのページャとしての Vim ====
   
 
[[Vim]] (''visual editor improved'') にはテキストファイル・圧縮ファイル・バイナリ・ディレクトリの中身を表示するスクリプトが含まれています。次の行をシェルの設定ファイルに追加することでページャとして使うことが可能です:
 
[[Vim]] (''visual editor improved'') にはテキストファイル・圧縮ファイル・バイナリ・ディレクトリの中身を表示するスクリプトが含まれています。次の行をシェルの設定ファイルに追加することでページャとして使うことが可能です:
272行目: 341行目:
 
これで {{ic|PAGER}} 環境変数を使うプログラム、[[git]] などはページャとして ''vim'' を使うようになります。
 
これで {{ic|PAGER}} 環境変数を使うプログラム、[[git]] などはページャとして ''vim'' を使うようになります。
   
== ls ==
+
=== ls ===
   
 
[[Wikipedia:ja:ls|ls]] (''list'') は Unix や Unix ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。
 
[[Wikipedia:ja:ls|ls]] (''list'') は Unix や Unix ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。
280行目: 349行目:
 
{{Pkg|exa}} は近代的でユーザーフレンドリーな {{ic|ls}} と {{ic|tree}} の代替ユーティリティです。ファイル名と一緒に [[Git]] の変更を表示したり、{{ic|--long}} モードで各カラムをカラー化したり、{{ic|--long}} モードで {{ic|tree}} ビューとメタデータを同時に表示する機能があります。
 
{{Pkg|exa}} は近代的でユーザーフレンドリーな {{ic|ls}} と {{ic|tree}} の代替ユーティリティです。ファイル名と一緒に [[Git]] の変更を表示したり、{{ic|--long}} モードで各カラムをカラー化したり、{{ic|--long}} モードで {{ic|tree}} ビューとメタデータを同時に表示する機能があります。
   
=== 長い出力 ===
+
==== 長い出力 ====
   
 
{{ic|-l}} オプションはメタデータを表示します。例:
 
{{ic|-l}} オプションはメタデータを表示します。例:
312行目: 381行目:
 
* エンティティ名。
 
* エンティティ名。
   
=== 空白を含むファイル名がクォートで囲まれる ===
+
==== 空白を含むファイル名がクォートで囲まれる ====
   
 
デフォルトで、空白を含むファイル名やディレクトリ名はシングルクォートで囲まれて表示されます。{{ic|-N}} や {{ic|1=--quoting-style=literal}} オプションを使うことでクォートを消せます。また、{{ic|QUOTING_STYLE}} [[環境変数]]を {{ic|literal}} に設定することでも同じ効果があります [https://unix.stackexchange.com/questions/258679/why-is-ls-suddenly-surrounding-items-with-spaces-in-single-quotes]。
 
デフォルトで、空白を含むファイル名やディレクトリ名はシングルクォートで囲まれて表示されます。{{ic|-N}} や {{ic|1=--quoting-style=literal}} オプションを使うことでクォートを消せます。また、{{ic|QUOTING_STYLE}} [[環境変数]]を {{ic|literal}} に設定することでも同じ効果があります [https://unix.stackexchange.com/questions/258679/why-is-ls-suddenly-surrounding-items-with-spaces-in-single-quotes]。
   
== lsblk ==
+
=== lsblk ===
   
 
{{man|8|lsblk}} は利用可能な[[w:Device_file#Block_devices|ブロックデバイス]]とパーティションスキームを表示します。例:
 
{{man|8|lsblk}} は利用可能な[[w:Device_file#Block_devices|ブロックデバイス]]とパーティションスキームを表示します。例:
332行目: 401行目:
 
他によく使われるブロックデバイスのタイプとしてはメモリカードの {{ic|mmcblk}} や [[ソリッドステートドライブ/NVMe|NVMe]] デバイスの {{ic|nvme}} などがあります。知らないタイプは [https://www.kernel.org/doc/Documentation/devices.txt カーネルドキュメント] で検索してください。
 
他によく使われるブロックデバイスのタイプとしてはメモリカードの {{ic|mmcblk}} や [[ソリッドステートドライブ/NVMe|NVMe]] デバイスの {{ic|nvme}} などがあります。知らないタイプは [https://www.kernel.org/doc/Documentation/devices.txt カーネルドキュメント] で検索してください。
   
== mkdir ==
+
=== mkdir ===
   
 
[[Wikipedia:ja:mkdir|mkdir]] (''make directory'') はディレクトリを作成するコマンドです。
 
[[Wikipedia:ja:mkdir|mkdir]] (''make directory'') はディレクトリを作成するコマンドです。
344行目: 413行目:
 
{{Tip|一時ディレクトリが欲しいときは代わりに [[Wikipedia:Temporary file|mktemp]] (''make termporary'') を使って下さい: {{ic|mktemp -d}}。}}
 
{{Tip|一時ディレクトリが欲しいときは代わりに [[Wikipedia:Temporary file|mktemp]] (''make termporary'') を使って下さい: {{ic|mktemp -d}}。}}
   
== mv ==
+
=== mv ===
   
 
[[Wikipedia:ja:mv_(UNIX)|mv]] (''move'') はファイルやディレクトリを移動したり名前の変更をするコマンドです。
 
[[Wikipedia:ja:mv_(UNIX)|mv]] (''move'') はファイルやディレクトリを移動したり名前の変更をするコマンドです。
352行目: 421行目:
 
:このエイリアスは8秒後に ''mv'' を中止し、3つ以上のファイルの削除を確認し、進行中の操作を表示し、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。
 
:このエイリアスは8秒後に ''mv'' を中止し、3つ以上のファイルの削除を確認し、進行中の操作を表示し、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。
   
== od ==
+
=== od ===
   
 
[[Wikipedia:od (Unix)|od]] (''o''ctal ''d''ump) コマンドは人間が読める形式になっていないデータ (プログラムの実行形式のコードやフォーマットされていないデバイスの中身など) を可視化するのに役立ちます。詳しくは [https://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html#od-invocation マニュアル] を参照してください。
 
[[Wikipedia:od (Unix)|od]] (''o''ctal ''d''ump) コマンドは人間が読める形式になっていないデータ (プログラムの実行形式のコードやフォーマットされていないデバイスの中身など) を可視化するのに役立ちます。詳しくは [https://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html#od-invocation マニュアル] を参照してください。
   
== pv ==
+
=== pv ===
   
 
{{Pkg|pv}} (''pipe viewer'') を使うことでデータ操作の進捗をパイプラインで監視できます。例:
 
{{Pkg|pv}} (''pipe viewer'') を使うことでデータ操作の進捗をパイプラインで監視できます。例:
364行目: 433行目:
 
大抵の場合 {{ic|pv}} は {{ic|cat}} の代替として機能します。
 
大抵の場合 {{ic|pv}} は {{ic|cat}} の代替として機能します。
   
== rm ==
+
=== rm ===
   
 
[[Wikipedia:ja:rm_(UNIX)|rm]] (''remove'') はファイルやディレクトリを削除するコマンドです。
 
[[Wikipedia:ja:rm_(UNIX)|rm]] (''remove'') はファイルやディレクトリを削除するコマンドです。
375行目: 444行目:
 
* 空のディレクトリを削除するときは、''rmdir'' を使ってください。
 
* 空のディレクトリを削除するときは、''rmdir'' を使ってください。
   
== sed ==
+
=== sed ===
   
 
[[Wikipedia:ja:sed (コンピュータ)|sed]] (''stream editor'') は文章をパース・変換する Unix ユーティリティです。
 
[[Wikipedia:ja:sed (コンピュータ)|sed]] (''stream editor'') は文章をパース・変換する Unix ユーティリティです。
383行目: 452行目:
 
{{Tip|より強力に sed を置き換えるものとして [[Wikipedia:ja:AWK|AWK]] や [[Perl]] 言語があります。}}
 
{{Tip|より強力に sed を置き換えるものとして [[Wikipedia:ja:AWK|AWK]] や [[Perl]] 言語があります。}}
   
== seq ==
+
=== seq ===
   
 
'''seq''' (''sequence'') は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、[[Wikipedia:seq|Wikipedia]] で説明されているように使うと良いでしょう。
 
'''seq''' (''sequence'') は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、[[Wikipedia:seq|Wikipedia]] で説明されているように使うと良いでしょう。
   
== ss ==
+
=== ss ===
   
 
''ss'' はネットワークポートを確認するユーティリティです。{{Pkg|iproute2}} パッケージに含まれており {{Pkg|base}} グループのひとつとしてインストールされます。[https://www.archlinux.jp/news/deprecation-of-net-tools/ 非推奨] となった netstat ユーティリティと同じような機能を持っています。
 
''ss'' はネットワークポートを確認するユーティリティです。{{Pkg|iproute2}} パッケージに含まれており {{Pkg|base}} グループのひとつとしてインストールされます。[https://www.archlinux.jp/news/deprecation-of-net-tools/ 非推奨] となった netstat ユーティリティと同じような機能を持っています。
404行目: 473行目:
 
詳しくは {{man|8|ss}} や {{Pkg|iproute2}} パッケージの {{ic|ss.html}} を見てください。
 
詳しくは {{man|8|ss}} や {{Pkg|iproute2}} パッケージの {{ic|ss.html}} を見てください。
   
== tar ==
+
=== tar ===
   
 
初期の Unix の圧縮形式として、{{ic|tar}} ファイル (別名 ''tarball'') は Unix ライクなオペレーティングシステムでパッケージの作成に広く使われています。[[pacman]] と [[AUR]] のパッケージはどちらも tarball であり、Arch はデフォルトで [[GNU プロジェクト|GNU]] の {{Ic|Tar}} プログラムを使います。
 
初期の Unix の圧縮形式として、{{ic|tar}} ファイル (別名 ''tarball'') は Unix ライクなオペレーティングシステムでパッケージの作成に広く使われています。[[pacman]] と [[AUR]] のパッケージはどちらも tarball であり、Arch はデフォルトで [[GNU プロジェクト|GNU]] の {{Ic|Tar}} プログラムを使います。
434行目: 503行目:
 
上記の {{Ic|tar}} 引数の中にはレガシーなものもありますが、特定の操作をするときは未だに有用です。詳しい説明は {{man|1|tar}} の [[man ページ]]の ''Compatibility'' セクションを見て下さい。
 
上記の {{Ic|tar}} 引数の中にはレガシーなものもありますが、特定の操作をするときは未だに有用です。詳しい説明は {{man|1|tar}} の [[man ページ]]の ''Compatibility'' セクションを見て下さい。
   
== which ==
+
=== which ===
   
 
[[wikipedia:Which_(Unix)|which]] コマンドは実行可能ファイルのパスを確認したいときに便利です。例:
 
[[wikipedia:Which_(Unix)|which]] コマンドは実行可能ファイルのパスを確認したいときに便利です。例:
440行目: 509行目:
 
# journalctl $(which sshd)
 
# journalctl $(which sshd)
   
== wipefs ==
+
=== wipefs ===
   
 
'''wipefs''' は指定したデバイスの[[ファイルシステム]], [[RAID]], [[パーティショニング|パーティションテーブル]]のシグネチャ (マジック文字列) を確認・消去することができます。ファイルシステム自体は消去せず、デバイスの他のデータが消去されることもありません。
 
'''wipefs''' は指定したデバイスの[[ファイルシステム]], [[RAID]], [[パーティショニング|パーティションテーブル]]のシグネチャ (マジック文字列) を確認・消去することができます。ファイルシステム自体は消去せず、デバイスの他のデータが消去されることもありません。
449行目: 518行目:
   
 
# wipefs --all --backup /dev/sdb
 
# wipefs --all --backup /dev/sdb
 
== 代替コマンド ==
 
 
代替のコアユーティリティは [[BusyBox]]、[[Heirloom|Heirloom Toolchest]]、{{Pkg|9base}}、 {{AUR|sbase-git}}、{{AUR|ubase-git}} により提供されています。
 
 
=== cat の代替 ===
 
 
* {{App|bat|シンタックスハイライトと Git 統合機能を備えた cat クローン|https://github.com/sharkdp/bat|{{Pkg|bat}}}}
 
 
=== cd の代替 ===
 
 
* {{App|zoxide|ユーザーの癖を学習するスマートな cd コマンド。たった数個のキーストロークでどこへでも移動できます。|https://github.com/ajeetdsouza/zoxide|{{Pkg|zoxide}}}}
 
 
=== cp の代替 ===
 
 
[[rsync#cp/mv の代わりとして使う|rsync を cp/mv の代わりとして使う]]ことで、失敗したファイル転送の再開、転送状況の表示、すでに存在するファイルのスキップ、チェックサムによる転送先ファイルの整合性の確認が可能になります。
 
 
=== ls の代替 ===
 
 
* {{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|exa|カラー表示、ツリー表示、git 統合などの機能を備えたもう一つの ls 代替|https://github.com/ogham/exa|{{Pkg|exa}}}}
 
* {{App|lsd|多くの美しい色と素晴らしいアイコンを備えたモダンな ls|https://github.com/Peltoche/lsd|{{Pkg|lsd}}}}
 
 
=== find の代替 ===
 
 
* {{App|fd|シンプルで速く、ユーザーフレンドリーな find の代替。隠しファイルや {{ic|.gitignore}} にあるファイルをデフォルトで無視します。|https://github.com/sharkdp/fd|{{Pkg|fd}}}}
 
* {{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}}}}
 
 
グラフィカルなファイル検索ソフトウェアは [[アプリケーション一覧/ユーティリティ#File searching]] をご覧ください。
 
 
=== diff の代替 ===
 
 
{{Pkg|diffutils}} では単語単位の差分表示ができませんが、それが可能なプログラムがいくつか存在します:
 
 
* [[git]] の diff は {{ic|--color-words}} フラグを使用すると単語単位の差分表示が可能です。{{ic|--no-index}} フラグを使用すれば Git のワークツリー外でも使用可能です。
 
* {{App|cwdiff|出力をカラー表示化する GNU wdiff ラッパー|https://github.com/junghans/cwdiff|{{AUR|cwdiff}}}}
 
* {{App|git-delta|git や diff 、grep 用の出力をシンタックスハイライトするページャー|https://dandavison.github.io/delta/|{{Pkg|git-delta}}}}
 
* {{App|dwdiff|単語単位で差分表示する diff のフロントエンド。カラー表示サポート付き。|https://os.ghalkes.nl/dwdiff.html|{{Pkg|dwdiff}}}}
 
* {{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]] もご覧ください。
 
 
=== grep の代替 ===
 
 
* {{App|mgrep|複数行 grep|https://sourceforge.net/projects/multiline-grep/|{{AUR|mgrep}}}}
 
* {{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}}}}
 
 
==== コード検索ソフトウェア ====
 
 
以下の3つのツールはコード検索の場面で grep を置き換えることを目的としています。これらはデフォルトで再帰検索をし、バイナリファイルや {{ic|.gitignore}} 内にあるファイルをスキップします。
 
 
* {{App|ack|Perl ベースの grep 置き換え。多種多様なソースコードの大きなツリーを扱うプログラマに向けです。|https://beyondgrep.com/|{{Pkg|ack}}}}
 
* {{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|[[fzf]]|汎用のコマンドラインあいまい検索ソフトウェア。デフォルトで find を使用します。|https://github.com/junegunn/fzf|{{Pkg|fzf}}}}
 
* {{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}}}}
 
   
 
== 参照 ==
 
== 参照 ==

2022年4月9日 (土) 10:17時点における版

この記事あるいはセクションは翻訳の途中です。
ノート: 2018年訳出後の更新に追従できておらず、大幅に翻訳しなおす必要があります。英語版の参照を推奨。 (議論: トーク:Core utilities#)

関連記事

この記事では less, ls, grep などの GNU/Linux システムのコアユーティリティを扱っています。この記事の扱う範囲は GNU coreutils パッケージに含まれているユーティリティに留まりません。ユーティリティに関連する様々なヒント・小技、その他便利な情報を載せています。

基本コマンド

以下の表には ArchLinux ユーザーが知っておくべきいくつかの重要なユーティリティを載せています。intro(1) も参照してください。

パッケージ ユーティリティ 説明 ドキュメント 代替品
シェル組み込み cd ディレクトリを変更 cd(1p) #cd の代替
GNU coreutils ls ファイルを一覧表示 ls(1), info tree, #ls の代替
cat ファイルを連結して表示 cat(1), info tac(1), bat
mkdir ディレクトリを作成 mkdir(1), info
rmdir 空のディレクトリを削除 rmdir(1), info
rm ファイルやディレクトリを削除 rm(1), info shred
cp ファイルやディレクトリをコピー cp(1), info #cp の代替
mv ファイルやディレクトリを移動 mv(1), info
ln ハードリンクやシンボリックリンクを作成 ln(1), info
chown ファイルの所有者やグループを変更 chown(1), info chgrp(1)
chmod ファイルのパーミッションを変更 chmod(1), info
dd ファイルを変換・コピー dd(1), info
df ファイルシステムの使用状況を表示 df(1), info
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
GNU gawk awk パターンスキャンとデータ処理言語 gawk(1), info nawk, mawkAUR
util-linux dmesg カーネルリングバッファを出力/制御 dmesg(1) systemd/ジャーナル
lsblk ブロックデバイスを一覧表示 lsblk(8)
mount ファイルシステムをマウント mount(8)
umount ファイルシステムをアンマウント umount(8)
su ユーザを変更 su(1) sudo, opendoas
kill プロセスを終了 kill(1) pkill(1), killall(1)
procps-ng pgrep 名前や属性によってプロセスを検索 pgrep(1) pidof(1)
ps プロセスの情報を表示 ps(1) top(1), htop
free メモリの使用/未使用量を表示 free(1)

データの損失を防ぐ

rmmvcp、シェルのリダイレクトは問答無用でファイルを削除/上書きします。rmmvcp はすべて -i フラグをサポートしており、このフラグを使うとファイルを削除/上書きする前にユーザに尋ねるようになります。エイリアスを使って -i フラグをデフォルトで有効化したいユーザもいるでしょう。しかし、これらのシェルオプションに頼りっきりなるのは危険です。これらのオプションに慣れてしまうと、これらを使用していない他のシステムやユーザを使うときにデータ損失を招く可能性があります。データ損失を防ぐ最良の方法はバックアップを取ることです。

代替コマンド

代替のコアユーティリティは BusyBoxHeirloom Toolchest9basesbase-gitAURubase-gitAUR により提供されています。

cat の代替

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

cd の代替

  • zoxide — ユーザーの癖を学習するスマートな cd コマンド。たった数個のキーストロークでどこへでも移動できます。
https://github.com/ajeetdsouza/zoxide || zoxide

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
  • exa — カラー表示、ツリー表示、git 統合などの機能を備えたもう一つの ls 代替
https://github.com/ogham/exa || exa
  • 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

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

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 || dwdiff
  • 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

コード検索ソフトウェア

以下の3つのツールはコード検索の場面で 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

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

  • 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

使い方

cat

cat (catenate) はファイルを連結して表示する標準の Unix ユーティリティです。

  • cat はシェルにビルトインされていないため、多くの場合でリダイレクションを使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際 < filecat file と全く同じです。
  • cat は複数行でも動作します:
$ cat << EOF >> path/file
first line
...
last line
EOF

代わりに printf コマンドを使用:

$ printf '%s\n' 'first line' ... 'last line'
  • ファイルの行を逆順で cat する必要がある場合、tac (cat reversed) という名前のユーティリティがあります。

chmod

ファイルのパーミッションと属性#パーミッションを変更を見てください。

chown

ファイルのパーミッションと属性#所有者を変更を見てください。

dd

dd は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。

cp はいくつかのオペランドを除いて dd と同じですが、多目的のディスク消去作業向きには作られてはいません。

ヒント: デフォルトでは、dd は作業が完了するまで何も出力しません。操作の進捗を監視したい場合、コマンドに status=progress オプションを追加してください。このオプションは古いバージョン (8.24 以前) の coreutils では使えません。

'dd' は以下のような作業ができます:

  • ドライブ関連の作業:
    • イメージの作成。
    • イメージの書き込み。
    • ドライブやパーティションの複製。
    • ドライブやパーティションの消去。
    • パーティションテーブルやブートセクタの消去。
    • ブートセクタのバックアップ。
    • システムの復元。
  • デバイスや dd /dev/random、あるいは入力デバイスからストリームを取得
  • CPU に負担をかける (例: dd if=/dev/zero of=/dev/null).
  • ディスクに負担をかける (例: dd if=/dev/zero of=/path/testfile bs=number_ofG count=times oflag=fdatasync)
  • バックアップユーティリティとして使用
  • ファイルを大文字・小文字に変換

詳しくは dd(1)ドキュメント を読んでください。

dd 派生

他の dd ライクなプログラムには定期的に状態を出力する (例: シンプルなプログレスバー) 機能があります。

dcfldd 
dcflddAUR は dd にフォレンジクスやセキュリティの面で改良を加えたバージョンです。ほとんどの dd のパラメータを扱うことができステータスの出力もできます。dcfldd の最後の安定版は2006年12月19日にリリースされました。[2]
ddrescue 
GNU ddrescue はデータ復旧ツールです。ディスク消去でほとんどの場合無用な機能である読み込みエラーを無視できます。詳しくは 公式マニュアル を見て下さい。

find

findfindutils パッケージに含まれており、base パッケージグループのひとつとしてインストールされます。

ヒント: fd はシンプルかつ高速でユーザーフレンドリーな find の代替です。デフォルト設定がわかりやすいものになっています (例: 隠しファイル・ディレクトリや .gitignore で指定されたファイルは無視する、find -iname '*PATTERN*' ではなく fd PATTERN で検索できる)。特徴として (ls と同じような) カラー出力や Unicode 対応、正規表現が使用できます。

find コマンドはファイル名を引数としてファイルシステムの中に名前が一致するファイルがないか検索するコマンドではありません。下の #locate を見てください。

find はディレクトリのセットとマッチするファイルの正規表現を引数として取ります。非常に強力なワンライナーを作ることができますが、直感的な検索コマンドとしては使えません。詳しい使用方法は UsingFind を見てください。

grep

grep (edg/re/p, global/regular expression/print から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。grep コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。

  • grep はファイルを処理できるので、cat file | grep pattern のようなコンストラクトは grep pattern file に置き換えられます
  • VCS のソースコードを grep する場合、ripgrepackthe_silver_searcher などの最適化されたユーティリティが存在します。
  • -n オプションを使うことで出力にファイルの行番号が含まれているようになります。
ノート: コマンドによっては標準エラー出力の方に出力が送信されることもありますが、grep は標準エラー出力を解釈しません。このような場合、標準エラー出力を標準出力にリダイレクトする必要があります: command 2>&1 | grep args または (Bash 4 の場合) command |& grep argsI/O Redirection を参照してください。

カラー出力についてはコンソールのカラー出力#grep を見てください。

iconv

iconv は文字列のエンコーディングをあるコードセットから他のコードセットへ変換します。

次のコマンドはファイル foo を ISO-8859-15 から UTF-8 へ変換して foo.utf として保存します:

$ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf

詳しくは iconv(1) を読んで下さい。

ファイルを変換する

ヒント: mtime を変えてほしくない場合 iconv の代わりに recode を使うことができます。

sed とは異なり、iconv にはファイルを変換するオプションはありません。しかしながら、(moreutils に含まれている) sponge を使うことでファイルを変換することもできます:

$ iconv -f WINDOWS-1251 -t UTF-8 foobar.txt | sponge foobar.txt

詳しくは sponge(1) を参照。

ip

ip を使うことで Linux の IP ソフトウェアスタックにおけるネットワークデバイス・IP アドレス・ルーティングテーブルなどの情報を表示することができます。様々なコマンドを加えることで、オブジェクトの操作や設定をすることも可能です。

ノート: ip ユーティリティは iproute2 パッケージに含まれており、このパッケージは base グループに入っています。
オブジェクト 用途 man ページ
ip addr プロトコルアドレス管理 ip-address(8)
ip addrlabel プロトコルアドレスラベル管理 ip-addrlabel(8)
ip l2tp tunnel ethernet over IP (L2TPv3) ip-l2tp(8)
ip link ネットワークデバイス設定 ip-link(8)
ip maddr マルチキャストアドレス管理 ip-maddress(8)
ip monitor netlink メッセージの監視 ip-monitor(8)
ip mroute マルチキャストルーティングキャッシュ管理 ip-mroute(8)
ip mrule マルチキャストルーティングポリシー db のルール
ip neigh neighbour/arp テーブル管理 ip-neighbour(8)
ip netns プロセスネットワーク名前空間管理 ip-netns(8)
ip ntable neighbour テーブル設定 ip-ntable(8)
ip route ルーティングテーブル管理 ip-route(8)
ip rule ルーティングポリシーデータベース管理 ip-rule(8)
ip tcp_metrics TCP Metrics の管理 ip-tcp_metrics(8)
ip tunnel トンネル設定 ip-tunnel(8)
ip tuntap TUN/TAP デバイスの管理
ip xfrm IPsec ポリシーの管理 ip-xfrm(8)

全てのオブジェクトで help コマンドが利用可能です。例えば、ip addr help と入力すればアドレスオブジェクトで利用できるコマンド構文が表示されます。高度な利用方法は iproute2 documentation を見て下さい。

ネットワーク設定の記事では実際問題として ip コマンドを様々な作業でどうやって使えばいいのか解説しています。

ノート: もしかしたら ifconfig コマンドの方が親しみがあるかもしれません。このコマンドは Linux の旧バージョンでインターフェイス設定に使われていました。現在 Arch Linux では廃止されているため、代わりに ip を使って下さい。

less

less はテキストファイルの中身を一画面単位で表示するのに使われるターミナルページャプログラムです。morepg といった他のページャと同じですが、less はより高度なインターフェイスと完全な feature-set を提供します。

less の代替プログラムについてはアプリケーション一覧#ターミナルページャを見て下さい。

locate

mlocate パッケージをインストールしてください。インストール後、自動的にデータベースを更新するスクリプトが毎日実行されるようになります。手動で root で updatedb を実行することでいつでもデータベースは更新できます。デフォルトでは /media/mnt などのパスは無視されるので locate は外部デバイスのファイルを検索できません。詳しくは updatedb(8) を見てください。

locate コマンドはファイルを名前で検索する一般的な Unix ツールです。あらかじめ作成しておいたデータベースファイルを使って検索するためファイルシステムを直接検索する find ツールよりも高速に検索できます。欠点としてデータベースが作成された後に作られたファイルは locate で検索できません。データベースを更新する updatedb コマンドを定期的に実行することで問題は抑えられます。

locate は使う前にデータベースの作成が必要です。root で updatedb を実行してください。

How locate works and rewrite it in one minute も参照。

もうひとつのページャとしての Vim

Vim (visual editor improved) にはテキストファイル・圧縮ファイル・バイナリ・ディレクトリの中身を表示するスクリプトが含まれています。次の行をシェルの設定ファイルに追加することでページャとして使うことが可能です:

~/.bashrc
alias less='/usr/share/vim/vim80/macros/less.sh'

また、less.sh マクロの代替も存在し、PAGER 環境変数として使えます。vimpager をインストールしてシェルの設定ファイルに以下を加えて下さい:

~/.bashrc
export PAGER='vimpager'
alias less=$PAGER

これで PAGER 環境変数を使うプログラム、git などはページャとして vim を使うようになります。

ls

ls (list) は Unix や Unix ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。

詳しい情報は info lsオンラインマニュアル を見てください。

exa は近代的でユーザーフレンドリーな lstree の代替ユーティリティです。ファイル名と一緒に Git の変更を表示したり、--long モードで各カラムをカラー化したり、--long モードで tree ビューとメタデータを同時に表示する機能があります。

長い出力

-l オプションはメタデータを表示します。例:

$ ls -l /path/to/directory
total 128
drwxr-xr-x 2 archie users  4096 Jul  5 21:03 Desktop
drwxr-xr-x 6 archie users  4096 Jul  5 17:37 Documents
drwxr-xr-x 2 archie users  4096 Jul  5 13:45 Downloads
-rw-rw-r-- 1 archie users  5120 Jun 27 08:28 customers.ods
-rw-r--r-- 1 archie users  3339 Jun 27 08:28 todo
-rwxr-xr-x 1 archie users  2048 Jul  6 12:56 myscript.sh

total の値はディレクトリ内のファイルに割り当てられたディスクのブロック数を表します。

ファイルやサブディレクトリの行は7つのメタデータフィールドに分けられます:

  • タイプとパーミッション:
    • 最初の文字はタイプです。タイプの説明は info ls -n "What information is listed" を見てください。例:
      • - は通常のファイルです。
      • d はディレクトリです。
      • p は名前付きパイプ (別名 FIFO) です。
      • l はシンボリックリンクです。
    • 他の文字はパーミッションです。
  • ハードリンクの数。ファイルは最低でも1になります。フォルダは最低でも2になります。
  • 所有者のユーザーの名前。
  • グループの名前。
  • サイズ。
  • 最後に更新されたタイムスタンプ。
  • エンティティ名。

空白を含むファイル名がクォートで囲まれる

デフォルトで、空白を含むファイル名やディレクトリ名はシングルクォートで囲まれて表示されます。-N--quoting-style=literal オプションを使うことでクォートを消せます。また、QUOTING_STYLE 環境変数literal に設定することでも同じ効果があります [3]

lsblk

lsblk(8) は利用可能なブロックデバイスとパーティションスキームを表示します。例:

$ lsblk -f
NAME   FSTYPE   LABEL       UUID                                 MOUNTPOINT
sda
├─sda1 vfat                 C4DA-2C4D                            /boot
├─sda2 swap                 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 [SWAP]
└─sda3 ext4                 56adc99b-a61e-46af-aab7-a6d07e504652 /

デバイスの名前はブロックデバイスのタイプを表します。近代的なストレージデバイス (例: ハードディスク, SSD, USB フラッシュドライブ) は大抵 SCSI ディスク (sd) と認識されます。タイプの後に付いている小文字は a なら1番目のデバイス (sda)、b なら2番目のデバイス (sdb) を示します。デバイス内に存在するパーティションも同じように1番目のパーティション (sda1), 2番目のパーティション (sda2) と 1 からの数字が付きます。上記の例の場合、利用できるデバイスはひとつだけ (sda) で、デバイスには3つのパーティション (sda1 から sda3) が存在し、それぞれ異なるファイルシステムが使われていることが確認できます。

他によく使われるブロックデバイスのタイプとしてはメモリカードの mmcblkNVMe デバイスの nvme などがあります。知らないタイプは カーネルドキュメント で検索してください。

mkdir

mkdir (make directory) はディレクトリを作成するコマンドです。

  • ディレクトリと階層全体を作るには、-p スイッチを使って下さい。そうしないとエラーが表示されます。-p スイッチをデフォルトで使うようにすることもできます:
alias mkdir='mkdir -p -v'
-v スイッチはメッセージを有効にします。
  • 作成したディレクトリのモードを変更するのに chmod を使う必要はありません。-m オプションでアクセス権限を定義できます。
ヒント: 一時ディレクトリが欲しいときは代わりに mktemp (make termporary) を使って下さい: mktemp -d

mv

mv (move) はファイルやディレクトリを移動したり名前の変更をするコマンドです。

  • 危険なコマンドになる可能性があるので範囲に制限をかけたほうが賢明です:
alias mv=' timeout 8 mv -iv'
このエイリアスは8秒後に mv を中止し、3つ以上のファイルの削除を確認し、進行中の操作を表示し、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。

od

od (octal dump) コマンドは人間が読める形式になっていないデータ (プログラムの実行形式のコードやフォーマットされていないデバイスの中身など) を可視化するのに役立ちます。詳しくは マニュアル を参照してください。

pv

pv (pipe viewer) を使うことでデータ操作の進捗をパイプラインで監視できます。例:

# dd if=/source/filestream | pv -monitor_options -s size_of_file | dd of=/destination/filestream

大抵の場合 pvcat の代替として機能します。

rm

rm (remove) はファイルやディレクトリを削除するコマンドです。

  • 使い方によっては危険性があるので範囲に制限をかけると良いでしょう:
alias rm=' timeout 3 rm -Iv --one-file-system'
このエイリアスは3秒後に rm を中止し、3つ以上のファイルの削除を確認し、進行中の操作を表示し、複数のファイルシステムに影響を与えず、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。たった1つのファイルでも確認が必要ならば -I の代わりに -i を使って下さい。
Zsh のユーザーは timeout の前に noglob を記述することで暗示的な拡張を避けることができます。
  • 空のディレクトリを削除するときは、rmdir を使ってください。

sed

sed (stream editor) は文章をパース・変換する Unix ユーティリティです。

ここに sed を使ったワンライナーのリストがあります。

ヒント: より強力に sed を置き換えるものとして AWKPerl 言語があります。

seq

seq (sequence) は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、Wikipedia で説明されているように使うと良いでしょう。

ss

ss はネットワークポートを確認するユーティリティです。iproute2 パッケージに含まれており base グループのひとつとしてインストールされます。非推奨 となった netstat ユーティリティと同じような機能を持っています。

一般的な使用方法:

全ての TCP ソケットとサービス名を表示:

$ ss -at

全ての TCP ソケットとポート番号を表示:

$ ss -atn

全ての UDP ソケットを表示:

$ ss -au

詳しくは ss(8)iproute2 パッケージの ss.html を見てください。

tar

初期の Unix の圧縮形式として、tar ファイル (別名 tarball) は Unix ライクなオペレーティングシステムでパッケージの作成に広く使われています。pacmanAUR のパッケージはどちらも tarball であり、Arch はデフォルトで GNUTar プログラムを使います。

tar アーカイブを扱うとき、tar はデフォルトで拡張子にあわせてファイルを展開します:

$ tar xvf file.EXTENSION

特定の形式を指定する場合:

ファイルタイプ 解凍コマンド
file.tar tar xvf file.tar
file.tgz tar xvzf file.tgz
file.tar.gz tar xvzf file.tar.gz
file.tar.bz bzip -cd file.bz | tar xvf -
file.tar.bz2 tar xvjf file.tar.bz2
bzip2 -cd file.bz2 | tar xvf -
file.tar.xz tar xvJf file.tar.xz
xz -cd file.xz | tar xvf -
file.tar.zst tar -I zstd xvf file.tar.zst

上記の tar 引数の中にはレガシーなものもありますが、特定の操作をするときは未だに有用です。詳しい説明は tar(1)man ページCompatibility セクションを見て下さい。

which

which コマンドは実行可能ファイルのパスを確認したいときに便利です。例:

# journalctl $(which sshd)

wipefs

wipefs は指定したデバイスのファイルシステム, RAID, パーティションテーブルのシグネチャ (マジック文字列) を確認・消去することができます。ファイルシステム自体は消去せず、デバイスの他のデータが消去されることもありません。

詳しくは wipefs(8) を参照してください。

例えば、/dev/sdb デバイスのシグネチャを全て消去してシグネチャのバックアップファイル ~/wipefs-sdb-offset.bak を作成するには:

# wipefs --all --backup /dev/sdb

参照