GNU/Linux >> Znalost Linux >  >> Linux

Jak zadat adresář, jehož název je pouze mínus?

Stáhl jsem si lessn na svůj webový server a rozbalil jsem jej.

Obsahuje složku s názvem - . Předpokládal jsem, že vím, jak se s tím vypořádat, ale nevím.

Zkoušel jsem cd -- - , ale to nemá požadovaný účinek. Zdá se, že na to nemá vliv ani používání uvozovek. Dal jsem lomítka všude, bez úspěchu.

Jaký je správný způsob změny do této složky?

Přijatá odpověď:

Chcete-li zabránit tomu, aby to byl parametr, snažíme se k němu něco přidat. Aktuální adresář je přístupný pomocí . , tedy podsložku - lze k němu přistupovat alternativně pomocí ./- .

cd ./-

Důvod, proč cd -- - nefunguje, protože je to implementováno jinak, když porovnáte rm (viz man rm ) na cd (viz man bash nebo man cd ), cd má jinou interpretaci, která vidí - jako parametr (viz man bash nebo man cd ).

Je třeba také poznamenat, že cd je funkce vestavěná do shellu, jak lze číst v této odpovědi:

cd není externí příkaz – je to funkce zabudovaná do shellu. Spouští se v kontextu aktuálního shellu a ne, jak to dělají externí příkazy, v kontextu fork/exec’d jako samostatný proces.

To vysvětluje, proč je implementace odlišná, protože Bash a Coreutils jsou dvě různé věci.

Předpokládejme, že tomu nevěříte, jak to potvrdíme? Použijte which a type .

 $ which cd && type cd
which: no cd in (/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.2:/usr/games/bin
cd is a shell builtin
 $ which rm && type rm
/bin/rm
/bin/rm is /bin/rm


Linux
  1. Jak přejmenovat adresář v Linuxu

  2. Jak nainstalovat R 3.3.1 do vlastního adresáře?

  3. Jak se ujistit, že běží pouze jedna instance Bash skriptu?

  1. Jak gzipovat adresář v Linuxu

  2. Jak spustit příkaz „najít“ pouze v aktuálním adresáři a ne v podadresářích

  3. Jak pojmenovat vlákno v Linuxu?

  1. Jak odlišíte adresář pouze pro soubory určitého typu?

  2. Jak vytvořit odkaz na adresář

  3. Jak získat pouze ID procesu v zadaném názvu procesu v linuxu?