Це переміститься 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
( командний рядок, утиліта пошуку простого тексту ). Прапор направляє , щоб знайти і повернути все імена файлів , що виключають .
Цей список файлів додається до нашого командного рядка як вихідні аргументи до команди переміщення . Цільовим аргументом є шлях до нового каталогу, який пройшов до посилання з використанням та виводу з використанням .
-v
grep
demo-app.zip
mv
mkdir
$_
echo