次のエイリアスがありますtcsh
。
alias cdd 'cd `dirname \!*`'
私はこれを特定のファイルを含むディレクトリに変更するために使用します。
例えば、
cdd /Users/myself/Document/Folder/File.pdf
ディレクトリをに変更します/Users/myself/Document/Folder/
。
どのようにシェルに「変換」できますかzsh
?
ベストアンサー1
シェルでは、作業ディレクトリを最初の引数の親ディレクトリに変更するシェル関数を定義できます(zsh
以下のコードの尾は、変数に格納されているパス名から最後のパス名コンポーネントを削除する関数です)。:h
$1
cdd () cd -- $1:h
または、より移植性の高いシェル関数を使用することもできます(sh
などのシェルで動作します)。zsh
bash
cdd () { cd -- "$(dirname -- "$1")"; }
これは移植可能なシェル関数構文を使用し、エイリアスのようdirname
に使用されますtcsh
。両方の関数に二重ダッシュが表示されるため、引数がダッシュで始まる場合、引数はオプションとして解釈されません。
引数が指定されていない場合、上記の両方の関数は現在のディレクトリに変更されます(つまり、ほとんど何もしません)。
エイリアスはシェル以外の項目の引数を受け入れないため、シェル関数を使用することをお勧めしますtcsh
。したがって、「エイリアスの最初のパラメータ」でパス名を調べて親ディレクトリを解決することはできません。