Answers:
有很多技巧(我认为有重复的技巧),但是为此我倾向于这样做
cp /etc/prog/dir1/myconfig.yml{,.bak}
它将扩展到您的命令。
这称为支撑扩展。在此处使用的形式中,{}
表达式指定了多个用逗号分隔的字符串。这些“扩展”整个/etc/prog/dir1/myconfig.yml{,.bak}
表达式,{}
依次用每个字符串替换该部分:空字符串,给定/etc/prog/dir1/myconfig.yml
,然后.bak
给定/etc/prog/dir1/myconfig.yml.bak
。结果是
cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak
这些表达式可以嵌套:
echo a{b,c,d{e,f,g}}
产生
ab ac ade adf adg
有一个使用数字来产生序列的变体:
echo {1..10}
产生
1 2 3 4 5 6 7 8 9 10
您还可以指定步骤:
echo {0..10..5}
产生
0 5 10
与progo的答案相似,但更简单:C-w
将光标左侧的单词切掉(“杀死”),C-y
然后再次插入(“ 猛击”)该单词。
$ cp /etc/dir1/myconfig.yml█ (C-w)
$ cp █ (C-y)
$ cp /etc/dir1/myconfig.yml█ (space, C-y)
$ cp /etc/dir1/myconfig.yml /etc/dir1/myconfig.yml█ (finish text)
$ cp /etc/dir1/myconfig.yml /etc/dir1/myconfig.yml.bak█
您实际上还可以从命令行剪切粘贴(在emacs / bash术语中为kill-yank)以复制零件以进行编辑。
M-d
杀死单词直到单词边界为止,您可以多次杀死文本,它们都被串联在一起作为单个“粘贴”以进行拖拽。方便!
将所有这些都拉回到光标所在的命令行C-y
。因此,如果您有这样一条线(块元素█指示光标位置):
$ cp avb.txt█ (M-b M-b)
$ cp█avb.txt (M-d) kill the word 'avb'
$ cp █.txt (C-y) yank it back
$ cp avb█.txt (C-e) to the end of line
$ cp avb.txt█ (C-y) yank it again
$ cp avb.txt avb█ finish the line
$ cp avb.txt avb.foo█
不管您喜欢哪种方式,熟悉bash在交互式密钥部门中所提供的功能都是有益的。http://web.mit.edu/gnu/doc/html/features_7.html
在tcsh
或中zsh
,Alt+Ctrl+_在emacs
模式(copy-prev-word
小部件)中插入最后一个单词,因此
cp非常长路径Alt+Ctrl+_.back
bash
有一个copy-backward-word
小部件(默认情况下未绑定到任何键),但是仅将单词复制到环形缓冲区,您还需要按Ctrl-Y(在emacs
模式下)拉动它。但是您可以这样做:
bind '"\e[cpw~": copy-backward-word'
bind '"\e\C-_": "\e[cpw~\C-Y"'
要Alt+Ctrl+_像tcsh
/中一样进行复制/粘贴和粘贴/粘贴zsh
。
bash-fu
:)