Sta*_*wed 5 linux sudo bash history command-history
如果我想查看 root 的 bash 历史记录,为什么我不能直接运行sudo history?当我这样做时,它说找不到命令历史记录,但是如果我在没有 sudo 的情况下运行它,它运行良好。
编辑:这是一个重复的答案,但不是链接的重复问题。提出任何一个问题的人都不知道它是一个 shell 内置命令,而不是一个二进制命令。
history是 bash shell 内置命令,sudo不适用于 shell 内置命令。
我用的命令which是“返回这将在环境中执行的文件(或链接)的路径名”,确认history不属于外部(到bash)的命令。
例如,运行
$ which history
$
Run Code Online (Sandbox Code Playgroud)
不返回任何内容并且退出代码为 1(一个或多个指定的命令不存在或不可执行)[仅供参考echo $?,在运行时看到带有]的退出代码
$ which ls
/bin/ls
$
Run Code Online (Sandbox Code Playgroud)
和退出代码 0(所有指定的命令都被找到并且可执行)。
此外,在 bash 中,您可以使用help(或搜索man bash页面)查找内置命令的帮助。例如,键入
$ help history
history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps
arg [arg...]
Display or manipulate the history list.
...
Run Code Online (Sandbox Code Playgroud)
显示 bash 的帮助信息。运行help non-bash-command返回与此类似的内容:
$ help ls
bash: help: no help topics match `ls'. Try `help help' or `man -k ls' or
`info ls'.
Run Code Online (Sandbox Code Playgroud)
和退出代码 1
您可以在您自己的历史记录中搜索您的sudo用户使用grep '^sudo' .bash_history或history|less或类似的命令运行(而不是跳过将其保存到历史记录)。
或者,在 Ubuntu 上,该文件/var/log/auth.log会记录sudo所有用户所做的事情,在其中搜索“sudo”(其他发行版可能会使用该文件/var/log/secure),或者可以使用
sudo grep sudo /var/log/auth.log
Run Code Online (Sandbox Code Playgroud)
或者sudo journalctl _COMM=sudo如果你有 systemd 就运行。
有关更多详细信息,请参阅Unix 和 Linux 上的问题“有关所有用户执行的 sudo 命令的详细信息”
| 归档时间: |
|
| 查看次数: |
4681 次 |
| 最近记录: |