Це переміститься foo.cдо нового каталогу bazз батьківським каталогом bar.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
-pОпція mkdirбуде створювати проміжні каталоги по мірі необхідності.
Без -pусіх каталогів префікс шляху вже повинен існувати.
Все, що знаходиться всередині задників ``, виконується, а вихід повертається в рядку як частина вашої команди.
Оскільки mkdirнічого не повертає, до команди echo $_буде додано лише вихідний результат .
$_посилається на останній аргумент на раніше виконану команду.
У цьому випадку він поверне шлях до вашого нового каталогу ( ~/bar/baz/), переданого mkdirкоманді.
Я розпакував архів, не вказавши призначення, і хотів перемістити всі файли, за винятком
demo-app.zipмого поточного каталогу, у новий каталог з назвою
demo-app.
Наступний рядок робить трюк:
mv `ls -A | grep -v demo-app.zip` `mkdir -p demo-app && echo $_`
ls -Aповертає всі імена файлів, включаючи приховані файли ( за винятком неявних .та.. ).
Символ труби |використовується для передачі виводу lsкоманди в grep( командний рядок, утиліта пошуку простого тексту ). Прапор направляє , щоб знайти і повернути все імена файлів , що виключають .
Цей список файлів додається до нашого командного рядка як вихідні аргументи до команди переміщення . Цільовим аргументом є шлях до нового каталогу, який пройшов до посилання з використанням та виводу з використанням .
-vgrepdemo-app.zip
mvmkdir$_echo