我有时最终会做这样的事情:
例子:
从~/blah
$ mkdir ~/test-tmp
$ cp * ~/test-tmp
$ cd ~/test-tmp
连续使用目标目录 3 次。有没有办法将这些变成一行命令?
答案1
你的意思是这样吗?
mkdir ~/test-tmp && cp * ~/test-tmp && cd ~/test-tmp
或者
function mm() {
local dir=$1
if [ ! -z "$dir" ]
then
mkdir ~/${dir} && cp * ~/${dir} && cd ~/${dir}
fi
}
答案2
在 bash 中,您运行的最后一个命令的参数保存为!$
.这记录在man bash
:
! Start a history substitution, except when followed by a blank,
newline, carriage return, = or ( (when the extglob shell option
is enabled using the shopt builtin).
[...]
$ The last argument.
所以,你可以这样做
$ mkdir ~/test-tmp ; cp * !$ ; cd !$
或者,简单地说
$ mkdir ~/test-tmp
$ cp * !$
$ cd !$
答案3
如果您关心的是重新输入~/test-tmp
,您可以执行以下操作来缩短命令并将其合并为一行:
D=~/test-tmp; mkdir $D; cp * $D; cd $D
请注意,如果您的路径包含空格,则必须引用作业和使用变量的地方:
D="~/test tmp"; mkdir "$D" ; cp * "$D"; cd "$D"