Jeśli Twoim celem jest wykonanie polecenia jednowierszowego, które:
- Usuwa i odtwarza katalog,
~/Desktop/foo
jeśli już istnieje.
- Po prostu tworzy katalog,
~/Desktop/foo
jeśli jeszcze nie istnieje.
Następnie możesz użyć:
rm -r ~/Desktop/foo; mkdir ~/Desktop/foo
;
jest równoważny nowej linii, ale umożliwia wykonywanie wielu poleceń w jednym wierszu (tj. jako „pojedyncze polecenie”).
- Jeśli usuwany katalog może zawierać tylko do odczytu pliki, będziesz potrzebować
-f
flagi, aby je usunąć bez monitowania użytkownika interaktywnie. Jest w porządku, ale zalecam zachowanie szczególnej ostrożności rm -rf ...
. Zobacz man rm
szczegóły.
- Potrzebujesz
rm
polecenia, aby zakończyć, zanim mkdir
polecenie zostanie wykonane; to jest powód, aby użyć ;
zamiast &
. (Polecenie poprzedzające &
działa asynchronicznie w tle).
- Potrzebujesz
mkdir
komendy do uruchomienia, gdy rm
komenda się powiedzie; to jest powód, aby użyć ;
zamiast ||
.
- Musisz uruchomić
mkdir
polecenie, gdy rm
polecenie się nie powiedzie (zwykle błąd oznacza, że katalog jeszcze nie istniał); to jest powód, aby użyć ;
zamiast &&
.
rm
Polecenie może zawieść nawet gdy katalog już istnieje, w którym to przypadku mkdir
komenda nie powiedzie się również, ale komunikaty o błędach będzie sensu i nie ma chyba potrzeby dodawać środkowy sprawdzanie krok do foo
„s istnienia przed próbuje go utworzyć.
Zobacz 3.2.3 listy poleceń w podręczniku Reference Bash więcej informacji i wyjaśnień na temat ;
, &
, ||
oraz &&
operatorów.
Zgodnie z sugestią Muru (i rozwiniętą przez Rinzwind ), polecamrsync
sprawdzić, czy spełni twoje potrzeby tworzenia kopii zapasowych. Na stronie dokumentacji rsync znajduje się kilka dodatkowych przydatnych przewodników , a także ten przewodnik Ubuntu rsync .
dlaczego mkdir nie ma tej opcji?
mkdir
tworzy katalogi („mk” oznacza „make” ). Gdyby również rekurencyjnie usuwać katalogi i wszystkie pliki w nich byłyby złe, ponieważ naruszałoby to zasadę najmniejszego zdziwienia w sposób, który prawdopodobnie prowadziłby do utraty danych.
rmdir
nawet nie usuwa katalogów, które zawierają pliki (inne niż katalog). rm
ma -r
opcję, która ma sens, ponieważ rm
oczekuje się, że usunie pliki (to jest jej cel, dlatego nieodłączne niebezpieczeństwo jest intuicyjne, a użytkownicy zwykle wiedzą, że należy zachować ostrożność podczas uruchamiania rm
poleceń).
foo
jak usunąć całą zawartość?mkdir
ma-p
opcję, która ignoruje, jeśli katalog istnieje.