Jaka jest różnica między poleceniami „cd \” i „cd /” w terminalu Ubuntu?

10

Dając cd \, dostaję >symbol, podczas gdy cd /zmieniam ~znak w moim katalogu na /.

Również lspolecenie pokazuje mi katalogi jak dev, root, usrw przypadku cd /.

ShailyGarg
źródło

Odpowiedzi:

15

W Bash twoja powłoka \(ukośnik odwrotny) oznacza znak ucieczki. Powinno to być używane w przypadkach, gdy chcesz uciec od znaków, takich jak spacje, cudzysłowy i inne znaki mające znaczenie dla składni powłoki, ale chcesz, aby propagowała się jako dane do uruchomionego polecenia. Mając to jako ostatni znak w linii, uciekasz od nowej linii, a Bash czeka na dalsze dane wejściowe (wiele linii).

/jest tylko ukośnikiem (oznaczającym separator katalogu ). Tylko /to oznacza root, więc na przykład ls /wyświetla zawartość roota. Zmieniając katalog roboczy na /, wskaźnik w powłoce również zmienia się z ~(skrót od katalogu domowego, np. /home/gert/) Na katalog, w którym się znajdujesz ( /).


Próbny

$ touch a filename with spaces
$ ls -l
total 0
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 a
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 filename
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 spaces
-rw-rw-r-- 1 gert gert 0 Jul  1 02:33 with

O nie, moim zamiarem było utworzenie jednego pliku o nazwie a filename with spaces. Więc tutaj używamy \do ucieczki w kosmos. Zapobiega to dostarczaniu przez powłokę czterech argumentów touch, ale zamiast tego zapewnia jeden z dołączonymi spacjami.

touch a\ filename\ with\ spaces

$ touch a\ filename\ with\ spaces
$ ls -al
total 24
drwxrwxr-x  2 gert gert  4096 Jul  1 02:35 .
drwxrwxr-x 55 gert gert 20480 Jul  1 02:33 ..
-rw-rw-r--  1 gert gert     0 Jul  1 02:35 a filename with spaces

Oczywiście, używając quotes ( touch "a filename with spaces") można osiągnąć to samo.

Służy również do deklarowania znaków specjalnych, takich jak znaki nowej linii:

$ echo -e "bla\nnewline" # \n means a newline character
bla
newline

Musimy -eopcję tutaj echo, bo jak manpage mówiąc: -e enable interpretation of backslash escapes.

gertvdijk
źródło
W celu dalszego wyjaśnienia: W przykładzie PO, cd \ ucieka przed końcem wiersza (klawisz Return). Oznacza to, że terminal nadal czeka na resztę polecenia. Komunikat >pokazuje, że czeka. Zwykły monit wyświetla bieżący katalog, dlatego pokazuje go /po użyciu cd /. ~Jest krótki ręki do swojego katalogu domowego, dlatego pokazuje ~zamiast /home/user.
Paddy Landau
1

Jeśli wpiszesz ukośnik odwrotny, możesz wpisać polecenie w wielu wierszach. Oto, co oznacza przedrostek „>”.

alwe
źródło
1

Na >znak oznacza, że szybka czeka na ciebie, aby wprowadzić więcej, ponieważ poprzednia komenda była niekompletna. Możesz to odtworzyć w dowolny sposób, nie tylko cd. Po prostu wpisz whateveryouwant\, a dostaniesz >.

Część, w której widać, ~oznacza bieżący katalog roboczy. Aby zmienić katalog roboczy, użyj polecenia cd, co oznacza zmianę katalogu (folderu). Jeśli tak cd /, zmieni katalog na /. Jeśli to zrobisz cd /usr/bin, zmieni się na /usr/bini tak dalej.

lsto polecenie, które wyświetla listę tego, co znajduje się w bieżącym katalogu / folderze. Więc jeśli to zrobisz cd /(co oznacza, że ​​zmieniłeś katalog na /), wyświetlisz lslistę plików i folderów. Jeśli to zrobisz cd /etc/, a następnie ls, byłoby wymienić cokolwiek pliki i foldery, które są w /etc/, i tak dalej.

Alaa Ali
źródło
DZIĘKUJĘ BARDZO DUŻO :-) za tę natychmiastową pomoc przyjaciołom ...
ShailyGarg