Rubyと筋肉とギターとわたし

エンジニア二年目の雑魚です。プログラミング・ギター・筋トレのことをメインにブログを書いていきます。

シェルスクリプトで親ディレクトリのパスを取得する

上の参考書と以下の記事を参考にさせていただきました。

qiita.com

なぜ調べたか

/home/user/practice/text/test.txt, /home/user/practice/shell/directory.shがある前提で進めます。

#!/bin/bash

PATH=../text/test.txt
echo `head -n 10 $PATH`

これを実行すると...

$ ./directory.sh
./test.sh: 行 4: head: コマンドが見つかりません

となる。

親のディレクトリ指定がよくないみたい。

解決

結論を言えば超簡単。

#!/bin/bash

CURRENT_DIRECTORY=$(cd $(dirname $0); pwd)
DIR_NAME=$(dirname ${CURRENT_DIRECTORY})

echo `head -n 10 $DIR_NAME/text/test.txt`

dirname <カレントディレクトリ>で親ディレクトリのパスを取得できます。

30分くらい詰まった。