11/10/2017

编辑器自动检测写入权限

使用 nano 等编辑器的时候时常发现编辑完了无法保存,因为没有写入权限。其实 nano 打开无写入权限的文件时候会提示,但是我从来都不注意。这篇文章介绍了一个小 utility,自动在打开文件前检查并提示授权写入权限。

0x01 - 演示

$ nano /etc/ssh/sshd_config 
/etc/ssh/sshd_config is not writable. Edit with sudo? [y/n]

0x02 - 安装

直接复制以下代码运行 默认nano安装在 /bin/nano

添加 nano-helper

cat << 'EOF' | sudo tee /usr/local/bin/nano-helper > /dev/null
#!/bin/sh
# Checks file permissions before opening nano.

sudo=
editor=/bin/nano

if test -e "$1" && test ! -w "$1"; then
    if test -t 0 && test -t 2; then
        read -p "$1 is not writable. Edit with sudo? [y/n] " yn
        case $yn in
        y|Y)
            sudo=true
            ;;
        n|N)
            sudo=
            ;;
        *)
            printf "\nInvalid choice. Please try again later.\n" 1>&2
            exit 1
            ;;
        esac
    else
        printf "%s is not writable. Fix the permissions or run \"cat\" instead." "$1" 1>&2
        exit 1
    fi
fi

${sudo:+sudo} "$editor" "$1"
EOF

添加执行权限

sudo chmod +x /usr/local/bin/nano-helper

添加 nano alias

echo "alias nano=nano-helper" >> ~/.bashrc
source ~/.bashrc

使用其他编辑器的童鞋请自动把上面的 nano 都替换成你的编辑器。


Sources:

本文链接:https://blog.whe.me/post/nano-detect-write-permission.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。