有什么方法可以将命令作为多行命令保存到bash历史记录中,然后向上和向下导航以进行一些编辑并再次运行?
$ shopt -s cmdhist
$ shopt -s lithist
$ echo "1"\
&& echo "2"\
&& echo "3"
Run Code Online (Sandbox Code Playgroud)
现在,如果我按向上箭头,我想看看
$ echo "1"\
&& echo "2"\
&& echo "3"
Run Code Online (Sandbox Code Playgroud)
..again,但庆典给我echo "1"&& echo "2"&& echo "3"。即尽管设置了cmdhist和lithist标志,但它删除了新行。
如果向上箭头起作用并显示了多行命令,如何在其中上下导航?
Bash与\之前的换行符被忽略之前一样,这是不可能的Bash。来自man bash:
不带引号的反斜杠()是转义字符。它会保留下一个字符的字面值,但除外。如果出现一个\对,并且反斜杠本身未加引号,则\被视为行的延续(即,它已从输入流中删除并被有效忽略)。
如果您愿意更改外壳或想尝试签出zsh,它可以满足您的需求:
$ echo a \
echo b
Run Code Online (Sandbox Code Playgroud)
按C-键,p并保留换行符:
$ echo a \
echo b
Run Code Online (Sandbox Code Playgroud)