我希望能够将我的 Linux bash 历史记录输出到文件中。然后逐行创建一个新的 shell 脚本,其中包含每行的内容。到目前为止,我已经从命令行尝试过此操作。
例如
历史文件的输出
73 nmap -T4 -A -v 127.0.0.1
74 nmap -T4 -A -v 192.168.0.1/24
我的第一个问题是行号...为了删除它们,我应用了这个命令。
history | cut -c 8- > one.txt
这给了我这样的输出..
nmap -T4 -A -v 127.0.0.1
nmap -T4 -A -v 192.168.0.1/24
这里有一个问题,因为文本包含空格
cat one.txt | tr -cd '[:alnum:]\n\r~!@#$%^&*()-_=+{}\|;:<>,./?"`' | sed '/^$/d' > bar.txt
我使用上述命令删除了 Linux 不喜欢包含在文件名中的非法字符。
这就是我碰壁的地方……
它笨重又混乱......
必须有一种更简单、更漂亮的方法......
答案1
不必费心去弄清楚如何将历史记录写入文件。您的 Ubuntu 系统已默认将历史记录写入文件~/.bash_history
。因此,只需一个简单的
cat ~/.bash_history
检索文件的内容。
答案2
按行将历史文件拆分为文件
split --verbose -l1 ~/.bash_history
(在单独目录的副本上执行此操作)
要添加 shebang:
for file in *; do
sed -i '1i #!/bin/sh' $file
done