You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在终端出现Permission is denied错误时显示图片

嘿,这个脑洞挺有意思的!要把终端里的「Permission is denied」错误提示换成可爱的图片,其实可以通过几个实用的思路来实现,下面给你拆解详细步骤:

实现思路与方法

核心逻辑是:捕获命令的错误输出→匹配「Permission is denied」关键词→调用终端图片显示工具展示自定义图片,具体可以用两种方式落地:

方法一:用自定义Shell函数包装常用命令

适合所有bash/zsh环境,通过给容易触发权限错误的命令(比如ls、rm、mkdir)加包装函数,拦截输出并判断:

# 先确保你装了对应终端的图片显示工具:iTerm2用imgcat,Kitty用kitty +kitten icat
function check_permission_error() {
    local cmd="$@"
    # 执行命令并捕获所有输出
    local output=$($cmd 2>&1)
    local exit_code=$?
    
    # 检查输出是否包含权限错误关键词
    if echo "$output" | grep -qi "permission is denied"; then
        # 替换成你的本地图片路径,比如~/pics/denied_cat.png
        imgcat ~/pics/denied_cat.png
    else
        # 非权限错误则正常输出内容
        echo "$output"
    fi
    
    # 返回原命令的退出码,不影响后续逻辑
    return $exit_code
}

# 给常用命令加上包装别名
alias ls='check_permission_error ls'
alias rm='check_permission_error rm'
alias mkdir='check_permission_error mkdir'

方法二:利用Zsh的全局错误捕获(仅Zsh用户)

如果用Zsh,可以直接用TRAPERR函数全局捕获命令错误,不用给每个命令加别名,更省心:

TRAPERR() {
    # 获取最后一条命令的错误信息
    local error_msg=$(fc -ln -1)
    # 匹配权限错误关键词
    if echo "$error_msg" | grep -qi "permission is denied"; then
        # 替换成你的终端图片命令和本地图片路径
        kitty +kitten icat ~/pics/denied_cat.png
    fi
    return $1
}
关键注意事项
  • 终端兼容性:只有iTerm2、Kitty、Alacritty这类现代终端支持直接在窗口内显示图片,系统默认终端(比如Mac的Terminal.app、Linux的Gnome Terminal)可能无法实现。
  • 图片准备:把你想要展示的图片下载到本地绝对路径,不要用外链,代码里替换成对应的路径即可。
  • 图片工具安装:iTerm2可以直接从官方获取imgcat脚本;Kitty自带kitty +kitten icat命令;Alacritty可以安装第三方工具alacritty-imgcat。

内容的提问来源于stack exchange,提问作者PostMaloneM3m3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:25:25