小编Pet*_*nak的帖子

在不使用临时文件的情况下将输出的前 N ​​行移动到结尾

想象一下这样的命令的输出

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 不关心命令的顺序)。

command-line text-processing

11
推荐指数
3
解决办法
6152
查看次数

在 zsh 中使用花括号扩展匹配文件

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但这并不是特别容易/实用。

zsh wildcards brace-expansion

5
推荐指数
1
解决办法
4763
查看次数

在 tmux 窗格/dwm 终端上使用 vim 缓冲区的好处

在多个终端的单独实例上使用 vim 缓冲区有什么好处?

我已经使用 vim 有一段时间了,但同时我一直在使用平铺窗口管理器 (dwm/xmonad),这意味着如果我想打开一个新文件,我只需启动一个新终端并启动一个新的 vim 实例。

对于 tmux + vim 情况也可以这样说(这可能更常见)。

由于我对它们的经验很少,我能看到使用 vim 缓冲区的唯一好处是共享寄存器,这样我就可以提取一段文本并将其粘贴到其他地方;但我"+什至可以跨终端做到这一点。

同样,它为我提供了另一个级别的布局定制(dwm 平铺中 tmux 窗格中 vim 选项卡中的 vim 窗口中的 vim 缓冲区)......

还有什么我应该注意的其他好处吗?

vim tmux dwm

3
推荐指数
1
解决办法
2035
查看次数