我正在寻找的是可以执行一系列如下命令的东西:
# cat file1 >> concated_file
# cat file2 >> concated_file
# cat file3 >> concated_file
# cat file4 >> concated_file
但不需要我再重新输入整个命令 3 次。也许只需用以下语法替换上一个命令中的参数即可:
# cat file1 >> concated_file
# s/file1/file2
# s/file2/file3
# s/file3/file4
我知道如果最后一个参数相同你可以这样做:
# cp -p test1.txt test2.txt
# chmod 777 $_
# chown nimmylebby: $_
您还可以使用 Bash 循环,如下所示:
# for f in 'file1' 'file2';
> do
> chmod 750 $f;
> done
然而,上述两个例子不是我正在寻找什么。我只想执行一系列只因一个参数而不同的命令没有使用 for 循环。这可能吗?可能不行,但希望可以 ;-)。
答案1
按Up,根据需要编辑命令,按Enter。
与前面相同,但为了便于编辑,请将更改的单词安排在命令的最后,例如
cat >> concated_file file1
。对于您的示例命令,这很简单,但并非在所有情况下都是如此。定义一个以变量部分作为参数的函数:
f () { cat "$1" >> concated_file; }
。然后多次调用该函数:f file1
,f file2
,...使用历史扩展. 您可以在这里做
^file1^file2
。
答案2
也许你需要的是一个功能:
function mycat() { cat $1 >> concated_file; }
mycat file1
mycat file2
mycat file3
mycat file4