如何在Bash中获取含空格的挂载点完整路径
挂载路径含空格时df命令无法完整获取路径的解决办法
我的Ubuntu安装U盘挂载路径为/run/media/UBUNTU 22_0-sda1(含空格),执行df | grep /dev/sda | awk '{ print $6 }'仅返回/run/media/UBUNTU,原因是awk默认以空格分割字段,空格后的内容被识别为独立字段。
以下是几种解决方案:
方法1:用awk拼接后续字段
通过循环遍历awk的第6到最后一个字段,拼接出完整路径:
df | grep /dev/sda | awk '{for(i=6;i<=NF;i++) printf "%s ",$i; print ""}'
或通过字符串替换移除前5个字段的内容:
df | grep /dev/sda | awk '{sub(/^[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +/,""); print}'
方法2:使用findmnt工具(推荐)
findmnt专为查询挂载点设计,可直接输出完整路径,不受空格干扰:
findmnt -n -o TARGET /dev/sda1
参数说明:
-n:隐藏表头-o TARGET:仅输出挂载路径
方法3:结合df的POSIX格式输出
df -P确保每个文件系统信息单行显示,再处理得到完整路径:
df -P /dev/sda1 | awk 'NR==2 {sub(/^[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +/,""); print}'
内容的提问来源于stack exchange,提问作者Chris Liu
相关产品推荐
相关产品推荐

