スクリーンの分割にscreenやtmuxを使おう。リモートのSSHセッションをデタッチしたりアタッチし直したりするのに有効。セッション永続化だけの簡単なものならdtach。SSHで-Lあるいは-D(まれに-R)を使ったポートトンネルのやり方を覚えておくと便利。リモートのサーバからウェブサイトにアクセスする時など。SSHの設定を少しでも最適化しておくと便利。以下の設定だと、ネットワーク環境による接続断を回避し、圧縮を使用し(帯域の細い回線を使ったscpなどで便利)、ローカルの制御ファイルを指定して同一サーバとのチャネルを多重化する。yesこれ以外のSSHオプションはセキュリティ上の問題がある可能性があるため、有効にするには、サブネットごとやホストごとに指定したり、信頼できるネットワーク内でのみ使用するなど注意が必要。StrictHostKeyChecking=no、ForwardAgent=yesなど。8進数表現のファイルパーミッションは、システム設定の際に便利だがlsの結果にも出てこず、間違いやすい。以下のようにして取得できる。percolを使おう。(PathPicker)を使おう。(ポート7777で公開。'*something*'。somethingをつかおう(ただしupdatedbは最近作られたファイルはインデックスしていないであろうことに注意)。-rよりも高度な)一般的な検索には、agを使おう。MarkdownやHTMLなど様々な種類のドキュメントの変換には、pandocを試してみるとよい。XMLを扱わなくてはならないなら、xmlstartletは古いがいいツールだ。JSONにはjqを使おう。ExcelやCSVファイルには、csvkitでin2csv、csvcut、csvjoin、csvgrepなどが使えるようになる。S3には、s3cmdが便利で、s4cmdはさらに高速。AWS関連の処理にはAmazon公式のawsが欠かせない。sortやuniq、さらにuniqの-uや-dオプションを知っておこう。後に出てくるワンライナーも参照。commも確認しておこう。複数のテキストファイルを操作するのには、cutとpaste、joinは知っておこう。cutはみんな使っているが、joinは忘れられている。wcを理解し、改行(-l)、文字(-m)、単語(-w)、バイト(-c)それぞれの数え方も知っておこう。標準入力をファイルと標準出力の両方に出すteeを理解しよう。file.txtのように使う。ロケールは、ソートの順序(照合順序)やパフォーマンスなど、たくさんのコマンドラインツールに微妙なところで影響することを覚えておこう。Englishのようなローカルな設定になっている。ロケールを変更するとソート順序が変わることに注意しよう。国際化(i18n)対応のルーチンはソートやその他の処理を何倍も遅く実行するようになる点も知っておこう。LC_ALL=Cとしてしまい遅いi18n対応の処理を完全に無視してしまうことも可能だ。単純なデータ加工のためにawkとsedの基礎を身につけよう。これは、Pythonで同じことをやるより3倍速くかつ3分の1の長さで書ける。my-files-*.txtパターンにしたがってたくさんのファイル名を書き換えるにはrenameを使おう。reprenも便利だ。.ファイルからランダムな行を抜き出すにはshufsortのオプションを理解しよう。キーがどのように処理されるのか(-tや-k)を知ろう。最初の列だけでソートするには-k1,1とかく必要があり、-k1だと全行を見てソートされるという点に注意。-k2,2とすればよい。(コピペするなら後者の方がいいかも)。ソースコードにパッチを当てる基本のツールはdiffとpatch。diffの統計情報を見るならdiffstatも参照しよう。-rだと、ディレクトリ全体に対して実行される。バイナリファイルなら、単純な16進ダンプを見るのにhd、バイナリエディタにはbvi。バイナリファイルに関して、テキストを抽出したいならstrings(とgrepなどの組み合わせ)。バイナリのdiff(デルタ圧縮)なら、xdelta3。テキストエンコーディングの変換はiconvを使おう。高度なツールとしてuconvもあり、こちらはUnicodeの高度な処理が可能。以下のコマンドでは小文字に変換しアクセント記号を取り除く(展開してから削除)。output.txtファイルを分割するならsplit(サイズで分割)とcsplit(パターンで分割)。圧縮ファイルの操作はzless、zmore、zcat、zgrep。-lが便利で、wgetも同様、よりモダンなのはhttpie。ディスクやCPU、ネットワークのステータスを知るにはiostat、netstat、top(あるいはhtopの方がよい)、(一番は)dstat。システムで何が起きているのか素早く知るにはよい。詳しいシステムの全体像を見るには、glancesを使おう。ひとつのターミナル内で、いくつかのシステムレベルの統計情報を表示してくれる。複数のサブシステムを素早くチェックするのに非常に便利。メモリのステータスを知るには、freeあるいはvmstatを実行し、その出力の意味を理解しよう。"cached"の値はLinuxカーネルにファイルキャッシュとして保持されているメモリ量であり、"free"の値を見る際に考慮すべきであることに注意しよう。<pid>でフルスタックトレースとヒープの概要が標準出力あるいはログにダンプされる(世代別GCの詳細も参考程度だが含まれている)。改良版tracerouteとしてmtrを使ってネットワークの問題を調査しよう。*より時間が節約できる。帯域を使っているのがどのソケットやプロセスなのかを見つけるには、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やメモリ、ネットワークなどの過去の統計情報を見られる。どのディストリビューションを使っているか確認しよう。-a何かいつもと違うおかしなこと(大抵ハードウェアかドライバ関連の問題だ)が起きていたら、dmesgを実行しよう。ワンライナーコマンドをまとめて使う例をいくつか。求める時に特に便利なのが以下のやり方。aとbはそれぞれ内容に重複のないテキストファイルとする。この方法は高速で、数GB程度までの任意のファイルサイズで動作する(/tmpが小さなルートパーティションにある場合は-Tオプションをつける必要があるが、ソートはメモリ内で行われるとは限らない)。上述のLC_ALLとsortの-uオプションも参照のこと。テキストファイルの3列目を全て足し合わせるには以下で(Pythonで同じことをやるに比べて3倍速く3分の1の長さで書ける)。-ls事情が許すならxargsやparallelを使おう。行あたりいくつのアイテムを実行するか(-L)や並列度(-P)は制御できるのにも注意。echoをまずやってみよう。以下の例をみてみよう。hostnameWebサーバのログのようなテキストファイルがあり、各行には例えばURLの中に出てくるacct_idのような特定の値が現れるとしよう。-rnこのドキュメントからランダムに項目を抜き出すには以下の関数を実行しよう(Markdownをパースし、アイテムを抽出する)。ディレクトリとサブディレクトリをツリーで表示。ブロックデバイスの一覧。mode免責事項ごく一部の例外はありますが、コードは誰でも読めるように書かれています。力には責任が伴います。Liceneでライセンスされます。@yakstcom_req_jaYakstYakstお問い合わせ。