Bash有没有办法回忆起前一个命令的论点?
我通常会vi file.c跟着gcc file.c.
Bash有没有办法回忆起前一个命令的论点?
在Bash中,我们可以使用Alt+ number+ .选择前一个命令的第 n 个参数,并使用Alt+ ,选择前一个命令。他们循环浏览历史。
例如:
$ ls 1 2
$ echo 10 20
Run Code Online (Sandbox Code Playgroud)
现在按住Alt,然后按0再点,它将显示“ echo”。在不松开的情况下Alt,.再次按,将显示“ ls”。在同一操作中使用1将显示10和1,以此类推。按Alt和逗号将显示历史记录中的整个命令行。还Alt和.展示历史命令的最后一个参数。
请注意,所有这些操作只是将参数(或整个命令行)插入当前光标。他们不会更改当前命令行中已经存在的内容。
我正在使用Zsh和最新的Oh-My-Zsh软件包,但似乎行为有所不同:
Zsh的Alt+号,表示命令的最后一个参数。
的Alt+ 0+ .是相同的击(示出了comman),但 Alt+ number+ .示出的最后n 个参数,即,Alt+ 1+ .在上面的情况下示出了20和2。
该Alt+ ,不显示在历史上的整个命令。
如何在Zsh中做同样的事情?谢谢。
鱼壳相当于什么mkdir -p foo/bar/baz/quux && cd $_?
我知道$history[1],但在这里我只需要上一个命令的最后一个参数。
假设我在当前目录中有stuff.txt,填充了东西.我想摆脱它,并在vim中创建一个新的stuff.txt.显然我能做到
rm stuff.txt
vi stuff.txt
Run Code Online (Sandbox Code Playgroud)
但这是两个步骤,恐怖!有没有办法在不调用rm的情况下将其合并为一个vim/vi调用?perpsps some -option on vim,在查看手册时我不知何故错过了?
明显的解决方法是在名为new.sh的文件中创建这样的东西:
#!/bin/bash
rm $1
vim $1
Run Code Online (Sandbox Code Playgroud)
然后从命令行,./ new.sh stuff.txt做,但这似乎有点不太重要.我在ubuntu上使用标准bash.
当我调用二进制文件时,我需要覆盖第一个参数.
由于这是程序名称,我有两个解决方案:
但是,有时我需要完全删除第一个参数.
我用C编写了一个简单的程序来完成这项工作:
#include <unistd.h>
int main(int argc, char **argv)
{
return execve(argv[1], NULL, NULL);
}
Run Code Online (Sandbox Code Playgroud)
我有一个内置的方式来做shell吗?首选bash的解决方案.