相关疑难解决方法(0)

您最喜欢的命令行功能或技巧是什么?

分享您的 Unix/Linux 命令行功能和技巧。如果可能的话,尽量保持它的外壳/发行版不可知。有兴趣查看别名、单行、键盘快捷键、小 shell 脚本等。

command-line shell

93
推荐指数
27
解决办法
5万
查看次数

在 Bash 中输入单个感叹号有什么作用?

Bash 使用感叹号进行历史扩展,如该问题的答案中所述(例如,使用sudo !!运行先前的命令行sudo)。但是,我找不到任何解释运行以下命令(即单个感叹号)的作用的地方:

!
Run Code Online (Sandbox Code Playgroud)

它似乎不打印任何内容并以 1 退出,但我不确定为什么会这样。我已经在网上和 Bash 手册页中查看过,但除了它是一个“保留字”这一事实之外,找不到任何东西——但也是如此},并运行这个:

}
Run Code Online (Sandbox Code Playgroud)

打印错误:

bash: syntax error near unexpected token `}'
Run Code Online (Sandbox Code Playgroud)

bash history-expansion exit-status

24
推荐指数
2
解决办法
6423
查看次数

为什么感叹号 `!` 有时会打乱 bash?

我意识到这!在命令行历史上下文中对命令行具有特殊意义,但除此之外,在运行脚本中,感叹号有时会导致解析错误。
我认为它与 an 有关event,但我不知道事件是什么或它做什么。即便如此,相同的命令在不同情况下的行为也会有所不同。
下面的最后一个示例导致错误;但是为什么,当相同的代码在命令替换之外工作时呢?.. 使用 GNU bash 4.1.5

# This works, with or without a space between ! and p
  { echo -e "foo\nbar" | sed -nre '/foo/! p'
    echo -e "foo\nbar" | sed -nre '/foo/!p'; }
# bar
# bar

# This works, works when there is a space between ! and p
  var="$(echo -e "foo\nbar" | sed -nre '/foo/! p')"; echo "$var"
# bar

# This causes an ERROR, with NO …
Run Code Online (Sandbox Code Playgroud)

bash command-history quoting

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

bash 脚本中的感叹号与终端中的感叹号

我有一个名为foo.sh的简单 bash 脚本,如下所示:

#!/bin/bash

echo "Foo!"
Run Code Online (Sandbox Code Playgroud)

当我在./foo.sh收到Foo!消息时运行它时,一切都很好。但是,如果我echo "Foo!"直接从控制台,然后我得到预期的行为和信息:bash: !": event not found

我知道 the!是作为前一个命令显示的,如果在 pe 单引号内使用,则将其视为文字。我只是想知道用它运行脚本有什么区别echo "Foo!"(即使是source ./foo.sh工作,但直接从控制台它没有。

bash shell-script

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

Bash 及其感叹号命令,在执行之前预览实际命令?

!作为某个字符串的前缀将执行命令缓冲区中以给定(部分)字符串开头的任何命令。它还有一些其他用途。请参阅理解 bash 中的感叹号 (!)

我的问题是,如何在执行命令之前预览将要执行的命令?例如,如果我这样做!for,并且我之前已经编写了几个以“for”开头的命令,但我不完全确定我认为是最后一个的命令是否确实是我认为的命令。如果 bash 可以在实际执行命令之前向我显示将要执行的命令是什么,那将非常有用。有什么办法可以在 bash 中做到这一点吗?

bash command-history

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

!d 命令是什么

有人可以向我解释什么!d命令吗?

似乎想起了一个旧命令(du -sh对我而言),但我不知道如何选择该命令。

bash terminal

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