「Core utilities」の版間の差分
細 (→less) |
Kusakata.bot2 (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
||
(4人の利用者による、間の17版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:コマンドライン]] |
+ | [[fa:Core utilities]] |
||
− | [[Category:Command shells (日本語)]] |
||
− | [[en:Core |
+ | [[en:Core utilities]] |
− | [[ |
+ | [[es:Core utilities]] |
− | [[ |
+ | [[it:Core utilities]] |
− | [[ |
+ | [[ko:Core utilities]] |
+ | [[pt:Core utilities]] |
||
− | {{Related articles start (日本語)}} |
||
+ | [[ru:Core utilities]] |
||
+ | [[zh-hans:Core utilities]] |
||
+ | [[zh-hant:Core utilities]] |
||
+ | {{Related articles start}} |
||
{{Related|Bash}} |
{{Related|Bash}} |
||
− | {{ |
+ | {{Related|Zsh}} |
− | {{ |
+ | {{Related|一般的な推奨事項}} |
− | {{ |
+ | {{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 == |
||
19行目: | 119行目: | ||
* ''cat'' はシェルにビルトインされていないため、多くの場合で[[wikipedia:ja:リダイレクト (CLI)|リダイレクション]]を使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際 {{ic|< ''file''}} は {{ic|cat ''file''}} と全く同じです。 |
* ''cat'' はシェルにビルトインされていないため、多くの場合で[[wikipedia:ja:リダイレクト (CLI)|リダイレクション]]を使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際 {{ic|< ''file''}} は {{ic|cat ''file''}} と全く同じです。 |
||
− | * ''cat'' は複数行でも動作し |
+ | * ''cat'' は複数行でも動作します: |
{{bc| |
{{bc| |
||
28行目: | 128行目: | ||
EOF |
EOF |
||
}} |
}} |
||
− | 代わりに |
+ | 代わりに {{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) という名前のユーティリティがあります。 |
||
− | == |
+ | == chmod == |
+ | [[ファイルのパーミッションと属性#パーミッションを変更]]を見てください。 |
||
− | [[Wikipedia:ja:cron|cron]] は Unix ライクなコンピュータオペレーティングシステムにおける時間基準のジョブスケジューラです。 |
||
+ | == chown == |
||
− | [[cron (日本語)|メインの記事]]を参照してください。 |
||
+ | |||
− | {{Note|''systemd'' は様々な ''cron'' のユースケースを処理することが可能です。[[systemd/cron_functionality (日本語)|関連記事]]を見て下さい。}} |
||
+ | [[ファイルのパーミッションと属性#所有者を変更]]を見てください。 |
||
== dd == |
== dd == |
||
50行目: | 145行目: | ||
[[Wikipedia:ja:dd (UNIX)|dd]] は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。 |
[[Wikipedia:ja:dd (UNIX)|dd]] は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。 |
||
− | + | ''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 派生 === |
||
76行目: | 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}} はデータ復旧ツールです。ディスク消去でほとんどの場合無用な機能である読み込みエラーを無視できます。詳しくは [ |
+ | ; ddrescue : GNU {{Pkg|ddrescue}} はデータ復旧ツールです。ディスク消去でほとんどの場合無用な機能である読み込みエラーを無視できます。詳しくは [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html 公式マニュアル] を見て下さい。 |
− | == |
+ | == 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 == |
||
106行目: | 203行目: | ||
$ iconv -f ISO-8859-15 -t UTF-8 foo >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 == |
== 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}} パッケージに含まれており、このパッケージは {{ |
+ | {{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] を見て下さい。 |
− | [[ |
+ | [[ネットワーク設定]]の記事では実際問題として ''ip'' コマンドを様々な作業でどうやって使えばいいのか解説しています。 |
{{Note|もしかしたら [[Wikipedia:ifconfig|ifconfig]] コマンドの方が親しみがあるかもしれません。このコマンドは Linux の旧バージョンでインターフェイス設定に使われていました。現在 Arch Linux では廃止されているため、代わりに ''ip'' を使って下さい。}} |
{{Note|もしかしたら [[Wikipedia:ifconfig|ifconfig]] コマンドの方が親しみがあるかもしれません。このコマンドは Linux の旧バージョンでインターフェイス設定に使われていました。現在 Arch Linux では廃止されているため、代わりに ''ip'' を使って下さい。}} |
||
161行目: | 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 ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。 |
||
− | + | {{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 == |
||
238行目: | 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}} スイッチはメッセージを有効にします。 |
||
244行目: | 361行目: | ||
* 作成したディレクトリのモードを変更するのに ''chmod'' を使う必要はありません。{{ic|-m}} オプションでアクセス権限を定義できます。 |
* 作成したディレクトリのモードを変更するのに ''chmod'' を使う必要はありません。{{ic|-m}} オプションでアクセス権限を定義できます。 |
||
− | {{Tip|一時ディレクトリが欲しいときは代わりに [[Wikipedia:Temporary file|mktemp]] (''make termporary'') を使って下さい: {{ic|mktemp - |
+ | {{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 == |
||
268行目: | 398行目: | ||
[[Wikipedia:ja:sed (コンピュータ)|sed]] (''stream editor'') は文章をパース・変換する Unix ユーティリティです。 |
[[Wikipedia:ja:sed (コンピュータ)|sed]] (''stream editor'') は文章をパース・変換する Unix ユーティリティです。 |
||
− | ここに ''sed'' を使ったワンライナーの |
+ | [http://sed.sourceforge.net/sed1line.txt ここに] ''sed'' を使ったワンライナーのリストがあります。 |
− | {{Tip|より強力に sed を置き換えるものとして [[Wikipedia:ja:AWK|AWK]] や [[ |
+ | {{Tip|より強力に sed を置き換えるものとして [[Wikipedia:ja:AWK|AWK]] や [[Perl]] 言語があります。}} |
== seq == |
== seq == |
||
276行目: | 406行目: | ||
'''seq''' (''sequence'') は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、[[Wikipedia:seq|Wikipedia]] で説明されているように使うと良いでしょう。 |
'''seq''' (''sequence'') は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、[[Wikipedia:seq|Wikipedia]] で説明されているように使うと良いでしょう。 |
||
− | == |
+ | == 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]] を参照してください。 |
||
== 参照 == |
== 参照 == |
||
− | * [ |
+ | * [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 のコマンドの概要 |
− | * [ |
+ | * [https://www.gnu.org/software/coreutils/manual/coreutils.html GNU Coreutils オンラインドキュメント] |
− | * [ |
+ | * [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 はシェルにビルトインされていないため、多くの場合でリダイレクションを使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際
< file
はcat 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' は以下のような作業ができます:
- ドライブ関連の作業:
- イメージの作成。
- イメージの書き込み。
- ドライブやパーティションの複製。
- ドライブやパーティションの消去。
- パーティションテーブルやブートセクタの消去。
- ブートセクタのバックアップ。
- システムの復元。
- デバイスや
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 派生
他の dd ライクなプログラムには定期的に状態を出力する (例: シンプルなプログレスバー) 機能があります。
- dcfldd
- dcfldd は dd にフォレンジクスやセキュリティの面で改良を加えたバージョンです。ほとんどの dd のパラメータを扱うことができステータスの出力もできます。dcfldd の最後の安定版は2006年12月19日にリリースされました。[1]
find
find は findutils パッケージに含まれており、base パッケージグループのひとつとしてインストールされます。
find コマンドはファイル名を引数としてファイルシステムの中に名前が一致するファイルがないか検索するコマンドではありません。下の #locate を見てください。
find はディレクトリのセットとマッチするファイルの正規表現を引数として取ります。非常に強力なワンライナーを作ることができますが、直感的な検索コマンドとしては使えません。詳しい使用方法は UsingFind を見てください。
grep
grep (ed の g/re/p, global/regular expression/print から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。grep コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。
- grep はファイルを処理できるので、
cat file | grep pattern
のようなコンストラクトはgrep pattern file
に置き換えられます - VCS のソースコードを grep する場合、ripgrep や ack、the_silver_searcher などの最適化されたユーティリティが存在します。
-n
オプションを使うことで出力にファイルの行番号が含まれているようになります。
カラー出力についてはコンソールのカラー出力#grep を見てください。
iconv
iconv
は文字列のエンコーディングをあるコードセットから他のコードセットへ変換します。
次のコマンドはファイル foo
を ISO-8859-15 から UTF-8 へ変換して foo.utf
として保存します:
$ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf
詳しくは iconv(1) を読んで下さい。
ファイルを変換する
sed とは異なり、iconv にはファイルを変換するオプションはありません。しかしながら、(moreutils に含まれている) sponge
を使うことでファイルを変換することもできます:
$ iconv -f WINDOWS-1251 -t UTF-8 foobar.txt | sponge foobar.txt
詳しくは sponge(1) を参照。
ip
ip を使うことで Linux の IP ソフトウェアスタックにおけるネットワークデバイス・IP アドレス・ルーティングテーブルなどの情報を表示することができます。様々なコマンドを加えることで、オブジェクトの操作や設定をすることも可能です。
オブジェクト | 用途 | 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 コマンドを様々な作業でどうやって使えばいいのか解説しています。
less
less はテキストファイルの中身を一画面単位で表示するのに使われるターミナルページャプログラムです。more や pg といった他のページャと同じですが、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 は近代的でユーザーフレンドリーな ls
と tree
の代替ユーティリティです。ファイル名と一緒に 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
) が存在し、それぞれ異なるファイルシステムが使われていることが確認できます。
他によく使われるブロックデバイスのタイプとしてはメモリカードの mmcblk
や NVMe デバイスの nvme
などがあります。知らないタイプは カーネルドキュメント で検索してください。
mkdir
mkdir (make directory) はディレクトリを作成するコマンドです。
- ディレクトリと階層全体を作るには、
-p
スイッチを使って下さい。そうしないとエラーが表示されます。-p
スイッチをデフォルトで使うようにすることもできます:
alias mkdir='mkdir -p -v'
-v
スイッチはメッセージを有効にします。
- 作成したディレクトリのモードを変更するのに chmod を使う必要はありません。
-m
オプションでアクセス権限を定義できます。
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
大抵の場合 pv
は cat
の代替として機能します。
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 を使ったワンライナーのリストがあります。
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 ライクなオペレーティングシステムでパッケージの作成に広く使われています。pacman と AUR のパッケージはどちらも tarball であり、Arch はデフォルトで GNU の Tar
プログラムを使います。
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
参照
- A sampling of coreutils , part 2 , part 3 - coreutils のコマンドの概要
- GNU Coreutils オンラインドキュメント
- Learn the DD command