1. “-bash: !”: event not found”
比如当我们在 linux 命令行输入echo "Reboot your instance!"
时,便会给出标题的错误信息。之所以如此,在于对于 bash !
是一个有着特殊含义的字符,常常用来指代之前的命令。
$ history | less
$ !某一数字
$ !! 运行上一命令
Understanding the exclamation mark (!) in bash
因此,这里 echo "reboot your instance!"
中的感叹号,便是将以 !
之后的字符为开始的上一条命令。
常用的解决方案如下:
set +o histexpand
/set +H
,关闭 bash 中的 history expansion(历史拓展)
2. 对 echo 输出重定向(>)时:permission denied
Cannot echo “hello” > x.txt even with sudo?
Redirect the output using sudo
$ sudo echo "hello" > f.txt
即使使用 sudo,仍然提示 permission denied
,这是因为 bash 中的重定向操作在 sudo 生效之前已经开始执行了。
解决方法如下两种:
sudo bash -c 'echo "hello" > f.txt'
echo "hello" | sudo tee f.txt