Zostanie przeniesiony foo.cdo nowego katalogu bazz katalogiem nadrzędnym bar.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
-pOpcja mkdirspowoduje utworzenie katalogów pośrednich zgodnie z wymaganiami.
Bez -pwszystkich 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ż mkdirnic 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 mkdirpolecenia.
Rozpakowałem archiwum bez podania miejsca docelowego i chciałem przenieść wszystkie pliki oprócz
demo-app.zipmojego 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 -Azwraca wszystkie nazwy plików, w tym pliki ukryte ( z wyjątkiem niejawnych .i.. ).
Symbol potoku |służy do potokowania danych wyjściowych lspolecenia 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ą .
-vgrepdemo-app.zip
mvmkdir$_echo