我正在尝试stderr从 bash shell仅打印 cURL 请求(发送到)的详细部分。
但是当我stdout像这样重定向时:
curl -v http://somehost/somepage > /dev/null
Run Code Online (Sandbox Code Playgroud)
某种结果表出现在输出的中间stderr:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
Run Code Online (Sandbox Code Playgroud)
接下来是接近尾声:
{ [data not shown]
118 592 0 592 0 0 15714 0 --:--:-- --:--:-- --:--:-- 25739
Run Code Online (Sandbox Code Playgroud)
这使得响应标头的可读性降低。
不重定向时我看不到此文本。
另一种查看效果的方法:
表没有出现:
curl -v http://somehost/somepage 2>&1
Run Code Online (Sandbox Code Playgroud)
表出现:
curl -v http://somehost/somepage 2>&1 | cat …Run Code Online (Sandbox Code Playgroud) 在 Google 上搜索如何加入/合并许多 mp3 文件,这表明我应该将cat它们放在一起。
这可能“有效”,但显然这不是正确的方法,因为每个标头和 IDv3 标签集也将连接在一起。
是否存在可以编写脚本以加入/合并许多 mp3 的 Linux 程序?
mplayer/mencoder/ffmpeg 能做到吗?
考虑像 Bash 或 sh 这样的 shell。在目标文件存在的情况下,>和之间的基本区别>>表现出来:
> 将文件截断为零大小,然后写入;>> 不截断,它写入(附加)到文件的末尾。如果文件不存在,则以零大小创建;然后写到。这对两个运营商都是如此。当目标文件尚不存在时,运算符似乎是等效的。
他们真的吗?
使用 bash 有没有办法推送和弹出当前工作目录?我尝试编写,bash;cd dir; ./dostuff;exit;但当前目录现在是dir.
该主题说明了一切,如何在更改内容后重新散列其中一个 $PATH 中可用的可用可执行文件:例如,从另一个 $PATH 中可用的 $PATH 中删除二进制文件,更改 $PATH 变量。
我只是usermod -l login-name old-name更改了用户名,但组名仍然是旧的。
有没有办法重命名组名?我找不到任何信息来这样做。
在这个bash 脚本示例页面上,作者展示了这个脚本:
# Cleanup
# Run as root, of course.
cd /var/log
cat /dev/null > messages
cat /dev/null > wtmp
echo "Log files cleaned up."
Run Code Online (Sandbox Code Playgroud)
你为什么要cat /dev/null上任何东西?我不明白这里的意图是什么(就像使用while TRUE; sleep 1; elihwfor 一样{some busy program}?)。然而,作者称其为“没什么不寻常的”。
Homebrew 有一个巧妙的技巧,可以在其输出旁边打印出小图标。像这样:

如果我自己复制粘贴图标并按回车键,我会得到结果:
-bash: $'?\237\215?': command not found
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用echo或者printf我只是get ????. 如果我转义所有引号和$s 等,则相同。
editron:~ stib$ echo $'?\237\215?'
????
Run Code Online (Sandbox Code Playgroud)
那么他们是如何做到的呢?魔法字符$'?\237\215?'是什么意思?