パイプラインとは。Linuxコマンドの便利な使い方を紹介!

サーバーOSとしてLinuxを扱う場合、オペレーションはほとんどCUI(コマンドラインインタフェース)で実行する人が多いでしょう。

コマンドを覚える必要があるため難易度が高いと感じる方もいるかもしれませんが、基本的なコマンドさえ覚えてしまえば、それほど難しくはありません。

それだけではなく、CUIでは複雑な操作を簡単にできる便利な機能が多数あります。

その代表的なものがパイプライン「|」です。

本記事では、パイプラインをつかった便利なコマンドを紹介します。

LinuxVPSで利用するなら
ミライサーバー

\ 2週間無料でお試しできます! /
VPSを使ってみる

パイプラインとは

パイプラインの使い方

パイプラインは略してパイプとよばれ、「|」を使います。

「|」は日本語キーボードでShiftキーを押しながら¥マークのキーを押します。

基本的な使い方としては、コマンドとコマンドの間に記述し、2つのコマンドをつなぎます。

$ コマンド1 | コマンド2

このように、パイプ「|」によって繋がった一連の処理を「パイプライン処理」と呼びます。

パイプライン処理は例のように2つつなぐだけでなく、いくつもつなぐことができます。

$ コマンド1 | コマンド2  | コマンド3  | コマンド4  | コマンド5 

このようにつないでいけば複数のコマンドを1行で実行することも可能です。

パイプラインの意味

コマンドとコマンドをパイプでつなぐと、「最初のコマンドの結果を次のコマンドの入力として渡す」ことができます。

例えば、以下のようなコマンドを実行したとします。

$ ps -ef | grep java

grepは、指定した文字列が存在する行を抽出するコマンドです。

上記コマンドは「ps -ef」コマンドの結果を入力として、grepの処理を行います。

つまり「”ps -ef”のコマンドの結果から、『java』の文字列が存在する行を抽出する」処理を行います。

このように、パイプでつなぐことで前のコマンドの結果をもとに次のコマンドを実行する、ということができます。

これをさらに以下のようにつないでいくと

$ ps -ef | grep java | sort -r

grep コマンドの実行結果が複数行抽出された際に、sortで並び替えを行った結果が表示されます。

パイプを使えば、コマンドをいくつもつないでいくことで、目的の結果を1行のコマンドで実行することが可能です。

\ 2週間無料でお試しできます! /
VPSを使ってみる

パイプラインを使った基本的なコマンド

前提条件

ここからは、パイプラインをつかってサーバー運用でよく使用する基本的なコマンドを紹介します。

本記事でご紹介するコマンド結果の画面は、ミライサーバーのVPSを利用し、仮想マシン上に構築されたUbuntuを使用しています。

・Ubuntuのバージョン:Ubuntu 22.04.2 LTS

ミライサーバーではUbuntu 22.04.2 LTSなどのOSをインストールした状態からお使いいただけます。

また、コマンド結果をわかりやすく説明するため、サンプルとして以下のファイルを使用します。

出力結果の行数をカウント

以下の例では、/etcディレクトリ内にあるファイルやディレクトリの数をカウントした結果を表示します。

$ ls -l /etc | wc -l

「wc -l」をパイプでつなぐと、psコマンド(プロセス一覧)やcat(ファイルの中身)の行数など、さまざまなコマンド結果の行数を出力できます。

出力結果を標準出力とファイルに出力

teeコマンドをパイプで連結すると、コマンド結果を標準出力とファイルの両方に出力できます。

作業をしながら、実行結果をファイルに残したい場合に便利です。

$ echo “Hello World!” | tee file.txt

出力結果をソート

sortコマンドをパイプで連結すると、コマンド結果を並び替えできます。

例えば、sample.txtの内容を逆順にソートしたい場合は、以下のコマンドを実行します。

$ cat sample.txt | sort -r

さらに、重複行を削除したい場合は、uniqコマンドで連結します。

$ cat sample.txt | sort -r | uniq

\ 2週間無料でお試しできます! /
VPSを使ってみる

パイプラインをつかった便利なコマンド

ここからは、パイプをつかったさらに便利なコマンドを紹介します。

サーバー運用などの作業でぜひご活用ください。

xargsコマンド

パイプを使うと、次のコマンドの入力に使えますが、コマンドの引数として使用することができません。

例えば『カレントディレクトリの中から「txt」とつくファイル名の中身を出力する』ということで以下のコマンドを実行したとします。

$ ls | grep txt | cat

しかし、実際はgrepコマンドの結果が出力され、catコマンドによる「ファイルの中身を出力する」結果が出力されません。

これは、catコマンドの引数としてgrepコマンドの結果が渡されていないためです。

このように、パイプはコマンドの結果を標準出力に出力しますが、コマンドの引数として出力結果を渡すことができません。

コマンドの結果を次のコマンドの引数として渡したい場合は、「xargs」コマンドを使用します。

先ほどの『catコマンドの引数にコマンド結果を渡したい』場合は、以下のように実行します。

$ ls | grep txt | xargs cat

先ほどと異なり、catコマンドにgrepコマンドの実行結果(sample.txt)が渡され、sample.txtの中身が表示されました。

このように、パイプとxargsコマンドを組み合わせることで、より複雑なコマンドを実行できるようになります。

findコマンド

findコマンドは、ファイルを検索するコマンドです。

オプションを利用することで指定したファイルやディレクトリを検索できるだけでなく、「〇日以前に更新されたファイル」などの条件を付けて検索することも可能です。

findコマンドもパイプと組み合わせることで、複雑な処理を一度に行うことができます。

例えば、以下のコマンドでは、findコマンドによりlogディレクトリ配下にある10日以前に更新されたファイルを検索し、結果のファイルを全て削除することができます。

※実際に行う場合は、必要なファイルがないか確認してください。

$ find ./log -mtime +10 -type f | xargs rm

これは、ログファイルなど不要なファイルがディレクトリ内に大量にある場合に一括削除できるので便利です。

他にも、ファイルの中から任意の文字列を一度に検索することも可能です。

例えば、以下のコマンドでは「test」ディレクトリの中にあるtxtファイルから、「apple」の文字列があるファイルを検索しています。

$ find ./test -type f -name “*.txt” | xargs grep “apple”

まとめ

今回はUbuntu上にパイプラインをつかった便利なコマンドを紹介しました。

パイプラインを使えば、多数のコマンドを組み合わせて複雑な処理を1行で実行できます

Linuxを使う上で、パイプラインは頻繁に使うコマンドです。

xargsとの違いも含めて理解し、使いこなせるようになりましょう。

UbuntuをVPSで利用するならミライサーバー

ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。

ミライサーバーのVPSでは、高速処理が可能なSSD全プランに搭載しています。

OSは、UbuntuDebianAlmaLinuxなどの豊富なラインアップから選択することができます。

2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。

▼ミライサーバーについてはこちら▼Unix系OS専門のホスティングサービス「ミライサーバー」

プランの選択でお困りの場合は、ぜひ一度お問い合わせください。

お問い合わせはこちら

VPSなら「ミライサーバー」

・全プランSSD搭載
・2週間無料

▶ ミライサーバーを無料で試す

関連記事

特集記事

TOP