Teksta pievienošana pēdiņās ir diezgan ierasta prakse komandrindā, it īpaši, runājot ar failiem, kuru nosaukumos ir atstarpes, bet kā jūs zināt, vai izmantot vienotu vai divkāršu pēdiņām? Apskatīsim atšķirību, un kad vajadzēs lietot vienu pret otru.
Vispārīgais noteikums ir tāds, ka divkāršās kotācijas joprojām atļauj mainīgo lielumu paplašināšanu pēdiņās, un atsevišķas kotācijas nav. Turpiniet lasīt.
Ja jūs vienkārši pievienojat dažus teksta vārdus, patiešām nav nozīmes tam, ko jūs izmantojat, jo viņi abi strādā vienādi. Piemēram, šīs divas komandas izveidos direktoriju ar nosaukumu Test Directory:
mkdir "Testa direktorijs"
mkdir "Testu katalogs"
Iespējams, ka pieredzējušākie veidi domā, ka jūs varētu arī izmantot mkdir Test \ Directory, ja vēlaties.
Atšķirība starp viena un divām kotētām kļūst svarīgāka, ja runājat ar mainīgajiem lielumiem pēc komandrindas pēc noklusējuma, bash gatavojas paplašināt mainīgo, piemēram, $ testu, uz pilnu virkni. Vispirms mēs piešķirsim mainīgo:
tests = "Tas ir tests"
Tagad jūs varat izmantot šo mainīgo komandrindā, piemēram, šo, kas vienkārši jāizdod Šis ir tests uz konsoli:
echo $ tests
Šeit ir redzama vieta, kur atšķirība starp divām un vienvietīgām kotācijām kļūst skaidrāka - ja jūs izmantojat vienotās cenas, mainīgie vairs netiks paplašināti. Piemēram, ja palaižat šo komandu:
echo "$ tests"
Kad izmantojat vienotās cenas, komandu rindā nekas netiks rādīts kā '$ test', bet, ja izmantosiet divkāršās pēdiņas, tas tiks pareizi parādīts:
Tas pats notiek, ja jūs izmantojat rakstzīmi komandrindas komandas paplašināšanai. Piemēram, teiksim, ka vēlējāties izmantot pwd komanda no citas komandas, jūs varētu izmantot aizmugurē, lai pastāstītu čaumalam, lai to paplašinātu:
echo "pwd" / tests
Ja jūs atradāt mājas mapē, jūs redzētu izvadu, kas izskatījās šādi:
/ home / geek / tests
Piemēram, tev ir mape, kurā ir vieta ceļā, un jūs vēlaties izmantot komandu ln, lai izveidotu simbolisku saiti uz failu pašreizējā direktorijā. Lietojot ln komandu, parasti ir jāprecizē pilnais ceļš, tāpēc ir daudz vieglāk izmantot "pwd", lai saglabātu rakstīšanu.
Paskaties, kas notiek, mēģinot un izmantot komandu, neiekļaujot citātus:
ln -s 'pwd' / tests / home / geek / linkedname
Tā vietā jums būs jāiekļauj pēdiņas:
ln -s "" pwd "/ filename" / some / other / path
Lai iegūtu konkrētāku piemēru, pieņemsim, ka mums šajā mapē ir mapju struktūra, kurā visiem faila nosaukumiem ir atstarpes:
Tā kā komanda unzip neatbalsta, izmantojot *, lai palaistu to pret visiem failiem, jums tā vietā jāizmanto komanda. Šeit ir interesantas lietas:
par f in * .zip; do unzip $ f; darīts
Hmm ... Izskatās, ka tas nedarbojās.
Tās vietā, kas mums būs jādara, ir jāizmanto dubultās kotācijas ap $ f mainīgo, piemēram, šo:
par f in * .zip; veiciet unzip "$ f"; izdarīt
Tagad katru reizi, kad komanda izpilda cilpu, tā patiešām izpildīs komandu kā šis:
unzip "tests 1.zip"
Protams, tas izveidotu cilpu un palaistu līdzīgu komandu katram mapes failam.
Tagad, kad mēs esam izgājuši piemērus, mēs vienkārši ātri pārskatīsim, ja jūs to pazaudējāt:
Dubultās cenas
Vieni centieni
Un tādējādi beidzas citātu mācība. Izmantojiet tos saprātīgi.