zsh で現在のディレクトリからディレクトリ部分を削除する

zsh で現在のディレクトリからディレクトリ部分を削除する

たとえば、 に cd した/usr/local/binが、パスワードを に変更したい場合、zsh でそれを実行するにはどうすればよいでしょうか。から のように実行してパスワードを に変更できる/usr/binことはわかっていますが、希望どおりに実行する方法がよくわかりません。cd /a/b/cd b c/a/b

答え1

zsh の の柔軟な機能を考えるとcd、希望どおりのことをするには少なくとも 3 つの方法があります。 またはcd /usr/local /usrまたはcd local /のいずれかを記述できますcd local/bin bin。おそらく、もっと多くの解決策が考えられます。

cdzsh での の構文は です。このコマンドはを にcd OLD NEW一致させ、一致する部分を に置き換えます。 は現在のディレクトリを基準に動作することを覚えておいてください。そのため、にいるときにと書き込むと、 のようなディレクトリは存在しないため、zsh はエラーを返します。スラッシュには常に注意してください。$PWDOLDNEWcdcd /usr/local usr/usr/local/bin/usr/local/bin/usr/bin

答え2

あなたは2引数形式のcd現在の作業ディレクトリの部分文字列を置き換える。例えば、 を削除するには/local、次のようにする。

cd /local ''

複数のスラッシュがあっても違いはないので、これをcd /local /(結果は となり/usr//bin、二重のスラッシュは単一のスラッシュに簡略化されます) またはcd local /(やはり となります/usr//bin) と書くこともできます。

別の方法としては、コマンドライン版を使う方法があります。デフォルト設定では、cd $PWDコマンドラインに と入力し、 を押しますTab。変数の置換は変数の値に置き換えられ、自由に編集できます。 ではsetopt auto_cd、最初に と入力する必要はありませんcd。設定により変数が展開されない場合は、ではなく、Tabzle 関数を呼び出すキーを使用してください。expand-or-completecomplete-word

関連情報