コンテンツにスキップ

「Core utilities」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
Sort interlanguage links
編集の要約なし
1行目: 1行目:
[[Category:システム管理]]
[[Category:システム管理]]
[[Category:コマンドシェル]]
[[Category:コマンドシェル]]
[[en:Core Utilities]]
[[en:Core utilities]]
[[es:Core Utilities]]
[[es:Core utilities]]
[[it:Core Utilities]]
[[it:Core Utilities]]
[[ko:Core utilities]]
[[ru:Core utilities]]
[[zh-CN:Core Utilities]]
[[zh-CN:Core Utilities]]
[[zh-TW:Core Utilities]]
[[zh-TW:Core Utilities]]
11行目: 13行目:
{{Related|一般的な推奨事項}}
{{Related|一般的な推奨事項}}
{{Related|GNU プロジェクト}}
{{Related|GNU プロジェクト}}
{{Related|sudo}}
{{Related|cron}}
{{Related|ファイルシステム検索}}
{{Related|man ページ}}
{{Related|ディスクの完全消去#shred}}
{{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 *.avi
|-
| 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
| プロセスの実行中のインスタンスを終了
|
|}


== cat ==
== cat ==
20行目: 114行目:
* ''cat'' はシェルにビルトインされていないため、多くの場合で[[wikipedia:ja:リダイレクト (CLI)|リダイレクション]]を使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際 {{ic|< ''file''}} は {{ic|cat ''file''}} と全く同じです。
* ''cat'' はシェルにビルトインされていないため、多くの場合で[[wikipedia:ja:リダイレクト (CLI)|リダイレクション]]を使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際 {{ic|< ''file''}} は {{ic|cat ''file''}} と全く同じです。


* ''cat'' は複数行でも動作しますが、バッドプラクティスとしてわれることもあります:
* ''cat'' は複数行でも動作しますが、バッドプラクティスとしてわれることもあります:


{{bc|
{{bc|
39行目: 133行目:


* ファイルの行を逆順で cat する必要がある場合、[[Wikipedia:tac (Unix)|tac]] (''cat'' reversed) という名前のユーティリティがあります。
* ファイルの行を逆順で cat する必要がある場合、[[Wikipedia:tac (Unix)|tac]] (''cat'' reversed) という名前のユーティリティがあります。

== cron ==

[[Wikipedia:ja:cron|cron]] は Unix ライクなコンピュータオペレーティングシステムにおける時間基準のジョブスケジューラです。

[[cron|メインの記事]]を参照してください。
{{Note|''systemd'' は様々な ''cron'' のユースケースを処理することが可能です。[[systemd/cron_functionality|関連記事]]を見て下さい。}}


== dd ==
== dd ==
70行目: 157行目:
605+0 records out
605+0 records out
634388480 bytes (634 MB) copied, 8.17097 s, 77.6 MB/s
634388480 bytes (634 MB) copied, 8.17097 s, 77.6 MB/s

==== パイプビューアを使う ====

{{Pkg|pv}} を使って dd のパイプラインを監視することもできます:
# dd if=''/source/filestream'' | pv -''monitor_options'' -s ''size_of_file'' | dd of=''/destination/filestream''

パイプビューアを使う場合は以下を bashrc や zshrc に追記すると楽です:
copy() {
size=$(stat -c%s $1)
dd if=$1 &> /dev/null | pv -petrb -s $size | dd of=$2
}

そして次のコマンドを使用して下さい:
# copy ''/source/file'' ''/destination/file''


=== dd 派生 ===
=== dd 派生 ===
82行目: 183行目:


[[Wikipedia:ja:grep|grep]] ([[Wikipedia:ja:ed|ed]] の ''g/re/p'', ''global/regular expression/print'' から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。''grep'' コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。
[[Wikipedia:ja:grep|grep]] ([[Wikipedia:ja:ed|ed]] の ''g/re/p'', ''global/regular expression/print'' から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。''grep'' コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。
* Remember that ''grep'' はファイルを処理できるので、{{ic|cat ''file'' <nowiki>|</nowiki> grep ''pattern''}} のようなコンストラクトは {{ic|grep ''pattern'' ''file''}} に置き換えられます
* ''grep'' はファイルを処理できるので、{{ic|cat ''file'' <nowiki>|</nowiki> grep ''pattern''}} のようなコンストラクトは {{ic|grep ''pattern'' ''file''}} に置き換えられます


* VCS のソースコードを ''grep'' する場合、{{Pkg|ack}} や {{Pkg|the_silver_searcher}} などの最適化されたユーティリティが存在します。
* VCS のソースコードを ''grep'' する場合、{{Pkg|ack}} や {{Pkg|the_silver_searcher}} などの最適化されたユーティリティが存在します。
92行目: 193行目:
''grep'' のデフォルトカラーを使うには、以下のエントリをシェルの設定ファイルに書いて下さい。例えば [[Bash]] を使っている場合:
''grep'' のデフォルトカラーを使うには、以下のエントリをシェルの設定ファイルに書いて下さい。例えば [[Bash]] を使っている場合:
{{hc|~/.bashrc|2=alias grep='grep --color=auto'}}
{{hc|~/.bashrc|2=alias grep='grep --color=auto'}}
また、{{ic|GREP_OPTIONS}} [[Environment variables|環境変数]]を設定することも可能ですが、これを使うと ''grep'' を使うスクリプトを壊してしまう可能性があるので注意してください [http://brainstorm.ubuntu.com/idea/24141/]:
また、{{ic|GREP_OPTIONS}} [[環境変数]]を設定することも可能ですが、これを使うと ''grep'' を使うスクリプトを壊してしまう可能性があるので注意してください [http://brainstorm.ubuntu.com/idea/24141/]:
export GREP_OPTIONS='--color=auto'
export GREP_OPTIONS='--color=auto'
ファイルの行番号を出力に含めたいときは、{{ic|-n}} を追加してください:
ファイルの行番号を出力に含めたいときは、{{ic|-n}} を追加してください:
98行目: 199行目:


環境変数 {{ic|GREP_COLORS}} を使ってデフォルトとは異なる色を指定することもできます。
環境変数 {{ic|GREP_COLORS}} を使ってデフォルトとは異なる色を指定することもできます。

=== 標準エラー出力 ===

コマンドによっては標準エラー出力の方に出力が送信されることもありますが、grep は標準エラー出力を解釈しません。このような場合、標準エラー出力を標準出力にリダイレクトする必要があります:

$ ''command'' 2>&1 | grep ''args''

もしくは Bash 4 の略式表記を使って:

$ ''command'' |& grep ''args''

[http://www.tldp.org/LDP/abs/html/io-redirection.html I/O Redirection] を参照してください。


== iconv ==
== iconv ==
108行目: 221行目:


詳しくは {{ic|man iconv}} を読んで下さい。
詳しくは {{ic|man 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

詳しくは {{ic|man sponge}} を参照。


== ip ==
== ip ==
152行目: 273行目:
|}
|}


全てのオブジェクトで {{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'' を使って下さい。}}
161行目: 282行目:


[[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 の代替プログラムについては[[アプリケーション一覧#ターミナルページャ]]を見て下さい。


=== 環境変数を使った出力のカラー化 ===
=== 環境変数を使った出力のカラー化 ===
179行目: 302行目:
値は好きなように変更してください。参照: [[Wikipedia:ANSI_escape_code#Colors|ANSI escape code]]。
値は好きなように変更してください。参照: [[Wikipedia:ANSI_escape_code#Colors|ANSI escape code]]。


=== wrappers を使った出力のカラー化 ===
=== ラッパーを使った出力のカラー化 ===


''less'' でシンタックスハイライトを有効にすることができます。まず、{{Pkg|source-highlight}} をインストールし、次に以下の行をシェルの設定ファイルに追加してください:
''less'' でシンタックスハイライトを有効にすることができます。まず、{{Pkg|source-highlight}} をインストールし、次に以下の行をシェルの設定ファイルに追加してください:
198行目: 321行目:
}}
}}


''lesspipe'' はファイルタイプに関連付けられたコマンドの代替として (例えば {{Pkg|html2text}} で HTML を覧する)、アーカイブ以外のファイルも ''less'' のインターフェイスに接続します。
''lesspipe'' はファイルタイプに関連付けられたコマンドの代替として (例えば {{Pkg|python-html2text}} で HTML を覧する)、アーカイブ以外のファイルも ''less'' のインターフェイスに接続します。


''lesspipe'' を有効にするにはログインしなおすか、{{ic|/etc/profile.d/lesspipe.sh}} を実行してください。
''lesspipe'' を有効にするにはログインしなおすか、{{ic|/etc/profile.d/lesspipe.sh}} を実行してください。
204行目: 327行目:
=== もうひとつのページャとしての Vim ===
=== もうひとつのページャとしての Vim ===


[[Vim|Vim]] (''visual editor improved'') にはテキストファイル・圧縮ファイル・バイナリ・ディレクトリの中身を表示するスクリプトが含まれています。次の行をシェルの設定ファイルに追加することでページャとして使うことが可能です:
[[Vim]] (''visual editor improved'') にはテキストファイル・圧縮ファイル・バイナリ・ディレクトリの中身を表示するスクリプトが含まれています。次の行をシェルの設定ファイルに追加することでページャとして使うことが可能です:
{{hc|~/.bashrc|2=alias less='/usr/share/vim/vim74/macros/less.sh'}}
{{hc|~/.bashrc|2=alias less='/usr/share/vim/vim74/macros/less.sh'}}


また、''less.sh'' マクロの代替も存在し、{{ic|PAGER}} 環境変数として使えます。{{AUR|vimpager-git}} をインストールしてシェルの設定ファイルに以下を加えて下さい:
また、''less.sh'' マクロの代替も存在し、{{ic|PAGER}} 環境変数として使えます。{{Pkg|vimpager}} をインストールしてシェルの設定ファイルに以下を加えて下さい:
{{hc|~/.bashrc|2=
{{hc|~/.bashrc|2=
export PAGER='vimpager'
export PAGER='vimpager'
215行目: 338行目:
これで {{ic|PAGER}} 環境変数を使うプログラム、[[git]] などはページャとして ''vim'' を使うようになります。
これで {{ic|PAGER}} 環境変数を使うプログラム、[[git]] などはページャとして ''vim'' を使うようになります。


=== 標準入力から読み取るときに出力をカラー化 ===
== locate ==


{{Note|以下は {{ic|1=export LESS=R}} に基づいているので、{{ic|~/.bashrc}} や {{ic|~/.zshrc}} に [[#環境変数を使った出力のカラー化]] を追加することを推奨します。}}
[[Wikipedia:locate (Unix)|locate]] はファイルシステム上のファイルを探します。''updatedb'' やデーモンによって生成しインクリメンタルエンコードを使って圧縮した、事前に作ったファイルのデータベースを使って検索を行います。''find'' よりも圧倒的に高速ですが、データベースの定期的な更新が必要です。


コマンドを実行してページ表示するために[[Wikipedia:Standard output|標準出力]] (''stdout'') を ''less'' にパイプする場合 (例: {{ic|<nowiki>pacman -Qe | less</nowiki>}})、出力がカラー化されないことに気づくかもしれません。''stdout'' がインタラクティブターミナルであるかどうかを判別して、その場合はカラーのテキストを出力して、そうでない場合はカラーでないテキストを出力するようになっているのが原因です。''stdout'' をファイルにリダイレクトしたいようなときはこれで構わないでしょうが (例: {{ic|<nowiki>pacman -Qe > pkglst-backup.txt</nowiki>}})、{{ic|less}} で出力を表示したいような時はあまり望ましくありません。
[[locate|メインの記事]]を参照してください。

インタラクティブ tty の検出を無効化するオプションがプログラムに存在することがあります:

# dmesg --color=always | less

プログラムに無効化オプションが存在しない場合、以下のユーティリティを使うことで ''stdout'' がインタラクティブターミナルであるかのように信じこませることができます:

* {{App|stdoutisatty|{{ic|isatty}} 関数のコールをキャッチする小さなプログラム。|https://github.com/lilydjwg/stdoutisatty.|{{AUR|stdoutisatty-git}}}}
:例: {{ic|stdoutisatty ''program'' <nowiki>| less</nowiki>}}
* {{App|unbuffer|''sh'' と [http://tcl.tk/ Tcl] ベースのスクリプト。|http://expect.sourceforge.net/example/unbuffer.man.html|{{Pkg|expect}}}}
:例: {{ic|unbuffer ''program'' <nowiki>| less</nowiki>}}

もしくは、[[zsh]] の [http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzpty-Module zpty] モジュールを使って下さい [http://lilydjwg.is-programmer.com/2011/6/29/using-zpty-module-of-zsh.27677.html]:

{{hc|~/.zshrc|
<nowiki>zmodload zsh/zpty

pty() {
zpty pty-${UID} ${1+$@}
if [[ ! -t 1 ]];then
setopt local_traps
trap '' INT
fi
zpty -r pty-${UID}
zpty -d pty-${UID}
}

ptyless() {
pty $@ | less
}</nowiki>}}

使用方法:

$ ptyless ''program''

他のページャにパイプするには (例: less):

$ pty ''program'' | less


== ls ==
== ls ==
225行目: 386行目:
[[Wikipedia:ja:ls|ls]] (''list'') は Unix や Unix ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。
[[Wikipedia:ja:ls|ls]] (''list'') は Unix や Unix ライクなオペレーティングシステムで使われる、ファイルを一覧するコマンドです。


* ''ls'' は[[File permissions and attributes#Viewing_permissions|ファイルのパーミッション]]を表示できます。
* ''ls'' は[[ファイルのパーミッションと属性#パーミッションの表示|ファイルのパーミッション]]を表示できます。
* カラー出力はシンプルなエイリアスで有効にできます。{{ic|~/.bashrc}} ファイルには {{ic|/etc/skel/.bashrc}} からコピーされた次のエントリが既に含まれているはずです:
* カラー出力はシンプルなエイリアスで有効にできます。{{ic|~/.bashrc}} ファイルには {{ic|/etc/skel/.bashrc}} からコピーされた次のエントリが既に含まれているはずです:
: {{ic|1=alias ls='ls --color=auto'}}
:{{bc|1=alias ls='ls --color=auto'}}
: 次のステップはカラーになった ''ls'' 出力をさらに向上させることです; 例えば、壊れた (孤立した) シンボリックリンクを赤色で表示するようにします。以下をシェルの設定ファイルに追加してください:
:次のステップはカラーになった ''ls'' 出力をさらに向上させることです; 例えば、壊れた (孤立した) シンボリックリンクを赤色で表示するようにします。以下をシェルの設定ファイルに追加してください:
: {{ic|eval $(dircolors -b)}}
:{{bc|1=eval $(dircolors -b)}}

== man ==

[[Wikipedia:ja:manページ|man]] (''manual page'') はオンラインのソフトウェアドキュメントの一つで基本的に Unix や Unix ライクなオペレーティングシステムで使われます。(ライブラリやシステムコールを含む) コンピュータプログラム、正式の標準・規則、さらに抽象的な概念などをカバーしています。[[Man Pages]] を見て下さい。


== mkdir ==
== mkdir ==
239行目: 396行目:
[[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行目: 402行目:
* 作成したディレクトリのモードを変更するのに ''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 -p}}。}}
}}


== 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 ファイルに操作を保存しません。


== rm ==
== rm ==
269行目: 427行目:
[[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]] や [[Wikipedia:ja:Perl|Perl]] 言語があります。}}


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


== shred ==
== which ==

[[Wikipedia:Shred_(Unix)|shred]] は完全にファイルやディレクトリを削除するコマンドです。使い方によっては大変危険なので範囲は限るべきです:
alias shred=' timeout 3 shred -v'
このエイリアスは3秒後に ''shred'' を中止し、進行中の操作を表示し、(スペースから始まるコマンドを無視するようシェルが設定されている場合) シェルの history ファイルに操作を保存しません。

Zsh のユーザーは {{ic|timeout}} の前に {{ic|noglob}} を記述することで暗示的な拡張を避けることができます。

== sudo ==

[[Wikipedia:ja:Sudo|Sudo]] (''as superuser do'') はユーザーが他のユーザー (通常はスーパーユーザー、もしくは root) のセキュリティ特権を使ってプログラムを実行することができる、Unix ライクなコンピュータオペレーティングシステムのためのプログラムです。[[Sudo]] を見て下さい。

== パーミッションに関連するユーティリティ ==

* [[Wikipedia:chmod|chmod]] (''change mode'') はファイルシステムオブジェクト (ファイルとディレクトリ) のアクセス権限を変更したり特別なフラグを指定する Unix のシェルコマンドとシステムコールの名前です。


* [[Wikipedia:chown|chown]] (''change owner'') はファイルの所有者変更する Unix ライクなシステム使われます。
[[wikipedia:Which_(Unix)|which]] コマンド実行可能ファイルのパス確認しいとき便利です。例:


# journalctl $(which sshd)
* [[Wikipedia:chattr|chattr]] (''change attributes'') は様々な Linux ファイルシステムに入っているファイルに特定の属性を設定する Linux オペレーティングシステムのコマンドです。


== motd ==
* [[Wikipedia:lsattr|lsattr]] (''list attributes'') は Linux の extended file system の属性を表示するコマンドラインプログラムです。


[[Wikipedia:motd (Unix)|motd]] (Message of the day)。ログインが成功するとログインシェルが起動する前に {{Ic|login(1)}} によって {{ic|/etc/motd}} の中身が表示されます。
* {{ic|ls -l}} はファイルの属性を表示します。


ユーザーにローカルポリシーなど何か伝えたい時があるときに利用規約を表示すると良いでしょう。
以上のユーティリティは [[File permissions and attributes]] の記事で説明しています。もっと高度なパーミッションの使い方は [[Using File Capabilities Instead Of Setuid|capabilities]] や [[ACL]] を参照してください。


== 参照 ==
== 参照 ==

2015年8月16日 (日) 15:24時点における版

この記事では 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 *.avi
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 プロセスの実行中のインスタンスを終了

cat

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

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

代わりに echo コマンドを使うほうが良いでしょう:

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

dd

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

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

実行中に dd の進行度を確認する

デフォルトでは、dd は作業が完了するまで何も出力をしません。killUSR1 シグナルを使うことでプログラムを終了することなく状態を出力させることが可能です。新しい root のターミナルを開いて次のコマンドを実行してください:

# killall -USR1 dd
ノート これは動作中の全ての dd プロセスに影響を与えます。

もしくは:

# kill -USR1 pid_of_dd_command

例えば:

# kill -USR1 $(pidof dd)

これで dd は当面の進捗をターミナルに出力するようになります。例:

605+0 records in
605+0 records out
634388480 bytes (634 MB) copied, 8.17097 s, 77.6 MB/s

パイプビューアを使う

pv を使って dd のパイプラインを監視することもできます:

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

パイプビューアを使う場合は以下を bashrc や zshrc に追記すると楽です:

copy() {
    size=$(stat -c%s $1)
    dd if=$1 &> /dev/null | pv -petrb -s $size | dd of=$2
}

そして次のコマンドを使用して下さい:

# copy /source/file /destination/file

dd 派生

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

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

grep

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

  • grep はファイルを処理できるので、cat file | grep pattern のようなコンストラクトは grep pattern file に置き換えられます
  • VCS のソースコードを grep する場合、ackthe_silver_searcher などの最適化されたユーティリティが存在します。

出力のカラー化

grep のカラー出力は画面が美しくなるだけでなく regexpgrep の機能を学ぶのにとても便利です。

grep のデフォルトカラーを使うには、以下のエントリをシェルの設定ファイルに書いて下さい。例えば Bash を使っている場合:

~/.bashrc
alias grep='grep --color=auto'

また、GREP_OPTIONS 環境変数を設定することも可能ですが、これを使うと grep を使うスクリプトを壊してしまう可能性があるので注意してください [2]:

export GREP_OPTIONS='--color=auto'

ファイルの行番号を出力に含めたいときは、-n を追加してください:

alias grep='grep -n --color=auto'

環境変数 GREP_COLORS を使ってデフォルトとは異なる色を指定することもできます。

標準エラー出力

コマンドによっては標準エラー出力の方に出力が送信されることもありますが、grep は標準エラー出力を解釈しません。このような場合、標準エラー出力を標準出力にリダイレクトする必要があります:

$ command 2>&1 | grep args

もしくは Bash 4 の略式表記を使って:

$ command |& grep args

I/O Redirection を参照してください。

iconv

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

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

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

詳しくは man iconv を読んで下さい。

ファイルを変換する

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

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

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

詳しくは man sponge を参照。

ip

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

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

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

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

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

less

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

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

環境変数を使った出力のカラー化

以下の行をシェルの設定ファイルに加えて下さい:

~/.bashrc
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')

値は好きなように変更してください。参照: ANSI escape code

ラッパーを使った出力のカラー化

less でシンタックスハイライトを有効にすることができます。まず、source-highlight をインストールし、次に以下の行をシェルの設定ファイルに追加してください:

~/.bashrc
export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"
export LESS='-R '

コマンドラインインターフェイスを頻繁に使う場合 lesspipe をインストールすると良いかもしれません。

ページャを使ってアーカイブの中の圧縮されたファイルを表示することができるようになります:

$ less compressed_file.tar.gz
==> use tar_file:contained_file to view a file in the archive
-rw------- username/group  695 2008-01-04 19:24 compressed_file/content1
-rw------- username/group   43 2007-11-07 11:17 compressed_file/content2
compressed_file.tar.gz (END)

lesspipe はファイルタイプに関連付けられたコマンドの代替として (例えば python-html2text で HTML を閲覧する)、アーカイブ以外のファイルも less のインターフェイスに接続します。

lesspipe を有効にするにはログインしなおすか、/etc/profile.d/lesspipe.sh を実行してください。

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

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

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

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

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

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

標準入力から読み取るときに出力をカラー化

ノート 以下は export LESS=R に基づいているので、~/.bashrc~/.zshrc#環境変数を使った出力のカラー化 を追加することを推奨します。

コマンドを実行してページ表示するために標準出力 (stdout) を less にパイプする場合 (例: pacman -Qe | less)、出力がカラー化されないことに気づくかもしれません。stdout がインタラクティブターミナルであるかどうかを判別して、その場合はカラーのテキストを出力して、そうでない場合はカラーでないテキストを出力するようになっているのが原因です。stdout をファイルにリダイレクトしたいようなときはこれで構わないでしょうが (例: pacman -Qe > pkglst-backup.txt)、less で出力を表示したいような時はあまり望ましくありません。

インタラクティブ tty の検出を無効化するオプションがプログラムに存在することがあります:

# dmesg --color=always | less

プログラムに無効化オプションが存在しない場合、以下のユーティリティを使うことで stdout がインタラクティブターミナルであるかのように信じこませることができます:

  • stdoutisattyisatty 関数のコールをキャッチする小さなプログラム。
https://github.com/lilydjwg/stdoutisatty. || stdoutisatty-gitAUR
例: stdoutisatty program | less
  • unbuffershTcl ベースのスクリプト。
http://expect.sourceforge.net/example/unbuffer.man.html || expect
例: unbuffer program | less

もしくは、zshzpty モジュールを使って下さい [3]:

~/.zshrc
zmodload zsh/zpty

pty() {
	zpty pty-${UID} ${1+$@}
	if [[ ! -t 1 ]];then
		setopt local_traps
		trap '' INT
	fi
	zpty -r pty-${UID}
	zpty -d pty-${UID}
}

ptyless() {
	pty $@ | less
}

使用方法:

$ ptyless program

他のページャにパイプするには (例: less):

$ pty program | less

ls

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

  • lsファイルのパーミッションを表示できます。
  • カラー出力はシンプルなエイリアスで有効にできます。~/.bashrc ファイルには /etc/skel/.bashrc からコピーされた次のエントリが既に含まれているはずです:
alias ls='ls --color=auto'
次のステップはカラーになった ls 出力をさらに向上させることです; 例えば、壊れた (孤立した) シンボリックリンクを赤色で表示するようにします。以下をシェルの設定ファイルに追加してください:
eval $(dircolors -b)

mkdir

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

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

mv

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

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

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 で説明されているように使うと良いでしょう。

which

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

# journalctl $(which sshd)

motd

motd (Message of the day)。ログインが成功するとログインシェルが起動する前に login(1) によって /etc/motd の中身が表示されます。

ユーザーにローカルポリシーなど何か伝えたい時があるときに利用規約を表示すると良いでしょう。

参照