Você quer dizer assim?
mkdir ~/test-tmp && cp * ~/test-tmp && cd ~/test-tmp
ou
function mm() {
local dir=$1
if [ ! -z "$dir" ]
then
mkdir ~/${dir} && cp * ~/${dir} && cd ~/${dir}
fi
}
Às vezes, acabo fazendo coisas como:
Exemplo :
de ~/blah
$ mkdir ~/test-tmp
$ cp * ~/test-tmp
$ cd ~/test-tmp
usando o diretório de destino 3 vezes seguidas. Não há uma maneira de transformá-los em um comando de uma linha?
Você quer dizer assim?
mkdir ~/test-tmp && cp * ~/test-tmp && cd ~/test-tmp
ou
function mm() {
local dir=$1
if [ ! -z "$dir" ]
then
mkdir ~/${dir} && cp * ~/${dir} && cd ~/${dir}
fi
}
Se sua preocupação incluir a redigitação de ~/test-tmp
, você pode fazer o seguinte para encurtar e combinar os comandos em uma linha única:
D=~/test-tmp; mkdir $D; cp * $D; cd $D
Por favor, note que se o seu caminho inclui espaços, você tem que citar a atribuição e onde você usa a variável:
D="~/test tmp"; mkdir "$D" ; cp * "$D"; cd "$D"
No bash, o argumento para o último comando que você executou é salvo como !$
. Isso está documentado em 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.
Então, você poderia fazer
$ mkdir ~/test-tmp ; cp * !$ ; cd !$
Ou simplesmente
$ mkdir ~/test-tmp
$ cp * !$
$ cd !$