Linuxでのディレクトリ切り替えについては、誰もが間違いなくコマンドを考えますcd
。これはLinuxで最も基本的なコマンドです。このコマンドがわからない場合は、すぐに実行できます。
cdコマンドは確かに非常に便利ですが、次のディレクトリで頻繁に切り替える必要がある場合は、自分の人生を疑う必要があるかもしれません。
/home/alvin/projects/blogdemos/linux-system-programming/thread
/home/alvin/projects/blogdemos/diff
/home/harry/study/日本文化/中日交流/影视业/动作片
cdコマンドしか使用できない場合は、気が狂うまでcdを維持する必要があります。
この場合、ディレクトリを効率的に切り替えるにはどうすればよいですか?梁は、3を導入すると約束しpushd
たコマンドを:popd
、dirs
、。
これらの3つのコマンドは実際に目录栈
動作するものであり目录栈
、スタック構造を保存するためのディレクトリです。スタック構造の最上位は常に現在のディレクトリを保持します(黒板をたたく、フォーカス!!)。
プログラミングの基本を知っている学生がいますが、栈
それは后进先出
原則に従うことです。つまり、スタック構造では、後でスタックにプッシュされる要素が最初にスタックからプッシュされます。
基本的な概念を確認した後、これらの3つのコマンドについて詳しく見ていきましょう。
ディレクトリスタックの内容を表示します。dirs
最初はdirs
です。このコマンドは非常にシンプルで、ディレクトリスタックの内容を表示します。次の3つの一般的なオプションがあります。
オプション | 意味 |
---|---|
-p | 1行に1つのレコードを表示する |
-v | 行ごとに1つのレコードを表示し、スタック内のレコードのインデックスを表示します |
-c | ディレクトリスタックを空にする |
それらの間で、オプション-p
の-v
違い-v
は、スタックオプションの各レコードがまったく同じに加えて表示されるということです。今ディレクトリスタックがある場合は、その中に何があるか見てみましょう。
[alvin@VM_0_16_centos dir2]$ pwd
/home/alvin/test/dir2
[alvin@VM_0_16_centos dir2]$ dirs -v
0 ~/test/dir2
1 ~/test/dir1
2 ~/test/dir3
3 ~/test
一番上の要素は常に現在のディレクトリと一致していることに注意してください。別のディレクトリのディレクトリスタックを表示すると、最初の要素はそれに応じて変化します。同様に、テキストのプレゼンテーションを使用している場合pushd
やpopd
、ディレクトリスタックのアドレスに対応する第一のスイッチング素子にディレクトリスタックは、現在のディレクトリを操作します。
ディレクトリスタックをクリアする場合は、直接使用-c
オプション。
[alvin@VM_0_16_centos diff]$ dirs -c
[alvin@VM_0_16_centos diff]$ dirs -v
0 ~/projects/blogdemos/diff
ディレクトリスタックにプッシュ:pushd
各pushdコマンドが実行された後、dirsコマンドがデフォルトで実行され、ディレクトリスタックの内容が表示されます。pushdの主な用途は次のとおりです。
1. pushd +ディレクトリ
pushdをディレクトリで直接使用すると、そのディレクトリに切り替わり、ディレクトリスタックの最上位に配置されます。例:
[alvin@VM_0_16_centos test]$ pushd dir1
~/test/dir1 ~/test
[alvin@VM_0_16_centos dir1]$ pushd ../dir2
~/test/dir2 ~/test/dir1 ~/test
[alvin@VM_0_16_centos dir2]$ pushd ../dir3
~/test/dir3 ~/test/dir2 ~/test/dir1 ~/test
[alvin@VM_0_16_centos dir3]$ dirs -v
0 ~/test/dir3
1 ~/test/dir2
2 ~/test/dir1
3 ~/test
2. pushd(パラメーターなし)
パラメータなしでpushdを実行すると、ディレクトリスタックの上位2つのディレクトリが入れ替わります。ディレクトリスタックの最初の要素は現在のディレクトリに関連していることを既に強調しているため、最初の要素が変更されると、現在のディレクトリがそれに応じて切り替わります。
[alvin@VM_0_16_centos dir3]$ dirs -v
0 ~/test/dir3
1 ~/test/dir2
2 ~/test/dir1
3 ~/test
[alvin@VM_0_16_centos dir3]$ pwd
/home/alvin/test/dir3
[alvin@VM_0_16_centos dir3]$ pushd
~/test/dir2 ~/test/dir3 ~/test/dir1 ~/test
[alvin@VM_0_16_centos dir2]$ pwd
/home/alvin/test/dir2 #对应目录发生改变
[alvin@VM_0_16_centos dir2]$ dirs -v
0 ~/test/dir2
1 ~/test/dir3 #索引 0 和 1 的内容对调
2 ~/test/dir1
3 ~/test
* 3.プッシュ+/- n *
Pushd +/- nは、インデックス値に対応するディレクトリに直接切り替えます。ここでは、プラス記号とマイナス記号の両方を使用できることに注意してください。プラス記号の場合は、ディレクトリスタックの一番上から数え、マイナス記号の場合は、ディレクトリスタックの一番下から数えます。
次に、この記事の冒頭の質問に戻りますが、パスが非常に長い2つ以上のディレクトリを頻繁に切り替える場合はどうすればよいでしょうか。
まず、pushd + directoryを使用して、これらのパスをディレクトリスタックに追加します。
次に、pushd +/- nを使用して、異なるディレクトリをすばやく切り替えます。具体的なデモは次のとおりです。
[alvin@VM_0_16_centos dir2]$ pwd
/home/alvin/test/dir2
[alvin@VM_0_16_centos dir2]$ dirs -v
0 ~/test/dir2
1 ~/test/dir3
2 ~/test/dir1
3 ~/test
[alvin@VM_0_16_centos dir2]$ pushd +2
~/test/dir1 ~/test ~/test/dir2 ~/test/dir3
[alvin@VM_0_16_centos dir1]$ pwd
/home/alvin/test/dir1
[alvin@VM_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test
2 ~/test/dir2
3 ~/test/dir3
ディレクトリスタックをポップします:popd
各popdコマンドが実行されると、dirsコマンドがデフォルトで実行され、ディレクトリスタックの内容が表示されます。popdの主な使用法は次のとおりです。
1. popd(パラメーターなし)
パラメータなしでpopdを実行すると、ディレクトリスタックの最上位の要素がポップされます。このとき、スタックの一番上の要素が変わり、当然現在のディレクトリもそれに応じて切り替わります。
[alvin@VM_0_16_centos dir3]$ dirs -v
0 ~/test/dir3
1 ~/test/dir1
2 ~/test
3 ~/test/dir2
[alvin@VM_0_16_centos dir3]$ popd
~/test/dir1 ~/test ~/test/dir2
[alvin@VM_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test
2 ~/test/dir2
2.popd +/- n
ディレクトリスタックのn番目の要素を削除します。同様に、プラス記号とマイナス記号は、上から下にカウントするか、下から上にカウントするかを示します。
[alvin@VM_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test
2 ~/test/dir2
[alvin@VM_0_16_centos dir1]$ popd +1
~/test/dir1 ~/test/dir2
[alvin@VM_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test/dir2
最後に、最近、多くの友人からLinuxラーニングロードマップの提供を求められたため、私の経験に基づいて、1か月間余暇を過ごし、電子書籍を作成しました。面接であろうと自己改善であろうと、私はそれがあなたを助けると信じています!ディレクトリは次のとおりです。
みんなに無料でプレゼントして、いいね!
この電子書籍をより完璧にするために、何人かの友人が私に加わってくれることを願っています。
利得?古いアイアンに3ストライクのコンボを付けて、より多くの人がこの記事を読めるようにしてほしい
推奨読書: