想象一下这样的命令的输出
44444
55555
11111
22222
33333
Run Code Online (Sandbox Code Playgroud)
我怎样才能拉出前 N 行(上例中的前两行)并将它们附加到最后,但不使用临时文件(所以只使用管道)?
11111
22222
33333
44444
55555
Run Code Online (Sandbox Code Playgroud)
类似的东西| sed -n '3,5p;1,2p'
(这显然不起作用,因为 sed 不关心命令的顺序)。
在bash
我可以使用花括号来模式匹配多个文件,例如
ls *.{dot,svg,err}
Run Code Online (Sandbox Code Playgroud)
如果没有特定扩展名的文件,我会收到警告,但会列出其余文件。
ls: 无法访问 '*.err': 没有那个文件或目录
但是,在zsh
我得到一个错误并且没有为现有文件产生输出。
zsh:未找到匹配项:*.err
这也适用于删除,在尝试删除文件时:
rm -f *.{dot,svg,err}
Run Code Online (Sandbox Code Playgroud)
将在bash
没有任何错误或警告的情况下删除所有匹配的文件,但zsh
它会出错并且根本不会删除任何内容。
有没有办法使zsh
行为与 相同bash
,或者是否有另一种方法可以轻松删除/列出现有文件¹?
¹显然我可以做类似的事情,find . -name '*.dot' -or -name '*.svg' -or -name '.err' | xargs rm
但这并不是特别容易/实用。
在多个终端的单独实例上使用 vim 缓冲区有什么好处?
我已经使用 vim 有一段时间了,但同时我一直在使用平铺窗口管理器 (dwm/xmonad),这意味着如果我想打开一个新文件,我只需启动一个新终端并启动一个新的 vim 实例。
对于 tmux + vim 情况也可以这样说(这可能更常见)。
由于我对它们的经验很少,我能看到使用 vim 缓冲区的唯一好处是共享寄存器,这样我就可以提取一段文本并将其粘贴到其他地方;但我"+
什至可以跨终端做到这一点。
同样,它为我提供了另一个级别的布局定制(dwm 平铺中 tmux 窗格中 vim 选项卡中的 vim 窗口中的 vim 缓冲区)......
还有什么我应该注意的其他好处吗?