「Core utilities」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎使い方: 削除)
208行目: 208行目:
 
* {{App|percol|UNIX シェルの伝統的なパイプにインタラクティブフィルタリングを追加。|https://github.com/mooz/percol|{{Pkg|percol}}}}
 
* {{App|percol|UNIX シェルの伝統的なパイプにインタラクティブフィルタリングを追加。|https://github.com/mooz/percol|{{Pkg|percol}}}}
 
* {{App|skim|Rust で書かれたあいまい検索ソフトウェア。fzf に似ています。|https://github.com/lotabout/skim|{{Pkg|skim}}}}
 
* {{App|skim|Rust で書かれたあいまい検索ソフトウェア。fzf に似ています。|https://github.com/lotabout/skim|{{Pkg|skim}}}}
 
== 使い方 ==
 
 
=== cat ===
 
 
[[Wikipedia:ja:cat (UNIX)|cat]] (''catenate'') はファイルを連結して表示する標準の Unix ユーティリティです。
 
 
* ''cat'' はシェルにビルトインされていないため、多くの場合で[[wikipedia:ja:リダイレクト (CLI)|リダイレクション]]を使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際 {{ic|< ''file''}} は {{ic|cat ''file''}} と全く同じです。
 
 
* ''cat'' は複数行でも動作します:
 
 
{{bc|
 
$ cat << EOF >> ''path/file''
 
''first line''
 
...
 
''last line''
 
EOF
 
}}
 
代わりに {{ic|printf}} コマンドを使用:
 
$ printf '%s\n' 'first line' ... 'last line'
 
 
* ファイルの行を逆順で cat する必要がある場合、[[Wikipedia:tac (Unix)|tac]] (''cat'' reversed) という名前のユーティリティがあります。
 
 
=== chmod ===
 
 
[[ファイルのパーミッションと属性#パーミッションを変更]]を見てください。
 
 
=== chown ===
 
 
[[ファイルのパーミッションと属性#所有者を変更]]を見てください。
 
 
=== dd ===
 
 
[[Wikipedia:ja:dd (UNIX)|dd]] は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。
 
 
''cp'' はいくつかのオペランドを除いて ''dd'' と同じですが、多目的のディスク消去作業向きには作られてはいません。
 
 
{{Tip|デフォルトでは、''dd'' は作業が完了するまで何も出力しません。操作の進捗を監視したい場合、コマンドに {{ic|1=status=progress}} オプションを追加してください。このオプションは古いバージョン (8.24 以前) の {{Pkg|coreutils}} では使えません。}}
 
 
'dd' は以下のような作業ができます:
 
* [[ディスクのクローン#dd を使う|ドライブ関連]]の作業:
 
** イメージの作成。
 
** イメージの書き込み。
 
** ドライブやパーティションの複製。
 
** ドライブやパーティションの消去。
 
** パーティションテーブルやブートセクタの消去。
 
** ブートセクタのバックアップ。
 
** システムの復元。
 
* デバイスや {{ic|dd /dev/random}}、あるいは入力デバイスからストリームを取得
 
* CPU に負担をかける (例: {{ic|1=dd if=/dev/zero of=/dev/null}}).
 
* ディスクに負担をかける (例: {{ic|1=dd if=/dev/zero of=/''path''/''testfile'' bs=''number_of''G count=''times'' oflag=''fdatasync''}})
 
* バックアップユーティリティとして使用
 
* ファイルを大文字・小文字に変換
 
 
詳しくは {{man|1|dd}} や [https://www.gnu.org/software/coreutils/dd ドキュメント] を読んでください。
 
 
==== dd 派生 ====
 
 
他の ''dd'' ライクなプログラムには定期的に状態を出力する (例: シンプルなプログレスバー) 機能があります。
 
 
; dcfldd : {{AUR|dcfldd}} は dd にフォレンジクスやセキュリティの面で改良を加えたバージョンです。ほとんどの dd のパラメータを扱うことができステータスの出力もできます。dcfldd の最後の安定版は2006年12月19日にリリースされました。<sup>[http://dcfldd.sourceforge.net/]</sup>
 
 
; ddrescue : GNU {{Pkg|ddrescue}} はデータ復旧ツールです。ディスク消去でほとんどの場合無用な機能である読み込みエラーを無視できます。詳しくは [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html 公式マニュアル] を見て下さい。
 
 
=== find ===
 
 
''find'' は {{Pkg|findutils}} パッケージに含まれており、{{Pkg|base}} パッケージグループのひとつとしてインストールされます。
 
 
{{Tip|{{Pkg|fd}} はシンプルかつ高速でユーザーフレンドリーな {{ic|find}} の代替です。デフォルト設定がわかりやすいものになっています (例: 隠しファイル・ディレクトリや {{ic|.gitignore}} で指定されたファイルは無視する、{{ic|find -iname '*PATTERN*'}} ではなく {{ic|fd PATTERN}} で検索できる)。特徴として ([[#ls|ls]] と同じような) カラー出力や Unicode 対応、正規表現が使用できます。}}
 
 
''find'' コマンドはファイル名を引数としてファイルシステムの中に名前が一致するファイルがないか検索するコマンドではありません。下の [[#locate]] を見てください。
 
 
find はディレクトリのセットとマッチするファイルの正規表現を引数として取ります。非常に強力なワンライナーを作ることができますが、直感的な検索コマンドとしては使えません。詳しい使用方法は [http://mywiki.wooledge.org/UsingFind UsingFind] を見てください。
 
 
=== grep ===
 
 
[[Wikipedia:ja:grep|grep]] ([[Wikipedia:ja:ed|ed]] の ''g/re/p'', ''global/regular expression/print'' から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。''grep'' コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。
 
* ''grep'' はファイルを処理できるので、{{ic|cat ''file'' <nowiki>|</nowiki> grep ''pattern''}} のようなコンストラクトは {{ic|grep ''pattern'' ''file''}} に置き換えられます
 
* VCS のソースコードを ''grep'' する場合、{{Pkg|ripgrep}} や {{Pkg|ack}}、{{Pkg|the_silver_searcher}} などの最適化されたユーティリティが存在します。
 
* {{ic|-n}} オプションを使うことで出力にファイルの行番号が含まれているようになります。
 
 
{{Note|コマンドによっては標準エラー出力の方に出力が送信されることもありますが、grep は標準エラー出力を解釈しません。このような場合、標準エラー出力を標準出力にリダイレクトする必要があります: {{ic|''command'' 2>&1 {{!}} grep ''args''}} または (Bash 4 の場合) {{ic|''command'' {{!}}& grep ''args''}}。[http://www.tldp.org/LDP/abs/html/io-redirection.html I/O Redirection] を参照してください。}}
 
 
カラー出力については[[コンソールのカラー出力#grep]] を見てください。
 
 
=== iconv ===
 
 
{{ic|iconv}} は文字列のエンコーディングをあるコードセットから他のコードセットへ変換します。
 
 
次のコマンドはファイル {{ic|foo}} を ISO-8859-15 から UTF-8 へ変換して {{ic|foo.utf}} として保存します:
 
 
$ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf
 
 
詳しくは {{man|1|iconv}} を読んで下さい。
 
 
==== ファイルを変換する ====
 
{{Tip|mtime を変えてほしくない場合 iconv の代わりに {{pkg|recode}} を使うことができます。}}
 
[[#sed|sed]] とは異なり、''iconv'' にはファイルを変換するオプションはありません。しかしながら、({{pkg|moreutils}} に含まれている) {{ic|sponge}} を使うことでファイルを変換することもできます:
 
 
$ iconv -f WINDOWS-1251 -t UTF-8 foobar.txt | sponge foobar.txt
 
 
詳しくは {{man|1|sponge}} を参照。
 
 
=== ip ===
 
[[wikipedia:Iproute2|ip]] を使うことで Linux の [[Wikipedia:ja:Internet Protocol|IP]] ソフトウェアスタックにおけるネットワークデバイス・IP アドレス・ルーティングテーブルなどの情報を表示することができます。様々なコマンドを加えることで、オブジェクトの操作や設定をすることも可能です。
 
 
{{Note|''ip'' ユーティリティは {{Pkg|iproute2}} パッケージに含まれており、このパッケージは {{Pkg|base}} グループに入っています。}}
 
 
{| class="wikitable"
 
! オブジェクト !! 用途 !! man ページ
 
|-
 
| ip addr || プロトコルアドレス管理 || {{man|8|ip-address}}
 
|-
 
| ip addrlabel || プロトコルアドレスラベル管理 || {{man|8|ip-addrlabel}}
 
|-
 
| ip l2tp || tunnel ethernet over IP (L2TPv3) || {{man|8|ip-l2tp}}
 
|-
 
| ip link || ネットワークデバイス設定 || {{man|8|ip-link}}
 
|-
 
| ip maddr || マルチキャストアドレス管理 || {{man|8|ip-maddress}}
 
|-
 
| ip monitor || netlink メッセージの監視 || {{man|8|ip-monitor}}
 
|-
 
| ip mroute || マルチキャストルーティングキャッシュ管理 || {{man|8|ip-mroute}}
 
|-
 
| ip mrule || マルチキャストルーティングポリシー db のルール ||
 
|-
 
| ip neigh || neighbour/arp テーブル管理 || {{man|8|ip-neighbour}}
 
|-
 
| ip netns || プロセスネットワーク名前空間管理 || {{man|8|ip-netns}}
 
|-
 
| ip ntable || neighbour テーブル設定 || {{man|8|ip-ntable}}
 
|-
 
| ip route || ルーティングテーブル管理 || {{man|8|ip-route}}
 
|-
 
| ip rule || ルーティングポリシーデータベース管理 || {{man|8|ip-rule}}
 
|-
 
| ip tcp_metrics || TCP Metrics の管理 || {{man|8|ip-tcp_metrics}}
 
|-
 
| ip tunnel || トンネル設定 || {{man|8|ip-tunnel}}
 
|-
 
| ip tuntap || TUN/TAP デバイスの管理 ||
 
|-
 
| ip xfrm || IPsec ポリシーの管理 || {{man|8|ip-xfrm}}
 
|}
 
 
全てのオブジェクトで {{ic|help}} コマンドが利用可能です。例えば、{{ic|ip addr help}} と入力すればアドレスオブジェクトで利用できるコマンド構文が表示されます。高度な利用方法は [http://www.policyrouting.org/iproute2.doc.html iproute2 documentation] を見て下さい。
 
 
[[ネットワーク設定]]の記事では実際問題として ''ip'' コマンドを様々な作業でどうやって使えばいいのか解説しています。
 
 
{{Note|もしかしたら [[Wikipedia:ifconfig|ifconfig]] コマンドの方が親しみがあるかもしれません。このコマンドは Linux の旧バージョンでインターフェイス設定に使われていました。現在 Arch Linux では廃止されているため、代わりに ''ip'' を使って下さい。}}
 
 
=== less ===
 
 
[[Wikipedia:ja:less|less]] はテキストファイルの中身を一画面単位で表示するのに使われるターミナルページャプログラムです。[[Wikipedia:ja:more (UNIX)|more]] や [[Wikipedia:pg (Unix)|pg]] といった他のページャと同じですが、''less'' はより高度なインターフェイスと完全な [http://www.greenwoodsoftware.com/less/faq.html feature-set] を提供します。
 
 
less の代替プログラムについては[[アプリケーション一覧#ターミナルページャ]]を見て下さい。
 
 
=== locate ===
 
 
{{Pkg|mlocate}} パッケージを[[インストール]]してください。インストール後、自動的にデータベースを更新するスクリプトが毎日実行されるようになります。手動で root で ''updatedb'' を実行することでいつでもデータベースは更新できます。デフォルトでは {{ic|/media}} や {{ic|/mnt}} などのパスは無視されるので ''locate'' は外部デバイスのファイルを検索できません。詳しくは {{man|8|updatedb}} を見てください。
 
 
''locate'' コマンドはファイルを名前で検索する一般的な Unix ツールです。あらかじめ作成しておいたデータベースファイルを使って検索するためファイルシステムを直接検索する [[wikipedia:Find|find]] ツールよりも高速に検索できます。欠点としてデータベースが作成された後に作られたファイルは ''locate'' で検索できません。データベースを更新する ''updatedb'' コマンドを定期的に実行することで問題は抑えられます。
 
 
''locate'' は使う前にデータベースの作成が必要です。root で {{ic|updatedb}} を実行してください。
 
 
[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]] (''visual editor improved'') にはテキストファイル・圧縮ファイル・バイナリ・ディレクトリの中身を表示するスクリプトが含まれています。次の行をシェルの設定ファイルに追加することでページャとして使うことが可能です:
 
{{hc|~/.bashrc|2=alias less='/usr/share/vim/vim80/macros/less.sh'}}
 
 
また、''less.sh'' マクロの代替も存在し、{{ic|PAGER}} 環境変数として使えます。{{Pkg|vimpager}} をインストールしてシェルの設定ファイルに以下を加えて下さい:
 
{{hc|~/.bashrc|2=
 
export PAGER='vimpager'
 
alias less=$PAGER
 
}}
 
 
これで {{ic|PAGER}} 環境変数を使うプログラム、[[git]] などはページャとして ''vim'' を使うようになります。
 
 
=== ls ===
 
 
[[Wikipedia:ja:ls|ls]] (''list'') は Unix や Unix ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。
 
 
詳しい情報は {{ic|info ls}} や [https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html#ls-invocation オンラインマニュアル] を見てください。
 
 
{{Pkg|exa}} は近代的でユーザーフレンドリーな {{ic|ls}} と {{ic|tree}} の代替ユーティリティです。ファイル名と一緒に [[Git]] の変更を表示したり、{{ic|--long}} モードで各カラムをカラー化したり、{{ic|--long}} モードで {{ic|tree}} ビューとメタデータを同時に表示する機能があります。
 
 
==== 長い出力 ====
 
 
{{ic|-l}} オプションはメタデータを表示します。例:
 
 
{{hc|$ 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
 
}}
 
 
{{ic|total}} の値はディレクトリ内のファイルに割り当てられたディスクのブロック数を表します。
 
 
ファイルやサブディレクトリの行は7つのメタデータフィールドに分けられます:
 
 
* タイプとパーミッション:
 
** 最初の文字はタイプです。タイプの説明は {{ic|info ls -n "What information is listed"}} を見てください。例:
 
*** {{ic|-}} は通常のファイルです。
 
*** {{ic|d}} はディレクトリです。
 
*** {{ic|p}} は名前付きパイプ (別名 FIFO) です。
 
*** {{ic|l}} はシンボリックリンクです。
 
** 他の文字は[[パーミッション]]です。
 
* [[Wikipedia:Hard link|ハードリンク]]の数。ファイルは最低でも1になります。フォルダは最低でも2になります。
 
* 所有者の[[ユーザー]]の名前。
 
* [[グループ]]の名前。
 
* サイズ。
 
* 最後に更新されたタイムスタンプ。
 
* エンティティ名。
 
 
==== 空白を含むファイル名がクォートで囲まれる ====
 
 
デフォルトで、空白を含むファイル名やディレクトリ名はシングルクォートで囲まれて表示されます。{{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 ===
 
 
{{man|8|lsblk}} は利用可能な[[w:Device_file#Block_devices|ブロックデバイス]]とパーティションスキームを表示します。例:
 
 
{{hc|$ 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 ディスク ({{ic|sd}}) と認識されます。タイプの後に付いている小文字は {{ic|a}} なら1番目のデバイス ({{ic|sda}})、{{ic|b}} なら2番目のデバイス ({{ic|sdb}}) を示します。デバイス内に存在するパーティションも同じように1番目のパーティション ({{ic|sda1}}), 2番目のパーティション ({{ic|sda2}}) と {{ic|1}} からの数字が付きます。上記の例の場合、利用できるデバイスはひとつだけ ({{ic|sda}}) で、デバイスには3つのパーティション ({{ic|sda1}} から {{ic|sda3}}) が存在し、それぞれ異なる[[ファイルシステム]]が使われていることが確認できます。
 
 
他によく使われるブロックデバイスのタイプとしてはメモリカードの {{ic|mmcblk}} や [[ソリッドステートドライブ/NVMe|NVMe]] デバイスの {{ic|nvme}} などがあります。知らないタイプは [https://www.kernel.org/doc/Documentation/devices.txt カーネルドキュメント] で検索してください。
 
 
=== mkdir ===
 
 
[[Wikipedia:ja:mkdir|mkdir]] (''make directory'') はディレクトリを作成するコマンドです。
 
 
* ディレクトリと階層全体を作るには、{{ic|-p}} スイッチを使って下さい。そうしないとエラーが表示されます。{{ic|-p}} スイッチをデフォルトで使うようにすることもできます:
 
: {{bc|1=alias mkdir='mkdir -p -v'}}
 
: {{ic|-v}} スイッチはメッセージを有効にします。
 
 
* 作成したディレクトリのモードを変更するのに ''chmod'' を使う必要はありません。{{ic|-m}} オプションでアクセス権限を定義できます。
 
 
{{Tip|一時ディレクトリが欲しいときは代わりに [[Wikipedia:Temporary file|mktemp]] (''make termporary'') を使って下さい: {{ic|mktemp -d}}。}}
 
 
=== mv ===
 
 
[[Wikipedia:ja:mv_(UNIX)|mv]] (''move'') はファイルやディレクトリを移動したり名前の変更をするコマンドです。
 
 
*危険なコマンドになる可能性があるので範囲に制限をかけたほうが賢明です:
 
: {{bc|1=alias mv=' timeout 8 mv -iv'}}
 
:このエイリアスは8秒後に ''mv'' を中止し、3つ以上のファイルの削除を確認し、進行中の操作を表示し、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。
 
 
=== od ===
 
 
[[Wikipedia:od (Unix)|od]] (''o''ctal ''d''ump) コマンドは人間が読める形式になっていないデータ (プログラムの実行形式のコードやフォーマットされていないデバイスの中身など) を可視化するのに役立ちます。詳しくは [https://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html#od-invocation マニュアル] を参照してください。
 
 
=== pv ===
 
 
{{Pkg|pv}} (''pipe viewer'') を使うことでデータ操作の進捗をパイプラインで監視できます。例:
 
 
# dd if=''/source/filestream'' | pv -''monitor_options'' -s ''size_of_file'' | dd of=''/destination/filestream''
 
 
大抵の場合 {{ic|pv}} は {{ic|cat}} の代替として機能します。
 
 
=== rm ===
 
 
[[Wikipedia:ja:rm_(UNIX)|rm]] (''remove'') はファイルやディレクトリを削除するコマンドです。
 
 
* 使い方によっては危険性があるので範囲に制限をかけると良いでしょう:
 
: {{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}} を記述することで暗示的な拡張を避けることができます。
 
 
* 空のディレクトリを削除するときは、''rmdir'' を使ってください。
 
 
=== sed ===
 
 
[[Wikipedia:ja:sed (コンピュータ)|sed]] (''stream editor'') は文章をパース・変換する Unix ユーティリティです。
 
 
[http://sed.sourceforge.net/sed1line.txt ここに] ''sed'' を使ったワンライナーのリストがあります。
 
 
{{Tip|より強力に sed を置き換えるものとして [[Wikipedia:ja:AWK|AWK]] や [[Perl]] 言語があります。}}
 
 
=== seq ===
 
 
'''seq''' (''sequence'') は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、[[Wikipedia:seq_(Unix)|Wikipedia]] で説明されているように使うと良いでしょう。
 
 
=== ss ===
 
 
''ss'' はネットワークポートを確認するユーティリティです。{{Pkg|iproute2}} パッケージに含まれており {{Pkg|base}} グループのひとつとしてインストールされます。[https://www.archlinux.jp/news/deprecation-of-net-tools/ 非推奨] となった netstat ユーティリティと同じような機能を持っています。
 
 
一般的な使用方法:
 
 
全ての TCP ソケットとサービス名を表示:
 
$ ss -at
 
 
全ての TCP ソケットとポート番号を表示:
 
$ ss -atn
 
 
全ての UDP ソケットを表示:
 
$ ss -au
 
 
詳しくは {{man|8|ss}} や {{Pkg|iproute2}} パッケージの {{ic|ss.html}} を見てください。
 
 
=== tar ===
 
 
初期の Unix の圧縮形式として、{{ic|tar}} ファイル (別名 ''tarball'') は Unix ライクなオペレーティングシステムでパッケージの作成に広く使われています。[[pacman]] と [[AUR]] のパッケージはどちらも tarball であり、Arch はデフォルトで [[GNU プロジェクト|GNU]] の {{Ic|Tar}} プログラムを使います。
 
 
{{ic|tar}} アーカイブを扱うとき、{{Ic|tar}} はデフォルトで拡張子にあわせてファイルを展開します:
 
 
$ tar xvf file.EXTENSION
 
 
特定の形式を指定する場合:
 
 
{| class="wikitable"
 
! ファイルタイプ !! 解凍コマンド
 
|-
 
|{{ic|file.tar}} || {{Ic|tar xvf file.tar}}
 
|-
 
|{{ic|file.tgz}} || {{Ic|tar xvzf file.tgz}}
 
|-
 
|{{ic|file.tar.gz}} || {{Ic|tar xvzf file.tar.gz}}
 
|-
 
|{{ic|file.tar.bz}} || {{Ic|<nowiki>bzip -cd file.bz | tar xvf -</nowiki>}}
 
|-
 
|{{ic|file.tar.bz2}} || {{Ic|tar xvjf file.tar.bz2}}<br> {{Ic|<nowiki>bzip2 -cd file.bz2 | tar xvf -</nowiki>}}
 
|-
 
|{{ic|file.tar.xz}} || {{Ic|tar xvJf file.tar.xz}}<br> {{Ic|<nowiki> xz -cd file.xz | tar xvf -</nowiki>}}
 
|-
 
|{{ic|''file''.tar.zst}} || {{Ic|tar -I zstd xvf ''file''.tar.zst}}
 
|}
 
 
上記の {{Ic|tar}} 引数の中にはレガシーなものもありますが、特定の操作をするときは未だに有用です。詳しい説明は {{man|1|tar}} の [[man ページ]]の ''Compatibility'' セクションを見て下さい。
 
 
=== which ===
 
 
[[wikipedia:Which_(Unix)|which]] コマンドは実行可能ファイルのパスを確認したいときに便利です。例:
 
 
# journalctl $(which sshd)
 
 
=== wipefs ===
 
 
'''wipefs''' は指定したデバイスの[[ファイルシステム]], [[RAID]], [[パーティショニング|パーティションテーブル]]のシグネチャ (マジック文字列) を確認・消去することができます。ファイルシステム自体は消去せず、デバイスの他のデータが消去されることもありません。
 
 
詳しくは wipefs(8) を参照してください。
 
 
例えば、{{ic|/dev/sdb}} デバイスのシグネチャを全て消去してシグネチャのバックアップファイル {{ic|~/wipefs-sdb-''offset''.bak}} を作成するには:
 
 
# wipefs --all --backup /dev/sdb
 
   
 
== 参照 ==
 
== 参照 ==

2022年7月20日 (水) 17:15時点における版

関連記事

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

ほとんどのコマンドラインインターフェイスは 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), 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 フラグをデフォルトで有効化したいユーザもいるでしょう。しかし、これらのシェルオプションに頼りっきりなるのは危険です。これらのオプションに慣れてしまうと、これらを使用していない他のシステムやユーザを使うときにデータ損失を招く可能性があります。データ損失を防ぐ最良の方法はバックアップを取ることです。

その他のコマンド

以下の表にはしばしば便利なコアユーティリティをリストしています。

パッケージ ユーティリティ 説明 ドキュメント 代替品
シェル組み込み alias エイリアスを定義/表示 alias(1p)
type コマンドのタイプを表示 type(1p) which(1)
time コマンドの所要時間を計測 time(1p)
GNU coreutils tee 標準入力を読み込み、標準出力やファイルに書き出す tee(1), info
mktemp テンポラリファイルやテンポラリディレクトリを作成 mktemp(1), info
cut 行の選択した部分を表示 cut(1), info
tr 文字を置換/削除 tr(1), info
od ファイルを8進数や他の基数でダンプ od(1), info hexdump(1), vim's xxd(1)
sort 行をソート sort(1), info
uniq 繰り返される行を表示/省略 uniq(1), info
comm 2つのソート済みのファイルを行単位で比較 comm(1), info
head ファイルの最初の部分を出力 head(1), info
tail ファイルの最後の部分を出力/追従 tail(1), info
wc 改行や単語、バイト数を表示 wc(1), info
GNU binutils strings バイナリファイル内の表示可能な文字を表示 strings(1), info stringsextAUR
GNU glibc iconv 文字コードを変換 iconv(1) recode
file file ファイルタイプを推測 file(1)

moreutils パッケージには GNU coreutils に無い sponge(1) のような便利なツールを提供します。

代替コマンド

代替のコアユーティリティは 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
  • ugrep (ug) — インタラクティブな TUI、曖昧検索、boolean クエリ、16進数表示などの機能を持つ非常に高速な grep。
https://github.com/Genivia/ugrep || ugrep

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

  • 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

参照