Isso será movido foo.cpara o novo diretório bazcom o diretório pai bar.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
A -popção para mkdircriar diretórios intermediários, conforme necessário.
Sem-p todos os diretórios no prefixo do caminho, já deve existir.
Tudo dentro dos backticks ``é executado e a saída é retornada em linha como parte do seu comando.
Como mkdirnão retorna nada, apenas a saída de echo $_será adicionada ao comando.
$_referencia o último argumento ao comando executado anteriormente.
Nesse caso, ele retornará o caminho para o seu novo diretório ( ~/bar/baz/) passado para o mkdircomando.
Descompactei um arquivo compactado sem dar um destino e queria mover todos os arquivos, exceto
demo-app.zipdo meu diretório atual para um novo diretório chamado
demo-app.
A seguinte linha faz o truque:
mv `ls -A | grep -v demo-app.zip` `mkdir -p demo-app && echo $_`
ls -Aretorna todos os nomes de arquivos, incluindo arquivos ocultos ( exceto os implícitos .e.. ).
O símbolo de canal |é usado para canalizar a saída do lscomando grep( um utilitário de pesquisa em linha de comando e texto sem formatação ).
O -vsinalizador direciona greppara encontrar e retornar todos os nomes de arquivos, exceto demo-app.zip.
Essa lista de arquivos é adicionada à nossa linha de comando como argumentos de origem no comando move mv. O argumento target é o caminho para o novo diretório passado para o mkdirreferenciado using $_e output using echo.