
cd
削除したばかりのディレクトリ(まだ存在する親フォルダの1つ上のレベル)を終了する方法はありますか?
フォルダのコンソールを開き、一時テストデータを含むフォルダを削除して別のフォルダを作成する状況が頻繁に発生します。
ただし、削除されたフォルダを保持しようとすると、両方ともcd ..
親cd $(pwd)/..
ディレクトリではなくごみ箱に入ります。
したがって、現在の状況は次のとおりです。
$ mkdir -p /home/me/test/p1
$ cd /home/me/test/p1
それでは、p1フォルダを削除しましょう。
$ cd ..
me:~/.local/share/Trash/files$ ...
私は今/home/me/test/
ゴミ箱に入るのではなく、入る方法を探しています。そのようなコマンドがありますか?
答え1
PWD変数は現在のパス定義を保持します。
アップグレード
cd $(dirname $PWD)
に拡張される予定です。
cd $(dirname /home/me/foo/bar/baz/deleteddirectory)
誰が延長しますか?
cd /home/me/foo/bar/baz/
これは、1つのレベルのディレクトリのみを削除すると仮定します。
答え2
シェルは現在の作業ディレクトリへのパスを変数に保存しますPWD
。特に設定しない限り、ディレクトリが移動された場合、またはシンボリックリンクが含まれていても、これはシェルに指定されたパスです。したがって、ディレクトリの実際の場所が異なる場合でも、それを使用してディレクトリの明らかな親ディレクトリを変更できます。たとえば、シンボリックリンクの場合でも、これは(シェルがシンボリックリンクをチェックするように)設定され、その後ディレクトリが移動またはcd /foo/bar
削除PWD
されても設定されたままです。/foo/bar
bar
cd -P
PWD
PWD
したがって、最後のスラッシュの後ろの部分を取得して削除して、確実な親ディレクトリに変更できます。
cd ${PWD%/*}
ディレクトリパスにスペースまたはワイルドカードがある場合は、引用符が必要です。
cd "${PWD%/*}"
zsh では、次のように短縮できます。
cd $PWD:h
長くても覚えやすい単語を使うこともできます。
cd "$(dirname "$PWD")"
(ディレクトリ名にスペースやワイルドカードがない場合は、二重引用符は必要ありません。)