linux - 历史命令在终端中有效,但在作为 bash 脚本编写时无效

标签 linux bash shell terminal history

我有一个简单的单行代码,可以在终端中完美运行:

history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head

它的作用:给出用户最近最常用的 10 个命令。 (不要问我为什么会想要实现这样的事情)

我启动了一个编辑器,并在开头输入了一个 #!/bin/bash:

#!/bin/bash
history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head

假设我将它保存为 script.sh。然后,当我转到同一个终端时,键入 bash script.sh 并按 Enter,没有任何反应。

到目前为止我已经尝试过:谷歌搜索。许多人都有类似的痛苦,但他们通过 sudo su 或添加/删除空格得到了解决。这些都不适合我。知道我可能哪里出错了吗?


编辑:

我想从终端本身做这件事。运行此脚本的系统可能提供也可能不提供更改主文件夹中文件的权限。

BryceAtNetwork23 建议的另一个问题,history 命令有什么特别之处阻止我们执行它?

最佳答案

查看您的历史记录仅在交互式 shell 中才有意义。使该命令成为函数而不是独立脚本。在你的 ~/.bashrc 中,放入

popular_history() {
    history | sort -k2 | uniq -c --skip-fields=1 | sort -r -g | head
}

关于linux - 历史命令在终端中有效,但在作为 bash 脚本编写时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21762356/

相关文章:

php - 使用 Apache 和 PHP 处理线程

linux - 从 bash 输出中排除一个字符串

linux - PowerShell 脚本查找文件中的特定单词并在行开头添加 “4”

linux - 逐行读取文件 fork/exec - Perl

android - 如何在android平板电脑和Linux系统之间同步日期、时间和时区?

python - 依次运行多个命令行 linux python

linux - 如何在 bash 中动态创建变量?

linux - bash 及其引用规则的问题

mysql - 来自命令行的注入(inject)证明 SQL 语句

c - 无法为 sigchld_handler 中的 pid 获取 pgid()