与えられたファイルの親ディレクトリを取得します。

与えられたファイルの親ディレクトリを取得します。

filedir以外のファイルのパス名が保存されているとします。

親ディレクトリを取得する方法は?

/..値を追加すると、次のことが機能しない理由

$ 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

zshtry: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/..

関連情報