私が説明したすべてが機能するために、前に何かをインストールしたり、スクリプト、構成、またはその他の追加を作成する必要はありません。これらのツールはすべて、UNIXシステムで実行されるほとんどの最新のbashインタープリターでまったく同じように機能します。
私の教育的経験によれば、練習は新しい機能を理解し、愛し、慣れるのに最適な方法であるため、裸のテーブルを描くのではなく、ストーリーを作成しました。手。
カーソルの操作
習慣ではない場合、「ホーム」ボタンを使用して行の先頭に移動し、「終了」ボタンを使用して末尾に移動します。 しかし、コマンドを入力するときにこれらのボタンに到達するのはどれほど快適ですか? Bashは、英数字キーボードから離れ、「Home」の代わりに「Ctrl + A」と「End」の代わりに「Ctrl + E」の組み合わせを使用することをお勧めします。 時には、長いコマンドを入力した後、もう1つやらなければならないことを思い出してください:この場合、「Ctrl + A」を行の先頭に移動し、「#」文字を追加することにより、コマンドをコメントアウトしますが、履歴に残します)、Enterキーを押します。その後、目的のコマンドを実行し、履歴内でコメント化されたコマンドを見つけ、コメント記号を削除して実行します。
カーソルの前後のテキストをクリアするには、次のキーの組み合わせを使用します。「Ctrl + K」-現在のカーソル位置から行末までテキストを削除し、「Ctrl + U」-行頭までテキストを削除します。 そして最後に、「Ctrl + C」で行全体を一度に削除できます。
すぐに単語を削除できます。「Ctrl + W」はカーソルの左側の単語、「Alt + D」-右側の単語を削除します。 ただし、削除された単語もバッファに配置されます。最後に削除された単語は、「Ctrl + Y」の組み合わせを使用して現在のカーソル位置から挿入できます。
多くの場合、急いで2文字を間違った順序で入力できます。この場合、「Ctrl + T」というキーの組み合わせを使用すると便利です。これは、カーソルの前の文字とカーソルの下の文字を置き換えるように設計されています
物語
通常、bash履歴サブシステムの知識は、上下の矢印に限定されます。 作業では、次の機能を使用すると便利です。
- 感嘆符 履歴からコマンドを呼び出します。履歴自体は、履歴コマンドによって番号付きの形式で画面に表示されます。 たとえば、「!5」と入力して履歴から5番目のコマンドを実行し、「!-2」で前のコマンドを実行できます。 前のコマンドは「!!」によって呼び出され、リストの最初のコマンド(逆順)は「ro」で始まり、「!Ro」の組み合わせで使用されます。
- 変数と置換。 多くの場合、前の引数の最後の引数を新しいコマンドに挿入する必要があります。 鮮明な例:コマンドlsで、離れたディレクトリの内容を確認しました。そのディレクトリに移動する必要があります。 再度フルパスを書きませんか? ここでは、Cシェルから継承された置換「!$」またはネイティブ変数「$ _」を使用できます。 両方とも前のコマンドの最後の引数に置き換えられます。 唯一の欠点は、表示および編集できないことです。 この場合、「Alt +。」の組み合わせを使用することをお勧めします。これにより、現在のカーソル位置に目的の引数が挿入され、それで何でもできます。 また、前のコマンドの最後の引数がワイルドカードの場合、「!$」を置き換える代わりに、最後の要素ではなく、このマスクに対応するすべてのテキストが使用されることに注意してください。 前のコマンドの最初の引数を取得することもできます。これには置換 "!^"が使用されますが、実際にはこれはあまり使用されません。
前の行のタイプミスは、詳しく調べることなく修正できます。置換操作「^^」を使用すると、前のコマンドのテキストを新しいものに置き換えて、新しいコマンドを実行できます。 例:
[vorb @ localhost〜] $ ls -l / dev / dsa
ls:/ dev / dsaにアクセスできません:そのようなファイルまたはディレクトリはありません
[vorb @ localhost〜] $ ^ dsa ^ sda
ls -l / dev / sda
brw-rw ---- 1つのルートディスク8、0 Apr 5 03:18 / dev / sda
ここでは、前のコマンドの誤った「dsa」レコードが正しい「sda」に置き換えられ、新しいコマンドが成功します。
ファイルシステムナビゲーション
「TAB」ボタンへの自動追加のような「cd」コマンドは、誰も驚かないでしょう。 しかし、多くの場合、ファイルシステム全体を実行しなければならないため、元に戻る必要があります。 スタックモデルに基づくbashメカニズムはここで役立ちます。これはpushdコマンドとpopdコマンドでサポートされています。pushdはターゲットディレクトリにジャンプし、前のディレクトリの絶対パスをスタックにプッシュしますが、popdは逆にスタックから前のパスを選択してそこに進みます。 例:
[vorb @ localhost〜] $ pushd / var / cache / urpmi / rpms /
/ var /キャッシュ/ urpmi / rpms〜
[vorb @ localhost rpms] $ pushd /etc/urpmi/mediacfg.d/Cooker-2010.0-i586/
/etc/urpmi/mediacfg.d/Cooker-2010.0-i586 / var / cache / urpmi / rpms〜
[vorb @ localhost Cooker-2010.0-i586] $ popd
/ var /キャッシュ/ urpmi / rpms〜
[vorb @ localhost rpms] $ popd
〜
[vorb @ localhost〜] $
この例では、最初にurpmiキャッシュのあるディレクトリに移動し、次にurpmi configsのあるディレクトリに移動してから、キャッシュとホームのあるディレクトリに戻りました。 このメカニズムを使用して解決される最も一般的なタスクの1つは、configsのあるディレクトリに移動し、次にキャッシュのあるディレクトリ、ログ、またはその他のものに移動して、すぐに戻ることができるようにすることです。
ちなみに、「cd」コマンドには独自のトリックもあります。パラメータなしの「cd」は、ディレクトリをホームに、「cd〜user」-ユーザーのホームディレクトリユーザーに変更します。
原則として、これがこの記事のフレームワークで話したいことのすべてです。 もちろん、これはすべてとは程遠いものです。この方向で知識を開発したい場合は、Jerry Peak、Tim O'Reilly、Mike Lukidisの著書「UNIX:Tools」をお勧めします。 それは、bashだけでなく、Cシェル、ksh、およびそれをどれだけ読んだかについても説明しています。
頑張って!