根据 Linux 历史创建单独的 Bash 脚本

根据 Linux 历史创建单独的 Bash 脚本

我希望能够将我的 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

相关内容