Qual è il significato del punto nei comandi bash e in cosa differisce da un asterisco?


11

Sto cercando di capire il significato del punto in bash e come differisce da un asterisco. Qualcuno può per favore elaborare? Ad esempio, qual è la differenza tra cp -ar /foo/. /foo2/ecp -pr /foo/* /foo2/

Risposte:


12

Il punto ( .) è solo la .directory all'interno di una directory che è la stessa della directory stessa (te ls -la /foola mostrerà). Quindi, se copi foo/.altrove, copi effettivamente tutto l'albero sottostante foosenza copiarlo foo(lo stai copiando in quello foo2/.che è lo stesso di foo2).

/foo/*viene espanso dalla shell all'elenco di file e directory non nascosti in /foo, quindi copierà anche la stessa struttura di directory /fooin /foo2, ad eccezione dei dotfile / dotdir. In effetti, cpriceverà (potenzialmente) molti argomenti. Se l'elenco è troppo grande, potrebbe anche cpnon riuscire l'esecuzione di .


Scusa ma mi sto confondendo. Quindi, per natura, l'asterisco rende il comando ricorsivo? In altre parole cp -r /foo/*, la stessa cosa di cp /foo/* ?
Mike B,

5
@MikeB, no, la shell espande solo l'elenco dei file nella directory / foo. Non altera il comportamento di cp. Usa set -xo echo cp -pr /foo/* /foo2per vedere cosa sta succedendo. È importante rendersi conto che è la shell che espande i caratteri jolly. cpnon vede la stella.
Stéphane Chazelas,

Che dire di questo? chmod 755 -R. contro chmod 755 -R *
wayofthefuture del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.