我通过按搜索终端命令历史记录,Ctrlr但如果:
This is an old command
This is an | less -S older command
Run Code Online (Sandbox Code Playgroud)
我按下Ctrlr然后我输入“这是一个”,旧的命令出现,但不是旧的。如何搜索所有“这是一个”命令?是否可以将所有类似的命令通过管道传递给 grep 或其他东西?
如果我set -o vi
,我该如何撤消它?
当我输入firefox
终端时,它会启动 Firefox,但终端“挂起”。
幕后发生了什么?
我可以从终端打开 Firefox 并在不关闭 Firefox 的情况下继续使用相同的终端选项卡处理其他事情吗?
有人可以解释一下吗?
我有一个文件:
cat listi.txt
sdfasdfsf123sadfasdf123
jlkjh2345ljkh245lkh4325
57hghf456ghf457gf467
Run Code Online (Sandbox Code Playgroud)
这里 sed 错过了第一行:
while read line ; do sed 's/[^0-9]//g'; done < listi.txt
23452454325
57456457467
Run Code Online (Sandbox Code Playgroud)
在这里看到:
while read line ; do echo $line; done < listi.txt
sdfasdfsf123sadfasdf123
jlkjh2345ljkh245lkh4325
57hghf456ghf457gf467
Run Code Online (Sandbox Code Playgroud)
这可行,但感觉多余,我可能会错过它,因为我认为 sed 会传递所有行:
while read line ; do echo $line | sed 's/[^0-9]//g'; done < listi.txt
123123
23452454325
57456457467
Run Code Online (Sandbox Code Playgroud)
为什么是这样?重新获得我对 bash 的信任,因为这让我产生怀疑
我在没有学习的情况下总是遇到这个问题。
当在另一个目录中搜索起点的文件时,我给出了起点的完整路径,但它不起作用。当我位于起始目录并给出起始点的完整路径时,也会发生同样的情况。
find /path/from/start/. -path './anaconda3/*' -prune -o -name '*R' -print
Run Code Online (Sandbox Code Playgroud)
直接进入“修剪”目录,就像里面有糖果一样。
如果我处于起点,那么从 开始.
效果很好。否则find
不会修剪我试图逃脱的路径。
find . -path './anaconda3/*' -prune -o -name '*R' -print
Run Code Online (Sandbox Code Playgroud)
作品。
也许详细的答案可以解决这个问题,有时我会学习,但下次我面对命令时,find
我会遇到同样的问题,就像我以前从未这样做过一样。手册页的这一-path pattern
章试图说些什么,但我认为它是在 vogon 中,而且我没有巴别鱼。