Skip to content

Latest commit

 

History

History
456 lines (260 loc) · 30.4 KB

README-ja.md

File metadata and controls

456 lines (260 loc) · 30.4 KB

[ Languages: English, Español, Italiano, 日本語, 한국얎, Português, РусскОй, Slovenščina, УкраїМська, äž­æ–‡ ]

原文のコミット bb0c38c0899339e836c37eead4a9534b06c56662

The Art of Command Line

Join the chat at https://gitter.im/jlevy/the-art-of-command-line

curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '\w+' | tr -d '`' | cowsay -W50

コマンドラむンで流れるように操䜜ができるずいうこずは、軜く芋られたり他人から理解されないスキルだずみなされるこずもあるだろう。しかしそのスキルは、明らかにかすぐ分かるようかは問わず、゚ンゞニアずしおのあなたの柔軟性や生産性を改善しおくれるものだ。ここでは、Linuxでコマンドラむンを䜿う䞊で䟿利だず思ったメモやTipsの数々を挙げおみる。あるものは基瀎的だが、非垞に詳しいもの、掗緎されたもの、曖昧なものもある。このペヌゞはそんなに長いものではないが、ここに曞いおあるこずの党おを䜿ったり思い出すこずができれば、かなり詳しくなれるだろう。

ここに曞いおあるこずの倚くは、元々Quoraに曞かれおいたものが倚いが、私よりももっず優れた人たちがすぐに改善案を出すこずができるGithubに眮くのがよいのではず思った(蚳泚 : 原文はGithub䞊にある)。間違いやもっずこうした方がよいずいう点があれば、むシュヌを登録するかプルリク゚ストを送っおほしい(もちろん、メタ情報の項や既存のプルリク゚スト、むシュヌをたず確認しよう)

メタ情報

察象 :

  • このガむドは、初心者向けでも経隓者向きでもある。幅広く(曞いおあるこずは党お重芁)、か぀明確で(倚くのケヌスに察しお具䜓的な䟋を付ける)、そしお簡朔(他の堎所で芋぀けられるような重芁でないこずや脱線したこずは省く)であるこずをゎヌルにしおいる。各項目は、倚くの堎面においお必須であるか、他の方法に比べお劇的に時間を節玄しおくれるだろう。
  • Linux向けに曞いおいる。倚くはMacOS(あるいはCygwin)でも䜿えるが、党郚ではない。
  • むンタラクティブなBashを䜿うこずを想定しおいるが、倚くの項目は他のシェルやBashのスクリプトでも䜿えるだろう。

泚意 :

  • 1ペヌゞ内に収めるために、内容には暗黙的に曞かれおいるこずがある。ここで取りかかりを知ったりコマンドが分かれば、詳现をどこかで調べたりするくらいはできるだろう。新しいプログラムをむンストヌルするには、apt-get/yum/dnf/pacman/pip/brew(どれか適したもの)を䜿おう。
  • コマンドやオプション、パむプを分解しお理解する手助けに、Explainshellを䜿おう。

基本

  • 基本的なBashを孊がう。実際のずころ、man bashは結構簡単に理解できるしそんなに長くないので、これで䞀通りのこずは分かる。それ以倖のシェルもよいが、Bashは匷力だし、垞に䜿甚可胜であるずいう利点もある(自分のPCに入れおしたったず蚀っおzshやfishなどだけを孊んでしたうず、既存のサヌバを觊らなくおはならない時などに制玄が出おしたう)。

  • テキスト゚ディタのどれか最䜎1぀に習熟しよう。タヌミナル内で適圓にものを曞くにあたっお他に党く代替品がないずいう点で、理想的にはVim(vi)がよいだろう(通垞はEmacsや高機胜なIDEや最新のかっこいい゚ディタをメむンに䜿っおいたずしおも)。

  • manでのドキュメントの読み方を知ろう(知りたがりのために曞くず、man manでセクション番号が分かる。䟋えば1は「䞀般的な」コマンド、5はファむルやそのお䜜法、8は管理に぀いおずいった具合)。aproposでmanペヌゞを探そう。コマンドによっおは実行可胜ファむルではなくBashのビルトむンコマンドであるこずを理解し、helpやhelp -dでヘルプが芋られるこずを知ろう。

  • >や<、|を䜿ったパむプによる入出力のリダむレクションを孊がう。stdout(暙準出力)ずstderr(暙準゚ラヌ出力)を孊がう。

  • *(たたは?や{...})を䜿ったファむルグロブ展開、クォヌテヌション、ダブルクォヌト"ずシングルクォヌト'の違いを孊がう(詳しくはこの埌の倉数展開の項を参照)。

  • &、ctrl-z、ctrl-c、jobs、fg、bg、killなど、Bashのゞョブ管理に぀いお詳しくなろう。

  • sshに぀いお知るずずもに、ssh-agentやssh-addを䜿ったパスワヌドなしの認蚌の基本に぀いお理解しよう。

  • ファむル管理に぀いお。lsやls -l(特に、ls -lの各列が䜕を意味するか理解)、less、head、tail、tail -f(たたはless +F)、lnずln -s(ハヌドリンクず゜フトリンクの違いずそれぞれの利点の理解)、chownずchmod、du(ディスク䜿甚量たずめを簡単に芋るならdu -sk *)。ファむルシステム管理に぀いおは、df、mount、fdisk、mkfs、lsblk。

  • 基本的なネットワヌク管理に぀いお。ipあるいはifconfig、dig。

  • 正芏衚珟に぀いお詳しく知ろう。grepやegrepの色々なフラグも合わせお。-i、-o、-A、-Bずいったオプションは知っおおいお損はない。

  • apt-get、yum、dnf、pacman(ディストリビュヌションによっお違う)ずいったコマンドでパッケヌゞを探したりむンストヌルする方法を孊がう。Pythonベヌスのコマンドラむンツヌルをむンストヌルするのに、pipも必芁だ(埌に出おくるいく぀かのコマンドはpipでむンストヌルするのが䞀番簡単)。

日垞的に䜿うもの

  • Bashでは、匕数を補完するのにタブを䜿い、コマンド履歎から怜玢するのにctrl-rを䜿う。

  • Bashでは、最埌の単語を削陀するのにはctrl-w、行頭たで党お削陀するにはctrl-uを䜿う。単語ごずに移動するにはalt-bたたはalt-f、行末たで削陀するにはctrl-k、画面のクリアはctrl-l。Bashにおけるデフォルトのキヌ割り圓おを党お芋るには``man readline`を参照。たくさん出おくる。䟋えば、**alt-.**は前の匕数を順番に衚瀺し、**alt-***はグロブを展開する。

  • vi颚のキヌ割り圓おが奜きなら、set -o viを実行しよう。

  • 最近実行したコマンドを確認するならhistory。ctrl-rや**alt-.**で甚は足りるだろうが、!$(盎前の匕数)や!!(盎前のコマンド)ずいった省略圢もたくさんある。

  • 前のワヌキングディレクトリに戻るならcd -

  • 途䞭たでコマンドを入力したけれど心倉わりした時は、alt-#を打぀ず行頭に#が挿入され、コメントずしお入力される(ctrl-a、#、enterでも同じ)。これは埌でコマンド履歎から怜玢できる。

  • xargs(たたはparallel)を䜿おう。非垞に匷力。行ごずにいく぀のアむテムを実行するか(-L)や、䞊列床(-P)も制埡できる。正しく実行されるか定かでないなら、たずxargs echoしおみればよい。-I{}も䟿利。䟋えば以䞋の通り。

   find . -name '*.py' | xargs grep some_function
   cat hosts | xargs -I{} ssh root@{} hostname
  • pstree -pはプロセスツリヌを衚瀺するのに䟿利。

  • pgrepやpkillで、プロセス名で怜玢したりシグナルを送れる(-fも䟿利)。

  • プロセスに送れる色々なシグナルを知っおおこう。䟋えば、プロセスをサスペンドするにはkill -STOP [pid]を䜿う。党皮類芋るなら、man 7 signal。

  • バックグラりンドプロセスをずっず実行し続けたいならnohupあるいはdisownを䜿おう。

  • netstat -lntpやss -platで、どんなプロセスがリッスンしおいるか確認しよう(UDPなら-uを付ける)。

  • 開かれおいる゜ケットやファむルを芋るにはlsofも参照。

  • Bashスクリプトでは、set -xでデバッグ出力を出せる。可胜なら厳栌モヌドを䜿い、゚ラヌが起きたら匷制終了するようset -eする。パむプの゚ラヌも厳栌に扱うためにset -o pipefailも䜿おう(これはちょっず埮劙かも)。より耇雑なスクリプトなら、trapも䜿おう。

  • Bashスクリプトでは、コマンドのグルヌプを䜜るのにサブシェル(䞞括匧で囲たれた郚分)が䟿利。䞀時的にワヌキングディレクトリを移動するずいうよくある䟋。

      # カレントディレクトリで䜕か実行
      (cd /some/other/dir && other-command)
      # 元のディレクトリで䜜業続行
  • Bashでは、たくさんの倉数展開の皮類があるこずを芚えおおこう。倉数が存圚するかチェックするなら、${name:?error message}。䟋えば、Bashスクリプトが1぀の匕数を取る必芁があるなら、input_file=${1:?usage: $0 input_file}ずだけ曞けばよい。算術匏の展開は、i=$(( (i + 1) % 5 ))。シヌケンスは{1..10}。文字列のトリミングは${var%suffix}ず${var#prefix}。䟋えばvar=foo.pdfの時、echo ${var%.pdf}.txtずするずfoo.txtが出力に。

  • コマンドの出力を<(some command)のようにしおファむルのように扱える。䟋えば、ロヌカルずリモヌトのの/etc/hostsを比范するなら以䞋のようになる。

      diff /etc/hosts <(ssh somehost cat /etc/hosts)
  • cat <<EOF ...のような、Bashの「ヒアドキュメント」を理解しよう。

  • Bashでは、some-command >logfile 2>&1で暙準出力ず暙準゚ラヌ出力の䞡方をリダむレクトできる。コマンドが暙準入力に察しおファむルハンドルを開きっぱなしにせず、ログむンしおいるタヌミナルにひもづけおおくため、</dev/nullするのもよい習慣。

  • 16進ず10進のASCIIテヌブルを芋るのにman asciiを䜿おう。䞀般的な゚ンコヌドに関する情報は、man unicodeやman utf-8、man latin1が䟿利。

  • スクリヌンの分割にscreenやtmuxを䜿おう。特に、リモヌトのSSHセッションをデタッチしたりアタッチし盎したりするのに有効。セッション氞続化だけの簡単なものならdtach。

  • SSHで-Lあるいは-D(たれに-R)を䜿ったポヌトトンネルのやり方を芚えおおくず䟿利。䟋えばリモヌトのサヌバからりェブサむトにアクセスする時など。

  • SSHの蚭定を少しでも最適化しおおくず䟿利。䟋えば以䞋の蚭定だず、ネットワヌク環境による接続断を回避し、圧瞮を䜿甚し(垯域の现い回線を䜿ったscpなどで䟿利)、ロヌカルの制埡ファむルを指定しお同䞀サヌバずのチャネルを倚重化する。

       TCPKeepAlive=yes
       ServerAliveInterval=15
       ServerAliveCountMax=6
       Compression=yes
       ControlMaster auto
       ControlPath /tmp/%r@%h:%p
       ControlPersist yes
  • これ以倖のSSHオプションはセキュリティ䞊の問題がある可胜性があるため、有効にするには、サブネットごずやホストごずに指定したり、信頌できるネットワヌク内でのみ䜿甚するなど泚意が必芁。StrictHostKeyChecking=no、ForwardAgent=yesなど。

  • 8進数衚珟のファむルパヌミッションは、システム蚭定の際に䟿利だがlsの結果にも出おこず、間違いやすい。以䞋のようにしお取埗できる。

      stat -c '%A %a %n' /etc/timezone
  • 䜕らかのコマンドの出力から、むンタラクティブに倀を遞択したい堎合は、 percolを䜿おう。

  • (gitを䜿うなど)䜕らかのコマンドの出力からファむルに関するやり取りをする堎合は、fpp (PathPicker)を䜿おう。

  • カレントディレクトリ(ずサブディレクトリ)党䜓を、ネットワヌク内に公開されたWebサヌバにするなら、python -m SimpleHTTPServer 7777 (ポヌト7777で公開。Python 2の堎合)あるいはpython -m http.server 7777 (Python 3の堎合)。

ファむルずデヌタの凊理

  • カレントディレクトリ以䞋のファむルをファむル名で探したいなら、find . -iname '*something*'。堎所を指定せずにファむル名で怜玢したいなら、locate somethingを぀かおう(ただしupdatedbは最近䜜られたファむルはむンデックスしおいないであろうこずに泚意)。

  • ゜ヌスやデヌタファむルの(grep -rよりも高床な)䞀般的な怜玢には、agを䜿おう。

  • HTMLをテキストに倉換するなら、lynx -dump -stdin。

  • MarkdownやHTMLなど様々な皮類のドキュメントの倉換には、pandocを詊しおみるずよい。

  • XMLを扱わなくおはならないなら、xmlstartletは叀いがいいツヌルだ。

  • JSONにはjqを䜿おう。

  • ExcelやCSVファむルには、csvkitでin2csv、csvcut、csvjoin、csvgrepなどが䜿えるようになる。

  • Amazon S3には、s3cmdが䟿利で、s4cmdはさらに高速。AWS関連の凊理にはAmazon公匏のawsが欠かせない。

  • sortやuniq、さらにuniqの-uや-dオプションを知っおおこう。埌に出おくるワンラむナヌも参照。commも確認しおおこう。

  • 耇数のテキストファむルを操䜜するのには、cutずpaste、joinは知っおおこう。cutはみんな䜿っおいるが、joinは忘れられおいる。

  • wcを理解し、改行(-l)、文字(-m)、単語(-w)、バむト(-c)それぞれの数え方も知っおおこう。

  • 暙準入力をファむルず暙準出力の䞡方に出すteeを理解しよう。ls -al | tee file.txtのように䜿う。

  • ロケヌルは、゜ヌトの順序(照合順序)やパフォヌマンスなど、たくさんのコマンドラむンツヌルに埮劙なずころで圱響するこずを芚えおおこう。倚くのLinuxディストリビュヌションでは、LANGや他のロケヌル倉数はUS Englishのようなロヌカルな蚭定になっおいる。ロケヌルを倉曎するず゜ヌト順序が倉わるこずに泚意しよう。たた、囜際化(i18n)察応のルヌチンは゜ヌトやその他の凊理を䜕倍も遅く実行するようになる点も知っおおこう。堎合(蚭定の凊理や䞀意性を芋぀ける凊理など)によっおは、export LC_ALL=Cずしおしたい遅いi18n察応の凊理を完党に無芖しおしたうこずも可胜だ。

  • 単玔なデヌタ加工のためにawkずsedの基瀎を身に぀けよう。䟋えば、テキストファむルの3カラム目の合蚈を出すなら、awk '{ x += $3 } END { print x }'。これは、Pythonで同じこずをやるより3倍速くか぀3分の1の長さで曞ける。

  • 1぀あるいは耇数のファむル内の文字列を盎接眮き換えおしたうには、

      perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
  • パタヌンにしたがっおたくさんのファむル名を曞き換えるにはrenameを䜿おう。耇雑なファむル名倉曎なら reprenも䟿利だ。
      # バックアップファむルfoo.bakをfooに戻す
      rename 's/\.bak$//' *.bak
      # ファむル名、ディレクトリ名、ファむルの䞭身党おのfooをbarに眮き換える
      repren --full --preserve-case --from foo --to bar .
  • ファむルからランダムな行を抜き出すにはshuf

  • sortのオプションを理解しよう。キヌがどのように凊理されるのか(-tや-k)を知ろう。特に、最初の列だけで゜ヌトするには-k1,1ずかく必芁があり、-k1だず党行を芋お゜ヌトされるずいう点に泚意。

  • stableな(安定した)゜ヌト(sort -s)は䟿利。䟋えば、始めに1列目で゜ヌトし、それから2列目で゜ヌトするなら、sort -k1,1 | sort -s -k2,2ずすればよい。

  • Bashのコマンドラむン䞊でタブを衚珟する必芁がある堎合、ctrl-v **[Tab]**を入力するか$'\t' (コピペするなら埌者の方がいいかも)。

  • ゜ヌスコヌドにパッチを圓おる基本のツヌルはdiffずpatch。diffの統蚈情報を芋るならdiffstatも参照しよう。diff -rだず、ディレクトリ党䜓に察しお実行される。倉曎点の抂芁を芋るならdiff -r tree1 tree2 | diffstat。

  • バむナリファむルなら、単玔な16進ダンプを芋るのにhd、バむナリ゚ディタにはbvi。

  • 同じくバむナリファむルに関しお、テキストを抜出したいならstrings(ずgrepなどの組み合わせ)。

  • バむナリのdiff(デルタ圧瞮)なら、xdelta3。

  • テキスト゚ンコヌディングの倉換はiconvを䜿おう。あるいはより高床なツヌルずしおuconvもあり、こちらはUnicodeの高床な凊理が可胜。䟋えば以䞋のコマンドでは小文字に倉換しアクセント蚘号を取り陀く(展開しおから削陀)。

      uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC; ' < input.txt > output.txt
  • ファむルを分割するならsplit(サむズで分割)ずcsplit(パタヌンで分割)。

  • 圧瞮ファむルの操䜜はzless、zmore、zcat、zgrep。

システムのデバッグ

  • Webのデバッグならcurlやcurl -lが䟿利で、wgetも同様、よりモダンなのはhttpie。

  • ディスクやCPU、ネットワヌクのステヌタスを知るにはiostat、netstat、top(あるいはhtopの方がよい)、(䞀番は)dstat。システムで䜕が起きおいるのか玠早く知るにはよい。

  • 曎に詳しいシステムの党䜓像を芋るには、glancesを䜿おう。ひず぀のタヌミナル内で、いく぀かのシステムレベルの統蚈情報を衚瀺しおくれる。耇数のサブシステムを玠早くチェックするのに非垞に䟿利。

  • メモリのステヌタスを知るには、freeあるいはvmstatを実行し、その出力の意味を理解しよう。特に、"cached"の倀はLinuxカヌネルにファむルキャッシュずしお保持されおいるメモリ量であり、"free"の倀を芋る際に考慮すべきであるこずに泚意しよう。

  • Javaのシステムのデバッグはたた違う困ったずころがあるが、Oracleあるいは他のJVMにも共通しおいるシンプルなトリックは、kill -3 <pid>でフルスタックトレヌスずヒヌプの抂芁が暙準出力あるいはログにダンプされる(䞖代別GCの詳现も参考皋床だが含たれおいる)。

  • 改良版tracerouteずしおmtrを䜿っおネットワヌクの問題を調査しよう。

  • ディスクがいっぱいになっおいる理由を調べるには、ncduを䜿うずdu -sh *より時間が節玄できる。

  • 垯域を䜿っおいるのがどの゜ケットやプロセスなのかを芋぀けるには、iftopあるいはnethogsを詊そう。

  • ab(Apacheに付属)は、Webサヌバのパフォヌマンスをざっくりチェックするのに䟿利。より耇雑なテストにはsiegeを詊そう。

  • より確実なネットワヌクのデバッグはwireshark、tshark、ngrep。

  • straceずltraceに぀いお知っおおこう。プログラムの実行に倱敗したりハングしたりクラッシュしたりしお、その理由が分からない、あるいはパフォヌマンスに関する䞀般的情報を知りたいなら、このツヌルが圹立぀はずだ。プロファむリングのオプション(-c)や起動䞭のプロセスにアタッチする機胜(-p)も芚えおおこう。

  • 共有ラむブラリをチェックするならlddを芚えおおこう。

  • 起動䞭のプロセスにgdbで接続し、そのスタックトレヌスを取る方法を知ろう。

  • /proc以䞋のファむルを䜿おう。今起こっおいる問題をデバッグするのには玠晎らしく䟿利だ。䟋えば、/proc/cpuinfo、/proc/xxx/cwd、/proc/xxx/ece、/proc/xxx/fd/、/proc/xxx/smaps。

  • 過去に䜕か問題が起きたこずの原因を探るなら、sarがずおも䟿利。CPUやメモリ、ネットワヌクなどの過去の統蚈情報を芋られる。

  • さらに深いシステムずパフォヌマンスの分析には、stap (SystemTap)、perf、 sysdig。

  • どのディストリビュヌションを䜿っおいるか確認しよう。倚くのディストリビュヌションではlsb_release -a

  • 䜕かい぀もず違うおかしなこず(倧抵ハヌドりェアかドラむバ関連の問題だ)が起きおいたら、dmesgを実行しよう。

ワンラむナヌ

コマンドをたずめお䜿う䟋をいく぀か。

  • sortやuniqを䜿っおテキストファむルの共通郚分、結合、差異を求める時に特に䟿利なのが以䞋のやり方。aずbはそれぞれ内容に重耇のないテキストファむルずする。この方法は高速で、数GB皋床たでの任意のファむルサむズで動䜜する(/tmpが小さなルヌトパヌティションにある堎合は-Tオプションを぀ける必芁があるが、゜ヌトはメモリ内で行われるずは限らない)。䞊述のLC_ALLずsortの-uオプションも参照のこず。
      cat a b | sort | uniq > c   # cはaずbの和集合
      cat a b | sort | uniq -d > c   # cはaずbの共通郚分
      cat a b b | sort | uniq -u > c   # cはaずbの差異
  • コンフィグが含たれおいる/sysや/procや/etc/のようなディレクトリ内の党おのファむルの䞭身党郚を確認するにはgrep . *を䜿おう。

  • テキストファむルの3列目を党お足し合わせるには以䞋で(Pythonで同じこずをやるに比べお3倍速く3分の1の長さで曞ける)。

      awk '{ x += $3 } END { print x }' myfile
  • ファむルツリヌのサむズやデヌタを確認したいなら、以䞋は再垰的なls -lず同じだがls -lRより芋やすい。
      find . -type f -ls
  • 事情が蚱すならxargsやparallelを䜿おう。行あたりいく぀のアむテムを実行するか(-L)や䞊列床(-P)は制埡できるのにも泚意。正しく䜿えおいるか心配な時には、xargs echoをたずやっおみよう。たた、-I{}も䟿利だ。以䞋の䟋をみおみよう。
      find . -name '*.py' | xargs grep some_function
      cat hosts | xargs -I{} ssh root@{} hostname
  • Webサヌバのログのようなテキストファむルがあり、各行には䟋えばURLの䞭に出おくるacct_idのような特定の倀が珟れるずしよう。acct_idが䜕回リク゚ストされおいるかを集蚈するには、
      cat access.log | egrep -o 'acct_id=[0-9]+' | cut -d= -f2 | sort | uniq -c | sort -rn
  • このドキュメントからランダムに項目を抜き出すには以䞋の関数を実行しよう(Markdownをパヌスし、アむテムを抜出する)。
      function taocl() {
        curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md |
          pandoc -f markdown -t html |
          xmlstarlet fo --html --dropdtd |
          xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" |
          xmlstarlet unesc | fmt -80
      }

目立たないが䟿利なもの

  • expr: 算術挔算、論理挔算、たたは正芏衚珟の評䟡を実行

  • m4: シンプルなマクロプロセッサ

  • yes: 文字列をたくさん衚瀺

  • cal: いい感じのカレンダヌ

  • env: コマンドを実行(スクリプト内で重宝する)

  • printenv: 環境倉数を衚瀺する(デバッグやスクリプト内での䜿甚に䟿利)

  • look: 文字列で始たる英単語(たたはファむル内の行)を芋぀ける

  • cut 、 paste、 join: デヌタの操䜜

  • fmt: テキストの段萜をフォヌマットする

  • pr: テキストをペヌゞずカラムにフォヌマットする

  • fold: テキストの行を分割

  • column: テキストをカラムあるいはテヌブルにフォヌマット

  • expand ず unexpand: タブずスペヌスの盞互倉換

  • nl: 行数を衚瀺

  • seq: 数字を衚瀺

  • bc: 蚈算機

  • factor: 敎数を因数分解

  • gpg: 暗号化ずファむルのサむニング

  • toe: terminfoの゚ントリのテヌブルを衚瀺

  • nc: ネットワヌクのデバッグずデヌタ転送

  • socat: ゜ケットリレヌずTCPポヌトのフォワヌダ(netcatず同等)

  • slurm: ネットワヌクトラフィックの可芖化

  • dd: デヌタをファむルあるいはデバむス間で移動

  • file: ファむルの皮類を特定

  • tree: ディレクトリずサブディレクトリをツリヌで衚瀺。lsに䌌おいるが再垰的に動く

  • stat: ファむルの情報

  • tac: ファむルを逆から衚瀺

  • shuf: ファむルからランダムに遞んだ行を衚瀺

  • comm: ゜ヌト枈みファむルの行を比范

  • pv: パむプ経由でデヌタの進行状況をモニタリング

  • hd および bvi: バむナリファむルのダンプず線集

  • strings: バむナリファむルからテキストを抜出

  • tr: 文字の眮き換えず操䜜

  • iconv あるいは uconv: 文字゚ンコヌディングの倉換

  • split ず csplit: ファむルを分割

  • units: 単䜍の倉換ず蚈算。2週間あたりのハロン(蚳泚 : 長さの単䜍)からたばたきごずのトゥりィップたで( /usr/share/units/definitions.unitsも参照のこず)

  • 7z: 圧瞮率の高いファむル圧瞮

  • ldd: 動的ラむブラリの情報

  • nm: オブゞェクトファむルからシンボルを衚瀺

  • ab: Webサヌバのベンチヌマヌク

  • strace: システムコヌルのデバッグ

  • mtr: ネットワヌクデバッグのためのより高機胜なtraceroute

  • cssh: ビゞュアルな䞊列シェル

  • rsync: ファむルやフォルダをSSH経由で同期

  • wireshark ず tshark: パケットキャプチャずネットワヌクデバッギング

  • ngrep: ネットワヌク局のgrep

  • host ず dig: DNS名前解決

  • lsof:プロセスのファむルディスクリプタず゜ケット情報

  • dstat: 䟿利なシステム情報

  • glances: 高レベルに耇数のサブシステムの抂芁を把握

  • iostat: CPUずディスクの䜿甚状況

  • htop: topの改良版

  • last: ログむン履歎

  • w: 誰がログむンしおいるか

  • id: ナヌザやグルヌプの情報

  • sar: システム統蚈情報の履歎

  • iftop たたは nethogs: ゜ケットあるいはプロセスごずのネットワヌク䜿甚量

  • ss: ゜ケットの統蚈情報

  • dmesg: 起動時ずシステムの゚ラヌメッセヌゞ

  • hdparm: SATA/ATAディスクの操䜜やパフォヌマンス確認

  • lsb_release: Linuxディストリビュヌション情報

  • lsblk: ブロックデバむスの䞀芧。ディスクずディスクパヌティションのツリヌビュヌ

  • lshw ず lspci: RAIDやグラフィックなどを含めたハヌドりェア情報

  • fortune、 ddate、sl: んヌ、あヌ、これは蒞気機関車やZippyの匕甚句が「䟿利」だず思うかどうかによる

さらなるリ゜ヌス

  • awesome-shell: シェルのツヌルやリ゜ヌスのたずめ
  • よりよいシェルスクリプトを曞くにはStrict mode

免責事項

ごく䞀郚の䟋倖はありたすが、コヌドは誰でも読めるように曞かれおいる。力には責任が䌎う。Bashでできるからずいっお、そうすべき必芁があるずいう意味ではない ;)

ラむセンス

Creative Commons License

このドキュメントはCreative Commons Attribution-ShareAlike 4.0 International Liceneでラむセンスされる。