この記事シリーズの最初の部分では、Linux でのコマンド ライン ナビゲーションに焦点を当て、cd – コマンドの使用法を検討することで、関連するいくつかの点や概念について説明しました。ここでは、Linux コマンド ラインでのナビゲーション エクスペリエンスを高速化するために、pushd および Popd コマンドを使用する方法を詳しく見ていきます。
始める前に、これ以降で説明するすべての手順とコマンドは Ubuntu 14.04 および Bash シェル (4.3.11) でテストされていることを述べておく価値があります。
pushd および Popd コマンドの役割をより深く理解するために、まずスタックの概念について説明します。キッチンのカウンタートップに空きスペースがあり、そこに食器セットを置きたいと想像してください。どうするかというと、単純に、順番に上に置くだけです。
つまり、プロセス全体の終わりには、まな板上の最初の皿が山の最後の皿となり、あなたの手の最後の皿が山の最初の皿になります。プレートが必要な場合は、山の一番上にあるプレートを選択して使用し、必要に応じて次のプレートを選択します。
pushd コマンドと Popd コマンドは似た概念です。 Linux システムには、将来の使用に備えてディレクトリ パスをスタックできるディレクトリ スタックがあります。 dirs コマンドを使用すると、いつでもスタックの内容をすばやく表示できます。
次の例は、コマンド ライン ターミナルを起動した直後にシステムで dirs コマンドを使用した場合の出力を示しています。 リーリー
出力内のチルダ (~) は、ディレクトリ スタックに現在ユーザーのホーム ディレクトリのみが含まれていることを示します。次に、pushd および Popd コマンドを使用して、ディレクトリ パスを保存し、削除します。 Pushdの使用は非常に簡単です。ディレクトリスタックに保存するパスを引数としてこのコマンドに渡すだけです。以下に例を示します:
リーリー
上記のコマンドは、現在の作業ディレクトリをパラメータとして渡したディレクトリに変更し、パスをディレクトリ スタックに追加します。ユーザーの利便性を考慮して、pushd コマンドは出力にディレクトリ スタックの内容を生成します。したがって、上記のコマンドを実行すると、次の出力が生成されます:
~/ダウンロード ~
出力は、スタック内に 2 つのディレクトリ パスがあることを示しています。1 つはユーザーのホーム ディレクトリで、もう 1 つはユーザーのダウンロード ディレクトリです。メイン ディレクトリが一番下、新しく追加されたダウンロード ディレクトリがその上にあるという順序で保存されます。
リーリー
dirs コマンドでも同じ出力が生成されることがわかります。pushd コマンドをもう一度使用してみましょう:
リーリー
/usr/lib ~/ダウンロード ~~/デスクトップ /usr/lib ~/ダウンロード ~
つまり、ディレクトリ スタックには合計 4 つのディレクトリ パスが含まれており、ホーム ディレクトリ (~) が一番下、ユーザーのデスクトップ ディレクトリが一番上になります。
スタックの先頭が現在のディレクトリであることを必ず覚えておいてください。これは、現在の作業ディレクトリが ~/Desktop になったことを意味します。
ここで、/usr/lib ディレクトリに戻りたいとします。そのため、必要なのは、popd コマンドを実行することだけです。
リーリー
popd コマンドは、現在のディレクトリを /usr/lib に変更するだけでなく、コマンド出力からわかるように、ディレクトリ スタックから ~/Desktop も削除します。このようにして、popd コマンドを使用すると、ディレクトリを逆の順序で参照できるようになります。
ここでの要件は、スタック内のディレクトリ パスの順序を変更し、最上位の要素 (~/Desktop) を一番下に移動し、残りの各要素を 1 つ上の位置に移動することです。これは、次のコマンドを使用して実現できます:
リーリーディレクトリ スタック上の上記のコマンドの結果:
リーリーディレクトリ スタック内の要素の順序が変更され、希望どおりになっていることがわかります。もちろん、ディレクトリ スタック要素は何度でも移動できます。たとえば、次のコマンドはそれらを 2 回上に移動します:
リーリー負のインデックス値も使用できます:
リーリー同様に、この手法を Popd コマンドで使用すると、現在の作業ディレクトリを離れることなく、ディレクトリ スタックからエントリを削除できます。たとえば、popd を使用して上から 3 番目のエントリ (現在は ~/Downloads) を削除する場合は、次のコマンドを実行します。 リーリー
スタック インデックスの初期値は 0 であるため、3 番目のエントリにアクセスするには 2 を使用します。したがって、ディレクトリスタックには次の内容が含まれます:
リーリー
エントリが削除されたことを確認します。
如果由于某些原因,你发现你很难记住元素在目录堆栈中的位置以及它们的索引,你则可以对在 dirs 命令中使用 -v 选项。这里有一个例子:
$ dirs -v 0 /usr/lib 1 ~ 2 ~/Desktop
你可能已经猜到了,左边的数字是索引,接下来跟的是这个索引对应的目录路径。
注意: 在 dir 中使用 -c 选项清除目录堆栈。
现在让我们简要地讨论一下 popd 和 pushd 命令的实际用法。虽然它们第一眼看起来可能有点复杂,但是这些命令在编写 shell 脚本时会派上用场 – 你不需要记住你从哪里来;只要执行一下 popd,你就能回到你来的目录。
经验丰富的脚本编写者通常以以下方式使用这些命令:
popd >/dev/null 2>&1
上述命令确保 popd 保持静默(不产生任何输出)。同样,你也可以静默 pushd。
pushd 和 popd 命令也被 Linux 服务器管理员使用,他们通常在几个相同的目录之间移动。 在这里介绍了一些其他有用的使用场景。
我同意 pushd 和 popd 的概念不是很直接。但是,它需要的只是一点练习 – 是的,你需要多实践。花一些时间在这些命令上,你就会开始喜欢它们,特别是当它们提供了方便时。
以上がLinux システムでのコマンド ライン ツールの使用に関するヒント (2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。