Linux における「!」の知られざる使用法のまとめ

Linux における「!」の知られざる使用法のまとめ

序文

実際、Linux では、控えめな「!」が驚くほど多くの用途で使用されています。この記事では、「!」の魔法的な使い方について詳しく説明します。詳しい紹介を見てみましょう。

前のコマンドを実行する

たとえば、前のコマンドを実行した後、次の方法を使用して前のコマンドを再度実行できます。

$ whereis bash #コマンドbashを実行: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
$ !! # 前のコマンドをもう一度実行します。bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz

!! は最後に実行されたコマンドを表します。ご覧のとおり、感嘆符を 2 つ入力すると、前のコマンドが表示され、同時に実行されます。もちろん、このタスクを実行するには、通常は「UP」キーを使用することを考えます。しかし、以前のコマンド展開に基づくと、!! の方が便利になります。
たとえば、ファイルを表示したいが、さらに入力し忘れたとします。

$ /opt/user/test.txt #さらに入力するのを忘れました
$以上!! #これならもっと早くないですか?

使ってみてください!!もっと便利じゃないですか?

前のコマンドの最初または最後の引数を使用してコマンドを実行します。

前のコマンドの最後のパラメータを使用する

たとえば、ls を使用してパラメーターなしでディレクトリの内容を一覧表示したが、長いパラメーターを入力せずに -al パラメーターを使用して再度実行したい場合は、次の方法を使用できます。

$ ls /proc/1/task/1/net/tcp
/proc/1/タスク/1/net/tc
$ ls -al !$
ls -al /proc/1/task/1/net/tcp
-r--r--r-- 1 ルート ルート 0 12月22日 17:30 /proc/1/task/1/net/tcp

ここで、!$ は前のコマンドの最後のパラメータを表します。

前のコマンドの最初のパラメータを使用する

前のコマンドの最初のパラメータを使用するには、!^ を使用します。例:

$ ls -al !^

最後のパラメータを削除し、前のコマンドを実行します

最後のパラメータなしで前のコマンドを実行する場合:

$ ls -al dir # dir は非常に長い文字列であると想定します $ !:-
ls -al

どのようなシナリオで使用される可能性がありますか?たとえば、前のコマンドの最後のパラメータが長い文字列で、それを使用せず、バックスペース キーで削除するのに時間がかかる場合は、上記の方法を使用できます。

前のコマンドのすべてのパラメータを使用する

先ほど、前のコマンドの最後のパラメータを使用することを説明しました。最後のパラメータではない場合はどうなるでしょうか?とても簡単です。!* を使用するだけです。たとえば、find コマンドの入力を間違えて修正したい場合、次のようにします。

$ fin -name "test.zip" #ここでの検索語は間違っています。
$ 見つけてください!*
./ -name "test.zip" を検索します
./workspaces/shell/find/test.zip
./workspaces/shell/テスト.zip

前のコマンドで指定したパラメータを使用する

読者の中には、パラメータの 1 つだけを使用したい場合はどうすればよいのかと疑問に思う人もいるかもしれません。 ![コマンド名]:[パラメータ番号]のルールに従ってください。例えば:

$ cp -rf dira dirb/ #diraをdirbにコピー
$ ls -l !cp:2 #diraの内容を表示 ls -l dira
合計 0
-rw-rw-r-- 1 hyb hyb 0 12月22日 17:45 テストファイル

前のコマンドのパラメータが非常に長く、途中でパラメータを使用する必要がある場合、その効果はより顕著になります。

履歴内のコマンドを実行する

履歴コマンドを使用して、以前に実行したコマンドを表示できることは誰もが知っていますが、履歴内のコマンドを再度実行するにはどうすればよいでしょうか。 「UP」キーを使用して表示することもできますが、履歴コマンドが非常に長い場合は、あまり便利ではありません。このようなときは、「!」が便利です。

$ 履歴
(ここではこれ以上の内容を省略します)
2043 ./dira/testfile をタッチ
 2044 cp -rf dira dirb/
 2045 ls -al dira
 2046 ls -l ディラ
 2047 ls -al dira
 2048 ls -l ディラ
 2049 ls -al dira
 2050 ls -l ディラ
 2051年の歴史

history コマンドでは、以前に実行されたコマンドを表示でき、その前に値も表示されることがわかります。前述の cp -rf dira dirb/ コマンドを実行する場合、実際には次のように実行できます。

$ !2044 #2044 は実行された n 番目のコマンドです cp -rf dira dirb/

つまり、履歴コマンドは![履歴コマンド値]を通じて実行されます。

もちろん、最後から 2 番目のコマンドを実行したい場合は、次の方法があります。

$ !-2 #感嘆符の後には負の数が続き、負の数は項目の最後の数を表します

キーワードで履歴コマンドを実行する

!キーワードに基づいてコマンドを実行できます。

キーワードで始まる前のコマンドを実行します

たとえば、前の find コマンドを実行します。

$ !find #findで始まる前のコマンドを実行します

キーワードを含む前のコマンドを実行する

別の例として、name を含む前のコマンドを実行します。

$ find ./ -name "テスト"
。/テスト
./検索/テスト
$ !?名前?
./ -name "テスト" を検索します
。/テスト
./検索/テスト

前のコマンドのパラメータを置き換えます

例えば:

$ find ./ -name "古い*" -a -name "*.zip"

このコマンドで古いものを新しいものに置き換える必要がある場合:

$ !!:gs/古い/新しい

論理否定の役割

これは最もよく使われる機能で、たとえば、cfg で終わるファイルを除くすべてのファイルを削除します。

rm !(*.cfg) # 削除するときは注意してください

ここでは詳細には触れません。

要約する

感嘆符「!」の効果は、確かに時々驚くべきものがあります。先ほども触れたばかりかもしれませんが、他の文字と組み合わせて特定の意味の特定の用途を表しますが、実際には、組み合わせたり拡張したりして、より素晴らしい用途を発見することができます。これについてはここでは詳しく説明しません。他に何か良い発見はありましたか?ぜひメッセージをお寄せください!

さて、以上がこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただきありがとうございます。

この記事の著者: この記事のリンクを見る: https://www.yanbinghu.com/2018/12/22/40915.html
著作権に関する声明: この記事はオリジナル記事であり、著作権は Shouwang に帰属し、CC BY-NC-SA 3.0 ライセンス契約を採用しています。転載をご希望の場合はご連絡ください!

以下もご興味があるかもしれません:
  • Linux での感嘆符コマンド (!) の使用の概要

<<:  React Native の基本原則の深い理解 (Bridge of React Native)

>>:  Mysql 5.6ではユーザー名とパスワードを変更するメソッドが追加されました

推薦する

Vueキャッシュ機能の使い方

目次vue2のキャッシュ機能Vue キャッシュ関数の変換最適化要約するvue2のキャッシュ機能vue...

CSS で背景ぼかし効果を実装するサンプルコード

以下のような効果でしょうか?もしそうなら、ぜひ読み進めてください! コードデモンストレーション(上の...

Linux インストール MySQL5.6.24 使用手順

Linux インストール MySQL ノート1. MySQL データベース サーバーをインストールす...

MySQL 起動時に「サーバーは PID ファイルを更新せずに終了しました」というエラーが報告される理由の詳細な分析

多くの人が MySQL の起動時にこのエラーに遭遇しています。まず、このエラーの前提は、サービス ス...

Vue の計算プロパティ

目次1. 基本的な例2. 計算プロパティキャッシュとメソッド3. 計算プロパティセッター序文:通常、...

Vue2は応答性を提供するためにprovide injectを実装しています

1. vue2 での従来の書き方 // 親コンポーネントは 'foo' を提供します...

Ubuntu 18.04 で MySQL のインストール時にパスワードが要求されない場合の解決方法

Ubuntu 1804 への MySQL 5.7 のインストールについて詳しく紹介します。 MySQ...

高さ:100% が機能しないのはなぜですか?

高さ:100% が機能しないのはなぜですか?この知識は不人気ではありませんが、使用する際には混乱する...

Mysql Explainコマンドの使用と分析

mysql explain コマンドは、MySQL がインデックスを使用して選択ステートメントを処理...

MySQL 5.7.21 winx64 無料インストールバージョン設定方法グラフィックチュートリアル

MySQL 5.7.21 winx64無料インストールバージョンの設定方法、参考までに、具体的な内容...

49 個の JavaScript のヒントとコツ

目次1. js整数の演算2. ネイティブアラートを書き換えてポップアップボックスの数を記録する3. ...

MySQL の列から行への変換と年月グループ化の例

以下のように表示されます。 SELECT count(DISTINCT(a.rect_id)) zc...

HTML の 5 種類のスペースの意味

HTML には、幅の異なる 5 つのスペース エンティティが用意されています。非改行スペース ( )...

CentOS8 システムをベースにした Gitlab を構築するために Docker を使用する詳細なチュートリアル

目次1. Dockerをインストールする2. GitLabをインストールする3. GitLabを初期...

MySQL におけるユニーク制約と NULL の詳細な説明

序文説明を簡略化するために以前に設定した要件は、他のグループから MQ メッセージを受信し、データベ...