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

如何让Bash的read命令不转义反斜杠,读取原始输入?

让Bash的read命令字面读取含反斜杠的输入

Bash的read命令默认会把反斜杠当成转义字符,自动移除它来解析后续内容——这就是你遇到路径里反斜杠丢失、文件找不到的原因。

解决方法很直接:给read加上-r选项,这个选项会禁用反斜杠的转义功能,让命令字面读取输入的每一个字符。

修改你的循环命令如下:

find TestDir -type f -print | while IFS= read -r aFile; do ls -l "$aFile" ; done

其中:

  • -r:关闭反斜杠转义逻辑,完整保留输入中的所有反斜杠
  • IFS=:避免read自动截断行首或行尾的空白字符,确保路径里的空格等特殊符号被完整保留

执行修改后的命令后,所有含反斜杠的路径都能被正确识别,ls命令也能正常找到文件:

-rw------- 1 root root 0 Jul 17 10:47 'TestDir/1 2 \3 $4 5'
-rw------- 1 root root 0 Jul 17 10:47 'TestDir/\- * 5 %'
-rw------- 1 root root 0 Jul 17 10:47 'TestDir/1 2 \3 '
-rw------- 1 root root 0 Jul 17 10:47 'TestDir/A B $ ( 1 )/3 4 (h) # ~/a { 2 }'
-rw------- 1 root root 0 Jul 17 10:47 'TestDir/A B $ ( 1 )/3 4 (h) # ~/[1 @]/4 .9 ( )'
-rw------- 1 root root 0 Jul 17 10:47 'TestDir/A B $ ( 1 )/\- ( * ) $ 4'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:54:24