如果当前位于已安装的文件系统上,我想更改zsh
提示颜色。$PWD
tmpfs
举例来说,/dev/shm
是一个tmpfs
文件系统。我可以确认:
$ grep /dev/shm /proc/mounts
tmpfs /dev/shm tmpfs rw,nosuid,nodev,noexec,relatime,size=26307700k 0 0
所以,当我在时/dev/shm
,我可以这样做:
grep -q "^tmpfs $PWD tmpfs " /proc/mounts
/dev/shm/foo
但如果我站在、 或/dev/shm/foo/bar
等位置,那就行不通了。
如何检查是否$PWD
在tmpfs
文件系统上?
答案1
在 Linux 上,您应该能够执行以下操作:
findmnt -no FSTYPE .
返回文件系统的类型.
GNU 实现stat
(不是stat
内置 zsh)也可以通过以下方式实现:
command stat -fc %T .
$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$ '