BashからFishへの変換:CDが特定のディレクトリに入ったときにカスタムメッセージを表示する

BashからFishへの変換:CDが特定のディレクトリに入ったときにカスタムメッセージを表示する

既定では、お知らせ/メッセージを含む特定のディレクトリに.cd-reminderファイルを作成したいと思います。誰かが特定のディレクトリに「cd」するたびに表示されます。

これを達成するためのシェルスクリプトがすでにあります。私は現在Fishを使用していますが、変換方法に精通していません。助けてくれてありがとう。

reminder_cd() { 
    builtin cd "$@" && { [ ! -f .cd-reminder ] || cat .cd-reminder 1>&2; }
}

alias cd=reminder_cd`

答え1

次の機能を追加できます~/.config/fish/config.fish

function show-reminder --on-variable PWD
   if test -f .cd-reminder
        cat .cd-reminder
   end
end

cd(これにより、使用可能なディレクトリ履歴を保持する組み込み機能を上書きすることを防ぐことができます。)

~/.config/fish/functions/この機能は手動で実行するまで変更時に実行されるとは見なされないため、自動ロード機能として追加しないでください。$PWD

答え2

function cd
    builtin cd $argv
    and test -f .cd-reminder
    and cat .cd-reminder
end

.cd-reminderファイルがディレクトリにない場合、これは失敗した終了ステータスを返すことに気づきました。代わりにこれを使用してください。これにより、指定されたディレクトリにcdできない場合、関数は失敗を返します。

function cd
    builtin cd $argv
    and begin
        test -f .cd-reminder
        and cat .cd-reminder
        or true
    end
end

関連情報