小编Lov*_*ths的帖子

xargs 与 rm + 文件名包含空格

我正在编写一个简单的程序来删除所有获取的文件。文件可以包含空格,所以我添加了引号,如下所示

find -name "*.scala" | xargs -d "\n" -I {} rm \"{}\"
Run Code Online (Sandbox Code Playgroud)

以上失败并出现错误:无法删除,没有这样的文件或目录。但是如果我列出相同的文件,它们就在那里。此外,如果我在下面执行并使用 bash 执行它;有用

find -name "*.scala" | xargs -d "\n" -I {} echo rm \"{}\" | bash
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么第一种情况不起作用吗?

linux shell find xargs

3
推荐指数
1
解决办法
5663
查看次数

Here-document with cat

我是 Linux、shell 脚本的新手,我正在尝试学习基础知识。我目前在重定向章节,在这里文档正在被解释。我无法真正理解下面的代码如何与cat命令结合使用。如果有人可以告诉我吗?

cat << EOF
line1 
line2
line3
EOF
Run Code Online (Sandbox Code Playgroud)

我非常了解<< EOF工作原理。关键字表示输入的结束。我的问题是;cat将文件名作为输入流;以便它可以在输出流上打印其内容。以上如何在内部工作?我们没有在任何地方指定文件名。shell 是否在内部创建了一些临时文件并将其提供给cat?我希望我的问题很清楚。

linux cat here-document

2
推荐指数
1
解决办法
367
查看次数

回车、换行和 Sed 行为

我需要了解为什么 sed 能够为 1) 而不是 2) 工作。请不要向我发布任何替代解决方案。我已经在这个论坛上找到了它们。我只需要了解 sed 关于点 1) 和 2) 的行为。

1) sed -i s/\\r//g file.txt

在检查 od -c file.txt 时,sed 已成功删除 \r

2) sed -i s/\\n//g file.txt

在检查 od -c file.txt 时,sed 尚未删除 \n

我的问题是要了解为什么它不适用于第 2 点。请不要发布任何替代解决方案。希望了解内部结构就是这样!

linux sed newlines

1
推荐指数
1
解决办法
3513
查看次数

标签 统计

linux ×3

cat ×1

find ×1

here-document ×1

newlines ×1

sed ×1

shell ×1

xargs ×1