是否有任何快捷方式可以引用 MV 命令中第一个参数的路径?

发布于 2024-10-30 01:17:09 字数 220 浏览 6 评论 0原文

我经常发现自己使用 mv 来重命名文件。例如,

mv app/models/keywords_builder.rb app/models/keywords_generator.rb

这样做我需要编写(好的,制表符完成)第二个参数的路径。在此示例中,情况还不错,但有时路径嵌套很深,看起来需要相当多的额外输入。

有没有更有效的方法来做到这一点?

I often find myself using mv to rename a file. E.g.

mv app/models/keywords_builder.rb app/models/keywords_generator.rb

Doing so I need to write (ok, tab complete) the path for the second parameter. In this example it isn't too bad but sometimes the path is deeply nested and it seems like quite a bit of extra typing.

Is there a more efficient way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

阳光下慵懒的猫 2024-11-06 01:17:09

另一种方式:大括号扩展

mv app/models/keywords_{builder,generator}.rb

一般来说,

before{FIRST,SECOND}after

扩展为

beforeFIRSTafter beforeSECONDafter

因此它对于其他重命名也很有用,例如

mv somefile{,.bak}

扩展为

mv somefile somefile.bak

它适用于 bashzsh

更多示例:

And another way: brace expansion.

mv app/models/keywords_{builder,generator}.rb

In general,

before{FIRST,SECOND}after

expands to

beforeFIRSTafter beforeSECONDafter

So it's also useful for other renames, e.g.

mv somefile{,.bak}

expands to

mv somefile somefile.bak

It works in bash and zsh.

More examples:

落墨 2024-11-06 01:17:09

您可以像这样使用历史扩展:

mv app/modules/keywords_builder.rb !#^:h/keywords_generator.rb
  1. ! 引入历史扩展。
  2. # 指当前正在输入的命令
  3. ^ 表示第一个参数
  4. :h 是一个修饰符,用于获取“头”,即没有目录的目录文件部分

bashzsh 支持。

文档:

You can use history expansion like this:

mv app/modules/keywords_builder.rb !#^:h/keywords_generator.rb
  1. ! introduces history expansion.
  2. # refers to the command currently being typed
  3. ^ means the first argument
  4. :h is a modifier to get the "head", i.e. the directory without the file part

It's supported in bash and zsh.

Docs:

旧城空念 2024-11-06 01:17:09

一种方法是输入第一个文件名和一个空格,然后按 Ctrl+w 将其删除。然后按 Ctrl+y 两次以获取文件名的两个副本。然后编辑第二个副本。

例如,

mv app/models/keywords_builder.rb <Ctrl+W><Ctrl+Y><Ctrl+Y><edit as needed>

One way is to type the first file name and a space, then press Ctrl+w to delete it. Then press Ctrl+y twice to get two copies of the file name. Then edit the second copy.

For example,

mv app/models/keywords_builder.rb <Ctrl+W><Ctrl+Y><Ctrl+Y><edit as needed>
笙痞 2024-11-06 01:17:09

或 cd apps/models && mv keywords_builder.rb keywords_generator.rb && cd-

or cd apps/models && mv keywords_builder.rb keywords_generator.rb && cd -

瑕疵 2024-11-06 01:17:09

Mikel 和 geekosaur 的综合答案,并附加使用“:p”

使用大括号扩展以避免第一个参数重复:

mv -iv {,old_}readme.txt # 'readme.txt' - > 'old_readme.txt'

mv -iv file{,.backup} # '文件' -> 'file.backup'

使用历史扩展来避免第一个参数重复:

mv -iv "system file" !#$.backup # 'system file' -> 'system file.backup'

可以使用“p”指示符打印文件名以进行进一步编辑:

mv -iv "file with a long name" !#$:p

然后按“↑”编辑命令

Combined answers of Mikel and geekosaur with additonal use of ":p"

use brace expansion to avoid first argument repetition:

mv -iv {,old_}readme.txt # 'readme.txt' -> 'old_readme.txt'

mv -iv file{,.backup} # 'file' -> 'file.backup'

use history expansion to avoid first argument repetition:

mv -iv "system file" !#$.backup # 'system file' -> 'system file.backup'

the filename can be printed using the "p" designator for further edition:

mv -iv "file with a long name" !#$:p

then press "↑" to edit the command

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文