Bash 到 Fish 转换:CD 进入特定目录时显示自定义消息

Bash 到 Fish 转换:CD 进入特定目录时显示自定义消息

基本上,我想在特定目录中创建一个文件 .cd-reminder ,其中包含公告/消息。每次有人“cd”到该特定目录时都会显示它。

已经有一个 shell 脚本可以实现这一点,我目前正在使用 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

相关内容