これら 4 つの小さな Linux コマンドを使用すると、複雑な端末タスクが楽になります。

in tech

Linux には数千のコマンドがあり、私たちのほとんどは同じ数十のコマンドに頼っています。どうしても必要な場合を除いて、10 個を超えるものは使用しない人も多いでしょう。しかし、残りの部分に隠れて、小規模な電力会社が静かに重労働を行っていることが判明しました。ベテランユーザーですらその存在を忘れてしまう4つと、それらが輝くシチュエーションをご紹介します。

xargs

パイプ入力したものからコマンドを構築して実行します

ほとんどの人は、コマンドがファイルの長いリストの受け入れを拒否したときに初めて xargs に遭遇します。このツールは、標準入力に到着したものをすべて読み取り、それを別のコマンドの引数に変換し、リストをバッチに分割して、システムの引数制限を超えないようにします。このシンプルなアイデアにより、パイプラインは、テキストを渡すだけでそこからコマンドを構築しない単純なパイプよりもはるかに高機能になります。

古典的な例では、これを find と組み合わせます。ランニング find . -name "*.log" -print0 | xargs -0 rm 一致するログ ファイルをすべて削除し、null で区切ったオプションを使用すると、ファイル名にスペースや奇数文字が含まれていてもコマンドが中断されることがなくなります。これがないと、「old report.log」というファイルが 2 つの別の名前として扱われるため、事故が発生します。

xargs が本当に評判を得るのは制御です。 -n フラグは、各呼び出しに渡される引数の数を制限します。 -n 1 項目ごとにコマンドを 1 回実行します。の -I flag を使用すると、プレースホルダーを選択できます。これは、コマンドの終わり以外の場所に項目を配置する必要がある場合に便利です。 cp 関連情報は以下のリンクからご確認いただけます /backup/. セーフティネットをご希望の場合は、 -p 実行するたびに確認を求めます。有害なことをする前に良い習慣を身につけてください。

専門家が最も忘れがちな機能は並列処理です。追加 -P 4 xargs は、一度に 4 つのプロセスを実行するように指示します。これにより、大規模なバッチ ジョブの時間を大幅に短縮できます。マルチコア マシンでは、ループを作成したり専用ツールをインストールしたりすることなく、イメージが詰まったフォルダーを圧縮したり、数百のファイルにわたる変換を実行したりする作業がはるかに高速になります。

xargs は引数を受け入れるあらゆるコマンドで動作するため、スクリプト、ワンライナー、クリーンアップ ジョブなどに同様に組み込まれます。それが習慣になると、手作業で作成した for ループの多くが不必要に感じられ、結果として得られるコマンドは短く、高速になり、後で読みやすくなります。

ティー

パイプラインを中断せずにファイルに書き込みます

tee コマンドを表示している Ubuntu の Linux ターミナルのスクリーンショット。

T 字コマンドは T 字型の配管継手にちなんで名付けられており、比較は正確です。標準入力から読み取り、標準出力と 1 つ以上のファイルの両方に同時にデータを書き込みます。つまり、データが宛先に到達するのを止めることなく、パイプラインの途中で何が起こっているかをキャプチャできるということです。

これは思っている以上に便利です。長いビルドまたはインストール スクリプトを実行するときは、出力をパイプします。 tee build.log 後で確認できるように完全な記録を保持しながら、画面上で進行状況を確認できます。ステップ 40 で何かが失敗した場合でも、ログがすでにそこに保存されているため、エラーを確認するためだけにすべてを再実行する必要はなくなります。を追加すると、 -a flag は、既存のファイルを上書きするのではなく追加します。これは、時間の経過とともに増大する実行ログに適しています。

人々を救うトリックには、許可が関係することが最も多いです。ランニング sudo echo “setting” > /etc/some.conf リダイレクトは sudo が関与する前に独自のシェルによって処理されるため、権限エラーで失敗します。テキストをパイプする sudo tee /etc/some.conf tee 自体が昇格された特権で実行され、書き込みを行うため、問題は解決します。追加 -a ファイル全体を置き換えるのではなく行を追加し、テキストをターミナルにエコーバックしたくない場合は出力を /dev/null にリダイレクトします。

Tee は一度に複数のファイルに書き込むこともできるので、データの生のコピーをフィルタリングされたコピーと並べて保存したい場合に役立ちます。プロセス置換と組み合わせると、同じストリームを複数のコマンドにフィードすることもできます。

時計

任意のコマンドを繰り返して、変化を確認します

watch コマンドを表示している Ubuntu の Linux ターミナルのスクリーンショット。

多くの管理者は同じコマンドを何度も入力して、何かが変わるのを待っています。 watch コマンドは、その習慣を終わらせるために存在します。一定の間隔 (デフォルトでは 2 秒) でプログラムを実行し、出力を全画面表示して、各更新で最後の出力を置き換えます。上矢印キーと Enter キーを繰り返し押す代わりに、結果が自動的に更新されるのをただ監視するだけです。

ランニング watch df -h は、大規模なダウンロードまたはバックアップの進行中にディスク容量が減少することを示しています。ディレクトリのリストを監視すると、ファイルがいつ最終的に表示されるか、または予想されるサイズに達するかがわかります。サービスを監視する watch systemctl status、またはネットワーク接続上で watch ss -tnを使用すると、単一のスナップショットから推測するのではなく、修正が実際に機能したことを簡単に確認できます。

2 つのオプションにより、このツールは基本バージョンよりもはるかに便利になります。の -n flag はリフレッシュ間隔を変更するため、 watch -n 1 更新は毎秒行われますが、値を大きくすると、定期的にポーリングするのが無駄になる遅いタスクに適します。の -d flag は、前回の実行と異なる出力部分を強調表示します。これにより、統計の長いテーブルで 1 つのカウンターが上向きに動くなど、微妙な変化がすぐに現れます。それもあります -g、出力が変更されるとすぐに終了します。結果を待つ必要があるスクリプトで役立ちます。

小さな注意点が 1 つあり、注意が必要です。パイプまたは特殊文字を含むコマンドは引用符で囲む必要があります。そうしないと、ウォッチがそれらを認識する前にシェルが解釈してしまいます。

通信

2 つのファイルの共通点と相違点を見つける

comm コマンドを表示している Ubuntu の Linux ターミナルのスクリーンショット。

diff コマンドは、ファイルを比較する必要がある場合に最も注目されますが、テキスト内の変更を出現順に 1 行ずつ検出するために構築されています。実際の質問が、一方のリスト、もう一方、または両方のリストにどの項目が表示されるかということである場合、多くの場合、comm の方が適しています。ソートされた 2 つのファイルを比較し、結果を 3 つの列に出力します。最初のファイルでのみ見つかった行、2 番目のファイルでのみ見つかった行、および両方に共通の行です。

本当の力は列を抑制することから生まれます。 -12 を渡すと、最初の 2 列が非表示になり、ファイルが共有する行のみが残り、実質的に交差が得られます。 -23 を使用すると、最初のファイルに固有のもののみが表示されますが、-13 を使用すると、2 番目のファイルについても同じことが表示されます。これにより、スプレッドシートやスクリプトを必要とせず、インストールされているパッケージ、ユーザー名、電子メール アドレス、ドメイン名の 2 つのリストを比較するなどのタスクがほぼ簡単に実行できるようになります。

覚えておくべき 1 つのルールは、両方の入力をソートする必要があるということです。ソートしないと、comm は混乱を招くまたは不完全な出力を生成し、それについて警告する可能性があります。簡単な解決策はプロセス置換です。これにより、一時ファイルを作成せずにその場で並べ替えることができます。のようなコマンド comm -23 2 つのバージョンのリスト間で消失したすべてのものを 1 つのコマンドでリストします。ソース間で大文字と小文字が異なる場合に大文字と小文字を区別しない比較を実行するには、次のようなツールを使用してテキストを統一した大文字と小文字に変換します。 tr に渡す前に comm。

comm は行全体のみを処理するため、非常に大きなファイルでも高速であり、その出力は xargs や wc などの他のツールに簡単にフィードできます。

時間を大幅に節約する 4 つの小さなコマンド

Xargs、tee、watch、comm はそれぞれ、驚くほど少ない労力で共通の問題を解決します。どれも新しいものでも複雑なものでもないため、見過ごされがちです。これらを念頭に置いておけば、多くのぎこちないループ、繰り返しの入力、一時ファイルを置き換えることができます。

公式情報はこちら

完全ガイドはこちら

関連記事

前の投稿
Android 版 Firefox には 5 つの異なるバージョンがあります (およびそれぞれを使用する理由)
次の投稿
すべての Windows ユーザーがインストールすべき 5 つの必須オープンソース アプリ