Introducerea textului în ghilimele este o practică destul de standard pe linia de comandă, mai ales când se ocupă de fișiere care conțin spații în nume, dar cum știți dacă să utilizați ghilimele simple sau duble? Să aruncăm o privire la diferența și când ar trebui să folosiți unul față de celălalt.
Regula generală este că ghilimele duble permit în continuare extinderea variabilelor în cadrul cotelor, iar citatele simple nu. Continua să citești.
Dacă pur și simplu închideți câteva cuvinte de text, nu contează cu adevărat pe ce folosiți, deoarece ambele vor funcționa exact la fel. De exemplu, aceste două comenzi vor crea atât un director numit Test Directory:
mkdir "Test Directory"
mkdir 'Test Directory'
Tipuri mai experimentate, probabil, rețineți că ați putea folosi și mkdir Test \ Directory dacă doriți.
Diferența dintre citatele simple și cele duble devine mai importantă atunci când aveți de-a face cu variabilele de pe linia de comandă; în mod implicit, bash va extinde o variabilă ca testul $ în șirul complet. Mai întâi, vom atribui variabila:
test = "Acesta este un test"
Acum puteți utiliza această variabilă pe linia de comandă, cum ar fi aceasta, care ar trebui să emită pur și simplu Acesta este un test la consola:
echo $ test
Iată în cazul în care diferența dintre ghilimele duble și cele simple devine mai clară - când utilizați citare simple, variabilele nu vor fi extinse. De exemplu, dacă executați această comandă:
echo '$ test'
Veți vedea numai "testul $" pe linia de comandă atunci când utilizați ghilimele simple, dar se va afișa corect atunci când utilizați ghilimele duble:
Același lucru funcționează atunci când utilizați caracterul "pentru a extinde o comandă pe linia de comandă. De exemplu, spuneți că doriți să utilizați PWD comanda dintr-o altă comandă - utilizați spații pentru a le spune coajă să-l extindă:
echo 'pwd' / test
Dacă v-ați afla în dosarul dvs. de domiciliu, ați vedea ieșirea care arăta astfel:
/ Home / tocilar / testare
Spuneți, de exemplu, că sunteți într-un dosar care are un spațiu în cale și doriți să utilizați comanda ln pentru a crea o legătură simbolică cu un fișier din directorul curent. De obicei, trebuie să specificați calea completă atunci când utilizați comanda ln, deci este mult mai ușor să utilizați 'pwd' pentru a salva tastarea.
Uită-te ce se întâmplă atunci când încerci să folosești comanda fără a include în citate:
ln -s 'pwd' / test / home / geek / linkname
În schimb, va trebui să înconjurați în citate:
ln -s "" pwd "/ nume fișier" / some / other / path
Pentru un exemplu mai concret, să presupunem că avem o structură de directoare ca acest exemplu, unde toate numele fișierelor au spații în ele:
Deoarece comanda de dezarhivare nu acceptă utilizarea * pentru a rula toate fișierele, va trebui să utilizați comanda for. Iată unde lucrurile devin interesante:
pentru f în * .zip; dezarhivați $ f; terminat
Hopa! Se pare că nu a funcționat.
Ceea ce trebuie să facem în schimb este să utilizați ghilimele în jurul variabilei $ f, cum ar fi:
pentru f în * .zip; dezarhivați "$ f";
Acum de fiecare dată când comanda trece prin bucla, va executa de fapt o comandă ca aceasta:
unzip "test 1.zip"
Bineînțeles că va trece printr-o comandă similară pentru fiecare fișier din director.
Acum, că am trecut prin exemple, vom examina rapid în cazul în care ați pierdut-o:
Citate dublă
Citate unice
Și astfel sfârșește lecția citatelor. Utilizați-le cu înțelepciune.