Fish:最後に変更されたサブディレクトリに移動します。

Fish:最後に変更されたサブディレクトリに移動します。

この記事に関して、最後に変更されたサブディレクトリに cd

バッシュcd "$(\ls -1dt ./*/ | head -n 1)"
zsh cd ./*(/om[1])

最後に変更されたディレクトリに変更します。

しかし、スクリプトはありません魚の皮

config.fishでbashコードを使用すると、次のように表示されます。

$(...) is not supported. In fish, please use '(\ls)'

誰でも助けることができますか?

答え1

何を試してみましたか?特に。fish'(\ls)'

cd (ls -1dt ./*/ | head -n 1)

10秒の実験に基づいたようです。編集:\文字を削除します。

答え2

魚では使用できず、$(command)使用する必要があります(command)追加情報

また、魚では前のバックスラッシュを次のlsように変更する必要があります。command

要約すると、次のようになります。

cd  (command ls -1dt ./*/ | head -n 1)

答え3

出力に依存する代わりにlsGNU coreutilsがあるとします。

cd (stat --printf='%Y:%n\0' ./*/ | sort -zt: -k1nr | head -zn1 | cut -d: -f2-)

答え4

あなたはできます

ls -dt ./*/ | read newest && cd $newest

ただし、改行文字を含むファイル名には機能しません。

最新バージョンのGNUを使用すると、ls次のように問題を解決できます。

ls --zero -dt ./*/ | read -z newest && cd $newest

またはこれを行うこともできます:

zsh -c 'print -rNC1 ./*(/om[1])' | read -z newest && cd $newest

または、*(-/om[1])メソッドと同様に、ディレクトリのシンボリックリンク(およびそのターゲットの変更時間)を検討してください*/

関連情報