「Core utilities」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Sort interlanguage links)
(Pkg/AUR テンプレートの更新)
(2人の利用者による、間の11版が非表示)
1行目: 1行目:
[[Category:システム管理]]
+
[[Category:コマンドライン]]
  +
[[fa:Core utilities]]
[[Category:コマンドシェル]]
 
[[en:Core Utilities]]
+
[[en:Core utilities]]
[[es:Core Utilities]]
+
[[es:Core utilities]]
[[it:Core Utilities]]
+
[[it:Core utilities]]
[[zh-CN:Core Utilities]]
+
[[ko:Core utilities]]
[[zh-TW:Core Utilities]]
+
[[pt:Core utilities]]
  +
[[ru:Core utilities]]
  +
[[zh-hans:Core utilities]]
  +
[[zh-hant:Core utilities]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Bash}}
 
{{Related|Bash}}
11行目: 14行目:
 
{{Related|一般的な推奨事項}}
 
{{Related|一般的な推奨事項}}
 
{{Related|GNU プロジェクト}}
 
{{Related|GNU プロジェクト}}
  +
{{Related|sudo}}
  +
{{Related|cron}}
  +
{{Related|man ページ}}
  +
{{Related|ディスクの完全消去#shred}}
  +
{{Related|ファイルのパーミッションと属性}}
  +
{{Related|コンソールのカラー出力}}
 
{{Related articles end}}
 
{{Related articles end}}
 
この記事では ''less'', ''ls'', ''grep'' などの GNU/Linux システムの''コア''ユーティリティを扱っています。この記事の扱う範囲は GNU {{Pkg|coreutils}} パッケージに含まれているユーティリティに留まりません。ユーティリティに関連する様々なヒント・小技、その他便利な情報を載せています。
 
この記事では ''less'', ''ls'', ''grep'' などの GNU/Linux システムの''コア''ユーティリティを扱っています。この記事の扱う範囲は GNU {{Pkg|coreutils}} パッケージに含まれているユーティリティに留まりません。ユーティリティに関連する様々なヒント・小技、その他便利な情報を載せています。
  +
  +
== 基本コマンド ==
  +
  +
以下の表には全ての Linux ユーザーが知っておくべき基本的なシェルコマンドを載せています。太字のコマンドはシェルに含まれており、その他のコマンドはシェルとは別個のプログラムです。詳しくは下のセクションや''関連記事''を見て下さい。
  +
  +
{| class="wikitable"
  +
! コマンド
  +
! 説明
  +
! 例
  +
|-
  +
| man
  +
| コマンドのマニュアルページを表示
  +
| man ed
  +
|-
  +
| '''cd'''
  +
| ディレクトリを変更
  +
| cd /etc/pacman.d
  +
|-
  +
| mkdir
  +
| ディレクトリを作成
  +
| mkdir ~/newfolder
  +
|-
  +
| rmdir
  +
| 空のディレクトリを削除
  +
| rmdir ~/emptyfolder
  +
|-
  +
| rm
  +
| ファイルを削除
  +
| rm ~/file.txt
  +
|-
  +
| rm -r
  +
| ディレクトリとその中身を削除
  +
| rm -r ~/.cache
  +
|-
  +
| ls
  +
| ファイルを一覧表示
  +
| ls *.mkv
  +
|-
  +
| ls -a
  +
| 隠しファイルを一覧表示
  +
| ls -a /home/archie
  +
|-
  +
| ls -al
  +
| 隠しファイルとファイルのプロパティを一覧表示
  +
|
  +
|-
  +
| mv
  +
| ファイルを移動
  +
| mv ~/compressed.zip ~/archive/compressed2.zip
  +
|-
  +
| cp
  +
| ファイルをコピー
  +
| cp ~/.bashrc ~/.bashrc.bak
  +
|-
  +
| chmod +x
  +
| ファイルに実行可能属性を付与
  +
| chmod +x ~/.local/bin/myscript.sh
  +
|-
  +
| cat
  +
| ファイルの中身を表示
  +
| cat /etc/hostname
  +
|-
  +
| strings
  +
| バイナリファイル内の出力可能文字を表示
  +
| strings /usr/bin/free
  +
|-
  +
| find
  +
| ファイルを検索
  +
| find ~ -name myfile
  +
|-
  +
| mount
  +
| パーティションをマウント
  +
| mount /dev/sdc1 /media/usb
  +
|-
  +
| df -h
  +
| パーティションの残り容量を表示
  +
|
  +
|-
  +
| ps -A
  +
| 実行中のプロセスを表示
  +
|
  +
|-
  +
| killall
  +
| プロセスの実行中のインスタンスを終了
  +
|
  +
|-
  +
| ss -at
  +
| 開かれている TCP ソケットのリストを表示
  +
|
  +
|}
   
 
== cat ==
 
== cat ==
20行目: 119行目:
 
* ''cat'' はシェルにビルトインされていないため、多くの場合で[[wikipedia:ja:リダイレクト (CLI)|リダイレクション]]を使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際 {{ic|< ''file''}} は {{ic|cat ''file''}} と全く同じです。
 
* ''cat'' はシェルにビルトインされていないため、多くの場合で[[wikipedia:ja:リダイレクト (CLI)|リダイレクション]]を使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際 {{ic|< ''file''}} は {{ic|cat ''file''}} と全く同じです。
   
* ''cat'' は複数行でも動作しますが、バッドプラクティスとして言われることもあります:
+
* ''cat'' は複数行でも動作します:
   
 
{{bc|
 
{{bc|
29行目: 128行目:
 
EOF
 
EOF
 
}}
 
}}
代わりに ''echo'' コマンドを使うほうが良いでしょう:
+
代わりに {{ic|printf}} コマンドを使:
  +
$ printf '%s\n' 'first line' ... 'last line'
{{bc|
 
$ echo "\
 
''first line''
 
...
 
''last line''" \
 
>> ''path/file''
 
}}
 
   
 
* ファイルの行を逆順で cat する必要がある場合、[[Wikipedia:tac (Unix)|tac]] (''cat'' reversed) という名前のユーティリティがあります。
 
* ファイルの行を逆順で cat する必要がある場合、[[Wikipedia:tac (Unix)|tac]] (''cat'' reversed) という名前のユーティリティがあります。
   
== cron ==
+
== chmod ==
   
  +
[[ファイルのパーミッションと属性#パーミッションを変更]]を見てください。
[[Wikipedia:ja:cron|cron]] は Unix ライクなコンピュータオペレーティングシステムにおける時間基準のジョブスケジューラです。
 
   
  +
== chown ==
[[cron|メインの記事]]を参照してください。
 
  +
{{Note|''systemd'' は様々な ''cron'' のユースケースを処理することが可能です。[[systemd/cron_functionality|関連記事]]を見て下さい。}}
 
  +
[[ファイルのパーミッションと属性#所有者を変更]]を見てください。
   
 
== dd ==
 
== dd ==
51行目: 145行目:
 
[[Wikipedia:ja:dd (UNIX)|dd]] は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。
 
[[Wikipedia:ja:dd (UNIX)|dd]] は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。
   
{{Note|''cp'' はいくつかのオペランドを除いて ''dd'' と同じですが、多目的のディスク消去作業向きには作られてはいません。}}
+
''cp'' はいくつかのオペランドを除いて ''dd'' と同じですが、多目的のディスク消去作業向きには作られてはいません。
 
=== 実行中に dd の進行度を確認する ===
 
 
デフォルトでは、''dd'' は作業が完了するまで何も出力をしません。''kill'' と {{ic|USR1}} シグナルを使うことでプログラムを終了することなく状態を出力させることが可能です。新しい root のターミナルを開いて次のコマンドを実行してください:
 
# killall -USR1 dd
 
 
{{Note|これは動作中の全ての ''dd'' プロセスに影響を与えます。}}
 
   
  +
{{Tip|デフォルトでは、''dd'' は作業が完了するまで何も出力しません。操作の進捗を監視したい場合、コマンドに {{ic|1=status=progress}} オプションを追加してください。このオプションは古いバージョン (8.24 以前) の {{Pkg|coreutils}} では使えません。}}
もしくは:
 
# kill -USR1 ''pid_of_dd_command''
 
   
  +
'dd' は以下のような作業ができます:
例えば:
 
  +
* [[ディスクのクローン#dd を使う|ドライブ関連]]の作業:
# kill -USR1 $(pidof 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'' は当面の進捗をターミナルに出力するようになります。例:
 
605+0 records in
 
605+0 records out
 
634388480 bytes (634 MB) copied, 8.17097 s, 77.6 MB/s
 
   
 
=== dd 派生 ===
 
=== dd 派生 ===
77行目: 172行目:
 
; dcfldd : {{Pkg|dcfldd}} は dd にフォレンジクスやセキュリティの面で改良を加えたバージョンです。ほとんどの dd のパラメータを扱うことができステータスの出力もできます。dcfldd の最後の安定版は2006年12月19日にリリースされました。<sup>[http://dcfldd.sourceforge.net/]</sup>
 
; 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 公式マニュアル] を見て下さい。
+
; ddrescue : GNU {{Pkg|ddrescue}} はデータ復旧ツールです。ディスク消去でほとんどの場合無用な機能である読み込みエラーを無視できます。詳しくは [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html 公式マニュアル] を見て下さい。
   
== grep ==
+
== find ==
   
  +
''find'' は {{Pkg|findutils}} パッケージに含まれており、{{Pkg|base}} パッケージグループのひとつとしてインストールされます。
[[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''}} に置き換えられます
 
   
  +
{{Tip|{{Pkg|fd}} はシンプルかつ高速でユーザーフレンドリーな {{ic|find}} の代替です。デフォルト設定がわかりやすいものになっています (例: 隠しファイル・ディレクトリや {{ic|.gitignore}} で指定されたファイルは無視する、{{ic|find -iname '*PATTERN*'}} ではなく {{ic|fd PATTERN}} で検索できる)。特徴として ([[#ls|ls]] と同じような) カラー出力や Unicode 対応、正規表現が使用できます。}}
* VCS のソースコードを ''grep'' する場合、{{Pkg|ack}} や {{Pkg|the_silver_searcher}} などの最適化されたユーティリティが存在します。
 
   
  +
''find'' コマンドはファイル名を引数としてファイルシステムの中に名前が一致するファイルがないか検索するコマンドではありません。下の [[#locate]] を見てください。
=== 出力のカラー化 ===
 
   
  +
find はディレクトリのセットとマッチするファイルの正規表現を引数として取ります。非常に強力なワンライナーを作ることができますが、直感的な検索コマンドとしては使えません。詳しい使用方法は [http://mywiki.wooledge.org/UsingFind UsingFind] を見てください。
''grep'' のカラー出力は画面が美しくなるだけでなく [[Wikipedia:ja:正規表現|regexp]] や ''grep'' の機能を学ぶのにとても便利です。
 
   
  +
== 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'
 
   
  +
[[Wikipedia:ja:grep|grep]] ([[Wikipedia:ja:ed|ed]] の ''g/re/p'', ''global/regular expression/print'' から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。''grep'' コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。
環境変数 {{ic|GREP_COLORS}} を使ってデフォルトとは異なる色を指定することもできます。
 
  +
* ''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 ==
 
== iconv ==
107行目: 203行目:
 
$ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf
 
$ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf
   
詳しくは {{ic|man iconv}} を読んで下さい。
+
詳しくは {{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 ==
 
== ip ==
 
[[wikipedia:Iproute2|ip]] を使うことで Linux の [[Wikipedia:ja:Internet Protocol|IP]] ソフトウェアスタックにおけるネットワークデバイス・IP アドレス・ルーティングテーブルなどの情報を表示することができます。様々なコマンドを加えることで、オブジェクトの操作や設定をすることも可能です。
 
[[wikipedia:Iproute2|ip]] を使うことで Linux の [[Wikipedia:ja:Internet Protocol|IP]] ソフトウェアスタックにおけるネットワークデバイス・IP アドレス・ルーティングテーブルなどの情報を表示することができます。様々なコマンドを加えることで、オブジェクトの操作や設定をすることも可能です。
   
{{Note|''ip'' ユーティリティは {{Pkg|iproute2}} パッケージに含まれており、このパッケージは {{Grp|base}} グループに入っています。}}
+
{{Note|''ip'' ユーティリティは {{Pkg|iproute2}} パッケージに含まれており、このパッケージは {{Pkg|base}} グループに入っています。}}
   
 
{| class="wikitable"
 
{| class="wikitable"
 
! オブジェクト !! 用途 !! man ページ
 
! オブジェクト !! 用途 !! man ページ
 
|-
 
|-
| ip addr || プロトコルアドレス管理 || ip-address
+
| ip addr || プロトコルアドレス管理 || {{man|8|ip-address}}
 
|-
 
|-
| ip addrlabel || プロトコルアドレスラベル管理 || ip-addrlabel
+
| ip addrlabel || プロトコルアドレスラベル管理 || {{man|8|ip-addrlabel}}
 
|-
 
|-
| ip l2tp || tunnel ethernet over IP (L2TPv3) || ip-l2tp
+
| ip l2tp || tunnel ethernet over IP (L2TPv3) || {{man|8|ip-l2tp}}
 
|-
 
|-
| ip link || ネットワークデバイス設定 || ip-link
+
| ip link || ネットワークデバイス設定 || {{man|8|ip-link}}
 
|-
 
|-
| ip maddr || マルチキャストアドレス管理 || ip-maddress
+
| ip maddr || マルチキャストアドレス管理 || {{man|8|ip-maddress}}
 
|-
 
|-
| ip monitor || netlink メッセージの監視 || ip-monitor
+
| ip monitor || netlink メッセージの監視 || {{man|8|ip-monitor}}
 
|-
 
|-
| ip mroute || マルチキャストルーティングキャッシュ管理 || ip-mroute
+
| ip mroute || マルチキャストルーティングキャッシュ管理 || {{man|8|ip-mroute}}
 
|-
 
|-
| ip mrule || マルチキャストルーティングポリシー db のルール
+
| ip mrule || マルチキャストルーティングポリシー db のルール ||
 
|-
 
|-
| ip neigh || neighbour/arp テーブル管理 || ip-neighbour
+
| ip neigh || neighbour/arp テーブル管理 || {{man|8|ip-neighbour}}
 
|-
 
|-
| ip netns || プロセスネットワーク名前空間管理 || ip-netns
+
| ip netns || プロセスネットワーク名前空間管理 || {{man|8|ip-netns}}
 
|-
 
|-
| ip ntable || neighbour テーブル設定 || ip-ntable
+
| ip ntable || neighbour テーブル設定 || {{man|8|ip-ntable}}
 
|-
 
|-
| ip route || ルーティングテーブル管理 || ip-route
+
| ip route || ルーティングテーブル管理 || {{man|8|ip-route}}
 
|-
 
|-
| ip rule || ルーティングポリシーデータベース管理 || ip-rule
+
| ip rule || ルーティングポリシーデータベース管理 || {{man|8|ip-rule}}
 
|-
 
|-
| ip tcp_metrics || TCP Metrics の管理 || ip-tcp_metrics
+
| ip tcp_metrics || TCP Metrics の管理 || {{man|8|ip-tcp_metrics}}
 
|-
 
|-
| ip tunnel || トンネル設定 || ip-tunnel
+
| ip tunnel || トンネル設定 || {{man|8|ip-tunnel}}
 
|-
 
|-
| ip tuntap || TUN/TAP デバイスの管理
+
| ip tuntap || TUN/TAP デバイスの管理 ||
 
|-
 
|-
| ip xfrm || IPsec ポリシーの管理 || ip-xfrm
+
| ip xfrm || IPsec ポリシーの管理 || {{man|8|ip-xfrm}}
 
|}
 
|}
   
全てのオブジェクトで {{ic|help}} コマンドが利用可能です。例えば、{{ic|ip addr help}} と入力すればアドレスオブジェクトで利用できるコマンド構文が表示されます。
+
全てのオブジェクトで {{ic|help}} コマンドが利用可能です。例えば、{{ic|ip addr help}} と入力すればアドレスオブジェクトで利用できるコマンド構文が表示されます。高度な利用方法は [http://www.policyrouting.org/iproute2.doc.html iproute2 documentation] を見て下さい
   
[[Network Configuration]] の記事では実際問題として ''ip'' コマンドを様々な作業でどうやって使えばいいのか解説しています。
+
[[ネットワーク設定]]の記事では実際問題として ''ip'' コマンドを様々な作業でどうやって使えばいいのか解説しています。
   
 
{{Note|もしかしたら [[Wikipedia:ifconfig|ifconfig]] コマンドの方が親しみがあるかもしれません。このコマンドは Linux の旧バージョンでインターフェイス設定に使われていました。現在 Arch Linux では廃止されているため、代わりに ''ip'' を使って下さい。}}
 
{{Note|もしかしたら [[Wikipedia:ifconfig|ifconfig]] コマンドの方が親しみがあるかもしれません。このコマンドは Linux の旧バージョンでインターフェイス設定に使われていました。現在 Arch Linux では廃止されているため、代わりに ''ip'' を使って下さい。}}
162行目: 266行目:
 
[[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] を提供します。
   
  +
less の代替プログラムについては[[アプリケーション一覧#ターミナルページャ]]を見て下さい。
=== 環境変数を使った出力のカラー化 ===
 
   
  +
== locate ==
以下の行をシェルの設定ファイルに加えて下さい:
 
   
  +
{{Pkg|mlocate}} パッケージを[[インストール]]してください。インストール後、自動的にデータベースを更新するスクリプトが毎日実行されるようになります。手動で root で ''updatedb'' を実行することでいつでもデータベースは更新できます。デフォルトでは {{ic|/media}} や {{ic|/mnt}} などのパスは無視されるので ''locate'' は外部デバイスのファイルを検索できません。詳しくは {{man|8|updatedb}} を見てください。
{{hc|~/.bashrc|2=
 
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')
 
}}
 
   
  +
''locate'' コマンドはファイルを名前で検索する一般的な Unix ツールです。あらかじめ作成しておいたデータベースファイルを使って検索するためファイルシステムを直接検索する [[wikipedia:Find|find]] ツールよりも高速に検索できます。欠点としてデータベースが作成された後に作られたファイルは ''locate'' で検索できません。データベースを更新する ''updatedb'' コマンドを定期的に実行することで問題は抑えられます。
値は好きなように変更してください。参照: [[Wikipedia:ANSI_escape_code#Colors|ANSI escape code]]。
 
   
  +
''locate'' は使う前にデータベースの作成が必要です。root で {{ic|updatedb}} を実行してください。
=== wrappers を使った出力のカラー化 ===
 
   
  +
[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] も参照。
''less'' でシンタックスハイライトを有効にすることができます。まず、{{Pkg|source-highlight}} をインストールし、次に以下の行をシェルの設定ファイルに追加してください:
 
{{hc|~/.bashrc|<nowiki>
 
export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"
 
export LESS='-R '
 
</nowiki>}}
 
   
  +
=== もうひとつのページャとしての Vim ===
コマンドラインインターフェイスを頻繁に使う場合 {{Pkg|lesspipe}} をインストールすると良いかもしれません。
 
   
  +
[[Vim]] (''visual editor improved'') にはテキストファイル・圧縮ファイル・バイナリ・ディレクトリの中身を表示するスクリプトが含まれています。次の行をシェルの設定ファイルに追加することでページャとして使うことが可能です:
ページャを使ってアーカイブの中の圧縮されたファイルを表示することができるようになります:
 
  +
{{hc|~/.bashrc|2=alias less='/usr/share/vim/vim80/macros/less.sh'}}
   
  +
また、''less.sh'' マクロの代替も存在し、{{ic|PAGER}} 環境変数として使えます。{{Pkg|vimpager}} をインストールしてシェルの設定ファイルに以下を加えて下さい:
{{hc|$ less ''compressed_file''.tar.gz|2=
 
  +
{{hc|~/.bashrc|2=
==> use tar_file:contained_file to view a file in the archive
 
  +
export PAGER='vimpager'
-rw------- ''username''/''group'' 695 2008-01-04 19:24 ''compressed_file''/''content1''
 
  +
alias less=$PAGER
-rw------- ''username''/''group'' 43 2007-11-07 11:17 ''compressed_file''/''content2''
 
''compressed_file''.tar.gz (END)
 
 
}}
 
}}
   
  +
これで {{ic|PAGER}} 環境変数を使うプログラム、[[git]] などはページャとして ''vim'' を使うようになります。
''lesspipe'' はファイルタイプに関連付けられたコマンドの代替として (例えば {{Pkg|html2text}} で HTML を回覧する)、アーカイブ以外のファイルも ''less'' のインターフェイスに接続します。
 
   
  +
== ls ==
''lesspipe'' を有効にするにはログインしなおすか、{{ic|/etc/profile.d/lesspipe.sh}} を実行してください。
 
   
  +
[[Wikipedia:ja:ls|ls]] (''list'') は Unix や Unix ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。
=== もうひとつのページャとしての Vim ===
 
   
  +
詳しい情報は {{ic|info ls}} や [https://www.gnu.org/software/coreutils/manual/html_node/ls-invocation.html#ls-invocation オンラインマニュアル] を見てください。
[[Vim|Vim]] (''visual editor improved'') にはテキストファイル・圧縮ファイル・バイナリ・ディレクトリの中身を表示するスクリプトが含まれています。次の行をシェルの設定ファイルに追加することでページャとして使うことが可能です:
 
{{hc|~/.bashrc|2=alias less='/usr/share/vim/vim74/macros/less.sh'}}
 
   
  +
{{Pkg|exa}} は近代的でユーザーフレンドリーな {{ic|ls}} と {{ic|tree}} の代替ユーティリティです。ファイル名と一緒に [[Git]] の変更を表示したり、{{ic|--long}} モードで各カラムをカラー化したり、{{ic|--long}} モードで {{ic|tree}} ビューとメタデータを同時に表示する機能があります。
また、''less.sh'' マクロの代替も存在し、{{ic|PAGER}} 環境変数として使えます。{{AUR|vimpager-git}} をインストールしてシェルの設定ファイルに以下を加えて下さい:
 
  +
{{hc|~/.bashrc|2=
 
  +
=== 長い出力 ===
export PAGER='vimpager'
 
  +
alias less=$PAGER
 
  +
{{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}} の値はディレクトリ内のファイルに割り当てられたディスクのブロック数を表します。
これで {{ic|PAGER}} 環境変数を使うプログラム、[[git]] などはページャとして ''vim'' を使うようになります。
 
   
  +
ファイルやサブディレクトリの行は7つのメタデータフィールドに分けられます:
== locate ==
 
   
  +
* タイプとパーミッション:
[[Wikipedia:locate (Unix)|locate]] はファイルシステム上のファイルを探します。''updatedb'' やデーモンによって生成しインクリメンタルエンコードを使って圧縮した、事前に作ったファイルのデータベースを使って検索を行います。''find'' よりも圧倒的に高速ですが、データベースの定期的な更新が必要です。
 
  +
** 最初の文字はタイプです。タイプの説明は {{ic|info ls -n "What information is listed"}} を見てください。例:
  +
*** {{ic|-}} は通常のファイルです。
  +
*** {{ic|d}} はディレクトリです。
  +
*** {{ic|p}} は名前付きパイプ (別名 FIFO) です。
  +
*** {{ic|l}} はシンボリックリンクです。
  +
** 他の文字は[[パーミッション]]です。
  +
* [[Wikipedia:Hard link|ハードリンク]]の数。ファイルは最低でも1になります。フォルダは最低でも2になります。
  +
* 所有者の[[ユーザー]]の名前。
  +
* [[グループ]]の名前。
  +
* サイズ。
  +
* 最後に更新されたタイムスタンプ。
  +
* エンティティ名。
   
  +
=== 空白を含むファイル名がクォートで囲まれる ===
[[locate|メインの記事]]を参照してください。
 
   
  +
デフォルトで、空白を含むファイル名やディレクトリ名はシングルクォートで囲まれて表示されます。{{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]。
== ls ==
 
   
  +
== lsblk ==
[[Wikipedia:ja:ls|ls]] (''list'') は Unix や Unix ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。
 
   
* ''ls'' は[[File permissions and attributes#Viewing_permissions|ファルのパーミッション]]を表示できます。
+
{{man|8|lsblk}}利用可能な[[w:Device_file#Block_devices|ブロックデバス]]とパーティションスキームを表示ます。例:
* カラー出力はシンプルなエイリアスで有効にできます。{{ic|~/.bashrc}} ファイルには {{ic|/etc/skel/.bashrc}} からコピーされた次のエントリが既に含まれているはずです:
 
: {{ic|1=alias ls='ls --color=auto'}}
 
: 次のステップはカラーになった ''ls'' 出力をさらに向上させることです; 例えば、壊れた (孤立した) シンボリックリンクを赤色で表示するようにします。以下をシェルの設定ファイルに追加してください:
 
: {{ic|eval $(dircolors -b)}}
 
   
  +
{{hc|$ lsblk -f|
== man ==
 
  +
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}}) が存在し、それぞれ異なる[[ファイルシステム]]が使われていることが確認できます。
[[Wikipedia:ja:manページ|man]] (''manual page'') はオンラインのソフトウェアドキュメントの一つで基本的に Unix や Unix ライクなオペレーティングシステムで使われます。(ライブラリやシステムコールを含む) コンピュータプログラム、正式の標準・規則、さらに抽象的な概念などをカバーしています。[[Man Pages]] を見て下さい。
 
  +
  +
他によく使われるブロックデバイスのタイプとしてはメモリカードの {{ic|mmcblk}} や [[ソリッドステートドライブ/NVMe|NVMe]] デバイスの {{ic|nvme}} などがあります。知らないタイプは [https://www.kernel.org/doc/Documentation/devices.txt カーネルドキュメント] で検索してください。
   
 
== mkdir ==
 
== mkdir ==
239行目: 355行目:
 
[[Wikipedia:ja:mkdir|mkdir]] (''make directory'') はディレクトリを作成するコマンドです。
 
[[Wikipedia:ja:mkdir|mkdir]] (''make directory'') はディレクトリを作成するコマンドです。
   
* ディレクトリと階層全体を作るには、{{ic|-p}} スイッチを使って下さい。そうしないとエラーが表示されます。{{ic|-p}} スイッチをデフォルトで使うようにすることもできます
+
* ディレクトリと階層全体を作るには、{{ic|-p}} スイッチを使って下さい。そうしないとエラーが表示されます。{{ic|-p}} スイッチをデフォルトで使うようにすることもできます:
 
: {{bc|1=alias mkdir='mkdir -p -v'}}
 
: {{bc|1=alias mkdir='mkdir -p -v'}}
 
: {{ic|-v}} スイッチはメッセージを有効にします。
 
: {{ic|-v}} スイッチはメッセージを有効にします。
245行目: 361行目:
 
* 作成したディレクトリのモードを変更するのに ''chmod'' を使う必要はありません。{{ic|-m}} オプションでアクセス権限を定義できます。
 
* 作成したディレクトリのモードを変更するのに ''chmod'' を使う必要はありません。{{ic|-m}} オプションでアクセス権限を定義できます。
   
{{Tip|一時ディレクトリが欲しいときは代わりに [[Wikipedia:Temporary file|mktemp]] (''make termporary'') を使って下さい: {{ic|mktemp -p}}。
+
{{Tip|一時ディレクトリが欲しいときは代わりに [[Wikipedia:Temporary file|mktemp]] (''make termporary'') を使って下さい: {{ic|mktemp -d}}。}}
}}
 
   
 
== mv ==
 
== mv ==
   
[[Wikipedia:ja:mv_(UNIX)|mv]] (''move'') はファイルやディレクトリを移動したり名前の変更をするコマンドです。危険なコマンドになる可能性があるので範囲に制限をしたほうが賢明です:
+
[[Wikipedia:ja:mv_(UNIX)|mv]] (''move'') はファイルやディレクトリを移動したり名前の変更をするコマンドです。
  +
alias mv=' timeout 8 mv -iv'
 
  +
*危険なコマンドになる可能性があるので範囲に制限をかけたほうが賢明です:
このエイリアスは8秒後に ''mv'' を中止し、3つ以上のファイルの削除を確認し、進行中の操作を表示し、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。
 
  +
: {{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 ==
 
== rm ==
269行目: 398行目:
 
[[Wikipedia:ja:sed (コンピュータ)|sed]] (''stream editor'') は文章をパース・変換する Unix ユーティリティです。
 
[[Wikipedia:ja:sed (コンピュータ)|sed]] (''stream editor'') は文章をパース・変換する Unix ユーティリティです。
   
ここに ''sed'' を使ったワンライナーの [http://sed.sourceforge.net/sed1line.txt 一覧] があります。
+
[http://sed.sourceforge.net/sed1line.txt ここに] ''sed'' を使ったワンライナーのリストがあります。
   
{{Tip|より強力に sed を置き換えるものとして [[Wikipedia:ja:AWK|AWK]] や [[Wikipedia:Perl|Perl]] 言語があります。}}
+
{{Tip|より強力に sed を置き換えるものとして [[Wikipedia:ja:AWK|AWK]] や [[Perl]] 言語があります。}}
   
 
== seq ==
 
== seq ==
277行目: 406行目:
 
'''seq''' (''sequence'') は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、[[Wikipedia:seq|Wikipedia]] で説明されているように使うと良いでしょう。
 
'''seq''' (''sequence'') は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、[[Wikipedia:seq|Wikipedia]] で説明されているように使うと良いでしょう。
   
== shred ==
+
== ss ==
   
  +
''ss'' はネットワークポートを確認するユーティリティです。{{Pkg|iproute2}} パッケージに含まれており {{Pkg|base}} グループのひとつとしてインストールされます。[https://www.archlinux.jp/news/deprecation-of-net-tools/ 非推奨] となった netstat ユーティリティと同じような機能を持っています。
[[Wikipedia:Shred_(Unix)|shred]] は完全にファイルやディレクトリを削除するコマンドです。使い方によっては大変危険なので範囲は限るべきです:
 
alias shred=' timeout 3 shred -v'
 
このエイリアスは3秒後に ''shred'' を中止し、進行中の操作を表示し、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。
 
   
  +
一般的な使用方法:
Zsh のユーザーは {{ic|timeout}} の前に {{ic|noglob}} を記述することで暗示的な拡張を避けることができます。
 
  +
  +
全ての 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'' セクションを見て下さい。
== sudo ==
 
   
  +
== which ==
[[Wikipedia:ja:Sudo|Sudo]] (''as superuser do'') はユーザーが他のユーザー (通常はスーパーユーザー、もしくは root) のセキュリティ特権を使ってプログラムを実行することができる、Unix ライクなコンピュータオペレーティングシステムのためのプログラムです。[[Sudo]] を見て下さい。
 
   
  +
[[wikipedia:Which_(Unix)|which]] コマンドは実行可能ファイルのパスを確認したいときに便利です。例:
== パーミッションに関連するユーティリティ ==
 
   
  +
# journalctl $(which sshd)
* [[Wikipedia:chmod|chmod]] (''change mode'') はファイルシステムオブジェクト (ファイルとディレクトリ) のアクセス権限を変更したり特別なフラグを指定する Unix のシェルコマンドとシステムコールの名前です。
 
   
  +
== wipefs ==
* [[Wikipedia:chown|chown]] (''change owner'') はファイルの所有者を変更するために Unix ライクなシステムで使われます。
 
   
  +
'''wipefs''' は指定したデバイスの[[ファイルシステム]], [[RAID]], [[パーティショニング|パーティションテーブル]]のシグネチャ (マジック文字列) を確認・消去することができます。ファイルシステム自体は消去せず、デバイスの他のデータが消去されることもありません。
* [[Wikipedia:chattr|chattr]] (''change attributes'') は様々な Linux ファイルシステムに入っているファイルに特定の属性を設定する Linux オペレーティングシステムのコマンドです。
 
   
  +
詳しくは wipefs(8) を参照してください。
* [[Wikipedia:lsattr|lsattr]] (''list attributes'') は Linux の extended file system の属性を表示するコマンドラインプログラムです。
 
   
  +
例えば、{{ic|/dev/sdb}} デバイスのシグネチャを全て消去してシグネチャのバックアップファイル {{ic|~/wipefs-sdb-''offset''.bak}} を作成するには:
* {{ic|ls -l}} はファイルの属性を表示します。
 
   
  +
# wipefs --all --backup /dev/sdb
以上のユーティリティは [[File permissions and attributes]] の記事で説明しています。もっと高度なパーミッションの使い方は [[Using File Capabilities Instead Of Setuid|capabilities]] や [[ACL]] を参照してください。
 
   
 
== 参照 ==
 
== 参照 ==
   
* [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
+
* [https://www.reddit.com/r/commandline/comments/19garq/a_sampling_of_coreutils_120/ A sampling of coreutils] [https://www.reddit.com/r/commandline/comments/19ge6v/a_sampling_of_coreutils_2040/ , part 2] [https://www.reddit.com/r/commandline/comments/19j1w3/a_sampling_of_coreutils_4060/ , part 3] - coreutils のコマンドの概要
* [http://www.gnu.org/software/coreutils/manual/coreutils.html GNU Coreutils Manpage]
+
* [https://www.gnu.org/software/coreutils/manual/coreutils.html GNU Coreutils オンラインドキュメント]
* [http://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/ Learn the DD command]
+
* [https://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/ Learn the DD command]

2019年11月21日 (木) 18:48時点における版

関連記事

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

基本コマンド

以下の表には全ての Linux ユーザーが知っておくべき基本的なシェルコマンドを載せています。太字のコマンドはシェルに含まれており、その他のコマンドはシェルとは別個のプログラムです。詳しくは下のセクションや関連記事を見て下さい。

コマンド 説明
man コマンドのマニュアルページを表示 man ed
cd ディレクトリを変更 cd /etc/pacman.d
mkdir ディレクトリを作成 mkdir ~/newfolder
rmdir 空のディレクトリを削除 rmdir ~/emptyfolder
rm ファイルを削除 rm ~/file.txt
rm -r ディレクトリとその中身を削除 rm -r ~/.cache
ls ファイルを一覧表示 ls *.mkv
ls -a 隠しファイルを一覧表示 ls -a /home/archie
ls -al 隠しファイルとファイルのプロパティを一覧表示
mv ファイルを移動 mv ~/compressed.zip ~/archive/compressed2.zip
cp ファイルをコピー cp ~/.bashrc ~/.bashrc.bak
chmod +x ファイルに実行可能属性を付与 chmod +x ~/.local/bin/myscript.sh
cat ファイルの中身を表示 cat /etc/hostname
strings バイナリファイル内の出力可能文字を表示 strings /usr/bin/free
find ファイルを検索 find ~ -name myfile
mount パーティションをマウント mount /dev/sdc1 /media/usb
df -h パーティションの残り容量を表示
ps -A 実行中のプロセスを表示
killall プロセスの実行中のインスタンスを終了
ss -at 開かれている TCP ソケットのリストを表示

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 
dcfldd は dd にフォレンジクスやセキュリティの面で改良を加えたバージョンです。ほとんどの dd のパラメータを扱うことができステータスの出力もできます。dcfldd の最後の安定版は2006年12月19日にリリースされました。[1]
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 に設定することでも同じ効果があります [2]

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

参照