cd alla directory con il nome di '-'

2

Sto provando a creare una cartella denominata - . So che è un nome stupido, si chiama così per rispecchiare qualcos'altro.

mkdir -
ls
> -
cd -

Questo lo fa andare su una cartella o uscire dal contesto di symlink a seconda di dove sono. Ho trovato che cd - significa vai alla posizione precedente , ma non può sfuggire. cd \- non funziona.

Un modo per aggirare questo?

    
posta SimplGy 19.02.2014 - 22:14
fonte

2 risposte

9

Puoi usare i percorsi relativi o assoluti per impedire che - da solo e confondendo la build di bash nel comando cd :

mkdir ./-
cd ./-
    
risposta data 19.02.2014 - 22:19
fonte
1

Di fronte a ~ , che viene valutato da bash, - è un argomento a cd . Dai un'occhiata alle pagine man (beh, per i sistemi attuali entrambi sono in man bash come cd è un builtin):

   cd [-L|[-P [-e]]] [dir]
          Change the current directory to dir. [...]  An argument of - is equivalent
          to $OLDPWD. [...]

E il paragrafo sull'espansione tilde (semplificato al significato più comune):

Tilde Expansion
   If  a  word begins with an unquoted tilde character ('~'), [...] the tilde-prefix 
   is replaced with the home  directory associated with the specified login name.

~ verrà sostituito da bash prima di passare l'argomento al comando effettivo. Pertanto, l'escape in qualche modo (ad esempio utilizzando '~' o \~ ) funzionerà. - d'altra parte sarà passato al comando. L'escaping non ha senso: bash non lo valuterà comunque, ma verrà passato senza escape come stringa singola a cd , che aprirà successivamente $OLDPWD .

Un'alternativa più esoterica a Patrix "modo più ragionevole per aprire - -folders sarebbe impostare $OLDPATH su - :

OLDPATH=- cd -
    
risposta data 19.02.2014 - 23:51
fonte

Leggi altre domande sui tag