file
dir以外のファイルのパス名が保存されているとします。
親ディレクトリを取得する方法は?
/..
値を追加すると、次のことが機能しない理由
$ cd $file/..
cd: ./Tools/build.bat/..: No such file or directory
ありがとうございます。
答え1
仮説
$ file=./Tools/build.bat
そしてPOSIX互換シェル(zshを含む):
$ echo "${file%/*}"
./Tools
そしてdirname
:
$ echo "$(dirname -- "$file")"
./Tools
(少なくともGNUはdirname
オプションを受け入れるので、--
パスがダッシュで始まる場合は必要です。)
答え2
zsh
try:h
修飾子を使用する場合
cd $file:h
追加できますNどちらに行くかNディレクトリ構造のアップグレード。
答え3
dirname コマンドの使用は非常に簡単です。以下を行います。
cd "$(dirname -- "$file")"
これでさらに一歩進むことができます。
file=/home/switch87/.bashrc
cd "$(dirname -- "$file")"
cd "$(dirname -- "$file")"/..
最初のCDは/home/switch87に入り、2番目のCDは/homeに入ります。
答え4
readlink
私はとの組み合わせを使用することを好みますdirname
。
parent=$(readlink -f "$(dirname "$file")")
cd $parent
dirname
パスからファイル名を削除し、標準readlink -f
にします$path/..
。