15 personaje speciale pe care trebuie să le cunoști pentru Bash

Dacă doriți să stăpâniți shell-ul Bash pe Linux, macOS sau alt sistem asemănător UNIX, caracterele speciale (cum ar fi ~, *, | și >) sunt esențiale. Vă vom ajuta să dezlegați aceste secvențe de comenzi Linux criptice și să deveniți un erou al hieroglifelor.

Ce sunt personajele speciale?

Există un set de personaje Bash shell tratează în două moduri diferite. Când le tastați în shell, ele acționează ca instrucțiuni sau comenzi și îi spun shell-ului să îndeplinească o anumită funcție. Gândiți-vă la ele ca la comenzi cu un singur caracter.

Uneori, doriți doar să imprimați un caracter și nu aveți nevoie de el pentru a acționa ca simbol magic. Există o modalitate prin care poți folosi un caracter pentru a se reprezenta mai degrabă decât funcția sa specială.

Vă vom arăta care sunt personajele „speciale” sau „meta-”, precum și cum le puteți folosi funcțional și literal.

~ Director principal

Tidul (~) este prescurtarea pentru directorul dvs. de acasă. Înseamnă că nu trebuie să tastați calea completă către directorul dvs. de acasă în comenzi. Oriunde te-ai afla în sistemul de fișiere, poți folosi această comandă pentru a merge la directorul tău principal:

cd ~

The

De asemenea, puteți utiliza această comandă cu căi relative. De exemplu, dacă vă aflați undeva în sistemul de fișiere care nu se află în folderul dvs. de acasă și doriți să treceți la directorul de arhivă din directorul de lucru, utilizați tilde pentru a face acest lucru:

cd ~/work/archive

The

. Directorul curent

Un punct (.) reprezintă directorul curent. O vedeți în listele de directoare dacă utilizați opțiunea -a (toate) cu ls.

ls -a

The

De asemenea, puteți utiliza punctul din comenzi pentru a reprezenta calea către directorul curent. De exemplu, dacă doriți să rulați un script din directorul curent, l-ați numi astfel:

./script.sh

Acest lucru îi spune lui Bash să caute în directorul curent fișierul script.sh. În acest fel, nu va căuta în directoarele din calea dvs. pentru a se potrivi executabil sau script.

The

.. Directorul Parinte

Perioada dublă sau „punct dublu” (..) reprezintă directorul părinte al celui curent. Puteți folosi acest lucru pentru a urca cu un nivel în arborele de directoare.

cd ..

The

De asemenea, puteți utiliza această comandă cu căi relative — de exemplu, dacă doriți să urcați un nivel în arborele de directoare și apoi să introduceți un alt director la acel nivel.

De asemenea, puteți utiliza această tehnică pentru a vă deplasa rapid la un director la același nivel în arborele de directoare cu cel curent. Urci un nivel și apoi cobori unul într-un alt director.

cd ../gc_help

The

/ Path Directory Separator

Puteți folosi o bară oblică (/) – adesea numită doar o oblică – pentru a separa directoarele într-un nume de cale.

ls ~/work/archive

The

O bară oblică reprezintă cea mai scurtă cale de director posibilă. Deoarece totul din arborele directorului Linux începe la directorul rădăcină, puteți folosi această comandă pentru a vă muta rapid în directorul rădăcină:

cd /

The

# Comentați sau tăiați șirurile

Cel mai adesea, utilizați semnul hash sau numărul (#) pentru a spune shell-ului ceea ce urmează este un comentariu și nu ar trebui să acționeze asupra lui. Îl puteți folosi în scripturi shell și, mai puțin util, pe linia de comandă.

# This will be ignored by the Bash shell

The

Cu toate acestea, nu este ignorat cu adevărat, deoarece este adăugat la istoricul comenzilor dvs.

  Cum să utilizați biblioteca de aplicații pe iPhone

De asemenea, puteți utiliza hash pentru a tăia o variabilă șir și pentru a elimina un text de la început. Această comandă creează o variabilă șir numită this_string.

În acest exemplu, atribuim textul „Dave Geek!” la variabila.

this_string="Dave Geek!"

Această comandă folosește ecou pentru a imprima cuvintele „Cum se face” în fereastra terminalului. Acesta preia valoarea stocată în variabila șir prin intermediul a extinderea parametrilor. Deoarece adăugăm hash-ul și textul „Dave”, acesta decupează acea parte a șirului înainte de a fi transmis la ecou.

echo How-To ${this_string#Dave}

Un

Acest lucru nu schimbă valoarea stocată în variabila șir; afectează doar ceea ce este trimis la ecou. Putem folosi echo pentru a imprima valoarea variabilei șir încă o dată și verificați acest lucru:

echo $this_string

The

? Wildcard cu un singur caracter

Bash shell acceptă trei metacaractere, dintre care unul este semnul întrebării (?). Utilizați metacaracterele pentru a înlocui caracterele din șabloanele de nume de fișier. Un nume de fișier care conține un wildcard formează un șablon care se potrivește cu o serie de nume de fișiere, mai degrabă decât doar unul.

Wildcardul semnului de întrebare reprezintă exact un caracter. Luați în considerare următorul șablon de nume de fișier:

ls badge?.txt

Aceasta se traduce prin „lista orice fișier cu un nume care începe cu „insignă” și este urmat de orice caracter înainte de extensia numelui de fișier.”

Se potrivește cu următoarele fișiere. Rețineți că unele au numere, iar altele au litere după porțiunea „insignă” a numelui fișierului. Wildcardul semnului de întrebare se va potrivi atât cu litere, cât și cu cifre.

The

Totuși, acel șablon de nume de fișier nu se potrivește cu „badge.txt”, deoarece numele fișierului nu are un singur caracter între „insignă” și extensia de fișier. Wildcardul semnului de întrebare trebuie să se potrivească cu un caracter corespunzător din numele fișierului.

De asemenea, puteți utiliza semnul întrebării pentru a găsi toate fișierele cu un anumit număr de caractere în numele fișierelor. Aceasta listează toate fișierele text care conțin exact cinci caractere în numele fișierului:

ls ?????.txt

A

* Secvență de caractere Wildcard

Puteți folosi asteriscul

ls badge*

wildcard pentru a reprezenta orice secvență de caractere, inclusiv niciun caracter. Luați în considerare următorul șablon de nume de fișier:

  Îmbunătățiți-vă diminețile cu rutine Alexa

Aceasta se potrivește cu toate următoarele:

Un

Se potrivește cu „badge.txt”, deoarece caracterul metalic reprezintă orice secvență de caractere sau niciun caracter.

ls source.*

Această comandă se potrivește cu toate fișierele numite „sursă”, indiferent de extensia fișierului.

[] Un

Setul de caractere Wildcard

După cum sa menționat mai sus, utilizați semnul întrebării pentru a reprezenta orice caracter și asteriscul pentru a reprezenta orice succesiune de caractere (inclusiv niciun caracter). [] Puteți forma un wildcard cu parantezele pătrate (

) și caracterele pe care le conțin. Caracterul relevant din numele fișierului trebuie apoi să se potrivească cu cel puțin unul dintre caracterele din setul de caractere wildcard.

ls badge_0[246].txt

În acest exemplu, comanda se traduce prin: „orice fișier cu extensia „.png”, un nume de fișier care începe cu „pipes_0” și în care următorul caracter este fie 2, 4 sau 6.”

Un

ls badge_[01][789].txt

Puteți utiliza mai mult de un set de paranteze pentru fiecare șablon de nume de fișier:

Un

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

De asemenea, puteți include intervale în setul de caractere.  Următoarea comandă selectează fișiere cu numerele de la 21 la 25 și de la 31 la 35 în numele fișierului.

Un

; Separator de comandă Shell

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

Puteți introduce câte comenzi doriți pe linia de comandă, atâta timp cât le separați cu punct și virgulă (;).  Vom face acest lucru în următorul exemplu: Un

count.txt; wc -l count.txt; rm count.txt” comandă într-o fereastră de terminal’ width=”646″ height=”122″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>

Rețineți că a doua comandă rulează chiar dacă prima eșuează, a treia rulează chiar dacă a doua eșuează și așa mai departe.

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

Dacă doriți să opriți secvența de execuție dacă o comandă eșuează, utilizați un ampersand dublu (&&) în loc de punct și virgulă:

A

& Proces de fundal

După ce tastați o comandă într-o fereastră de terminal și se finalizează, reveniți la promptul de comandă. În mod normal, acest lucru durează doar un moment sau două. Dar dacă lansați o altă aplicație, cum ar fi gedit, nu puteți utiliza fereastra terminalului până când nu închideți aplicația.

gedit command_address.page &

Puteți, totuși, să lansați o aplicație ca proces de fundal și să continuați să utilizați fereastra terminalului.  Pentru a face acest lucru, trebuie doar să adăugați un ampersand la linia de comandă:

A

Bash vă arată ID-ul procesului a ceea ce a fost lansat și apoi vă întoarce la linia de comandă. Apoi puteți continua să utilizați fereastra terminalului.

sort 

Multe comenzi Linux acceptă un fișier ca parametru și își iau datele din acel fișier.  Majoritatea acestor comenzi pot primi, de asemenea, intrare dintr-un flux.  Pentru a crea un flux, utilizați paranteza din unghi stânga (

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 Un

files.txt" comandă într-o fereastră de terminal." width="646" height="382" >

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

Redirecționarea ieșirii poate redirecționa și mesajele de eroare dacă utilizați o cifră (2, în exemplul nostru) cu >.  Iată cum să o faci: A

errors.txt" comandă într-o fereastră de terminal." width="646" height="122" >

| țeavă

O „țeavă” înlănțuiește comenzile împreună. Preia ieșirea de la o comandă și o transmite la următoarea ca intrare. Numărul de comenzi canalizate (lungimea lanțului) este arbitrar.

Aici, vom folosi cat pentru a alimenta conținutul fișierului word.txt în grep, care extrage orice linie care conține fie un „C” mic, fie majuscul. grep va trece apoi aceste linii pentru a sorta. sortarea folosește opțiunea -r (invers), astfel încât rezultatele sortate vor apărea în ordine inversă.

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

Am tastat următoarele:

A

! NOT logic pipeline și operator istoric

Semnul de exclamare (!) este un operator logic care înseamnă NU.

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

Există două comenzi în această linie de comandă:
Prima comandă este textul dintre paranteze pătrate;

Cea de-a doua comandă este textul care urmează dublele și&&.

Prima comandă folosește ! ca operator logic. Parantezele pătrate indică că urmează să fie efectuat un test. Opțiunea -d (director) testează prezența unui director numit backup. A doua comandă creează directorul.

Deoarece semnele și duble separă cele două comenzi, Bash o va executa pe a doua numai dacă prima reușește. Cu toate acestea, acesta este opusul a ceea ce avem nevoie. Dacă testul pentru directorul „backup” reușește, nu este nevoie să-l creăm. Și dacă testul pentru directorul „backup” eșuează, a doua comandă nu va fi executată și directorul lipsă nu va fi creat.

Aici este operatorul logic! intră. Acţionează ca un NU logic. Deci, dacă testul reușește (adică directorul există), ! inversează asta la „NU succes”, ceea ce înseamnă eșec. Deci, a doua comandă nu este activată.

Dacă testul directorului eșuează (adică directorul nu există), ! schimbă răspunsul la „NU eșec”, care este succes. Deci, comanda de creare a directorului lipsă este executată.

Acel mic! are o mulțime de pumn atunci când aveți nevoie!

ls -l -d backup

Pentru a verifica starea folderului de rezervă, utilizați comanda ls și opțiunile -l (lista lungă) și -d (director), după cum se arată mai jos:

A

!24

De asemenea, puteți rula comenzi din istoricul comenzilor cu semnul de exclamare.  Comanda history listează istoricul comenzilor dvs. și apoi introduceți numărul comenzii cu care doriți să o reluați!  pentru a-l executa, după cum se arată mai jos:

A

!!

Următorul rulează din nou comanda anterioară:

$ Expresii variabile În shell-ul Bash, creați variabile pentru a păstra valori. Ceva ca variabile de mediu,

există întotdeauna și le puteți accesa oricând deschideți o fereastră de terminal. Acestea dețin valori, cum ar fi numele de utilizator, directorul principal și calea.

echo $USER
echo $HOME
echo $PATH

Puteți utiliza echo pentru a vedea valoarea pe care o deține o variabilă - trebuie doar să precedați numele variabilei cu semnul dolarului ($), după cum se arată mai jos:

Un

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

Pentru a crea o variabilă, trebuie să îi dați un nume și să furnizați o valoare pe care să o păstreze.  Nu trebuie să utilizați semnul dolarului pentru a crea o variabilă.  Adăugați $ doar când faceți referire la o variabilă, cum ar fi în exemplul următor:

Un

Adăugați acolade ( {} ) în jurul semnului dolar și efectuați o extindere a parametrilor pentru a obține valoarea variabilei și a permite transformări ulterioare ale valorii.

MyString=123456qwerty

Aceasta creează o variabilă care conține un șir de caractere, după cum se arată mai jos:

echo ${MyString}

Utilizați următoarea comandă pentru a trimite șirul în fereastra terminalului:

echo ${myString:6}

Pentru a returna subșirul care începe la poziția 6 a întregului șir, utilizați următoarea comandă (există o compensare zero, deci prima poziție este zero):

echo ${myString:0:6}

Dacă doriți să economisiți un subșir care începe la poziția zero și conține următoarele șase caractere, utilizați următoarea comandă:

echo ${myString:4:4}

Utilizați următoarea comandă pentru a ecou un subșir care începe la poziția patru și conține următoarele patru caractere:

A

Citarea personajelor speciale

Dacă doriți să utilizați un caracter special ca caracter literal (nespecial), trebuie să spuneți shell-ului Bash. Acest lucru se numește citat și există trei moduri de a face acest lucru.

Dacă introduceți textul între ghilimele (“…”), acest lucru îl împiedică pe Bash să acționeze asupra majorității caracterelor speciale, iar acestea doar se imprimă. O excepție notabilă, totuși, este semnul dolarului ($). Încă funcționează ca caracter pentru expresiile variabile, astfel încât să puteți include valorile din variabile în ieșire.

echo "Today is $(date)"

De exemplu, această comandă tipărește data și ora:

echo 'Today is $(date)'

Dacă introduceți textul între ghilimele simple ('...'), așa cum se arată mai jos, se oprește funcția tuturor caracterelor speciale:

echo "Today is $(date)"

Puteți folosi o bară oblică inversă ( ) pentru a împiedica următorul caracter să funcționeze ca caracter special. Aceasta se numește „scăpare” de personaj; vezi exemplul de mai jos:

Gândiți-vă doar la caracterele speciale ca la comenzi foarte scurte. Dacă memorați utilizările lor, vă poate ajuta enorm înțelegerea shell-ului Bash și a scripturilor altor persoane.