标签: echo

为什么 printf 比 echo 好?

我听说printfecho. 根据我的经验,我只能回忆起一个我不得不使用的实例,printf因为它echo无法将一些文本输入到 RHEL 5.8 上的某个程序中,但printf确实如此。但显然,还有其他差异,我想询问它们是什么以及是否有特定情况下何时使用一种与另一种。

echo text-processing printf

635
推荐指数
4
解决办法
27万
查看次数

如何在命令行上设置环境变量并让它出现在命令中?

如果我跑

export TEST=foo
echo $TEST
Run Code Online (Sandbox Code Playgroud)

它输出 foo。

如果我跑

TEST=foo echo $TEST
Run Code Online (Sandbox Code Playgroud)

它不是。如何在不使用导出或脚本的情况下获得此功能?

shell echo environment-variables

266
推荐指数
4
解决办法
44万
查看次数

为什么“回声”比“触摸”快这么多?

我正在尝试将我目录中所有 xml 文件的时间戳更新为当前时间(递归)。我使用的是 Mac OSX 10.8.5。

在大约 300,000 个文件上,以下echo命令需要10 秒

for file in `find . -name "*.xml"`; do echo >> $file; done
Run Code Online (Sandbox Code Playgroud)

但是,以下touch命令需要10 分钟!:

for file in `find . -name "*.xml"`; do touch $file; done
Run Code Online (Sandbox Code Playgroud)

为什么这里的回声比触摸快得多?

shell echo command

121
推荐指数
3
解决办法
2万
查看次数

如何用回声删除行?

我知道我可以删除最后三个字符:

echo -ne '\b\b\b'
Run Code Online (Sandbox Code Playgroud)

但是如何删除整行?我的意思是我不想使用:

echo -ne '\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b'
Run Code Online (Sandbox Code Playgroud)

...等...删除长行。

command-line echo

74
推荐指数
5
解决办法
11万
查看次数

将文件内容重定向到命令“echo”

我有一个名为my_file.txt的文件,其内容只是 string Hello。如何将其内容重定向到命令echo

我知道我有命令less, cat, more... 但我需要用echo.

我试过这个:

$ cat my_file.txt | echo
Run Code Online (Sandbox Code Playgroud)

还有这个:

$ echo < my_file.txt
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下,它在标准输出中只出现一个空白,而不是 my_file.txt 的内容。

我怎么能那样做?

shell io-redirection echo

66
推荐指数
3
解决办法
28万
查看次数

什么定义了命令单个参数的最大大小?

我的印象是,单个参数的最大长度在这里不是问题,而是整个参数数组的总大小加上环境的大小(仅限于ARG_MAX. 因此,我认为类似以下的事情会成功:

env_size=$(cat /proc/$$/environ | wc -c)
(( arg_size = $(getconf ARG_MAX) - $env_size - 100 ))
/bin/echo $(tr -dc [:alnum:] </dev/urandom | head -c $arg_size) >/dev/null
Run Code Online (Sandbox Code Playgroud)

- 100足以解释 shell 和echo进程中环境大小之间的差异。相反,我收到了错误:

bash: /bin/echo: Argument list too long
Run Code Online (Sandbox Code Playgroud)

玩了一段时间后,我发现最大值小了一个完整的十六进制数量级:

/bin/echo \
  $(tr -dc [:alnum:] </dev/urandom | head -c $(($(getconf ARG_MAX)/16-1))) \
  >/dev/null
Run Code Online (Sandbox Code Playgroud)

当减一被删除时,错误返回。看似单个参数的最大值实际上是放置在参数数组中字符串末尾的空字节ARG_MAX/16-1帐户。

另一个问题是,当参数重复时,参数数组的总大小可以接近ARG_MAX,但仍然不完全:

args=( $(tr -dc [:alnum:] </dev/urandom | head -c $(($(getconf ARG_MAX)/16-1))) )
for x in {1..14}; …
Run Code Online (Sandbox Code Playgroud)

kernel echo arguments

66
推荐指数
1
解决办法
6万
查看次数

将字节回显到文件

我正在尝试使用 i2c 总线将我的 rasberry Pi 连接到某些显示器。首先,我想手动写入内容,特别是字节到文件。 如何将特定字节写入文件? 我已经读过那个,我认为我的问题应该通过这样的方式解决

echo -n -e \x66\x6f\x6f > byteFileForNow
Run Code Online (Sandbox Code Playgroud)

然而,当我打开了纳米该文件,而不是我看到:

x66x6fx6f

所以反斜杠被转义了,而不是字节本身。这次我也只在没有-e 的情况下尝试了相同的方法,所以我本来希望看到\x66\x6f\x6f,但结果和以前一样。

因此,echo 正在转义反斜杠、单独的反斜杠和反斜杠,而不管它是否应该这样做。
知道如何解决这个问题吗?
根据应该已经完成​​我正在寻找的手册页。

shell character-encoding echo quoting

63
推荐指数
2
解决办法
15万
查看次数

使用echo时如何添加新行

为什么以下命令不会在生成的文件中插入新行,解决方案是什么?

$ echo "Line 1\r\nLine2" >> readme.txt

$ cat readme.txt 
Line 1\r\nLine2
Run Code Online (Sandbox Code Playgroud)

echo stdout

63
推荐指数
4
解决办法
24万
查看次数

如何呼应一声巨响!

我试图echo通过将内容写入文件来创建脚本,而不是使用编辑器打开它

echo -e "#!/bin/bash \n /usr/bin/command args"  > .scripts/command
Run Code Online (Sandbox Code Playgroud)

输出

bash: !/bin/bash: 事件未找到

我已将这种奇怪的行为与bang隔离开来。

$ echo !
!  

$ echo "!"
bash: !: event not found

$ echo \#!
#!

$ echo \#!/bin/bash
bash: !/bin/bash: event not found
Run Code Online (Sandbox Code Playgroud)
  • 为什么 bang 会导致这个?
  • bash 所指的这些“事件”是什么?
  • 我如何解决这个问题并将“#!/bin/bash”打印到屏幕或我的文件?

command-line bash echo

62
推荐指数
4
解决办法
4万
查看次数

如何使用 echo 命令和重定向运算符将换行符特殊字符放入文件中?

我想使用 echo 命令和重定向运算符创建一个文件,该文件应该由几行组成。

我试图通过“\n”在字符串中包含一个换行符:

echo "first line\nsecond line\nthirdline\n" > foo
Run Code Online (Sandbox Code Playgroud)

但是这样不会创建三行文件,而是创建一个只有一行和字符串的逐字内容的文件。

如何仅使用此命令创建多行文件?

command-line shell echo newlines

56
推荐指数
3
解决办法
15万
查看次数