この記事は、進行中の生産性向上のヒント シリーズの一部です。 cd は、Unix セッションで最も頻繁に使用されるコマンドの 1 つです。この記事では、生産性を即座に向上させ、コマンド ラインからディレクトリ構造をナビゲートしやすくする 6 つの cd コマンド ハックを提供しました。
ハック #1:CDPATH を使用して cd コマンドのベース ディレクトリを定義する
特定の親ディレクトリのサブディレクトリに対して頻繁に cd を実行する場合は、CDPATH を親ディレクトリに設定し、以下で説明するように、親ディレクトリ パスを指定せずにサブディレクトリに対して cd を実行できます。
[ramesh@dev-db ~]# pwd /home/ramesh [ramesh@dev-db ~]# cd mail -bash: cd: mail: No such file or directory [Note: This is looking for mail directory under current directory] [ramesh@dev-db ~]# export CDPATH=/etc [ramesh@dev-db ~]# cd mail [Note: This is looking for mail under /etc and not under current directory] [ramesh@dev-db /etc/mail]# pwd /etc/mail
この変更を永続的にするには、export CDPATH=/etc を追加します ~/.bash_profile に
このハックは、次の状況で非常に役立ちます:
- $ORACLE_HOME の下で頻繁に作業する Oracle DBA は、CDPATH 変数を Oracle ホームに設定できます
- /etc で頻繁に作業する Unix システム管理者は、CDPATH 変数を /etc に設定できます
- プロジェクト ディレクトリ /home/projects で頻繁に作業する開発者は、CDPATH 変数を /home/projects に設定できます
- ホーム ディレクトリの下のサブディレクトリに頻繁にアクセスするエンド ユーザーは、CDPATH 変数を ~ (ホーム ディレクトリ) に設定できます
ハック #2:cd エイリアスを使用してディレクトリを効果的にナビゲートする
非常に長いディレクトリ構造をナビゲートする場合、以下に示すように、移動するディレクトリの数に応じて複数の ..\ を指定して cd ..\..\ を使用している可能性があります。
# mkdir -p /tmp/very/long/directory/structure/that/is/too/deep # cd /tmp/very/long/directory/structure/that/is/too/deep # pwd /tmp/very/long/directory/structure/that/is/too/deep # cd ../../../../ # pwd /tmp/very/long/directory/structure
cd ../../../.. を実行して 4 レベル上に移動する代わりに、次のいずれかのエイリアス メソッドを使用します。
..n を使用してディレクトリを上に移動します: 以下の例では、..4 を使用して 4 つのディレクトリ レベルを上げ、..3 を使用して 3 つのディレクトリ レベルを上げ、..2 を使用して 2 つのディレクトリ レベルを上げます。次のエイリアスを .bash_profile に追加して、再ログインしてください。
alias ..="cd .." alias ..2="cd ../.." alias ..3="cd ../../.." alias ..4="cd ../../../.." alias ..5="cd ../../../../.." # cd /tmp/very/long/directory/structure/that/is/too/deep #..4 [Note: use ..4 to go up 4 directory level] # pwd /tmp/very/long/directory/structure/
ドットのみを使用してディレクトリを上に移動: 以下の例では、….. (5 つのドット) を使用して 4 つのディレクトリ レベルに移動します。 5 つのドットを入力して 4 つのディレクトリ構造に移動することは非常に覚えやすいです。最初の 2 つのドットを入力すると、「1 つのディレクトリに移動する」と考えられ、その後、すべての追加のドットが 1 レベル上に移動することになります。だから、使って…。 (4 つのドット) で 3 つのディレクトリ レベルに移動し、.. (2 つのドット) で 1 つのディレクトリ レベルに移動します。次のエイリアスを .bash_profile に追加し、….. (5 つのドット) が正しく機能するように再ログインしてください。
alias ..="cd .." alias ...="cd ../.." alias ....="cd ../../.." alias .....="cd ../../../.." alias ......="cd ../../../../.." # cd /tmp/very/long/directory/structure/that/is/too/deep # ..... [Note: use ..... (five dots) to go up 4 directory level] # pwd /tmp/very/long/directory/structure/
cd の後に連続するドットを使用してディレクトリを上に移動します: 以下の例では、cd….. (cd の後に 5 つのドットが続く) を使用して、4 つのディレクトリ レベルに移動します。 5 つのドットで 4 つのディレクトリ構造に移動するのは非常に覚えやすいです。最初の 2 つのドットを入力すると、「ディレクトリを 1 つ上に移動する」と考えることができます。だから、cdを使って…。 (cd の後に 4 つのドットが続く) 3 つのディレクトリ レベルに移動し、cd… (cd の後に 3 つのドットが続く) は 2 つのディレクトリ レベルに移動します。次のエイリアスを .bash_profile に追加し、上記の cd….. (5 つのドット) が正しく機能するように再ログインします。
alias cd..="cd .." alias cd...="cd ../.." alias cd....="cd ../../.." alias cd.....="cd ../../../.." alias cd......="cd ../../../../.." # cd /tmp/very/long/directory/structure/that/is/too/deep # cd..... [Note: use cd..... to go up 4 directory level] # pwd /tmp/very/long/directory/structure
ハック #3:1 つのコマンドを使用して mkdir と cd を実行する
新しいディレクトリを作成するとき、すぐに新しいディレクトリに cd して、以下に示すような作業を実行することがあります。
# mkdir -p /tmp/subdir1/subdir2/subdir3 # cd /tmp/subdir1/subdir2/subdir3 # pwd /tmp/subdir1/subdir2/subdir3
1 つのコマンドで mkdir と cd の両方を組み合わせると便利だと思いませんか?以下を .bash_profile に追加して、再ログインしてください。
function mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }
次に、以下に示すように、1 つのコマンドを使用して mkdir と cd の両方を同時に実行します。
# mkdircd /tmp/subdir1/subdir2/subdir3 [Note: This creates the directory and cd to it automatically] # pwd /tmp/subdir1/subdir2/subdir3
ハック #4:「cd -」を使用して最後の 2 つのディレクトリを切り替える
以下に示すように、cd を使用して最後の 2 つの現在のディレクトリを切り替えることができます。
# cd /tmp/very/long/directory/structure/that/is/too/deep # cd /tmp/subdir1/subdir2/subdir3 # cd - # pwd /tmp/very/long/directory/structure/that/is/too/deep # cd - # pwd /tmp/subdir1/subdir2/subdir3 # cd - # pwd /tmp/very/long/directory/structure/that/is/too/deep
注意 :コマンド ライン履歴の例の記事に記載されている例 #12 と #13 を使用して、履歴内の他のコマンドの引数を cd コマンドに置き換えることもできます。
ハック #5:dirs、pushd、popd を使用してディレクトリ スタックを操作する
ディレクトリスタックを使用してディレクトリをプッシュし、後でスタックからディレクトリをポップできます。この例では、次の 3 つのコマンドが使用されています。
- dirs:ディレクトリ スタックを表示します
- pushd:ディレクトリをスタックにプッシュします
- popd:スタックからディレクトリをポップし、そこに cd します
Dirs は常に現在のディレクトリを出力し、その後にスタックの内容を出力します。ディレクトリ スタックが空の場合でも、以下に示すように、dirs コマンドは現在のディレクトリのみを出力します。
# popd -bash: popd: directory stack empty # dirs ~ # pwd /home/ramesh
pushd と popd の使い方以下に示すように、最初にいくつかの一時ディレクトリを作成し、それらをディレクトリ スタックにプッシュしましょう。
# mkdir /tmp/dir1 # mkdir /tmp/dir2 # mkdir /tmp/dir3 # mkdir /tmp/dir4 # cd /tmp/dir1 # pushd . # cd /tmp/dir2 # pushd . # cd /tmp/dir3 # pushd . # cd /tmp/dir4 # pushd . # dirs /tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 [Note: The first directory (/tmp/dir4) of the dir command output is always the current directory and not the content from the stack.]
この段階で、ディレクトリ スタックには次のディレクトリが含まれます:
/tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1
スタックにプッシュされた最後のディレクトリが一番上になります。 popd を実行すると、スタックの一番上のディレクトリ エントリに cd され、スタックから削除されます。上記のように、スタックに最後にプッシュされたディレクトリは /tmp/dir4 です。そのため、popd を実行すると、以下に示すように、/tmp/dir4 に cd され、ディレクトリ スタックから削除されます。
# popd # pwd /tmp/dir4 [Note: After the above popd, directory Stack Contains: /tmp/dir3 /tmp/dir2 /tmp/dir1] # popd # pwd /tmp/dir3 [Note: After the above popd, directory Stack Contains: /tmp/dir2 /tmp/dir1] # popd # pwd /tmp/dir2 [Note: After the above popd, directory Stack Contains: /tmp/dir1] # popd # pwd /tmp/dir1 [Note: After the above popd, directory Stack is empty!] # popd -bash: popd: directory stack empty
ハック #6:「shopt -s cdspell」を使用して、CD 上の間違ったディレクトリ名を自動的に修正する
shopt -s cdspell を使用 以下に示すように、cd コマンドのタイプミスを自動的に修正します。タイピングが苦手で間違いが多い場合、これは非常に役立ちます。
# cd /etc/mall -bash: cd: /etc/mall: No such file or directory # shopt -s cdspell # cd /etc/mall # pwd /etc/mail [Note: By mistake, when I typed mall instead of mail, cd corrected it automatically]
この記事が気に入ったら、del.icio.us でブックマークしてください 、つまずく .