GNU/Linux >> Linux の 問題 >  >> Linux

Moreutils –より便利なUnixユーティリティのコレクション

GNUコアユーティリティについては誰もが知っています これは、すべてのLinuxおよびUnixライクなオペレーティングシステムにプリインストールされています。これらは、GNUオペレーティングシステムの基本的なファイル、シェル、およびテキスト操作ユーティリティです。 GNUコアユーティリティには、cat、ls、rm、mkdir、rmdir、touch、tail、wcなど、日常の操作を実行するためのコマンドが含まれています。これらのユーティリティの中には、Unixライクなオペレーティングシステムにデフォルトで含まれていないUnixユーティリティの便利なコレクションもいくつかあります。 moreutilisに会う 、より便利なUnixユーティリティのコレクションが増えています。 moreutilsは、GNU / Linux、およびFreeBSD、openBSD、MacOSなどのさまざまなUnixフレーバーにインストールできます。

このガイドを書いている時点で、Moreutilsは次のユーティリティを提供しています。

  • 慢性 -失敗しない限り、コマンドを静かに実行します。
  • 組み合わせる -ブール演算を使用して2つのファイルの行を結合します。
  • errno -errnoの名前と説明を検索します。
  • ifdata -ifconfig出力を解析せずにネットワークインターフェイス情報を取得します。
  • ifne -標準入力が空でない場合は、プログラムを実行します。
  • isutf8 -ファイルまたは標準入力がutf-8であるかどうかを確認します。
  • lckdo -ロックを保持したままプログラムを実行します。
  • ミスパイプ -2つのコマンドをパイプ処理し、最初のコマンドの終了ステータスを返します。
  • 並列 -一度に複数のジョブを実行します。
  • おしっこ -パイプへの標準入力をティーします。
  • スポンジ -標準入力を吸収してファイルに書き込みます。
  • ts -タイムスタンプ標準入力。
  • vidir -テキストエディタでディレクトリを編集します。
  • vipe -テキストエディタをパイプに挿入します。
  • zrun -コマンドへの引数を自動的に解凍します。

Linuxにmoreutilsをインストールする

moreutilsは多くのLinuxディストリビューションにパッケージ化されているため、ディストリビューションのパッケージマネージャーを使用してインストールできます。

Arch Linux およびAntergosなどの派生物 、 Manjaro Linux 、次のコマンドを実行してmoreutilsをインストールします。

$ sudo pacman -S moreutils

Fedora

$ sudo dnf install moreutils

RHEL CentOS Scientific Linux

$ sudo yum install epel-release
$ sudo yum install moreutils

Debian Ubuntu Linux Mint

$ sudo apt-get install moreutils

Moreutils-より便利なUnixユーティリティのコレクション

moreutilsツールの使用法の詳細を見てみましょう。

「結合」ユーティリティ

名前が示すように、結合 ユーティリティは、「and」、「not」、「or」、「xor」などのブール演算を使用して、2つのファイルの行のセットを結合します。

  • および -file2にも存在する場合は、file1にある行を出力します。
  • ない -file1にはあるがfile2にはない行を出力します。
  • または -file1またはfile2にある行を出力します。
  • xor -file1またはfile2のいずれかにあるが、両方のファイルにはない行を出力します。

このユーティリティが何をするのかを正確に理解できるように、例を示しましょう。 file1という2つのファイルがあります およびfile2 。これら2つのファイルの内容は次のとおりです。

$ cat file1
is
was
were
where
there
$ cat file2
is
were
there

ここで、「and」ブール演算を使用してそれらを組み合わせます。

$ combine file1 and file2
is
were
there

上記の例でわかるように、「and」ブール演算子は、file2にも存在する場合、file1にある行を出力します。これをより明確にするために、両方のファイルに存在する共通の行(例:is、were、there)が表示されます。

「not」演算子を使用して結果を確認しましょう。

$ combine file1 not file2
was
where

上記の出力にあるように、「not」演算子は、file1にのみ存在し、file2には存在しない行を表示します。

「ifdata」ユーティリティ

「ifdata」ユーティリティを使用して、ネットワークインターフェイスの存在を確認し、IPアドレスなどのネットワークインターフェイスに関する情報を取得できます。 「ifconfig」や「ip」などの組み込みコマンドとは異なり、ifdataは、シェルスクリプトで簡単に使用できるように設計された、解析が簡単な出力を備えています。

ネットワークインターフェース(wlp9s0など)のIPアドレスの詳細を表示するには、次のコマンドを実行します。

$ ifdata -p wlp9s0
192.168.43.192 255.255.255.0 192.168.43.255 1500

ネットマスクのみを表示するには、次のコマンドを実行します:

$ ifdata -pn wlp9s0
255.255.255.0

NICのハードウェアアドレスを確認するには:

$ ifdata -ph wlp9s0
A0:15:46:90:12:3E

NICが存在するかどうかを確認するには、「-pe」フラグを使用します。

$ ifdata -pe wlp9s0
yes

「おしっこ」コマンド

これは「tee」コマンドにいくぶん似ています。

「tee」コマンドの使用例を見てみましょう。

$ echo "Welcome to OSTechNIx" | tee file1 file2
Welcome to OSTechNIx

上記のコマンドは、2つのファイル、つまり file1を作成します。 およびfile2 。次に、両方のファイルに「WelcometoOSTechNix」という行を追加します。そして最後に、「WelcometoOSTechNix」というメッセージをターミナルに出力します。

「Pee」コマンドは同様の機能を実行しますが、「tee」コマンドとは少し異なります。次のコマンドを見てください:

$ echo "Welcome to OSTechNIx" | pee cat cat
Welcome to OSTechNIx
Welcome to OSTechNIx

上記の出力からわかるように、「cat」コマンドの2つのインスタンスは、「echo」コマンドからの出力を受け取り、ターミナルに2回表示します。

「スポンジ」ユーティリティ

これは、moreutilsパッケージのもう1つの便利なユーティリティです。 スポンジ 標準入力を読み取り、指定されたファイルに書き込みます。シェルリダイレクトとは異なり、スポンジは出力ファイルを書き込む前にすべての入力を吸収します。

次のテキストファイルの内容をご覧ください。

$ cat file1 
I
You
Me
We
Us

ご覧のとおり、ファイルにはいくつかのランダムな行が含まれており、特にアルファベット順に「not」です。内容をアルファベット順に並べ替えたい。どうしますか?

$ sort file1 > file1_sorted

正解ですね。もちろん!上記のコマンドでわかるように、 file1の内容を並べ替えました アルファベット順に、 "file1_sorted"という新しいファイルに保存しました 。ただし、以下に示すように、「sponge」コマンドを使用して、新しい(つまり、file1_sorted)を作成せずに同じことを行うことができます。

$ sort file1 | sponge file1

次に、内容がアルファベット順にソートされているかどうかを確認します。

$ cat file1 
I
Me
Us
We
You

見る?新しいファイルを作成する必要はありません。スクリプト作成に非常に役立ちます。そして、良いことは、出力ファイルがすでに存在する場合、spongeが出力ファイルのアクセス許可を保持することです。

「ts」ユーティリティ

「ts」ユーティリティは、Linuxコマンドの出力の各行の先頭にタイムスタンプを出力します。

次のコマンドの出力を見てください:

$ ping -c 2 localhost
PING localhost(localhost.localdomain (::1)) 56 data bytes
64 bytes from localhost.localdomain (::1): icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from localhost.localdomain (::1): icmp_seq=2 ttl=64 time=0.079 ms

--- localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1018ms
rtt min/avg/max/mdev = 0.055/0.067/0.079/0.012 ms

次に、以下に示すように、「ts」ユーティリティを使用して同じコマンドを実行します。

$ ping -c 2 localhost | ts
Aug 21 13:32:28 PING localhost(localhost (::1)) 56 data bytes
Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.063 ms
Aug 21 13:32:28 64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.113 ms
Aug 21 13:32:28 
Aug 21 13:32:28 --- localhost ping statistics ---
Aug 21 13:32:28 2 packets transmitted, 2 received, 0% packet loss, time 4ms
Aug 21 13:32:28 rtt min/avg/max/mdev = 0.063/0.088/0.113/0.025 ms

上記の出力でわかるように、tsは各行の先頭にタイムスタンプを追加します。別の例を示します。

$ ls -l | ts
Aug 21 13:34:25 total 120
Aug 21 13:34:25 drwxr-xr-x  2 sk users 12288 Aug 20 20:05 Desktop
Aug 21 13:34:25 drwxr-xr-x  2 sk users  4096 Aug 10 18:44 Documents
Aug 21 13:34:25 drwxr-xr-x 24 sk users 12288 Aug 21 13:06 Downloads
[...]

「Vidir」ユーティリティ

「Vidir」ユーティリティを使用すると、 viで指定したディレクトリの内容を編集できます。 エディター(または、 $ EDITORにあるものは何でも )。ディレクトリが指定されていない場合は、現在の作業ディレクトリが編集されます。

次のコマンドは、「デスクトップ」というディレクトリの内容を編集します。

$ vidir Desktop/

vidirでディレクトリのコンテンツを編集する

上記のコマンドは、 viで指定されたディレクトリを開きます 編集者。編集ディレクトリの各項目には番号が含まれます。これで、viエディターで行うのと同じようにファイルを編集できます。たとえば、行を削除してディレクトリからファイルを削除したり、ファイル名を編集してファイルの名前を変更したりします。

サブディレクトリも編集できます。次のコマンドは、現在の作業ディレクトリとそのサブディレクトリを編集します。

$ find | vidir -

コマンドの最後にある「-」に注意してください。編集するディレクトリとして「-」が指定されている場合、stdinからファイル名のリストを読み取り、編集用のファイル名を表示します。

現在の作業ディレクトリ内のファイルのみを編集する場合は、次のコマンドを使用できます。

$ find -type f | vidir -

特定のファイルタイプ、たとえば.PNGファイルを編集したいですか?次に、以下を使用します:

$ vidir *.png

このコマンドは、現在のディレクトリ内の.pngファイルのみを編集します。

「Vipe」ユーティリティ

「vipe」コマンドを使用すると、Unixパイプラインの途中でデフォルトのエディターを実行し、プログラム間でパイプされるデータを編集できます。

次のコマンドは、viエディター(もちろんデフォルトのエディター)を開き、「echo」コマンドの入力(つまり、Welcome To OSTechNix)を編集して、最終結果を表示できるようにします。

$ echo "Welcome to OSTechNIx" | vipe
Hello World

上記の出力にあるように、入力「Welcome to OSTechNix」をviエディターに渡し、「Hello World」として編集して、最終出力を表示しました。

推奨ダウンロード -無料の電子書籍:「5日間でLinuxを学ぶ」

そして、今のところこれですべてです。私はいくつかのユーティリティだけをカバーしました。 「moreutils」には、より便利なユーティリティがあります。紹介セクションで、moreutilsパッケージに現在含まれているユーティリティについてはすでに説明しました。上記のコマンドの詳細については、マニュアルページを参照してください。たとえば、「vidir」コマンドについて詳しく知るには、次のコマンドを実行します。

$ man vidir

これがお役に立てば幸いです。


Linux
  1. これらのヒントを使用して、Bashの履歴をより便利にします

  2. Linux – LinuxはUnixですか?

  3. 少ないだけではありませんか?

  1. この巧妙なトリックでduの出力をより便利にします

  2. 便利なpsオプション

  3. Linux は Unix ですか?

  1. Unix Bourne Shellの配列?

  2. Mac Os X Unixですか?

  3. Unixケースの正規表現?