Zostanie przeniesiony foo.c
do nowego katalogu baz
z katalogiem nadrzędnym bar
.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
-p
Opcja mkdir
spowoduje utworzenie katalogów pośrednich zgodnie z wymaganiami.
Bez -p
wszystkich katalogów w ścieżce prefiks musi już istnieć.
Wszystko w backticks ``
jest wykonywane, a dane wyjściowe są zwracane w linii w ramach polecenia.
Ponieważ mkdir
nic nie zwraca, tylko polecenie echo $_
zostanie dodane do polecenia.
$_
odwołuje ostatni argument do poprzednio wykonanej komendy.
W takim przypadku zwróci ścieżkę do nowego katalogu ( ~/bar/baz/
) przekazanego do mkdir
polecenia.
Rozpakowałem archiwum bez podania miejsca docelowego i chciałem przenieść wszystkie pliki oprócz
demo-app.zip
mojego bieżącego katalogu do nowego katalogu o nazwie
demo-app
.
Następująca linia załatwia sprawę:
mv `ls -A | grep -v demo-app.zip` `mkdir -p demo-app && echo $_`
ls -A
zwraca wszystkie nazwy plików, w tym pliki ukryte ( z wyjątkiem niejawnych .
i..
).
Symbol potoku |
służy do potokowania danych wyjściowych ls
polecenia grep
( narzędzie wiersza polecenia, wyszukiwanie tekstowe ). Flag kieruje odnaleźć i zwrócić wszystkie nazwy plików z wyłączeniem .
Ta lista plików jest dodawana do naszego wiersza poleceń jako argumenty źródłowe do polecenia move . Argument docelowy jest ścieżką do nowego katalogu przekazywanego do referencyjnego za pomocą i wyjściowego za pomocą .
-v
grep
demo-app.zip
mv
mkdir
$_
echo