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

问题描述 投票:10回答:5

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

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

这样做我需要写第二个参数的路径(确定,标签完成)。在这个例子中它不是太糟糕,但有时路径是深度嵌套的,它似乎是相当多的额外打字。

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

linux bash mv
5个回答
11
投票

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

mv app/modules/keywords_builder.rb !#^:h/keywords_generator.rb
  1. !介绍了历史扩张。
  2. #指的是当前正在输入的命令
  3. ^意味着第一个论点
  4. :h是获取“head”的修饰符,即没有文件部分的目录

它在bashzsh中得到支持。

文档:


20
投票

另一种方式:brace expansion

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

一般来说,

before{FIRST,SECOND}after

扩展到

beforeFIRSTafter beforeSECONDafter

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

mv somefile{,.bak}

扩展到

mv somefile somefile.bak

它适用于bashzsh

更多例子:


4
投票

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

例如,

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

1
投票

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


0
投票

Mikel和geekosaur的综合答案以及“:p”的额外使用

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

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

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

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

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

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

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

然后按“↑”编辑命令

© www.soinside.com 2019 - 2024. All rights reserved.