Linuxでディレクトリを効率的に切り替える方法

Linuxでディレクトリを効率的に切り替える方法

Linux でディレクトリを切り替えるとなると、誰もが間違いなくcdコマンドを思い浮かべるでしょう。これは Linux の非常に基本的なコマンドです。このコマンドを知らないと、自分の腹を切り開いて自殺するのと同じことになります。

cd コマンドは確かに非常に便利ですが、次のディレクトリ間を頻繁に切り替える必要がある場合は、命が危ぶまれるかもしれません。

/home/alvin/projects/blogdemos/linux-system-programming/スレッド
/home/alvin/projects/blogdemos/diff
/home/harry/study/日本文化/日中交流/映画・テレビ産業/アクション映画

cd コマンドしか知らない場合は、気が狂うまで何度も cd を実行する必要があります。

この場合、ディレクトリを効率的に切り替えるにはどうすればよいでしょうか? Liang Xu は、 pushdpopddirsという 3 つのコマンドを紹介します。

これら 3 つのコマンドは、実際には目錄棧(目錄棧を格納するスタック構造) に対して動作します。現在のディレクトリは常にスタック構造の先頭に格納されます (注意してください、これが重要なポイントです!!)。

プログラミングの基礎知識を持つ学生は、后進先出原則に従うことを知っています。つまり、スタック構造では、後からスタックにプッシュされた要素が最初にポップアウトされます。

基本的な概念を確認した後、これら 3 つのコマンドを詳しく見ていきましょう。

ディレクトリスタックの内容を表示します: dirs

まず、 dirs 。このコマンドは非常に単純で、ディレクトリ スタックの内容を表示するだけです。一般的なオプションは次の 3 つです。

オプション意味
-p 1行に1件のレコードを表示
-v各行にはレコードが表示され、スタック内のレコードのインデックスが表示されます。
-cディレクトリスタックをクリアする

-p-vオプションの違いは、 -vオプションではスタック内の各レコードのインデックスが表示されることです。それ以外はまったく同じです。ディレクトリ スタックがあると仮定して、その内容を見てみましょう。

[alvin@VM_0_16_centos dir2]$ pwd
/home/alvin/test/dir2
[alvin@VM_0_16_centos dir2]$ dirs -v
 0 ~/テスト/dir2
 1 ~/test/dir1
 2 ~/test/dir3
 3 ~/テスト

最上位の要素は常に現在のディレクトリと同じであることに注意してください。別のディレクトリでディレクトリ スタックを表示すると、最初の要素がそれに応じて変更されます。同様に、後ほど紹介するpushdpopdを使用してディレクトリ スタックを操作すると、現在のディレクトリがディレクトリ スタックの最初の要素に対応するアドレスに切り替わります。

ディレクトリ スタックをクリアしたい場合は、 -cオプションを使用します。

[alvin@VM_0_16_centos 差分]$ dirs -c
[alvin@VM_0_16_centos 差分]$ dirs -v
 0 ~/プロジェクト/ブログデモ/差分

ディレクトリスタックへのプッシュ: pushd

pushd コマンドが実行されるたびに、デフォルトで dirs コマンドが実行され、ディレクトリ スタックの内容が表示されます。 pushd には主にいくつかの用途があります。

1. pushd + ディレクトリ

pushd をディレクトリに直接使用すると、そのディレクトリに切り替えて、ディレクトリ スタックの一番上に配置します。例:

[alvin@VM_0_16_centos テスト]$ pushd dir1
~/テスト/dir1 ~/テスト
[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 ~/テスト/dir3
 1 ~/test/dir2
 2 ~/test/dir1
 3 ~/テスト

2. pushd(パラメータなし)

パラメータなしで pushd を実行すると、ディレクトリ スタック上の上位 2 つのディレクトリが入れ替わります。前に強調したように、ディレクトリ スタックの最初の要素は現在のディレクトリに関連しているため、最初の要素が変更されると、それに応じて現在のディレクトリも切り替わり、その逆も同様です。

[alvin@VM_0_16_centos dir3]$ dirs -v
 0 ~/テスト/dir3
 1 ~/test/dir2
 2 ~/test/dir1
 3 ~/テスト
[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 ~/テスト/dir2
 1 ~/test/dir3 #インデックス0と1の内容を入れ替える 2 ~/test/dir1
 3 ~/テスト

**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 ~/テスト/dir2
 1 ~/test/dir3
 2 ~/test/dir1
 3 ~/テスト
[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 ~/テスト/dir1
 1 ~/テスト
 2 ~/test/dir2
 3 ~/test/dir3

ディレクトリスタックをポップする: popd

popd コマンドが実行されるたびに、デフォルトで dirs コマンドが実行され、ディレクトリ スタックの内容が表示されます。 popd の主な使い方は次のとおりです。

1. popd (パラメータなし)

パラメータなしで popd を実行すると、ディレクトリ スタックの最上位要素がポップされます。このとき、スタックの最上位要素が変更され、当然、現在のディレクトリもそれに応じて切り替わります。

[alvin@VM_0_16_centos dir3]$ dirs -v
 0 ~/テスト/dir3
 1 ~/test/dir1
 2 ~/テスト
 3 ~/test/dir2
[alvin@VM_0_16_centos dir3]$ ポップ
~/test/dir1 ~/test ~/test/dir2
[alvin@VM_0_16_centos dir1]$ dirs -v
 0 ~/テスト/dir1
 1 ~/テスト
 2 ~/test/dir2

2. ポップ +/-n

ディレクトリ スタック内の n 番目の要素を削除します。同様に、プラス記号とマイナス記号は、上から下へ数えるか、下から上へ数えるかを示します。

[alvin@VM_0_16_centos dir1]$ dirs -v
 0 ~/テスト/dir1
 1 ~/テスト
 2 ~/test/dir2
[alvin@VM_0_16_centos dir1]$ ポップ +1
~/テスト/dir1 ~/テスト/dir2
[alvin@VM_0_16_centos dir1]$ dirs -v
 0 ~/テスト/dir1
 1 ~/test/dir2

Linux でディレクトリを効率的に切り替える方法についての記事はこれで終わりです。Linux でのディレクトリの効率的な切り替えの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux シェルでファイルとディレクトリが存在するかどうかを確認する方法
  • Linux シェルからファイル名とディレクトリ名を抽出する方法
  • Linux (CentOS) システムで MySQL データベース ディレクトリの場所を変更する方法
  • Linuxシステムで実行中のnginxディレクトリを見つける
  • Linux でフォルダーの下にあるすべてのディレクトリとファイル名をバッチで抽出する
  • Linux のディレクトリ内で時間でフィルタリングされたファイルを検索する方法の詳細な説明
  • CD コマンドを使わずに Linux でディレクトリ/フォルダに入る方法
  • Linux ディレクトリ切り替え実装コード例

<<:  Windows システムでの MySQL 8.0.21 インストール チュートリアル (図とテキスト)

>>:  Js クラスの構築と継承のケースの詳細な説明

推薦する

モバイルレイアウト用の動的REMの実装

ダイナミックレム1. まず、現在の長さの単位を紹介しましょうpx em Mの幅 / 漢字の幅 1em...

HTMLのタグについての簡単な説明

0. タグとは何ですか? XML/HTML コードコンテンツをクリップボードにコピー<入力 t...

小さなプログラムが天井に張り付いてしまう問題を完璧に解決するためにposition:stickyを使用する方法

最近、あるプロジェクトのクライアントが、上部に 2 つのタブ メニューを配置することを要求しました。...

mysql5.6 の無効な utf8 設定の問題を解決する

mysql5.6 のグリーン バージョンを解凍すると、my-default.ini ファイルが作成さ...

Vueはコンピュータカメラを呼び出して写真機能を実現します

この記事の例では、コンピュータカメラを呼び出して写真機能を実現するためのvueの具体的なコードを参考...

js SMS認証コード入力ボックスを手動で実装する

序文この記事では、私が手動で実装したフロントエンドの一般的な SMS 認証コード入力コンポーネントと...

コマンドを使用してMySQLデータベース(de1)を作成する方法

1. MYSQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...

DCL を使用して MySQL でユーザーを管理し、権限を制御する方法

DCL (データ制御言語): データベースのアクセス権とセキュリティ レベルを定義し、ユーザーを作成...

要素テーブルヘッダー行の高さの問題の解決

目次序文1. 問題の原因2. 解決策VueはelementUIテーブルtr thの高さと背景色を変更...

VueとVueComponentの関係の詳細な説明

次のケースでは、これまでに学んだプロトタイプチェーンの知識ポイントを確認します。 // コンストラク...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

JavaScript 配列 sort() メソッドの基本的な使い方と落とし穴

序文日常のコード開発では、配列のソートに関連する操作が多数あります。JavaScript では、so...

HTML ウェブページでのアンカー(名前付きアンカー)の使用の概要

以下の情報はインターネットから収集したものです1. アンカーは、Web ページ作成におけるハイパーリ...

MySQL ツリー構造テーブルの設計と最適化に関する簡単な説明

序文多くの管理・オフィスシステムでは、ツリー構造がいたるところで見られます。たとえば、「部門」や「機...

JavaScript の静的スコープと動的スコープを例を使って説明します

目次序文静的スコープと動的スコープ静的スコープ実行プロセス動的スコープ実行プロセスエクササイズ練習1...