有没有一种方法可以指定 bash 来重用我之前输入的项目?例如,如果我想重命名一个文件,添加几个字符作为前缀,我想做类似的事情
$> mv file.txt new_{prev}
Run Code Online (Sandbox Code Playgroud)
并以new_file.txt
.
有这样的符号吗?
Kev*_*vin 11
您可以使用大括号( {}
),但方式稍有不同。在大括号内,prefix{x,y,z...}suffix
, 将扩展以将每个逗号分隔的部分放在prefix
和之间suffix
:
$ mv {,new_}file.txt
Run Code Online (Sandbox Code Playgroud)
这将扩展到mv file.txt new_file.txt
. 您也可以使用数字或字母范围执行此操作,{a..d}
将扩展为a b c d
,{1..4}
将扩展为1 2 3 4
。您只能在大括号级别内使用一个或另一个,但您可以嵌套:
$ echo {a,c,{1..3}}
a c 1 2 3
Run Code Online (Sandbox Code Playgroud)
有关大括号扩展的更多信息,请参阅此问题:大括号扩展除了 mkdir 之外的其他命令?
您可以定义一个编辑功能,复制光标下的前一个单词。
copy_preceding_word () {
local prefix suffix word
prefix="${READLINE_LINE:0:$READLINE_POINT}"
suffix="${READLINE_LINE:$READLINE_POINT}"
if [[ $prefix =~ ([^[:space:]]+)[[:space:]]+[^[:space:]]*$ ]]; then
word=${BASH_REMATCH[1]}
READLINE_LINE="$prefix$word$suffix"
((READLINE_POINT += ${#word}))
fi
}
bind -x '"\e\C-_": copy_preceding_word'
Run Code Online (Sandbox Code Playgroud)