私は時々次のことをします。
はい:
~から~/blah
$ mkdir ~/test-tmp
$ cp * ~/test-tmp
$ cd ~/test-tmp
ターゲットディレクトリを3回連続して使用します。これを1行のコマンドに置き換える方法はありますか?
答え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
次の手順を実行してコマンドを短縮して1行にまとめることができます。
D=~/test-tmp; mkdir $D; cp * $D; cd $D
パスにスペースが含まれている場合は、ジョブを引用する必要があります。そして変数を使用する場所:
D="~/test tmp"; mkdir "$D" ; cp * "$D"; cd "$D"