使用换行符而不是空格来分隔行

时间:2014-07-27 10:42:42

标签: linux bash

我做了两个以下命令:

第一个我列出了目录的内容并将其存储在变量中。 第二个显示变量的内容。

enter image description here

现在我决定将列表与空格分开,而不是使用换行符,我执行以下操作: enter image description here

我弄得一团糟。为什么?

值得注意的是,当我改变命令时,它按照我想要的方式工作: enter image description here

有人可以解释一下,为什么0x20或32(我也试过这个号码)在这种情况下不会将Bash视为空格?

2 个答案:

答案 0 :(得分:3)

tr根本不识别十六进制而是八进制。这可行:

tr '\040' '\n'

显示文件的更简单方法是

shopt -s nullglob  ## Optional.
printf '%s\n' *

答案 1 :(得分:2)

tr '\0x20'的问题是,tr将所有字​​符序列视为文字字符。字符为0x2。请注意,\n在输出中替换了所有theese字符。这就是为什么你有.t而不是txt2也没有出现。

这是 bash,它的 tr 让你感到不快。如果你真的想迭代文件名,可以采用更好的方法。

for f in *; do
   # do work with $f. But always use quotes. Like `"$f"`
done