このシリーズの最初のパートでは、 cd-の使用法について説明することにより、Linuxでのコマンドラインナビゲーションの側面に焦点を当てました。 指図。他のいくつかの関連するポイント/概念についても説明しました。さらに議論を進めて、この記事では、pushdコマンドとpopdコマンドを使用してLinuxコマンドラインでより高速なナビゲーションエクスペリエンスを実現する方法について説明します。
先に進む前に、以降に説明するすべての手順とコマンドがUbuntu 14.04とBashシェル(バージョン4.3.11)でテストされていることを共有する価値があります。
正確にプッシュおよびポップされたコマンドが何をするかをよりよく理解するために、最初にスタックの概念について説明しましょう。キッチンスラブの何もない場所を想像してみてください。次に、そこに残しておきたいプレートのセットを想像してみてください。あなたは何をしますか?シンプルで、上下に並べてください。
したがって、プロセス全体の最後に、スラブに保持した最初のプレートがパイルの最後のプレートになり、手に持っていた最後のプレートがパイルの最初のプレートになります。これで、プレートが必要な場合は、パイルの一番上にあるプレートを選択して使用し、必要に応じて次のプレートを選択します。
同様に、プッシュコマンドとポップコマンドの概念もあります。 Linuxシステムには、将来使用するためにディレクトリパスを積み上げることができるディレクトリスタックがあります。 ディレクトリを使用すると、いつでもスタックの内容をすばやく確認できます。 コマンド。
コマンドラインターミナルが起動された直後のシステムでのdirsコマンドの出力を示す例を次に示します。
$ dirs
~
出力のチルダ(〜)は、ディレクトリスタックに現在ユーザーのホームディレクトリのみが含まれていることを意味します。
次に、ディレクトリパスの保存と削除の操作は、pushdコマンドとpopdコマンドを使用して実行されます。 pushdの使用は非常に簡単です。このコマンドの引数として、ディレクトリスタックに保存するパスを渡すだけです。次に例を示します:
pushd /home/himanshu/Downloads/
上記のコマンドは、現在の作業ディレクトリを引数として渡したディレクトリに変更し、ディレクトリスタックへのパスも追加します。ユーザーにとって便利なように、pushdコマンドはディレクトリスタックの内容を出力に生成します。したがって、上記のコマンドを実行すると、次の出力が生成されました。
~/Downloads ~
出力から、スタックに2つのディレクトリパスがあることがわかります。1つはユーザーのホームディレクトリで、もう1つはユーザーのダウンロードディレクトリです。それらが保持される順序は次のとおりです。ホームディレクトリが一番下にあり、新しく追加されたダウンロードディレクトリがその上にあります。
pushdが出力で言っていることが正しいことを確認するには、dirsコマンドを使用することもできます。
$ dirs
~/Downloads ~
したがって、dirsコマンドでも同じ出力が生成されたことがわかります。
さらにいくつかのプッシュコマンドを発行してみましょう:
$ pushd /usr/lib/; pushd /home/himanshu/Desktop/
/usr/lib ~/Downloads ~
~/Desktop /usr/lib ~/Downloads ~
したがって、ディレクトリスタックには合計4つのディレクトリパスが含まれ、ホームディレクトリ(〜)が一番下にあり、ユーザーのデスクトップディレクトリが一番上にあります。
スタックの先頭は現在のディレクトリであることに常に注意してください。これは、現在の作業ディレクトリが〜/Desktopであることを意味します。
ここで、/ usr / libディレクトリに戻りたい場合は、popdコマンドを実行するだけです。
$ popd
/usr/lib ~/Downloads ~
popdコマンドは、現在のディレクトリを/ usr / libに切り替えるだけでなく、コマンドが生成した出力から明らかなように、ディレクトリスタックから〜/Desktopを削除します。このように、popdコマンドを使用すると、これらのディレクトリを逆の順序でナビゲートできます。
pushdコマンドとpopdコマンドの基本について説明したので、これらのコマンドに関連するその他の詳細に移りましょう。まず、これらのコマンドを使用すると、ディレクトリスタックを操作することもできます。たとえば、ディレクトリスタックが次のようになっているとします。
$ dirs
~/Desktop /usr/lib ~ ~/Downloads
ここで、一番上の要素(〜/ Desktop)が一番下に来て、残りがすべて1つずつ上に移動するように、スタック内のディレクトリパスの順序を変更する必要があるとします。これは、次のコマンドを使用して実行できます。
pushd +1
上記のコマンドがディレクトリスタックに対して行うことは次のとおりです。
$ dirs
/usr/lib ~ ~/Downloads ~/Desktop
これで、ディレクトリスタック内の要素の順序が変更され、希望どおりになっていることがわかります。もちろん、ディレクトリスタック要素を何度でも移動させることができます。たとえば、次のコマンドはそれらを2回上に移動します。
$ pushd +2
~/Downloads ~/Desktop /usr/lib ~
負のインデックスも使用できます:
$ pushd -1
/usr/lib ~ ~/Downloads ~/Desktop
同様に、popdコマンドでこの手法を使用すると、現在の作業ディレクトリを離れることなく、ディレクトリスタックからエントリを削除できます。たとえば、popdを使用して3番目のエントリ(現在は〜/ Downloads)を上から削除する場合は、次のコマンドを実行できます。
popd +2
スタックインデックスは0で始まるため、2を使用して3番目のエントリにアクセスしていることに注意してください。
したがって、ディレクトリスタックには次のものが含まれます。
$ dirs
/usr/lib ~ ~/Desktop
エントリが削除されたことを確認します。
何らかの理由で、要素がディレクトリスタックに配置される順序と、要素が保持するインデックスを覚えるのが難しい場合は、dirsコマンドで-vコマンドラインオプションを使用できます。次に例を示します:
$ dirs -v
0 /usr/lib
1 ~
2 ~/Desktop
お気づきかもしれませんが、左側の数字はインデックスであり、その後に続くのはそのインデックスに配置されたディレクトリパスです。
注 :ディレクトリスタックをクリアするには、dirsコマンドで-cコマンドラインオプションを使用します。
次に、popdコマンドとpushedコマンドの実際の使用法について簡単に説明します。一見すると少し複雑に見えるかもしれませんが、これらのコマンドはシェルスクリプトを作成するときに便利です。どこから来たのかを覚えておく必要はありません。 popdを実行するだけで、元のディレクトリに戻ります。
経験豊富なスクリプト作成者は通常、これらのコマンドを次のように使用します。
popd >/dev/null 2>&1
前述のコマンドは、popdがサイレントのままであることを確認します(出力を生成しません)。同様に、サイレントプッシュも可能です。
pushdおよびpopdコマンドは、Linuxサーバー管理者によっても使用されます。管理者は通常、常に少数の同じディレクトリ間を移動します。他のいくつかの本当に有益なユースケースがここで説明されています。
同意しましたが、プッシュとポップの概念はそれほど単純ではありません。しかし、必要なのは少し練習することだけです-はい、手を汚す必要があります。これらのコマンドを使って時間を過ごすと、特にそれらがあなたの生活を楽にするユースケースがある場合は、それらが好きになり始めます。