15 különleges karakter, amit tudnod kell a Bashhoz

Ha el akarja sajátítani a Bash shellt Linuxon, macOS-en vagy más UNIX-szerű rendszeren, a speciális karakterek (például ~, *, | és >) kritikusak. Segítünk feloldani ezeket a rejtélyes Linux parancssorokat, és a hieroglifák hősévé válni.

Mik azok a különleges karakterek?

Van egy sor karakter a Bash shell kétféle módon kezeli. Amikor beírja őket a shellbe, utasításként vagy parancsként működnek, és egy bizonyos funkció végrehajtására utasítják a shellt. Tekintse őket egykarakteres parancsoknak.

Néha egyszerűen csak ki akar nyomtatni egy karaktert, és nincs szüksége rá, hogy varázsszimbólumként működjön. Van mód arra, hogy egy karaktert önmagának, mint speciális funkciójának ábrázolására használjon.

Megmutatjuk, hogy mely karakterek „speciális” vagy „meta” karakterek, valamint azt is, hogyan használhatjuk őket funkcionálisan és szó szerint.

~ Home Directory

A tilde (~) a kezdőkönyvtár rövidítése. Ez azt jelenti, hogy nem kell parancsokba beírnia a kezdőkönyvtár teljes elérési útját. Bárhol is tartózkodik a fájlrendszerben, ezzel a paranccsal a saját könyvtárába léphet:

cd ~

A

Ezt a parancsot relatív elérési utakkal is használhatja. Például, ha olyan helyen tartózkodik a fájlrendszerben, amely nem a saját mappája alatt található, és át szeretne váltani a munkakönyvtárában lévő archív könyvtárra, használja a tilde-t ehhez:

cd ~/work/archive

A

. Aktuális címtár

Egy pont (.) jelöli az aktuális könyvtárat. Ha az -a (all) kapcsolót az ls-sel együtt használod, akkor ez a címtárlistában látható.

ls -a

A

A parancsokban a pontot is használhatja az aktuális könyvtár elérési útjának jelölésére. Például, ha egy szkriptet szeretne futtatni az aktuális könyvtárból, akkor a következőképpen nevezze:

./script.sh

Ez arra utasítja a Bash-t, hogy az aktuális könyvtárban keresse a script.sh fájlt. Így nem fog keresni az elérési útban lévő könyvtárakban a megfelelő végrehajtható fájlt vagy szkriptet.

A

.. Szülőkönyvtár

A dupla pont vagy „dupla pont” (..) az aktuális könyvtár szülőkönyvtárát jelöli. Ezzel egy szinttel feljebb léphet a címtárfában.

cd ..

A

Ezt a parancsot relatív elérési utakkal is használhatja – például ha egy szinttel feljebb szeretne lépni a címtárfában, majd egy másik könyvtárba szeretne belépni ezen a szinten.

Ezt a technikát arra is használhatja, hogy gyorsan átlépjen egy olyan könyvtárba, amely ugyanazon a szinten van a címtárfában, mint a jelenlegi. Ugrás egy szinttel feljebb, majd vissza egyet egy másik könyvtárba.

cd ../gc_help

A

/ Útvonal-könyvtár-elválasztó

Használhat egy perjelet (/) – amelyet gyakran csak perjelnek hívnak – a könyvtárak elválasztására egy elérési útnévben.

ls ~/work/archive

A

Egy perjel a lehető legrövidebb könyvtár elérési utat jelöli. Mivel a Linux könyvtárfában minden a gyökérkönyvtárban kezdődik, ezzel a paranccsal gyorsan a gyökérkönyvtárba léphet:

cd /

A

# Megjegyzés vagy vágja le a karakterláncokat

Leggyakrabban a hash- vagy számjelet (#) használod, hogy jelezd a shell-nek, hogy ami utána következik, az egy megjegyzés, és nem szabad arra reagálnia. Használhatja shell szkriptekben és – kevésbé hasznosan – a parancssorban.

# This will be ignored by the Bash shell

A

Valójában azonban nem hagyja figyelmen kívül, mert hozzáadódik a parancsok előzményeihez.

  Hogyan készítsünk biztonsági másolatot a Steam játékokról Linuxon

A hash segítségével levághat egy karakterlánc-változót, és eltávolíthat néhány szöveget az elejétől. Ez a parancs egy this_string nevű karakterlánc-változót hoz létre.

Ebben a példában a „Dave Geek!” szöveget rendeljük hozzá. a változóhoz.

this_string="Dave Geek!"

Ez a parancs az echo segítségével kinyomtatja a „How-To” szavakat a terminálablakba. A karakterlánc-változóban tárolt értéket az a-n keresztül kéri le paraméterbővítés. Mivel hozzáfűzzük a hash-t és a „Dave” szöveget, levágja a karakterláncnak azt a részét, mielőtt visszhangra kerülne.

echo How-To ${this_string#Dave}

An

Ez nem változtatja meg a karakterlánc változóban tárolt értéket; csak azt befolyásolja, amit visszhangra küldenek. Az echo segítségével még egyszer kinyomtathatjuk a karakterlánc változó értékét, és ellenőrizzük ezt:

echo $this_string

A

? Egykarakteres helyettesítő karakter

A Bash shell három helyettesítő karaktert támogat, amelyek közül az egyik a kérdőjel (?). Helyettesítő karakterekkel helyettesítheti a karaktereket a fájlnév-sablonokban. A helyettesítő karaktert tartalmazó fájlnév olyan sablont képez, amely több fájlnévnek felel meg, nem csak egynek.

A kérdőjel helyettesítő karakter pontosan egy karaktert jelöl. Vegye figyelembe a következő fájlnév-sablont:

ls badge?.txt

Ez azt jelenti, hogy „felsoroljon minden olyan fájlt, amelynek neve „jelvény”-vel kezdődik, és amelyet egyetlen karakter követ a fájlnév-kiterjesztés előtt.

Megfelel a következő fájloknak. Ne feledje, hogy egyes esetekben a fájlnév „jelvény” része után számok, mások pedig betűk találhatók. A kérdőjel helyettesítő karaktere megfelel a betűknek és a számoknak is.

A

Ez a fájlnévsablon azonban nem egyezik a „jelvény.txt” fájllal, mivel a fájlnévben nincs egyetlen karakter a „jelvény” és a fájlkiterjesztés között. A kérdőjel helyettesítő karakterének meg kell egyeznie a fájlnév megfelelő karakterével.

A kérdőjel segítségével megkeresheti az összes olyan fájlt, amelynek fájlnevében meghatározott számú karakter található. Ez felsorolja az összes olyan szöveges fájlt, amely pontosan öt karaktert tartalmaz a fájlnévben:

ls ?????.txt

A

* Karaktersorozat helyettesítő karakter

Használhatja a csillagot

ls badge*

helyettesítő karakter bármilyen karaktersorozatot jelent, beleértve a karaktereket sem. Vegye figyelembe a következő fájlnév-sablont:

Ez megfelel az alábbiak mindegyikének:

An

Megegyezik a „jelvény.txt” fájllal, mert a helyettesítő karakter bármilyen karaktersorozatot jelöl, vagy karaktereket sem.

ls source.*

Ez a parancs megfelel az összes „forrás” nevű fájlnak, függetlenül a fájlkiterjesztéstől.

[] An

Karakterkészlet helyettesítő karakter

A fent leírtak szerint a kérdőjel bármely karakter, a csillag pedig bármilyen karaktersorozat jelzésére használható (beleértve a karaktereket sem). [] A szögletes zárójelekkel helyettesítő karaktert (

) és a bennük lévő karaktereket. A fájlnév megfelelő karakterének ilyenkor meg kell egyeznie a helyettesítő karakterkészletben található karakterek legalább egyikével.

ls badge_0[246].txt

Ebben a példában a parancs a következőre fordítható: „bármilyen „.png” kiterjesztésű fájl, amelynek neve „pipes_0”-val kezdődik, és amelyben a következő karakter 2, 4 vagy 6.

An

ls badge_[01][789].txt

Fájlnévsablononként több zárójelkészletet is használhat:

An

ls badge_[23][1-5].txt

Tartományokat is beilleszthet a karakterkészletbe.  A következő parancs a 21-től 25-ig, valamint a 31-től 35-ig terjedő számokkal rendelkező fájlokat választja ki.

An

; Shell parancselválasztó

ls > count.txt; wc -l count.txt; rm count.txt

Tetszőleges számú parancsot írhat be a parancssorba, mindaddig, amíg mindegyiket pontosvesszővel (;) választja el.  Ezt a következő példában tesszük meg: An

  A Mattermost beállítása Linuxon

count.txt; wc -l count.txt; rm count.txt” parancs egy terminál ablakban’ width=”646″ height=”122″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onrror=”this.onrror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>

Vegye figyelembe, hogy a második parancs akkor is fut, ha az első meghiúsul, a harmadik akkor is, ha a második meghiúsul stb.

cd ./doesntexist && cp ~/Documents/reports/* .

Ha le szeretné állítani a végrehajtási sorrendet, ha egy parancs meghiúsul, pontosvessző helyett használjon kettős „és” jelet (&&):

A

& Háttérfolyamat

Miután beírt egy parancsot egy terminálablakba, és az befejeződött, visszatér a parancssorhoz. Általában ez csak egy-két pillanatot vesz igénybe. Ha azonban elindít egy másik alkalmazást, például a gedit-et, nem használhatja a terminálablakot, amíg be nem zárja az alkalmazást.

gedit command_address.page &

Elindíthat azonban egy alkalmazást háttérfolyamatként, és folytathatja a terminálablak használatát.  Ehhez csak adjon hozzá egy

A

A Bash megmutatja az elindított folyamat azonosítóját, majd visszatér a parancssorba. Ezután folytathatja a terminálablak használatát.

sort 

Sok Linux-parancs elfogad egy fájlt paraméterként, és abból veszi ki az adatait.  A legtöbb parancs adatfolyamból is fogadhat bemenetet.  Stream létrehozásához használja a bal szögletes zárójelet (

When a command has input redirected into it, it might behave differently than when it reads from a named file.

If we use wc to count the words, lines, and characters in a file, it prints the values, and then the filename. If we redirect the contents of the file to wc, it prints the same numeric values but doesn’t know the name of the file from which the data came. It cannot print a filename.

Here are some examples of how you can use wc:

wc words.txt
wc 

A

> Output Redirection

You can use the right-angle bracket ( > ) to redirect the output from a command (typically, into a file); here’s an example:

ls > files.txt
cat files.txt

A An

files.txt" parancsot egy terminálablakban." width="646" height="382" >

wc doesntexist.txt 2> errors.txt
cat errors.txt

A kimeneti átirányítás átirányíthatja a hibaüzeneteket is, ha egy számjegyet (a példánkban 2-t) használ a > jellel.  Íme, hogyan kell csinálni: A

errors.txt" parancsot egy terminálablakban." width="646" height="122" >

| Cső

Egy „cső” láncolja össze a parancsokat. Átveszi az egyik parancs kimenetét, és bemenetként továbbítja a következőhöz. A vezetékes parancsok száma (a lánc hossza) tetszőleges.

Itt a cat segítségével a words.txt fájl tartalmát betápláljuk a grepbe, amely kibontja a kis vagy nagy „C” betűket tartalmazó sorokat. A grep ezután átadja ezeket a sorokat a rendezéshez. A sort a -r (fordított) kapcsolót használja, így a rendezett eredmények fordított sorrendben jelennek meg.

cat words.txt | grep [cC] | sort -r

A következőket írtuk be:

A

! Pipeline logikai NEM és History Operator

A felkiáltójel (!) egy logikai operátor, ami azt jelenti, hogy NEM.

[ ! -d ./backup ] && mkdir ./backup

Ebben a parancssorban két parancs található:
Az első parancs a szögletes zárójelben lévő szöveg;

A második parancs a kettős && jelet követő szöveg.

Az első parancs a ! mint logikai operátor. A szögletes zárójelek azt jelzik, hogy tesztet kell végezni. A -d (könyvtár) opció teszteli a backup nevű könyvtár meglétét. A második parancs létrehozza a könyvtárat.

Mivel dupla „és” jel választja el a két parancsot, a Bash csak akkor hajtja végre a másodikat, ha az első sikeres. Ez azonban az ellenkezője annak, amire szükségünk van. Ha a „backup” könyvtár tesztje sikeres, akkor nem kell létrehoznunk. És ha a „backup” könyvtár tesztje sikertelen, a második parancs nem kerül végrehajtásra, és a hiányzó könyvtár nem jön létre.

Itt van a logikai operátor! logikai NEM-ként működik. Tehát, ha a teszt sikeres (vagyis a könyvtár létezik), a ! ezt „NEM sikerre” fordítja, ami kudarc. Tehát a második parancs nincs aktiválva.

Ha a könyvtárteszt sikertelen (azaz a könyvtár nem létezik), a ! megváltoztatja a „NEM kudarc” választ, ami a siker. Tehát a hiányzó könyvtár létrehozására vonatkozó parancs végrehajtásra kerül.

Az a kicsi! sok ütést rejt magában, amikor szüksége van rá!

ls -l -d backup

A biztonsági mentési mappa állapotának ellenőrzéséhez használja az ls parancsot, valamint a -l (hosszú lista) és -d (könyvtár) opciókat, az alábbiak szerint:

A

!24

A parancselőzményekből is futtathat parancsokat felkiáltójellel.  A történelem parancs felsorolja a parancsok előzményeit, majd írja be annak a parancsnak a számát, amellyel újra futni kíván!  végrehajtásához, az alábbiak szerint:

A

!!

A következő újra futtatja az előző parancsot:

$ Változó kifejezések A Bash shellben változókat hoz létre az értékek megtartásához. Néhány, mint Környezeti változók,

mindig léteznek, és bármikor elérheti őket, amikor megnyit egy terminálablakot. Ezek olyan értékeket tartalmaznak, mint a felhasználónév, a kezdőkönyvtár és az elérési út.

echo $USER
echo $HOME
echo $PATH

Az echo segítségével megtekintheti a változó értékét – csak írja be a változó nevét a dollárjellel ($), az alábbiak szerint:

An

ThisDistro=Ubuntu
MyNumber=2001
echo $ThisDistro
echo $MyNumber

Változó létrehozásához nevet kell adnia, és meg kell adnia egy értéket, hogy megtartsa.  Nem kell dollárjelet használnia változó létrehozásához.  Csak akkor adja hozzá a $-t, ha egy változóra hivatkozik, például a következő példában:

An

Adjon kapcsos zárójelet ( {} ) a dollárjel köré, és hajtsa végre a paraméterbővítést, hogy megkapja a változó értékét, és lehetővé tegye az érték további átalakításait.

MyString=123456qwerty

Ez létrehoz egy változót, amely egy karakterláncot tartalmaz, az alábbiak szerint:

echo ${MyString}

Használja a következő parancsot a karakterlánc visszaadásához a terminál ablakban:

echo ${myString:6}

A teljes karakterlánc 6. pozíciójával kezdődő részkarakterlánc visszaadásához használja a következő parancsot (nulla-eltolás van, tehát az első pozíció nulla):

echo ${myString:0:6}

Ha olyan részkarakterláncot szeretne visszhangozni, amely a nulla pozícióban kezdődik és a következő hat karaktert tartalmazza, használja a következő parancsot:

echo ${myString:4:4}

A következő paranccsal visszhangozhat egy részkarakterláncot, amely a negyedik helyen kezdődik és a következő négy karaktert tartalmazza:

A

Különleges karakterek idézése

Ha egy speciális karaktert szó szerinti (nem speciális) karakterként szeretne használni, meg kell mondania a Bash shell-nek. Ezt hívják idézésnek, és ennek három módja van.

Ha a szöveget idézőjelbe („…”) teszed, ez megakadályozza, hogy Bash a legtöbb speciális karakterre hatással legyen, és csak kinyomtatják őket. Az egyik figyelemre méltó kivétel azonban a dollárjel ($). Továbbra is a változókifejezések karaktereként funkcionál, így a változók értékeit belefoglalhatja a kimenetébe.

echo "Today is $(date)"

Például ez a parancs kiírja a dátumot és az időt:

echo 'Today is $(date)'

Ha a szöveget szimpla idézőjelekbe („…”) teszi az alábbiak szerint, az leállítja az összes speciális karakter funkcióját:

echo "Today is $(date)"

A fordított perjel ( ) használatával megakadályozhatja, hogy a következő karakter speciális karakterként működjön. Ezt hívják „szökésnek” a karakter elől; lásd az alábbi példát:

Gondoljon csak a speciális karakterekre, mint nagyon rövid parancsokra. Ha megjegyzi a használatukat, az óriási előnyt jelent a Bash shell – és mások szkriptjei – megértésében.