400*_*Cat 2 zsh mount proc tmpfs
zsh如果$PWD当前在已tmpfs安装的文件系统上,我想更改我的提示颜色。
比如说,/dev/shm是一个tmpfs文件系统。我可以确认:
$ grep /dev/shm /proc/mounts
tmpfs /dev/shm tmpfs rw,nosuid,nodev,noexec,relatime,size=26307700k 0 0
Run Code Online (Sandbox Code Playgroud)
所以,当我在的时候/dev/shm,我可以这样做:
grep -q "^tmpfs $PWD tmpfs " /proc/mounts
Run Code Online (Sandbox Code Playgroud)
但是,如果我站在/dev/shm/foo、 或 等中/dev/shm/foo/bar,那将行不通。
如何检查是否$PWD在tmpfs文件系统上?
Sté*_*las 10
在 Linux 上,您应该能够执行以下操作:
findmnt -no FSTYPE .
Run Code Online (Sandbox Code Playgroud)
返回文件系统的类型 .
stat(非 zshstat内置)的 GNU 实现也可以通过以下方式实现:
command stat -fc %T .
Run Code Online (Sandbox Code Playgroud)
因此,您可以将该信息缓存$psvar在chpwd钩子中的元素中:
check_cwd_is_tmpfs() {
if [[ $(command stat -fc %T .) = tmpfs ]]; then
psvar[1]=red
else
psvar[1]=green
fi
}
chpwd_functions+=(check_cwd_is_tmpfs)
check_cwd_is_tmpfs
PS1='%F{%1v}%~%F$ '
Run Code Online (Sandbox Code Playgroud)