「Core utilities」の版間の差分
(Sort interlanguage links) |
|||
1行目: | 1行目: | ||
[[Category:システム管理]] |
[[Category:システム管理]] |
||
[[Category:コマンドシェル]] |
[[Category:コマンドシェル]] |
||
− | [[en:Core |
+ | [[en:Core utilities]] |
− | [[es:Core |
+ | [[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'' コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。 |
||
− | * |
+ | * ''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}} [[ |
+ | また、{{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] を見て下さい。 |
− | [[ |
+ | [[ネットワーク設定]]の記事では実際問題として ''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]]。 |
||
− | === |
+ | === ラッパーを使った出力のカラー化 === |
''less'' でシンタックスハイライトを有効にすることができます。まず、{{Pkg|source-highlight}} をインストールし、次に以下の行をシェルの設定ファイルに追加してください: |
''less'' でシンタックスハイライトを有効にすることができます。まず、{{Pkg|source-highlight}} をインストールし、次に以下の行をシェルの設定ファイルに追加してください: |
||
198行目: | 321行目: | ||
}} |
}} |
||
− | ''lesspipe'' はファイルタイプに関連付けられたコマンドの代替として (例えば {{Pkg|html2text}} で HTML を |
+ | ''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]] (''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}} 環境変数として使えます。{{ |
+ | また、''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'' は[[ |
+ | * ''ls'' は[[ファイルのパーミッションと属性#パーミッションの表示|ファイルのパーミッション]]を表示できます。 |
* カラー出力はシンプルなエイリアスで有効にできます。{{ic|~/.bashrc}} ファイルには {{ic|/etc/skel/.bashrc}} からコピーされた次のエントリが既に含まれているはずです: |
* カラー出力はシンプルなエイリアスで有効にできます。{{ic|~/.bashrc}} ファイルには {{ic|/etc/skel/.bashrc}} からコピーされた次のエントリが既に含まれているはずです: |
||
− | : |
+ | :{{bc|1=alias ls='ls --color=auto'}} |
− | : |
+ | :次のステップはカラーになった ''ls'' 出力をさらに向上させることです; 例えば、壊れた (孤立した) シンボリックリンクを赤色で表示するようにします。以下をシェルの設定ファイルに追加してください: |
− | : |
+ | :{{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 ここに] ''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]] で説明されているように使うと良いでしょう。 |
||
− | == |
+ | == 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: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 はシェルにビルトインされていないため、多くの場合でリダイレクションを使ったほうが便利です (例: スクリプト、もしくはパフォーマンスが必要な場合)。実際
< file
はcat 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 ライクなオペレーティングシステムのコマンドです。
実行中に dd の進行度を確認する
デフォルトでは、dd は作業が完了するまで何も出力をしません。kill と USR1
シグナルを使うことでプログラムを終了することなく状態を出力させることが可能です。新しい root のターミナルを開いて次のコマンドを実行してください:
# killall -USR1 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]
grep
grep (ed の g/re/p, global/regular expression/print から) は Unix のために書かれたコマンドラインの文章検索ユーティリティです。grep コマンドはファイルや標準入力から与えられた正規表現と一致する行を検索し、プログラムの標準出力に表示します。
- grep はファイルを処理できるので、
cat file | grep pattern
のようなコンストラクトはgrep pattern file
に置き換えられます
- VCS のソースコードを grep する場合、ack や the_silver_searcher などの最適化されたユーティリティが存在します。
出力のカラー化
grep のカラー出力は画面が美しくなるだけでなく regexp や grep の機能を学ぶのにとても便利です。
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
を読んで下さい。
ファイルを変換する
sed とは異なり、iconv にはファイルを変換するオプションはありません。しかしながら、(moreutils に含まれている) sponge
を使うことでファイルを変換することもできます:
$ iconv -f WINDOWS-1251 -t UTF-8 foobar.txt | sponge foobar.txt
詳しくは man sponge
を参照。
ip
ip を使うことで Linux の IP ソフトウェアスタックにおけるネットワークデバイス・IP アドレス・ルーティングテーブルなどの情報を表示することができます。様々なコマンドを加えることで、オブジェクトの操作や設定をすることも可能です。
オブジェクト | 用途 | 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 コマンドを様々な作業でどうやって使えばいいのか解説しています。
less
less はテキストファイルの中身を一画面単位で表示するのに使われるターミナルページャプログラムです。more や pg といった他のページャと同じですが、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 を使うようになります。
標準入力から読み取るときに出力をカラー化
コマンドを実行してページ表示するために標準出力 (stdout) を less にパイプする場合 (例: pacman -Qe | less
)、出力がカラー化されないことに気づくかもしれません。stdout がインタラクティブターミナルであるかどうかを判別して、その場合はカラーのテキストを出力して、そうでない場合はカラーでないテキストを出力するようになっているのが原因です。stdout をファイルにリダイレクトしたいようなときはこれで構わないでしょうが (例: pacman -Qe > pkglst-backup.txt
)、less
で出力を表示したいような時はあまり望ましくありません。
インタラクティブ tty の検出を無効化するオプションがプログラムに存在することがあります:
# dmesg --color=always | less
プログラムに無効化オプションが存在しない場合、以下のユーティリティを使うことで stdout がインタラクティブターミナルであるかのように信じこませることができます:
- stdoutisatty —
isatty
関数のコールをキャッチする小さなプログラム。
- https://github.com/lilydjwg/stdoutisatty. || stdoutisatty-gitAUR
- 例:
stdoutisatty program | less
- unbuffer — sh と Tcl ベースのスクリプト。
- http://expect.sourceforge.net/example/unbuffer.man.html || expect
- 例:
unbuffer program | less
もしくは、zsh の zpty モジュールを使って下さい [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
オプションでアクセス権限を定義できます。
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 を使ったワンライナーのリストがあります。
seq
seq (sequence) は連続する数字を生成するユーティリティです。シェルに内蔵されている代替があるので、Wikipedia で説明されているように使うと良いでしょう。
which
which コマンドは実行可能ファイルのパスを確認したいときに便利です。例:
# journalctl $(which sshd)
motd
motd (Message of the day)。ログインが成功するとログインシェルが起動する前に login(1)
によって /etc/motd
の中身が表示されます。
ユーザーにローカルポリシーなど何か伝えたい時があるときに利用規約を表示すると良いでしょう。
参照
- A sampling of coreutils , part 2 , part 3 - Overview of commands in coreutils
- GNU Coreutils Manpage
- Learn the DD command