刚才输入的项目的外壳符号?

use*_*394 5 bash

有没有一种方法可以指定 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 之外的其他命令?


Gil*_*il' 7

您可以定义一个编辑功能,复制光标下的前一个单词。

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)