私はBashスクリプトにかなり慣れていないので、次のことをしようとしています:
スクリプトの pwd は「/a/b/c/directory_name.git/」で、「../directory_name」に cd したいと思います。ここで、directory_name は何でもかまいません。これを行う簡単な方法はありますか?
pwd
結果を変数に入れて、最後の 4 文字を消去する必要があると思います。
私はBashスクリプトにかなり慣れていないので、次のことをしようとしています:
スクリプトの pwd は「/a/b/c/directory_name.git/」で、「../directory_name」に cd したいと思います。ここで、directory_name は何でもかまいません。これを行う簡単な方法はありますか?
pwd
結果を変数に入れて、最後の 4 文字を消去する必要があると思います。
これは機能するはずです:
cd "${PWD%.*}"
試す:
cd `pwd | sed -e s/\.git$//`
バッククォートは内部でコマンドを実行し、そのコマンドの出力を へのコマンド ライン引数として使用しますcd
。
このようなパイプラインをデバッグするには、次を使用すると便利ですecho
。
echo `pwd | sed -e s/\.git$//`
tmpd=${PWD##*/}
cd ../${tmpd%.*}
またはおそらくもっと簡単に
cd ${PWD%.*}
$ myPWD="/a/b/c/directory_name.git"
$ tmpd=${myPWD##*/}
$ echo "cd ../${tmpd%.*}"
cd ../directory_name
*注意: $PWD には末尾のスラッシュが含まれていないため、${param##word}
展開は正常に機能します。
こんなに多くの答えがすぐに得られるとは思っていなかったので、私は自分の洗練されていない解決策を考え出す時間がありました:
#!/bin/bash
PWD=`pwd`
LEN=${#PWD}
END_POSITION=LEN-4
WORKING_COPY=${PWD:0:END_POSITION}
echo $WORKING_COPY
cd $WORKING_COPY
おそらく、はるかにエレガントな上記のものがあります:)
それbasename
が目的です:
cd ../$(basename "$(pwd)" .git)