Pagpili ng Linux command line interpreter. Pag-parse ng command line, mga napiling function ng bash. Ilang mga kumbensyon ng manwal na ito

Sinasaklaw ng cheat sheet na ito ang mga sumusunod na paksa: panimula sa shell, nabigasyon, mga pangunahing command, environment variable, connectors, pipe, I/O redirection, pahintulot, at keyboard shortcut.

Bash Shell: Panimula

Ang shell, o shell, ay isang programa, sa aming kaso na tinatawag na "bash," na maikli para sa Bourne Again Shell. Tinatanggap ng shell ang iyong mga utos at ipinapasa ang mga ito sa operating system. Upang makipag-ugnayan sa system, ginagamit ang mga terminal, tulad ng gnome-terminal, eterm, nxterm, atbp.

Pag-navigate

SA Linux file at ang mga direktoryo ay may hierarchical na organisasyon, iyon ay, mayroong isang tiyak na paunang direktoryo na tinatawag na ugat. Naglalaman ito ng mga file at subdirectory, na naglalaman naman ng mga file at sariling subdirectory.

pwd

Ang pwd command, short for naka-print na direktoryo ng trabaho, nagpapakita kasalukuyang lokasyon sa istraktura ng direktoryo.

CD

Pinapayagan ka ng cd command na pumunta sa bagong catalog.

mkdir

Ang mkdir command ay lumilikha ng bagong direktoryo sa kasalukuyang direktoryo.

Mga Pangunahing Utos

lalaki

Ang man command ay nagpapakita ng mga command manual. Halimbawa, ang sumusunod na command ay magpapakita ng lahat ng impormasyon tungkol sa cat command:

$ lalaking pusa

pusa

Binabasa ng command ng pusa ang file na ipinasa bilang argumento at ini-print ang mga nilalaman nito karaniwang channel output. Ang pagpasa ng maraming file bilang argumento ay magpi-print ng pinagsama-samang nilalaman ng lahat ng mga file.

echo

Ang echo command ay nagpi-print ng mga argumento nito sa karaniwang output.

$ echo Hello World Hello World

Kung tatawagin mo ang echo nang walang mga argumento, ito ay magpi-print walang laman na string.

ulo

Binabasa ng head command ang unang 10 linya ng anumang text na ipinasa at ilalabas ang mga ito sa karaniwang pipe. Maaaring baguhin ang bilang ng mga linyang ipinapakita:

$head -50 test.txt

buntot

Ang tail command ay gumagana nang katulad sa head command, ngunit nagbabasa ng mga linya mula sa dulo:

$ tail -50 test.txt

Maaari mo ring tingnan ang mga linyang idinaragdag sa isang file sa real time gamit ang -f flag:

$ tail -f test.txt

mas kaunti

Ang mas kaunting command ay nagbibigay-daan sa iyong mag-navigate sa isang inilipat na file o piraso ng text, sa parehong direksyon.

$ less test.txt $ ps aux | mas kaunti

Matuto nang higit pa tungkol sa layunin ng simbolo | ay saklaw sa ibaba sa seksyon ng kasaysayan ng utos.

Mga karaniwang keyboard shortcutPaglalarawan
GLilipat sa dulo ng file
gLilipat sa simula ng file
:50 Lilipat sa linya 50 ng file
qLumabas nang mas kaunti
/searchtermMaghanap ng string na tumutugma sa 'searchterm' sa ibaba kasalukuyang linya
/
?searchtermPaghahanap ng linyang tumutugma sa 'searchterm' sa itaas ng kasalukuyang linya
? Lilipat sa susunod na katugmang resulta ng paghahanap
pataasGumagalaw pataas ng isang linya
pababaInilipat ang isang linya pababa
pageupUmakyat sa isang pahina
pagedownIbinababa ang isang pahina

totoo

Ang totoong utos ay palaging nagbabalik ng zero bilang isang katayuan ng output upang ipahiwatig ang tagumpay.

mali

Ang maling utos ay palaging nagbabalik ng non-zero bilang isang output status upang ipahiwatig ang pagkabigo.

$?

$? ay isang variable na naglalaman ng output status ng huling command run. Karaniwang tumutukoy ang status sa return code ng program. Ang 0 ay nangangahulugang matagumpay na pagpapatupad ng programa, ang anumang halaga na mas malaki sa 0 ay sumasalamin sa katotohanan na may ilang mga error na naganap sa panahon ng pagpapatupad. Sa pamamagitan ng paraan, ito ang dahilan kung bakit sa bash 0 ay itinuturing na totoo, at lahat ng hindi 0 ay mali:

$totoo$echo$?

0 $ false $ echo $?

1 grep:

Hinahanap ng grep command ang naipasa na string

tinukoy na file $ cat users.txt user:student password:123 user:teacher password:321 $ grep "student` file1.txt user:student password:123 Ang grep ay maaari ding tumanggap ng maramihang mga file at

mga regular na expression

upang linawin ang format ng teksto.

kasaysayan

Ang history command ay nagpapakita ng command line history. Karaniwan itong ginagamit kasabay ng grep command upang maghanap ng isang partikular na command. Halimbawa, makikita ng sumusunod na code ang lahat ng command na naglalaman ng string g++ : $history | grep g++ 155 g++ file1.txt 159 g++ file2.txt Ginagamit din dito ang simbolo na |. - ito ang tinatawag na conveyor (pipe). Salamat dito, maaari mong i-redirect ang output ng isang command sa input ng isa pa - kaya, sa halimbawa sa itaas, ang buong kuwento, na sa

normal na mode

ang output ng history command nang direkta sa terminal output ay ire-redirect sa grep bilang input. Hindi natin makikita ang output ng history command, ngunit makikita natin ang output ng grep command.

Ito ay maaaring medyo mahirap maunawaan nang walang pagsasanay, kaya mag-eksperimento sa iyong sarili gamit ang mga command na ls , history , ps (inilarawan sa ibaba) na nagre-redirect ng kanilang output sa grep , sed o mas kaunti halimbawa.

i-export

Ang export command ay nagtatakda ng mga variable ng kapaligiran na ipapasa sa mga proseso ng bata. Halimbawa, ito ay kung paano mo maipapasa ang isang variable ng pangalan na may value na mag-aaral:

$ export name=estudyante ps.

Ang ps command ay nagpapakita ng impormasyon tungkol sa

tumatakbong mga proseso

  • $ ps PID TTY TIME CMD 35346 pts/2 00:00:00 bash
  • Apat na elemento ang output:
  • Process ID (PID),
  • ang pangalan ng command na nagsimula ng proseso (CMD).

awk

Hinahanap at pinapalitan ng awk command ang text sa mga file gamit ang isang partikular na pattern: awk "pattern (action)" test.txt

wget

Ang wget command ay nagda-download ng mga file mula sa Internet at inilalagay ang mga ito sa kasalukuyang direktoryo.

$ wget https://github.com/mikeizbicki/ucr-cs100

nc

ping

Ang ping command ay sumusubok sa isang koneksyon sa network.

$ ping google.com PING google.com (74.125.224.34) 56(84) byte ng data.

64 bytes mula sa lax17s01-in-f2.1e100.net (74.125.224.34): icmp_req=1 ttl=57 time=7.82 ms --- google.com ping statistics --- 1 packet ang naipadala, 1 natanggap, 0% packet loss , oras 8ms rtt min/avg/max/mdev = 7.794/8.422/10.792/0.699 ms

Ang mga istatistika sa dulo ay nagpapakita ng bilang ng mga koneksyon na ginawa bago nakumpleto ang utos at ang oras na kinuha upang makumpleto ang mga ito.

git

Mga variable ng kapaligiran

Ang mga variable ng kapaligiran ay pinangalanang mga variable na naglalaman ng mga halaga na ginagamit ng isa o higit pang mga application.

Ang PATH variable ay naglalaman ng isang listahan ng mga direktoryo kung saan hinahanap ng system ang mga executable na file.

Ang HOME variable ay naglalaman ng path patungo sa home directory ng kasalukuyang user.

Mga konektor

Nagbibigay-daan sa iyo ang mga connector na magpatakbo ng maraming command nang sabay-sabay.

$ true && echo Hello Hello $ false || echo Hello Hello $ echo Hello ; ls Hello test.txt file1.txt file2.txt

Mga conveyor

Nagbibigay-daan sa iyo ang mga conveyor, o pipe, na ikonekta ang input at output channel ng iba't ibang team. Sa sumusunod na halimbawa, ang output ng ls command ay ipapasa sa head at ang unang 10 elemento lamang ang ipi-print bilang resulta.

$ ls -l | ulo

I/O redirection

Pag-redirect ng output

Ang mga simbolo > at >> ay ginagamit para sa karaniwang pag-redirect ng output.

Halimbawa, ang code na ito ay magpi-pipe ng ls output sa isang file sa halip na sa screen:

$ ls > files.txt $ cat files.txt file1.cpp sample.txt

Kung ang file ay hindi umiiral, ito ay nilikha, at kung ito ay umiiral, ito ay na-overwrite. Upang maiwasan ang pag-overwrit, dapat mong gamitin ang >> command - ito ay nagdaragdag ng data sa dulo ng file.

Pag-redirect ng input< . В следующем примере sort берет входные данные из файла, а не с клавиатуры:

Para sa karaniwang pag-redirect ng output, ginagamit ang simbolo< files.txt b c

$ cat files.txt c b $ sort

Ang sort command ay nagpi-print ng mga nilalaman ng file sa screen dahil hindi namin na-redirect ang output. Ito ay maaaring gawin tulad nito:< files.txt >$uri

files_sorted.txt

Advanced na pag-redirect Ang pagdaragdag at sa > ay nagreresulta sa isang pag-redirect na tulad karaniwang stream

output at daloy ng error. Halimbawa, ilalabas ng file test.cpp ang linyang stdout sa cout at ang linyang stderr sa cerr .

$ g++ test.cpp $ ./a.out >& test.txt $ cat test.txt stdout stderr Kung nais mong mag-output ng isang tiyak deskriptor ng file

, maaari mong italaga ang numero nito sa > .PangalanPaglalarawan
Deskriptor0 Karaniwang input
stdout1 Karaniwang Output
stderr2 Karaniwang Error Output

Halimbawa, upang i-redirect ang stderr sa test.txt gagawin mo ang sumusunod:

$ g++ test.cpp $ ./a.out 2> test.txt stdout $ cat test.txt stderr

Mga karapatan sa pag-access

Ang ls -l command ay nagpapakita ng maraming impormasyon tungkol sa mga pahintulot ng bawat file:

chmod

Binabago ng chmod command ang mga pahintulot ng isang file. Narito ang mga karaniwang kumbinasyon ng mga flag para sa pagbabago ng mga karapatan ng mga partikular na user:

Maaari mong tawagan ang chmod na may paglalarawan kung ano ang gagawin sa isang partikular na file. Ang - simbolo ay nangangahulugan ng pag-aalis ng mga karapatan, ang + na simbolo ay nangangahulugan ng pagdaragdag. Ang sumusunod na halimbawa ay gagawing nababasa at maisusulat ng may-ari at grupo ang file:

$ chmod ug+rw test.txt $ ls -l test.txt -rw-rw---- 1 user group 1097374 Enero 26 2:48 test.txt

Bukod pa rito, maaaring gamitin ang chmod sa mga octal na numero, kung saan ang 1 ay pinahintulutan at ang 0 ay hindi:

Rwx = 111 = 7 rw- = 110 = 6 r-x = 101 = 5 r-- = 100 = 4

Ang susunod na utos ay gagana katulad ng nauna.

Matapos basahin ang artikulong ito, malalaman mo kung ano ito bash(karaniwang Linux command interpreter), alamin kung paano gumamit ng mga karaniwang command: ls, cp, mv...maunawaan ang layunin ng inode, mahirap at simbolikong mga link, at marami pang iba.

Ang tutorial na ito ay inilaan para sa mga bago sa Linux at para sa mga gustong suriin o pagbutihin ang kanilang pag-unawa sa mga pangunahing prinsipyo ng Linux, tulad ng pagkopya at paglipat ng mga file, paggawa ng mga link, gamit ang mga karaniwang Linux command kasama ng mga pag-redirect at pipe. Sa artikulong ito makikita mo ang maraming mga halimbawa na nagpapaliwanag sa materyal na ipinakita. Para sa mga nagsisimula, karamihan sa impormasyon ay bago, ngunit para sa mas advanced na mga gumagamit ang materyal na ito ay maaaring maging isang mahusay na tool para sa pagbubuod ng umiiral na kaalaman at kasanayan.

Panimula sa bash

Shell

Kung gumagamit ka ng Linux, alam mo na pagkatapos mag-log in ay sasalubungin ka ng command interpreter prompt. Halimbawa ito:

\$

Kung pagkatapos mag-log in sa graphical shell ay na-load, pagkatapos ay upang makapunta sa command interpreter kailangan mong maglunsad ng isang terminal emulator (gnome-terminal, xfce4-terminal, konsole, xterm, rxvt...) o lumipat sa isa sa mga virtual na terminal sa pamamagitan ng pag-click CtrlAltF1 o CtrlAltF2 atbp.

Ang shell prompt sa iyong computer ay maaaring iba sa kung ano ang ipinapakita sa halimbawa. Maaaring naglalaman ito ng username, pangalan ng computer, at pangalan ng kasalukuyang gumaganang direktoryo. Ngunit sa kabila ng lahat ng mga pagkakaibang ito, ang program na nagpi-print ng imbitasyong ito ay tinatawag na " kabibi"(shell), at malamang na ang iyong command shell ay isang program na tinatawag bash.

Nagba-bash ka ba?

Maaari mong suriin kung tumatakbo ang bash gamit ang sumusunod na utos:

\$ echo \$SHELL/bin/bash

Kung, bilang isang resulta ng pagpapatupad ng utos na ito, nakatanggap ka ng isang error o ang output nito ay naiiba sa halimbawa, kung gayon posible na ang iyong system ay hindi gumagamit ng bash bilang command shell. Sa kabila nito, ang karamihan sa materyal ay magiging may kaugnayan, ngunit inirerekomenda pa rin namin na lumipat ka sa bash. Magagawa ito (kung naka-install ang bash sa system) gamit ang command:

\$ bash

Ano ang bash

Bash (isang acronym para sa " B atin- a makakuha SH ell") ay ang karaniwang command interpreter sa karamihan ng mga sistema ng Linux. Kasama sa kanyang mga responsibilidad ang pagproseso at pagpapatupad ng mga utos kung saan kinokontrol ng user ang computer. Kapag tapos ka na, maaari kang lumabas sa proseso ng shell. Matapos pindutin ang mga key CtrlD, mga koponan labasan o logout Ang proseso ng shell ay wawakasan at sasabihan kang ipasok muli ang iyong username at password.

Gamit ang "cd"

Simulan natin ang paggamit ng bash para mag-navigate sa file system. Upang makapagsimula, i-type ang sumusunod na command:

$ cd/

Sa utos na ito sinabi namin sa bash na gusto naming lumipat sa direktoryo ng ugat - / . Ang lahat ng mga direktoryo sa system ay nakaayos sa isang istraktura ng puno at / ito ang simula nito (o ugat). Koponan CD nagsisilbing baguhin ang kasalukuyang gumaganang direktoryo.

Mga landas

Para malaman kung saan file system sa kasalukuyan ikaw ay nasa (kasalukuyang gumaganang direktoryo) uri:

\$ pwd /

Sa halimbawa sa itaas / - argumento ng utos CD- tinawag landas. Ito ang lokasyon sa file system kung saan gusto naming ilipat. Sa kasong ito / - ganap na landas, nangangahulugan ito na ang path ay nauugnay sa root directory.

Mga ganap na landas

Narito ang ilang mga halimbawa ng ganap na mga landas

/dev /usr /usr/bin /usr/local/bin

Tulad ng maaaring napansin mo na, ang lahat ng mga landas na ito ay may pagkakatulad na sinimulan nila / . Sa pamamagitan ng pagtukoy sa path /usr/local/bin bilang argumento sa command CD sinasabi namin sa kanya na pumunta sa root directory / , pagkatapos ay sa usr direktoryo, pagkatapos ay sa lokal at bin. Ang mga ganap na landas ay palaging nagsisimula sa /

Mga kamag-anak na landas

Ang pangalawang uri ng landas ay tinatawag na kamag-anak. Bash, pangkat CD at iba pang mga utos ay binibilang ang mga landas na ito na may kaugnayan sa kasalukuyang direktoryo. Ang mga kamag-anak na landas ay hindi nagsisimula sa / . Halimbawa, kung tayo ay nasa /usr

\$ cd /usr

Pagkatapos ay maaari tayong pumunta sa /usr/local/bin gamit ang isang kamag-anak na landas

\$ cd local/bin \$ pwd/usr/local/bin

Paggamit ".."

Ang mga kaugnay na landas ay maaaring maglaman ng isa o higit pang mga direktoryo «..» . ".." ay nagpapahiwatig ng pangunahing direktoryo ng aming gumaganang direktoryo. Halimbawa:

\$ pwd/usr/local/bin\$ cd.. \$ pwd/usr/local

Tulad ng nakikita mo, ang koponan cd..'itinataas tayo sa mas mataas na antas'.

Maaari kang magdagdag .. sa relatibong landas. Ito ay magbibigay-daan sa amin na lumipat sa isang direktoryo na nasa parehong antas ng kung saan kami ay nasa. Halimbawa:

\$ pwd/usr/local\$ cd ../share \$ pwd/usr/share

Mga halimbawa gamit ang mga relatibong landas

Ang mga kamag-anak na landas ay maaaring medyo nakakalito. Narito ang ilang mga halimbawa. Ang resulta ng pagpapatupad ng mga utos ay hindi ipinapakita, subukang tukuyin kung aling direktoryo ang iyong gagamitin gamit ang bash.

\$ cd / bin \$ cd ../usr/share/zoneinfo \$ cd /usr/X11R6/bin \$ cd ../lib/X11 \$ cd /usr/bin \$ cd ../bin/../bin

Nagtatrabahong direktoryo "."

Bago natin matapos ang pag-uusap tungkol sa team CD, may ilan pang bagay na dapat banggitin. Una, may isa pang espesyal na direktoryo «.» , na tumuturo sa kasalukuyang direktoryo. Ang direktoryo na ito ay ginagamit upang patakbuhin ang mga maipapatupad na file na matatagpuan sa kasalukuyang direktoryo.

\$ ./myprog

Sa huling halimbawa, ang myprog ay isang executable file na matatagpuan sa kasalukuyang direktoryo na ilulunsad para sa pagpapatupad.

cd at home directory ng user

Para makapunta sa direktoryo ng tahanan, kailangan mong mag-dial

\$ CD

Nang walang argumento, ililipat ka ng cd sa iyong home directory. Para sa superuser, ang home directory ay karaniwang /root, at para sa ordinaryong gumagamit- /home/username/. Ngunit paano kung gusto naming tukuyin ang isang partikular na file na matatagpuan sa direktoryo ng bahay. Halimbawa, bilang argumento sa programa 'myprog'? Maaari kang sumulat:

\$ ./myprog /home/user/myfile.txt

Gayunpaman, ang paggamit ng ganap na mga landas sa mga file ay hindi palaging maginhawa. Ang parehong operasyon ay maaaring gawin gamit ~ –tildes:

\$ ./myprog ~/myfile.txt

~ - isang espesyal na pangalan na tumuturo sa home directory ng user sa bash.

Mga direktoryo ng tahanan ng ibang mga gumagamit

Ngunit paano kung kailangan nating tumuro sa isang file sa home directory ng isa pang user? Upang gawin ito, pagkatapos ng tilde kailangan mong ipahiwatig ang pangalan ng user na ito. Halimbawa, upang ituro ang file na fredsfile.txt na matatagpuan sa home directory ng user fred:

\$ ./myprog ~fred/fredsfile.txt

Mga utos ng Linux

Panimula sa ls

Marahil ay pamilyar ka na sa koponan ls, na, na tinatawag na walang mga argumento, ay nagpapakita ng isang listahan ng mga file na nakaimbak sa gumaganang direktoryo:

\$ cd /usr \$ ls X11R6 doc i686-pc-linux-gnu lib man sbin ssl bin gentoo-x86 isama ang libexec portage share tmp distfiles i686-linux info local portage.old src

Kung tinukoy mo ang pagpipilian -a, makikita mo ang lahat ng mga file, kabilang ang mga nakatago (na ang mga pangalan ay nagsisimula sa isang tuldok).

\$ ls -a. bin gentoo-x86 isama ang libexec portage share tmp .. distfiles i686-linux info local portage.old src X11R6 doc i686-pc-linux-gnu lib man sbin ssl

Detalyadong listahan ng mga direktoryo

Pagkatapos ng utos mismo ls ang isa o higit pang mga file o direktoryo ay maaaring tukuyin bilang argumento nito. Kung tinukoy mo ang isang pangalan ng file, ang command ls ay magpapakita lamang ng impormasyon tungkol sa file na ito. At kung tinukoy mo ang pangalan ng direktoryo, ls ipapakita ang lahat ng nilalaman nito. Pagpipilian '-l' mga koponan ls maaaring maging lubhang kapaki-pakinabang kung gusto mong malaman ang higit pa kaysa sa mga pangalan ng file detalyadong impormasyon tungkol sa kanila (mga pahintulot sa file, pangalan ng may-ari, oras ng huling pagbabago ng file at laki nito).

Ang sumusunod na halimbawa ay nagpapakita ng paggamit ng opsyon '-l' upang ipakita ang impormasyon tungkol sa mga file na nakaimbak sa /usr na direktoryo

\$ ls -l /usr drwxr-xr-x 7 root root 168 Nov 24 14:02 X11R6 drwxr-xr-x 2 root root 14576 Dec 27 08:56 bin drwxr-xr-x 2 root root 8856 Dec 26 12:47 distfiles lrw9xrw root Dis 22 20:57 doc -> share/doc drwxr-xr-x 62 root root 1856 Dec 27 15:54 gentoo-x86 drwxr-xr-x 4 root root 152 Dec 12 23:10 i686-linux drwxr-xr-x 4 root root 96 Nov 24 13:17 i686-pc-linux-gnu drwxr-xr-x 54 root root 5992 Dec 24 22:30 isama lrwxrwxrwx 1 root root 10 Dec 22 20:57 info -> share/info drwxr-x -x 28 root root 13552 Dec 26 00:31 lib drwxr-xr-x 3 root root 72 Nov 25 00:34 libexec drwxr-xr-x 8 root root 240 Dec 22 20:57 local lrwxrwxrwx 29 Dec 1 root 2 root :57 man -> share/man lrwxrwxrwx 1 root root 11 Dec 8 07:59 portage -> gentoo-x86/ drwxr-xr-x 60 root root 1864 Dec 8 07:55 portage.old drwxr-xr-x 3 root root 3096 Dis 22 20:57 sbin drwxr-xr-x 46 root root 1144 Dec 24 15:32 share drwxr-xr-x 8 root root 328 Dec 26 00:07 src drwxr-xr-x 6 root 4 176 Nob 25 ssl lrwxrwxrwx 1 ugat na ugat 10 Dis 22 20:57 tmp -> ../var/tmp

Ang unang column ay nagpapakita ng impormasyon tungkol sa mga karapatan sa pag-access ng bawat file sa listahan. (Mamaya pa ay ipapaliwanag ko kung aling letra ang ibig sabihin ng kung ano) Ang susunod na hanay ay nagpapakita ng bilang ng mga link sa bawat elemento ng listahan. Ang ikatlo at ikaapat na column ay ang may-ari at pangkat ng file, ayon sa pagkakabanggit. Ang ikalimang hanay ay sukat. Ang pang-anim ay ang oras na huling binago ang file ('last modified time' o mtime). Ang huling column ay ang pangalan ng file o direktoryo (Kung ito ay isang link, pagkatapos ay pagkatapos ng ' –> ' ay kumakatawan sa pangalan ng bagay na tinutukoy nito).

Paano tingnan ang mga direktoryo lamang

Minsan may pangangailangan na tingnan lamang ang impormasyon tungkol sa mga direktoryo, at hindi tungkol sa lahat ng nilalaman ng mga ito. Ang pagpipilian ay makakatulong sa iyo na makayanan ang gawaing ito '-d', na nagsasabi sa command na magpakita ng impormasyon tungkol sa mga direktoryo lamang. Halimbawa:

\$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share drwxr-xr-x 4 root root 96 Dec 18 18:17 ../share drwxr-xr-x 17 root root 576 Dec 24 09:03 /usr drwxr-xr-x 2 root root 3192 Dec 26 12:52 /usr /X11R6/bin drwxr-xr-x 2 root root 14576 Dis 27 08:56 /usr/bin

Recursive na listahan at impormasyon ng inode

Pagkilos na opsyon '-R' kabaligtaran ng aksyon '-d'. Pinapayagan ka nitong magpakita ng impormasyon tungkol sa mga file na matatagpuan sa isang direktoryo nang recursively. Ang mga nilalaman ng direktoryo ay unang ipinapakita pinakamataas na antas, pagkatapos ay ang mga nilalaman ng lahat ng mga subdirectory, at iba pa. Ang output ng command na ito ay maaaring masyadong mahaba, kaya hindi kami nagbibigay ng isang halimbawa, ngunit maaari mo itong subukan sa pamamagitan ng pag-type ng ' ls -R'o' ls -Rl‘.

At sa wakas, ang pagpipilian '-ako' ginagamit upang i-print ang mga inode ng bawat object ng file system.

\$ ls -i /usr 1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 1513 i686-pc-linux-gnu 5120 lokal 13408 share 8316 distfiles 1517 man doc 3769 isama ang 2rc 973 edad 36737 ssl 70744 gentoo-x86 1585 lib 5132 portage.old 784 tmp

Ano ang inodes?

Ang bawat file system object (file, direktoryo...) ay may sariling natatanging numero, na tinatawag inode(numero ng inode). Ang impormasyong ito ay maaaring mukhang hindi gaanong mahalaga, ngunit ang pag-unawa sa paggana ng mga inode ay makakatulong sa iyo na maunawaan ang maraming mga operasyon ng file system. Halimbawa, tingnan natin «.» At «..» tulad ng mga link na naroroon sa bawat direktoryo. Upang maunawaan kung ano ang isang direktoryo «..» , alamin ang inode ng direktoryo /use/local

\$ ls -id /usr/local 5120 /usr/local

Tulad ng nakikita natin, ang inode ng direktoryo /usr/local ay 5120. Ngayon tingnan natin kung ano ang inode ng direktoryo /usr/local/bin/..:

\$ ls -id /usr/local/bin/.. 5120 /usr/local/bin/..

Ito ay lumabas na ang mga inode ng /usr/local at /usr/local/bin/.. na mga direktoryo ay pareho! Nangangahulugan ito na ang inode 5120 ay tinutukoy ng dalawang pangalan: /usr/local at /usr/local/bin/.. Ibig sabihin, dalawang magkaibang pangalan ito para sa parehong direktoryo. Ang bawat inode ay tumuturo sa isang tiyak na lokasyon sa disk.

Ang bawat inode ay maaaring magkaroon ng maraming filesystem object name na nauugnay dito. Ang bilang ng mga file na 'kasingkahulugan' (mga file system object na tumutukoy sa parehong inode) ay ipinapakita ng numero sa pangalawang column ng ' command output ls -l‘.

\$ ls -dl /usr/local drwxr-xr-x 8 root root 240 Dis 22 20:57 /usr/local

Sa halimbawang ito makikita mo (ikalawang column) na ang /usr/local na direktoryo ay nire-reference ng 8 iba't ibang mga object ng file system. Narito ang kanilang mga pangalan:

/usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/.. /usr/local/ src/..

mkdir

Tingnan natin ang utos mkdir. Ito ay ginagamit upang lumikha ng mga bagong direktoryo. Ang sumusunod na halimbawa ay nagpapakita ng paglikha ng tatlong bagong direktoryo (tic, tac, toe) sa /tmp na direktoryo

\$ cd /tmp $ mkdir tic tac toe

Default na utos mkdir hindi makagawa ng nested na istraktura ng direktoryo. Samakatuwid, kung kailangan mong lumikha ng ilang mga nested na direktoryo ( nanalo/der/ful), pagkatapos ay kailangan mong tawagan ang utos na ito nang tatlong beses nang magkakasunod:

\$ mkdir won/der/ful mkdir: hindi makalikha ng direktoryo na "won/der/ful": Walang ganoong file o direktoryo \$ nanalo si mkdir \$ mkdir won/der \$ mkdir won/der/ful

Maaari mong gawing simple ang operasyong ito sa pamamagitan ng pagdaragdag ng opsyon '-p' sa mkdir command. Binibigyang-daan ka ng opsyong ito na lumikha ng nested na istraktura ng direktoryo:

\$ mkdir -p madali/as/pie

Upang matuto nang higit pa tungkol sa mga kakayahan ng utility na ito, basahin ang tulong, na tinatawag ng command tao mkdir. Mayroong tulong para sa halos lahat ng mga utos sa manwal na ito (halimbawa lalaki ls), maliban sa CD, dahil ito ay binuo sa bash (para sa mga naturang utos, ang tulong ay tinatawag na ganito: tulong cd)

hawakan

Lumipat tayo sa pag-aaral ng mga utos cp At mv, ginagamit upang kopyahin, palitan ang pangalan at ilipat ang mga file at direktoryo. Ngunit bago iyon, gumawa tayo ng isang walang laman na file sa direktoryo ng /tmp gamit ang command hawakan:

\$ cd /tmp \$ pindutin ang copyme

Koponan hawakan oras ng pag-update huling pag-access sa file (ikaanim na hanay ng command output ls -l) kung mayroon na ito o gumagawa ng bagong walang laman na file kung wala pa ito. Pagkatapos ng operasyong ito dapat tayong magkaroon ng isang walang laman na file /tmp/copyme.

echo

Ngayon na mayroon na tayong walang laman na file, sulatan natin ito string ng teksto gamit ang utos echo, na naglalabas ng argumento na ipinasa dito karaniwang aparato output (text terminal sa aming kaso).

\$ echo "firstfile" unang file

Upang magsulat ng isang linya sa aming file, i-redirect natin ang output ng command dito echo:

\$ echo "firstfile" > copyme

Lagda > (higit pa) nagsasabi sa shell na i-redirect ang output ng command sa kaliwa sa file na ang pangalan ay nasa kanan. Kung walang file na may parehong pangalan, awtomatiko itong malilikha. At kung mayroon nang ganoong file, ito ay mapapatungan (lahat ng nilalaman nito ay mabubura bago isulat ang aming linya). Koponan 'ls -l' ay magpapakita na ang laki ng aming file ay 10 bytes na ngayon - siyam na byte ang inookupahan ng salitang 'firstfile' at isang byte ng line feed character.

\$ ls -l copyme-rw-r--r-- 1 ugat na ugat 10 Dis 28 14:13 copyme

pusa at cp

Upang i-output ang mga nilalaman ng isang file sa terminal, gamitin ang command pusa:

\$ pusa copyme unang file

Ngayon ay maaari nating simulan ang pag-aralan ang pangunahing pag-andar ng utos cp. Ang utos na ito ay tumatagal ng dalawang argumento. Ang una ay ang pangalan ng umiiral na file ('copyme'), ang pangalawa ay ang pangalan ng bagong kopya na gusto naming gawin ('copiedme').

\$ cp copyme copyedme

Makakasiguro tayo na bagong kopya Ang file ay may ibang numero ng inode (nangangahulugan ito na nakatanggap kami ng bagong hiwalay na file, at hindi lamang isang link sa luma)

\$ ls -i copyme copyedme 648284 kinopya ako 650704 copyme

mv

Ngayon gamitin natin ang command mv para palitan ang pangalan ng file (“copiedme” -> “movedme”). Ang numero ng inode ay hindi nagbabago pagkatapos ng operasyong ito, tanging ang pangalan ng file ang nagbabago.

\$ mv copyedme moved me \$ ls -nagalaw ako 648284 inilipat ako

Ang numero ng inode ay hindi nagbabago lamang sa kondisyon na ang pinalitan ng pangalan na file ay nananatili sa loob ng file system kung saan ito matatagpuan source file. Susuriin natin ang istraktura ng mga file system sa isa sa mga sumusunod na bahagi ng tutorial na ito.

Koponan mv ay nagbibigay-daan sa iyo hindi lamang upang palitan ang pangalan ng mga file, ngunit din upang ilipat ang mga ito. Halimbawa, upang ilipat ang isang file /var/tmp/myfile.txt sa direktoryo /home/user kailangan mong ibigay ang utos:

\$ mv /var/tmp/myfile.txt /home/user

Ang file ay ililipat sa home directory ng user gumagamit kahit na ito ay matatagpuan sa ibang file system (sa kasong ito, ang file ay makokopya sa isang bagong lokasyon pagkatapos kung saan ang orihinal ay tatanggalin). Tulad ng maaaring nahulaan mo, ang paglipat ng isang file sa isa pang file system ay nagbabago sa inode nito. Nangyayari ito dahil ang bawat file system ay may sariling hiwalay na hanay ng mga inode.

Dapat tandaan na may posibilidad na ang bagong itinalagang numero ng inode ay maaaring magkasabay sa luma, ngunit ito ay napakaliit.

Upang ilipat ang ilang mga file sa parehong oras sa isang direktoryo kailangan mong isulat:

\$ mv /var/tmp/myfile1.txt /var/tmp/myfile2.txt /home/user \$ mv -t /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt

Kung idadagdag mo ang opsyon '-v', ang isang ulat sa operasyon na ginawa ay ipapakita sa screen:

\$ mv -vt /home/user /var/tmp/myfile1.txt /var/tmp/myfile2.txt"/var/tmp/myfile1.txt" -> "/home/user/myfile1.txt" "/var/tmp/myfile2.txt" -> "/home/user/myfile2.txt"

Sa karamihan ng mga operating system ng Linux, ang bash ay ang default na command line interpreter. Upang matukoy ang kasalukuyang interpreter, ipasok ang sumusunod na command:

$ echo $SHELL
/bin/bash

Ang halimbawang ito ay gumagamit nginterpreter ng command line bash. Marami pang ibang command interpreter. Upang i-activate ang isa pang interpreter, maaari mong ilagay ang pangalan nito sa command line (ksh, tcsh, csh, sh, bash, atbp.).

Karamihan sa mga full-feature na Linux operating system ay nagbibigay ng lahat ng command interpreter na inilarawan dito. Ngunit sa mas maliliit na operating system ay maaaring magbigay ng isa o dalawang interpreter.

Sinusuri ang pagkakaroon ng item na interesado kainterpretercommand line

Ang pinakamadaling paraan upang suriin ang pagkakaroon ng command interpreter ng interes ay ilagay ang pangalan nito sa command line. Kung nagsimula na ang interpreter, available ito.

Mayroong ilang mga dahilan para sa pagpili ng mga alternatibong shell.

  • Karanasan sa pagtatrabaho sa UNIX System V system (marami sa mga ito ay gumagamit ng ksh bilang default) o Sun Microsystems at iba pang Berkeley UNIX system (na kadalasang gumagamit ng csh). Sa kasong ito, ang paggamit ng mga interpreter na itocommand lineay magiging mas maginhawa.
  • Ang pangangailangang magpatakbo ng mga script na ginawa para sa isang partikular na command interpreter.
  • Ang mga kakayahan ng isang alternatibong shell ay maaaring maging mas kanais-nais. Halimbawa, mas gusto ng isang miyembro ng Linux user group na gumamit ng ksh dahil hindi siya nasisiyahan sa paraan ng paggawa ng bash ng mga alias.

Bagama't mas gusto ng karamihan sa mga user na magtrabaho sa isang shell, ang mga kasanayang nakuha ay nakakatulong sa kanila na matutong magtrabaho sa iba.mga interpreter command line , paminsan-minsan ay tumitingin gabay na sanggunian(halimbawa, gamit ang manbash command). Karamihan sa mga tao ay gumagamit ng bash dahil walang dahilan upang lumipat sa ibang interpreter.

Gamit ang Bash at ch

Ang pangalan na bash ay isang acronym para sa Bourne Again SHell. Ang pagdadaglat na ito ay nagpapahiwatig na ang bash ay nagmamana ng Bourneshell interpreter (sh command), na ginawa ni Steve Bourne ng AT&TBell Labs. Brian Fox ng Libre Software Foundation lumikha ng bash bilang bahagi ng proyekto ng GNU. Kasunod nito, ang pag-unlad ay naipasa sa mga kamay ni Chet Ramey sa Case Western Reserve University.

Ang bash interpreter ay naglalaman ng mga feature na binuo para sa sh at ksh interpreter sa panahon ng mga naunang bersyon UNIX, pati na rin ang ilang feature ng csh interpreter.

Maaari mong asahan na ang karamihan sa mga sistema ng Linux, maliban sa mga dalubhasa (tulad ng mga naka-embed o na-boot mula sa panlabas na drive), ang bash ay ang default na interpreter. Sa mga espesyal na sistema, maaaring kailanganin ang isang mas maliit na command interpreter, na nagpapahiwatig din ng mga limitadong kakayahan.

Karamihan sa mga halimbawa ditoartikulodinisenyo para sa paggamit ng bash.

Ang bash interpreter ay maaaring tumakbo sa iba't ibang mga mode ng compatibility, na ginagaya ang pag-uugali ng iba pang mga shell. Maaari nitong gayahin ang pag-uugali ng Bourne shell (sh) o isang POSK standards-compliant shell (bash -posix).

Bilang resulta, mas malamang na matagumpay na mabasa ng bash ang mga configuration file at magpatakbo ng mga script na partikular na isinulat para sa iba pang mga shell.

Ang lahat ng ibinigay na operating system ng Linux ay gumagamit ng bash interpreter bilang default, maliban sa mga operating system na na-boot mula sa naaalis na media, na gumagamit ng ash interpreter bilang default.

Gamit ang tcsh (at ang naunang csh interpreter)

Ang tcsh command interpreter ay isang open source na pagpapatupad ng Cshell (csh) interpreter. Ang csh interpreter ay nilikha ni Bill Joy at ginagamit bilang default sa halos lahat ng Berkeley UNIX system (ang mga ganitong sistema ay ipinamahagi ng Sun Microsystems).

Marami sa mga tampok ng csh, tulad ng pag-edit ng command line at mga pamamaraan ng pamamahala ng kasaysayan ng utos, ay ipinatupad sa tcsh at iba pang mga shell. Kung paanong ang sh command ay nagpapatakbo ng bash interpreter sa sh-compatible mode, ang csh command ay nagpapatakbo ng tcsh interpreter sa csh-compatible mode.

Gamit ang ash interpreter

Ang ash interpreter ay isang magaan na bersyon ng Berkeley UNIX sh interpreter. Hindi ito naglalaman ng maraming pangunahing tampok at hindi nagbibigay ng mga tampok tulad ng kasaysayan ng utos.

Ang ash interpreter ay angkop na angkop para sa paggamit sa mga naka-embed na system na may limitadong mapagkukunan ng system. Sa FedoraCore 4 operating system, ang ash interpreter ay isang order ng magnitude na mas maliit kaysa sa bash interpreter.

Gamit ang zsh

Ang zsh interpreter ay isa pang clone ng sh interpreter. Ito ay sumusunod sa POSIX (tulad ng bash), ngunit may iba pang mga tampok, kabilang ang pagsuri ng spell at ibang diskarte sa pag-edit ng command line. Ang zsh interpreter ay ang default sa mga unang operating system. Mga sistema ng MacOS X, ngunit sa makabagong sistema Ang default na interpreter ay bash.

Ang pinakamahalagang proseso ng user ay ang command shell (kilala rin bilang command interpreter, o simpleng shell). Ito ang nagsisiguro sa pakikipag-ugnayan ng user sa system sa text mode, na nagpapahintulot sa iyo na magpasok ng mga command. Ito ang tumatakbo kapag nag-log in ka sa text console at nagbibigay sa iyo ng interface ng command line.

Hindi na kailangang madala sa kaginhawahan GUI, maliitin ang command line. Una, maraming mga gawaing pang-administratibo ang maaari lamang makumpleto mula doon; pangalawa, ang command line ay ang pinaka-maginhawang paraan ng pag-automate ng mga nakagawiang pamamaraan. Ang command sa Linux ay anumang bagay na maaaring isagawa: mga executable na file, built-in na shell command, command alias, user-defined function, script file (scripts) - paunang inihanda na mga pagkakasunud-sunod ng mga command sa text form.

kaya, command interpreter ay isang program na may sarili nitong mga built-in na command, sarili nitong variable na kapaligiran, at nagbibigay-daan din sa iyong magsagawa ng mga panlabas na command na naroroon sa system.

Tumatanggap ang shell ng mga utos na ipinasok ng user, pinoproseso ang kanilang mga argumento kung kinakailangan, nag-isyu ng mga utos para sa pagpapatupad, tinatanggap ang kanilang mga return value, at nagsasagawa ng ilang mga aksyon depende sa mga halagang iyon. Bilang karagdagan, ang shell ay may built-in na programming language (command language) na nagpapahintulot sa iyo na magsulat ng kumplikadong branched command script. Ito ang command language na nagpapakilala sa iba't ibang shell mula sa isa't isa, at dito nagsisimula ang mga user kapag pumipili ng mga shell.

Ang Linux ay isang OS na katulad ng Unix. Ang Linux ay orihinal na binuo ni Linus Torvalds sa Unibersidad ng Helsinki (Finland) batay sa Minix, isang maliit na sistema ng UNIX na nilikha ni Andry Tanenbaum. Maagang pag-unlad Pangunahing nababahala ang Linux sa problema ng protektadong mode task switching para sa 80386. At si Linus ay "nagsimulang seryosong mag-isip tungkol sa manic na ideya kung paano gawing mas mahusay ang Minix kaysa sa sarili nito."

Ang command shell ay umiral na sa mga sistema ng UNIX; ito ay ang "Bourne shell" (Bourne shell o simpleng shell). Maya-maya, binuo ng UNIX system ang C shell, na gumagamit ng ibang syntax, medyo nakapagpapaalaala sa syntax ng C programming language.

Maraming command interpreter ang binuo para sa Linux. Ang default ay "Bash", na binuo sa batay sa shell at tinawag na "Bagong Shell ng Bourne" (Bourne Again Shell). Kaya, ang Bash ay isang ebolusyon ng nakaraang shell, na nagdaragdag ng maraming kapaki-pakinabang na tampok na bahagyang nakapaloob sa C shell. Dahil ang Bash ay maaaring ituring na isang superset ng lumang shell syntax, anumang program na nakasulat sa magandang lumang Bourne shell ay dapat gumana sa Bash.

Gayunpaman, dapat tandaan na ang Linux OS ay hindi isang UNIX system, dahil ang code nito ay ganap na muling isinulat, sa simula ni Linus, nang maglaon sa tulong ng maraming UNIX programmer at mahilig mula sa Internet, ang mga may sapat na kasanayan at kakayahan upang bumuo ang sistema.

Ang Linux kernel ay hindi gumagamit ng UNIX o anumang iba pang pagmamay-ari na source code, at karamihan Mga programa sa Linux binuo ng GNU Project ng Free Software Foundation sa Cambridge, Massachusetts. Ngunit ang mga programmer sa buong mundo ay nag-ambag din dito.

Narito ang pinakakaraniwang mga shell ng Linux:

  • Bourne shell - Bourne shell, pamantayan para sa maraming mga sistemang tulad ng UNIX;
  • bash - Bourne Again shell, "ang bagong Bourne shell" (ginamit bilang default sa Linux);
  • csh - C shell, C shell: ang syntax ng command language nito ay katulad ng syntax ng C language;
  • tcsh - maliit na C shell, minimal C shell;
  • pdksh - pampublikong domain Korn shell, pampublikong Korn shell;
  • sash - stand-alone na shell, maaaring gamitin kapag hindi available ang mga software library.

Ang isang listahan ng lahat ng mga shell program na naka-install sa system ay matatagpuan sa /etc/shells file.

Ang paunang shell para sa bawat user na inilunsad para sa kanya kapag nag-log on siya sa system ay tinukoy sa /etc/passwd file. Maaaring hindi ito dapat maging bash. Ang administrator ay maaaring sa pangkalahatan ilang mga gumagamit huwag payagan ang pag-login sa pamamagitan ng pagtukoy sa /sbin/nologin bilang "shell" na ilo-load pagkatapos ng pagpaparehistro. O kahit na tukuyin ang isang espesyal na idinisenyong script na nagbibigay-daan sa iyo upang tingnan ang mga log, halimbawa.

Upang i-edit ang /etc/passwd file sa Linux mayroong espesyal na koponan vipw , na sumusuri sa kawastuhan ng pag-edit (ang utos ay magagamit lamang sa administrator).

Sa ibang pagkakataon, kapag nagtatrabaho sa default na shell, maaari mong baguhin ang kasalukuyang shell sa alinman sa mga naka-install (mas tiyak, magpasok ng subshell). Upang lumabas at bumalik sa parent shell, ilagay ang exit command. Sa paunang shell, tinatapos ng command na ito ang session.

Sa anumang shell, maaari kang magpatakbo ng mga command script na binubuo ng mga command mula sa isa pang shell: ang unang linya ng bawat script ay naglalaman ng indikasyon kung saang shell ito dapat isagawa, at ang kasalukuyang shell ay nagpapatakbo ng tinukoy na proseso ng bata para dito.

Tulad ng sinabi ko, bilang default, ang isang bagong gumagamit ay itinalaga ang bash shell. Ito ay isang mahusay na shell, na may maraming mga pagpapabuti at pinakamahusay na mga tampok ng iba pang mga shell, at hindi ko inirerekomenda na baguhin ito. Sa mga sumusunod, kapag sinabi kong "shell," ang ibig kong sabihin ay bash.

2. Pag-parse ng command line, mga napiling function ng bash

Ang interpreter, na natanggap ang command line, ay nagsasagawa ng isang bilang ng mga pagbabagong-anyo dito, gamit ang makapangyarihang mga pag-andar nito, lalo na:

  1. Pinapalawak ang mga alias para sa mabilis na tawag ang pinakakaraniwang ginagamit na mga utos.
  2. Pinapalawak ang mga metacharacter o wildcard (*, ?, [, ], ~, (, )) upang maghanap ng mga file gamit ang mga pattern ng pangalan.
  3. Pinapalitan ang mga variable na magagamit ng shell.
  4. Nire-redirect ang output ng isang command bilang input sa isa pang command gamit ang pipe.
  5. Nagsasagawa ng command merging.
  6. Isinasagawa ang utos kung ito ay isang built-in na utos ng interpreter, o nagsisimula ng isang proseso kung ang utos ay panlabas.
  7. Mga pag-redirect karaniwang input/konklusyon.

Upang maisagawa ang huling tatlong pag-andar, kailangan mong gumamit ng mga espesyal na operator. Tingnan natin ang lahat ng nakalistang function.

2.1. Mga palayaw

Ang mga command alias ay idinisenyo upang payagan ang mga shell command na maipasok nang mas mahusay. Sa pamamagitan ng isang alias, ang isang utos ng halos anumang kumplikado ay maaaring mapalitan ng isang arbitrary string. Upang tingnan ang listahan ng mga alias at, kung kinakailangan, magdagdag ng bagong alias dito, gamitin ang alias command.

Halimbawa:

$ export HELLO="Hello from environment! " # space ay dapat i-escape gamit ang mga quotes

Mga variable ng kapaligiran

Ang isang kapaligiran ay isang hanay ng mga variable na ang mga halaga ay maaaring baguhin ang pag-uugali ng shell.

Kapag nagsimulang tumakbo ang shell, nagtatakda ito ng ilan mga variable ng kapaligiran. Standard ang mga pangalan nila. Maaaring hilingin ng mga programa at script ang kanilang mga halaga sa halip na subukang alamin ang impormasyong kailangan nila nang mag-isa.

Sa ganitong paraan, tinutukoy ng command interpreter ang mga variable ng kapaligiran na ginagamit sa kasalukuyang session. Ang bawat bagong command na ipinasok ay aktwal na tumatakbo bilang isang proseso ng bata ng proseso ng magulang, na sa kasong ito ay ang bash command interpreter. Ang mga variable ng kapaligiran ay iba sa mga normal variable na paksa na magagamit ang mga ito sa parehong proseso ng magulang at anak. Ang awtomatikong pagtuklas ng mga variable ng kapaligiran ay nangyayari pagkatapos ng pagpapatunay ng user sa system. Ang programa sa pag-log in, kung matagumpay na nakumpleto ang proseso ng pagpapatunay, ay tumutukoy, batay sa /etc/passwd file, kung aling command interpreter ang gagamitin sa session ng user. Pagkatapos tukuyin ang command interpreter, ang session ay na-configure ayon sa mga configuration file na ipinakita sa ibaba.

File ng configurationPaglalarawan
/etc/profile

Tinutukoy ang mga variable ng kapaligiran para sa lahat ng user sa system. Isinasagawa ang file na ito sa unang pag-login at naglalaman ng mga pangunahing variable ng kapaligiran, tulad ng variable ng paghahanap sa lokasyon ng command ng PATH, ang variable ng host name ng HOSTNAME, at ang variable ng laki ng history ng command na HISTSIZE. Bilang karagdagan, ang file na ito ay bumubuo ng mga karagdagang variable ng kapaligiran mula sa mga configuration file na matatagpuan sa /etc/profile.d na direktoryo.

/etc/bashrc

Isinasagawa para sa lahat ng mga user sa tuwing sinisimulan ang bash shell. Tinutukoy ng file na ito ang halaga ng variable ng PS1, pati na rin ang mga karagdagang command alias. Ang alyas ay isang pinaikling, arbitraryong tinukoy na pangalan ng isang utos o pagkakasunud-sunod ng mga utos na nagpapahintulot sa iyo na magsagawa ng mga kumplikadong pagkakasunud-sunod ng mga utos nang hindi ipinapasok ang mga ito mula sa keyboard, ngunit sa pamamagitan ng pagtawag sa kanila sa pamamagitan ng pagtawag sa kaukulang alyas. Ang mga variable na tinukoy sa file na ito ay maaaring muling italaga ng isang katulad na file na tinukoy ng user -/.bashrc, na may mas mataas na priyoridad.

-/.bashprofile

Ginamit bilang isang file na naglalaman ng mga indibidwal na setting ng user. Isinasagawa nang isang beses lamang kapag nag-log in ang user. Bilang karagdagan, pinapatakbo ng file na ito ang file -/.bashrc

~/.bashrc

Ang file na ito ay naglalaman ng mga variable ng kapaligiran at mga alias naka-install ang user. Isinasagawa ito sa tuwing magla-log in ang user o kapag binuksan ang isang bagong session ng bash. Ang file na ito ay pinakaangkop para sa pagtukoy ng mga variable at alias ng user.

~/.bash_logout

Isinasagawa ang file na ito sa tuwing mag-log out ka o magtatapos sa huling session ng bash interpreter. Bilang default, naglalaman ang file na ito ng command para i-clear ang terminal screen.

/etc/inputrc

Ang file na ito ay naglalaman ng isang paglalarawan ng interpretasyon ng iba't ibang mga kumbinasyon ng key, at naglalaman din ng mga espesyal na kumbinasyon ng key, pagpindot na nagiging sanhi ng pagpapatupad ng mga tinukoy na utos.

Ang mga variable ng kapaligiran ay isang medyo maginhawang paraan upang mag-imbak ng impormasyon na kadalasang ginagamit sa loob ng kasalukuyang sesyon ng pagtatrabaho sa system. Kung kinakailangan, ang gumagamit ay maaaring lumikha ng halos anumang mga variable ng kapaligiran (subukan na huwag baguhin ang mga halaga ng mga variable ng kapaligiran na ginagamit na) at basahin ang kanilang mga halaga sa buong oras na gumagana siya sa command shell. Upang lumikha ng isang pansamantalang variable ng kapaligiran, dapat mong ilagay ang pangalan nito at italaga ang naaangkop na halaga dito. Halimbawa,

i-export ang AB=/usr/dog/contagious/ringbearer/grind

SA sa halimbawang ito Ang pansamantalang variable ng kapaligiran AB ay itinalaga ang landas sa isang direktoryo na matatagpuan medyo "malalim" sa hierarchy ng direktoryo ng file system. Ang export command ay nagpapahiwatig ng pangangailangan na i-export ang halaga ng AB variable sa isang shell upang gawin itong available sa iba pang mga shell na maaaring bukas sa loob ng kasalukuyang session sa system. Ngayon ang direktoryo sa itaas ay maaaring maabot sa pamamagitan ng pagsasagawa ng command na cd $AB

Ang tanging disbentaha ng mga pansamantalang variable ng kapaligiran ay ang mga ito ay awtomatikong masisira kapag ang kasalukuyang session sa system ay nagtatapos. Upang makalikha ng permanenteng (kumpara sa pansamantalang) environment variable, dapat itong idagdag sa shell configuration file.bashrc.

Upang baguhin ang /etc/profile at /etc/bashrc configuration file, dapat ay root ka.

Maaaring baguhin ng mga regular na user ang ~/.bash_profile, ~/.bashrc at ~/.bash_Iogout configuration file na matatagpuan sa kanilang mga home directory. Maaaring i-configure ang mga configuration file na ito upang itakda ang iyong mga variable sa kapaligiran gamit ang export command at maaaring gamitin sa anumang session.

Ang isa sa mga pinaka-madalas na pagbabago sa mga variable ng kapaligiran ay ang PATH variable. Maaari mo ring i-override o dagdagan ang PATH environment variable sa configuration file~/.bashrc.

sa halimbawang ito, ang PATH variable ay maglalaman ng kasalukuyang halaga nito kasama ang home directory bilang path ng paghahanap para sa mga executable na file.

Para mailapat ang mga pagbabagong ito sa kapaligiran ng kasalukuyang shell, dapat mong patakbuhin ang command source na .bashrc

Ang pinakakaraniwang mga variable ng shell environment ay:

  • BASH - Naglalaman buong landas Upang utos ng bash(karaniwang ang halaga ng variable na ito ay /bin/bash).
  • BASH_VERSION - Numero ng bersyon ng Bash.
  • DIRSTACK - Isang array na naglalaman ng kasalukuyang halaga ng stack ng direktoryo.
  • Ang EDITOR ay ang default na text editor.
  • EUID - Numeric na epektibong identifier ng kasalukuyang user.
  • FUNCNAME - pangalan kasalukuyang function sa script.
  • GROUPS - Isang array na naglalaman ng listahan ng mga grupo kung saan kabilang ang kasalukuyang user.
  • HISTFILE - Ang lokasyon ng command history file. Karaniwan, ang kasaysayan ng utos ay iniimbak sa ~/.bash_history file.
  • HISTFILESIZE - Ang bilang ng mga command line na maaaring maimbak sa history file. Matapos maabot ang numerong ito, ang mga bagong command line ay ipinasok sa kasaysayan sa pamamagitan ng pagtanggal sa mga pinakalumang command line. Bilang default, ang laki ng listahan ng mga kamakailang ginamit na command ay 1000 linya.
  • HOME - Home directory ng user.
  • HOSTNAME - Pangalan ng computer na ito(node).
  • HOSTTYPE - Uri ng computer.
  • LANG - Kasalukuyang default na wika.
  • Ang LC_CTYPE ay isang panloob na variable na tumutukoy sa pag-encode ng character.
  • MAIL - Mga lokasyon ng file ng Mailbox email gumagamit. Karaniwan, ito ay isang file na matatagpuan sa direktoryo ng /var/spool/mail na ang pangalan ay kapareho ng pangalan ng login ng user.
  • MAILCHECK - Interval sa ilang minuto sa pagitan ng mga mail check.
  • OLDPWD - Ang direktoryo na kasalukuyang hanggang sa huling binago ang direktoryo.
  • OSTYPE - Kasalukuyang operating system.
  • PATH - Isang listahan ng mga direktoryo na pinaghihiwalay ng colon kung saan maghahanap ng mga executable na file. Napakahalaga ng pagkakasunud-sunod kung saan hinahanap ang mga pangalan ng direktoryo. Kapag nagsasagawa ng mga utos, ang mga direktoryo na nakalista sa variable na ito ay sunud-sunod na sinusuri mula kaliwa hanggang kanan. Kaya, kapag isinagawa ang foo command na matatagpuan sa /bin at /usr/bin na mga direktoryo, ang command na matatagpuan sa /bin na direktoryo ay isasagawa. Upang patakbuhin ang foo command na matatagpuan sa /usr/bin na direktoryo sa isang katulad na sitwasyon, dapat mong tukuyin ang buong path sa command na ito o baguhin ang pagkakasunud-sunod ng mga pangalan ng direktoryo sa PATH environment variable. Ang kasalukuyang direktoryo ng paghahanap ay dapat na tahasang tinukoy ("."); Ang paghahanap ng mga startup program sa kasalukuyang direktoryo ay potensyal na mapanganib dahil sa posibilidad ng hindi sinasadyang pagpapatupad mapanganib na programa, kaya ang PATH variable ay kadalasang sinisimulan nang walang "." Upang idagdag ang path sa iyong sariling mga command o shell script sa PATH variable, dapat mong ilagay ang mga ito sa /bin subdirectory ng iyong home directory, na awtomatikong idaragdag sa PATH variable. Hindi lahat maipapatupad na mga utos matatagpuan sa mga direktoryo na nakalista sa PATH environment variable. Ang ilang mga utos ay direktang binuo sa shell. Ang iba pang mga command ay maaaring muling tukuyin gamit ang mga alias, na nagpapahintulot sa mga command na may mga parameter ng halos anumang kumplikado (sa mga tuntunin ng syntax) na mapalitan ng isang simpleng pangalan. Bilang karagdagan, posible na lumikha ng mga function na nag-iimbak ng isang buong pagkakasunud-sunod ng mga utos.
  • PPID- ID number ang proseso na naaayon sa utos na naglunsad ng kasalukuyang shell (halimbawa, ang proseso na lumikha ng shell).
  • PS1, PS2, PS3, PS4 - Mga variable na tumutukoy sa uri ng shell prompt.

    Itinakda ng mga variable ng PS1 at PS2 ang pangunahin at pangalawang senyas ng shell.

    May lalabas na pangalawang prompt (PS2) kung pinindot mo Ipasok ang susi, nang walang syntactically na tinatapos ang command input.

    Naglalaman ang variable na ito ng menor de edad na prompt na nangyayari kapag maraming linya ang pag-edit ng text o hindi kumpletong command entry. Bilang default, ito ay tinutukoy bilang >.

    PS3. Ang variable na ito ay naglalaman ng prompt na naroroon sa piliin ang pahayag, ginagamit upang ayusin ang mga interactive na console menu. Bilang default, ang prompt ng PS3 sa piling pahayag ay #?.

    PS4. Ang variable na ito ay pangunahing ginagamit kapag nagde-debug ng mga script ng shell at bilang default ay naglalaman ng string value na "++".

    Halimbawa, ang pagpapatakbo ng get command Impormasyon ng DNS:

    # nslookup >

  • PWD - Ang kasalukuyang gumaganang direktoryo ng user. Ang halagang ito ay nagbabago sa bawat oras na lumipat ka sa ibang direktoryo gamit ang cd command.
  • SECONDS - oras ng pagtakbo ng script (sa mga segundo).
  • SHELL - Kasalukuyang command interpreter.
  • SHELLOPTS - Listahan ng mga pinaganang opsyon sa interpreter.
  • SHLVL - Bilang ng beses na inilunsad ang mga bagong kopya ng command interpreter.
  • UID - Numeric identifier ng kasalukuyang user.
  • USER - Kasalukuyang user name.
  • $# - Ang kabuuang bilang ng mga parameter na ipinasa sa script.
  • $* - Ang lahat ng mga argumento ay hindi ipinapasa sa script (output sa isang linya).
  • $@ - Pareho sa nauna, ngunit ang mga parameter ay ipinapakita sa isang column.
  • $! - PID ng huling proseso na tumatakbo sa background.
  • $$ - PID ng script mismo.

Upang tingnan ang mga halaga ng lahat ng mga variable sa kasalukuyang session, ang parehong tinukoy mo at ang mga nasa kapaligiran, ilabas ang set command na walang mga parameter o env printenv .

Maaari mong alisin ang isang variable gamit ang hindi nakatakdang utos.

2.4. Mga pagpapalit at organisasyon ng pakikipag-ugnayan sa pagitan ng mga utos

Pinapalitan ang mga value ng variable ng kapaligiran ang kasalukuyang session sa system ay maaaring magawa sa pamamagitan ng paggamit ng dollar sign ($) metacharacter. Bilang resulta, awtomatikong pinapalitan ng shell ang pangalan ng variable ng halaga nito. Halimbawa,

Pagpapalit sa resulta ng isang pagpapahayag ng aritmetika

Mayroong dalawang syntactic form para sa pagpapalit ng resulta ng isang arithmetic expression: $[expression] at $((expression)). Halimbawa,

echo "Ako ay $ taong gulang."

Pagpapalit ng Utos

Pinapayagan ka ng pagpapalit ng command na gamitin ang output ng isang command sa isang command line na naglalaman ng isa pang command. Dalawang alternatibong format ng pagpapalit ang maaaring gamitin: $(command) o `command` (iisang backtick). Halimbawa,

Pagpapalawak ng tilde character

Ang tilde character (~) ay nagbibigay-daan sa iyo na mabilis na magpasok ng mga pangalan ng direktoryo.

~ Ang pangalan ng home directory ng user ~/subdirectory Ang pangalan ng isa sa mga subdirectory sa direktoryo ng tahanan user ~+ Kasalukuyang pangalan ng direktoryo ~- Nakaraang pangalan ng direktoryo

Pagpapalawak ng mga kulot na braces

Gamit ang mga kulot na brace, maaari kang magpasok ng isang command sa halip na ilan sa parehong uri. Ang mga panaklong ay dapat maglaman ng isang listahan, ang mga elemento nito ay dapat paghiwalayin ng mga kuwit. Binabasa ng interpreter ang mga elemento nang paisa-isa at bumubuo ng isang hiwalay na utos sa bawat isa sa kanila, na pagkatapos ay ipapatupad nito. Halimbawa, ang utos

Ang mga gastos sa mkdir/(Ene,Peb,Mar) ay katumbas ng mga gastos sa mkdir/mga gastusin sa Ene mkdir/mga gastusin sa Feb mkdir/Mar

Mga channel

Ang channel metacharacter (|) ay nagpapahiwatig ng pangangailangan na ayusin ang pakikipag-ugnayan sa pagitan ng mga command sa pamamagitan ng paggamit ng resulta ng execution (output) ng isa pang command bilang input data (input) ng isang command. Sa madaling salita, gamit ang isang pipe (pipeline), ang mga resulta ng unang command ay maaaring maipasa bilang input sa pangalawang command. Halimbawa,

pusa /etc/passwd | uri | ulo -3

Mga pagkakasunud-sunod at pangkat ng mga utos

Ang paggamit ng mga pagkakasunud-sunod ng command at mga grupo ay nagbibigay-daan sa iyo na magpasok ng maraming mga command sa isang linya.

command1;command2 Ipatupad muna ang command 1, pagkatapos ay command 2 (command1;command2) Run hiwalay na kopya interpreter kung saan ipapatupad ang command 1 at 2 nang sunud-sunod ( command1; command2 ) Ipatupad ang command 1 at 2 nang sunud-sunod sa kasalukuyang interpreter command1 && command2 Ipatupad lang ang command 2 kung matagumpay na naisakatuparan ang command 1 command1 || command2 Ipatupad lamang ang command 2 kung nabigo ang command 1

Ang resulta ng anumang pagpapatupad ng command (iyon ay, ang resulta ng pagwawakas ng kaukulang proseso) ay ang exit code. Ang matagumpay na pagkumpleto ay may code 0, hindi matagumpay na pagkumpleto ng code 1. Ang halaga ba ng code ng pagkumpleto ay nakatalaga sa isang paunang natukoy na variable? (tandang pananong). Halimbawa, echo $?

Muling isagawa ang mga utos

Ang shell ay may mga pasilidad na nagbibigay-daan sa iyong maalala ang mga nakaraang utos at i-edit ang mga ito. Ang kasaysayan ng utos ng Shell ay isang listahan ng mga dating ginamit na utos. Maaaring matingnan ang listahang ito gamit ang history command.

Pagkatapos mong magpasok ng command line, inilalagay ito ng shell sa history ng command. Ang isang listahan ng mga dating ginamit na command ay naka-imbak sa isang file, na nagbibigay-daan sa iyong tumawag sa anumang nais na command line mula dito anumang oras para sa muling pagpapatupad. Pagkatapos tawagan muli ang command line, maaari itong i-edit. Naka-store ang command history sa .bash_history file, na matatagpuan sa home directory ng user. Bilang default, ang command shell ay maaaring "matandaan" hanggang sa 1000 command line.

Upang tingnan ang isang listahan ng mga dating ginamit na command, patakbuhin ang history command.

Maaari itong magamit nang walang mga parameter o may isang parameter na nagpapahintulot sa iyo na tukuyin ang bilang ng mga utos na ipapakita. Ang bawat command line ay may sariling numero sa kasaysayan ng command.

History expansion syntax: !n Ipatupad ang ibinigay na command number!! Isagawa ang nakaraang utos!string Ipatupad ang pinakabagong utos na nagsisimula sa ibinigay na string!?string? Isagawa ang pinakabagong utos na naglalaman ng ibinigay na string Sa halip na direktang isagawa ang command line na nasa command history, maaari mo itong tawagan para sa pag-edit sa ibang pagkakataon. Gamitin ang mga cursor key"pataas na arrow" at "pababang arrow"

upang tingnan ang kasaysayan ng utos nang sunud-sunod at piliin ang kinakailangang linya ng utos.

3. Bash built-in Listahan ng mga built-in na command bash shell

maaaring makuha gamit ang help command o makikita sa man page sa SHELL BUILTIN COMMANDS section.

  • Narito ang ilang kapaki-pakinabang na built-in na command:
  • paganahin - Nagiging sanhi ng shell upang magsagawa ng isang maipapatupad na file na may parehong pangalan sa halip na isang builtin na utos. Kapaki-pakinabang kung mayroon kang sariling script na pinangalanang tulad ng echo.
  • eval [arguments] - Bumubuo ng command on the fly mula sa mga tinukoy na argumento at ipinapadala ito para sa pagpapatupad.
  • hayaan - Suriin ang mga expression.
  • - Basahin at isagawa ang mga utos na nakapaloob sa file. Ginagamit upang tukuyin ang mga variable ng user. at mga function.
  • basename - I-highlight ang isang lokal na pangalan.
  • expr - Pagsusuri ng ekspresyon.
  • read - Ipasok ang halaga ng isang variable.
  • shift - Ilipat ang listahan ng mga parameter.
  • pagsubok - Subukan ang kundisyon.
Ang iba pang mga built-in na command ay nagsisilbing mga tagubilin sa bash command language.

Moscow State Institute of Electronic Technology

(Technical University)

Kagawaran ng Pinagsanib na Electronics at Microsystems

LABORATORY PRACTICUM

SA KURSO:

OPERATING SYSTEMLINUX

Compiled by: assistant department. IEMS Kozlov A.V.

Moscow, 2007

Ang laboratory workshop ay pangunahing inilaan para sa mga masters ng engineering at teknolohiya na nag-aaral sa unang taon na Synopsys program sa direksyon ng 210100.68, upang makabisado ang Red Hat Enterprise Linux (RHEL) 4.0 operating system. Dinisenyo din ito para sa mga mag-aaral ng FreeScale at lahat ng user na may entry-level o walang karanasan sa Linux na gustong matutunan ang Linux command environment at ang mga pangunahing application na kailangan ng user kapag nagtatrabaho sa mga computer-aided design system.

Binubuo ang workshop na ito ng walong mga gawa sa laboratoryo na nagbibigay-daan sa user na epektibong makabisado ang mga utos ng command interpreter, pati na rin unti-unting matutong magsulat ng mga file - Shell, Gawk, Perl at Tcl script. Kasama sa bawat gawaing laboratoryo ang mga sumusunod na seksyon: pamagat, gawain at layunin ng gawain; teoretikal na impormasyon may mga tanong sa pagkontrol; halimbawa ng gawaing laboratoryo; pamamaraan para sa pagsasagawa ng gawaing laboratoryo; gawain sa laboratoryo at form ng ulat sa trabaho. Ang syntax para sa pagsusulat ng mga command sa shell, kasama ang mga opsyon, parameter, aksyon, expression, at object path, ay idinisenyo para sa BASH command environment. Ang isang listahan ng mga sanggunian ay ibinigay sa dulo ng laboratoryo workshop.

MOSCOW STATE INSTITUTE OF ELECTRONIC ENGINEERING (TECHNICAL UNIVERSITY)

GAWAING LABORATORY Blg

SA KURSONG “LINUX OPERATING SYSTEM”

Pag-aaral ng mga bash command sa Linux

KUMPLETO ANG DESCRIPTION:

KOZLOV A.V.

MOSCOW 2007

Laboratory work No. 1 Pag-aaral ng mga bash command sa Linux

Layunin ng gawain : gamit ang BASH command interpreter, master ang mga kasanayan sa pagtatrabaho sa mga command sa Red Hat Enterprise Linux 4.0 operating system.

Tagal ng trabaho – 4 na oras

Teoretikal na impormasyon

operating system Linux ay orihinal na binuo bilang isang libre, flexible, mayaman sa tampok, multi-user, high-performance na platform na idinisenyo upang pagsilbihan at lutasin ang mga problema ng mga siyentipiko sa buong mundo. Dahil sa "scientific focus" nito, ang naturang platform sa una ay walang advanced na graphical interface, na malawakang ginagamit sa paglutas ng mga problema sa sambahayan - mga laro sa kompyuter, Internet, mga interactive na programa para sa pagkonekta ng mga user, pati na rin para sa paglutas ng mga problema sa opisina - nagtatrabaho sa mga database system, pagbuo ng mga graph at histogram. Kadalasan, ang gawain ng mga siyentipiko na may operating system ng Linux ay nabawasan lamang sa karaniwang pakikipag-ugnayan ng gumagamit (isang taong nagtatrabaho sa isang computer) sa console (isang terminal window sa monitor screen na may impormasyon ng teksto). Upang maunawaan ang mga command na ipinasok ng user sa Linux, ang mga command interpreter ay binuo, na mga tagasalin ng mga command na naiintindihan ng mga tao sa mga control signal na naiintindihan ng operating system kernel. Ang pangunahing gawain ng operating system ay ang mamagitan sa paghahatid ng mga utos mula sa isang tao patungo sa isang computer. At, sa kabila ng katotohanan na ngayon ang Linux operating system ay ginagamit sa lahat ng dako hindi lamang sa mga institusyon, mga sentro ng Disenyo, mga sentro ng computer, kundi pati na rin para sa mga layunin ng bahay at opisina, ang mga console (terminal windows) ay malawak na ginagamit, at sa marami ay tila higit pa. maginhawa kumpara sa pagtatrabaho gamit ang mouse at mga icon (mga icon sa Linux) sa isang graphical na kapaligiran.

Command interpreter ay isang string interactive na interface na may command line prompt sa pagitan ng user at ng operating system. Ang gumagamit ay nagpasok ng mga utos sa command line, ang command interpreter ay "tinatanggap" ang mga ito at ipinapadala ang mga ito bilang mga tagubilin sa operating system para sa pagpapatupad. Ang command interpreter ay nagbibigay-daan sa iyo hindi lamang na magpasok ng mga command, ngunit din upang i-redirect ang command line input at output, pati na rin magsagawa ng mga operasyon sa background, na nagbibigay sa user ng pagkakataong gumawa ng iba pang mga gawain sa oras na ito.

Maraming command interpreter ang binuo para sa Linux: Bourne Again shell (BASH), Public Domain shell (PDKSH), TCSH interpreter at Z-shell. Bagama't ang BASH ay ang default na interpreter, maaari mong gamitin ang anumang iba pang kapaligiran. Para sa kaginhawaan ng pang-araw-araw na trabaho, isang command interpreter lamang ang sapat. Kasama sa Red Hal Linux ang lahat ng pangunahing shell, ngunit ang BASH shell ay naka-install at ginagamit bilang default. Nangangahulugan ito na ang operating system na ito ay gumagamit ng BASH upang gumana sa command line maliban kung tinukoy.

Command line. Command Interface Mga string ng Linux binubuo ng isang linya kung saan ipinasok ang mga command na may mga opsyon at parameter. Sa BASH shell, ang simula ng command line ay karaniwang minarkahan imbitasyon sa anyo ng isang dollar sign ($); Ang ibang mga shell ng Linux ay maaaring gumamit ng ibang anyo ng prompt. Kapag na-prompt, maaaring magpasok ang user ng alinman sa isang command o isang command na may mga opsyon at parameter. Kung ang user ay walang sapat na laki para sa command prompt, posible na limitahan ito gamit ang "/" na character. Ang command ay ipinasok mula sa keyboard at ipinasok gamit ang key. Halimbawa, sa output petsa ng system at oras ng system na magagamit ng user ang command petsa .

$date

Biyernes Hun 8 15:42:35 MSD 2007

O, halimbawa, upang magpakita ng kalendaryo na may kasalukuyang buwan, gamitin ang cal command.

$cal

Hulyo 2007

Su Mo Tu We Th Fr Sa

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31

Ang pangunahing interface ng shell ay isang interface ng command line na nagbibigay-kahulugan sa mga ipinasok na command at ipinapadala ang mga ito sa system. Ang mga utos na ipinasok sa linya ng command ay dapat sumunod sa ilang partikular na panuntunan ng syntax. Ang pangkalahatang tuntunin para sa pagpasok ng mga utos ay: ang unang salitang ipinasok sa linya ng utos ay dapat ang pangalan ng utos; Ang mga sumusunod na salita ay ang mga opsyon at parameter ng command. Ang bawat salita sa command line ay pinaghihiwalay mula sa ibang mga salita ng isa o higit pang mga puwang o tab.

Pagpipilian - ay isang solong o maraming titik na code na pinangungunahan ng isang gitling na nagbabago sa uri ng pagkilos na isinagawa ng command. Bilang isang halimbawa ng isang utos na may mga pagpipilian, ibinibigay namin ang utos ls . Kapag ginamit nang walang mga pagpipilian, ang utos na ito ay gumagawa ng isang listahan ng lahat ng mga file at direktoryo na nasa kasalukuyang direktoryo. Bukod sa mga pangalan ng file na may at walang mga extension, wala nang iba pa sa listahang ito. Halimbawa, kapag ipinasok mo ang command ls may opsyon - l pangkat ls gumagawa ng line-by-line na output ng impormasyon para sa bawat file, katulad ng laki, petsa at oras ng huling pagbabago. Sa sumusunod na halimbawa, ipinasok ng user ang command ls may opsyon - l. Isang gitling bago ang isang opsyon ay kinakailangan. Ito ay kung paano nakikilala ng Linux system ang isang opsyon mula sa isang parameter.

$ ls -l

kabuuang 28

Ang pagpipiliang -a ay nagpapahintulot sa iyo na ipakita ang lahat ng mga file sa kasalukuyang direktoryo, kabilang ang tinatawag na nakatagong mga file. Madalas nakatago ang mga configuration file. Palaging nagsisimula sa isang tuldok ang mga nakatagong pangalan ng file, kaya naman madalas itong tinatawag pinaitmga file. Sa karamihan ng mga kaso, ang mga pagpipilian ay pinagsama. Sa kasong ito, isang karaniwang gitling ang inilalagay bago ang pangkat ng mga opsyon. Halimbawa, ang opsyong -al ay nagpapakita ng impormasyon tungkol sa lahat ng mga file na nasa kasalukuyang direktoryo, kabilang ang mga nakatagong file. Ang bagong ttt file ay ipinapakita.

$ ls -al

kabuuang 40

Parameter ay ang salita na ipinasok sa command line pagkatapos ng mga pagpipilian. Ang mga utos sa pamamahala ng file ay karaniwang gumagamit ng mga pangalan ng file bilang mga parameter. Halimbawa, kung kailangan mo lamang ng impormasyon tungkol sa isang file, gauss.plx, tukuyin ang pangalan nito pagkatapos ng -l na opsyon:

$ ls -l gauss.plx

Nagsisimula ang trabaho ng user sa kapaligiran ng BASH shell, na na-load bilang default. Mayroon itong espesyal na mga kakayahan sa pag-edit ng command line na maaaring maging lubhang kapaki-pakinabang kapag natututo ng Linux OS. Bago magsagawa ng mga command, maaari mong i-edit ang mga ito sa pamamagitan ng paggalaw ng cursor sa command line at pagpasok o pagtanggal ng mga character. Ito ay lalong kapaki-pakinabang kapag nagtatrabaho sa mga napakakomplikadong koponan. Ang mga operasyon sa pag-edit ay makakatulong na itama ang isang error kapag nagta-type ng isang command. Gamit ang |up| Maaari mong ipakita ang command na kaka-execute mo lang. Pagkatapos ay maaari mong patakbuhin muli ang command o, pagkatapos i-edit ito, patakbuhin ang binagong command. Ang tampok na ito ay napaka-maginhawa kapag inuulit ang ilang mga operasyon nang maraming beses, halimbawa, kapag nag-e-edit ng isa at ang parehong file.

Ang layunin ng command interpreter ay magtrabaho kasama ang mga file: paglikha, pagkopya, pagpapalit ng pangalan, paglipat, pagtanggal at pagbabago ng data. Kahit na ang gumagamit ay hindi direktang gumagana sa console, ngunit gumagamit ng mga graphical na application, ang mga pagpapatakbo ng file na ito ay nangyayari nang hiwalay sa kanya.

Paglikha ng mga file at direktoryo. Sa Linux, ang file at direktoryo ay dalawang uri ng data, kaya ginagawa ang mga ito gamit ang iba't ibang mga koponan. Upang lumikha ng isang direktoryo (direktoryo, folder), gamitin ang utos na nakalaan sa Linux mkdir ("gumawa ng direktoryo" - lumikha ng isang direktoryo). Sa sumusunod na halimbawa, gagawa kami ng bagong direktoryo sa kasalukuyang direktoryo. Upang gawin ito, gamitin ang mkdir command at ang pangalan ng bagong direktoryo, na pinaghihiwalay ng isang puwang.

$ mkdir bago

Nagawa na ang direktoryo. Gayunpaman, kung minsan kailangan mong lumikha ng isang buong nested na istraktura, kapag sa loob ng isang nilikha na folder ay dapat mayroong isa pa, at sa loob nito ay isa pa, at iba pa. Para sa mga layuning ito, ang opsyon sa attachment –p ay ginagamit bilang bahagi ng mkdir command. Ang sumusunod na halimbawa ay gumagamit ng isang command upang lumikha ng mga subfolder: unang folder 1, sa loob nito folder 2, at sa loob nito folder 3.

$ mkdir -p 1/2/3

Maaari kang lumikha ng mga file gamit ang mga command o gamit ang built-in at external na Linux text editor, gaya ng kedit, nedit, gedit, at iba pa. Gayunpaman, ang mga nakalistang editor ay nangangailangan ng pagpapatakbo ng isang graphical na shell, na nangangahulugang ang pagpapatakbo ng graphics system. Kung wala ka nito, maaari mong, halimbawa, gumamit ng text editor VIM o mga analogue na hindi nangangailangan ng pagpapatakbo ng graphics system. Maaari ka ring lumikha ng mga file gamit ang mga text file manager tulad ng Midnight Commander (mc command). Madalas kailangan ng user (designer). mga text file i-save ang impormasyon ng teksto na kasama ng proseso ng pagkalkula ng isang integrated circuit o, halimbawa, ang mga de-koryenteng parameter ng isang kunwa na semiconductor device. Kinakailangan din na iproseso (tanggalin, idagdag, ayusin, hatiin) ang natanggap na data. Ang ganitong mga aksyon ay isinasagawa din gamit ang mga utos ng Linux. Ang isa sa mga pinakasimpleng command para sa paglikha ng isang text file ay ang command pusa.

Ang cat command ay walang sariling interface, kaya pagkatapos ipasok ang cat command na may simbolo ng pag-redirect (tingnan sa ibaba) at ang pangalan ng bagong file, maaari mong agad na magsulat ng impormasyon ng teksto sa pamamagitan ng paglipat mula sa linya patungo sa linya gamit ang Enter key. Ang paglabas sa cat editor (filter) ay ginagawa gamit ang Ctrl-D key na kumbinasyon. Nasa ibaba ang isang halimbawa ng paggawa ng file gamit ang cat command.

$ pusa > bago _ file

Ang resultang file ay tinitingnan gamit ang cat command at ang pangalan ng file na pinaghihiwalay ng isang puwang.

$ pusa bago _ file

O, halimbawa, pag-save ng impormasyon ng teksto mula sa console kapag tumatakbo ang command ls gamit ang -a na opsyon sa file r, maaari mong gamitin ang data redirection function (tingnan sa ibaba) at ang command katangan gamit ang -a na opsyon.

$ ls -l | katangan-a r

Pagkopya ng mga file at direktoryo. Ang pagkopya ng mga file at direktoryo ay isinasagawa gamit ang cp na utos, pagkatapos kung saan ang kopya ng bagay ay ipinahiwatig na may kamag-anak o ganap na mga landas, na pinaghihiwalay ng isang puwang, at ang bagong patutunguhan ng kopya ng bagay na ito, na pinaghihiwalay ng isang puwang. Ang sumusunod na halimbawa ay kinokopya ang file gauss.plx mula sa kasalukuyang direktoryo patungo sa subdirectory 1, na matatagpuan sa kasalukuyang direktoryo.

$ cp gauss . plx 1

Kung mayroon kang mga karapatan sa pag-access sa mga bagay sa Linux (lab. work No. 2), maaari mo ring kopyahin ang file na ito sa user na si Alex, na ang direktoryo ng trabaho ay may sumusunod na absolute path /home/alex, gamit ang sumusunod na command.

$ cp gauss . plx / bahay / alex

Kung ang isang file na may parehong pangalan ay umiiral na sa patutunguhan kapag kinokopya ang isang file, ito ay ma-overwrite. Ito ay maaaring magresulta sa pagkawala ng kinakailangang data. Upang maiwasan ito, gamitin ang utos ng cp na may opsyong –i, at tatanungin ng Linux ang user sa bawat pagkakataon kung talagang gusto niyang i-overwrite ang file. Ang bagong view ng huling command ay ang mga sumusunod.

$ cp -i gauss.plx /home/alex

Ang mga direktoryo ay kinopya sa parehong paraan tulad ng mga file. Gayunpaman, kapag kinokopya ang mga direktoryo na may mga file at subdirectory, ang –R na opsyon ay ginagamit bilang bahagi ng cp command. Ang pagiging nasa direktoryo ng /home/antonk/111, kopyahin ang direktoryo ng laba2 sa mas mataas na antas, i.e. sa /home/antonk na direktoryo. Dalawang tuldok ang nagpapahiwatig ng antas ng hierarchy isang hakbang na mas mataas.

$ cp - R laba 2 ..

Ang pagpapalit ng pangalan at paglipat ng mga file at direktoryo. Ang pagpapalit ng pangalan ng mga file at direktoryo ay isinasagawa gamit ang mv command, pagkatapos kung saan ang bagay na papalitan ng pangalan ay ipinahiwatig, na pinaghihiwalay ng isang puwang, at ang bagong pangalan ng bagay, na pinaghihiwalay ng isang puwang. Ang pagpapalit ng pangalan ng mga direktoryo ay nangyayari sa parehong paraan tulad ng mga file. Palitan natin ang pangalan ng file na gauss.plx sa isang bagong file na tinatawag na gauss2.plx. Kung ang isang file na may parehong pangalan ng bagong pangalan ng pinalitan ng pangalan na file ay mayroon na sa direktoryo na ito, ito ay mapapatungan ng mga nilalaman ng pinalitan ng pangalan na file. Para maiwasan ito, gamitin din ang –i na opsyon. Sa pamamagitan ng paraan, sa Linux ang paggamit ng mga extension ay hindi kinakailangan. Ginagamit lamang ang mga ito upang iugnay ang mga file at mga executable na programa.

$ mv –i gauss.plx gauss2.plx

Pagtanggal ng mga file at direktoryo. Ang pag-alis ng mga file at direktoryo sa Linux ay ginagawa gamit ang rm command, kung saan ang mga pangalan ng mga file na tatanggalin ay ipinahiwatig, na pinaghihiwalay ng isang puwang. !!! Mag-ingat kapag nagtatrabaho sa command na ito, maaari mong tanggalin ang kinakailangang data. Katulad ng cp command, gamitin ang –i option kasabay ng rm command. Ang isang utos na may ganitong opsyon ay hihingi ng kumpirmasyon upang tanggalin ang bawat file at direktoryo. Sa sumusunod na halimbawa ay tatanggalin namin ang file gauss 2. plx , humihiling ng kumpirmasyon para sa pagtanggal .

rm –i gauss2.plx

Mga wildcard. Minsan kapag nagtatrabaho sa command interpreter kailangan mong maghanap o tumugma sa mga file gamit ang isang pattern. Halimbawa, alam mo lang ang unang titik ng isang pangalan ng file at gusto mong hanapin ang lahat ng mga file sa gumaganang direktoryo na nagsisimula sa liham na iyon. O alam mo ang pagkakasunud-sunod ng ilang mga titik sa pangalan o extension ng isang file at kailangan mong hanapin ito sa ilang daang iba pang mga file. Sa kasong ito, kailangan mong gumamit ng mga espesyal na character ng Linux. Gumagamit ng serye ang command interpreter mga espesyal na karakter, na tinatawag na mga wildcard, na maaaring magamit upang maghanap ng mga file, itugma ang mga ito, at gumawa ng listahan ng mga pangalan ng file. Ang mga character na ito ay ang asterisk, tandang pananong, at square bracket (*, ?, ). Ang pagkakaroon ng nakatanggap ng isang bahagyang pangalan ng file, ginagamit ng command interpreter ang mga character na ito bilang isang template upang maghanap at bumuo ng isang listahan ng mga pangalan ng mga nakitang file. Ang isang parameter na may hindi kwalipikadong pangalan ng file ay pinapalitan ng isang listahan ng mga katugmang pangalan ng file. Ang listahan ng mga pangalan na ito ay maaaring gamitin bilang isang parameter sa mga command na gumagana sa maraming file (halimbawa, ls). Ang mga wildcard ng command interpreter ay nakalista sa Talahanayan. 1.

Talahanayan 1. Mga espesyal na character ng shell

Mga karaniwang simbolo

Layunin

Paghihiwalay ng mga command sa isang command line

"pangkat"

Pagpapatupad ng utos

Paghahambing sa klase ng mga posibleng character sa mga pangalan ng file

Itinalaga ang susunod na karakter bilang espesyal.

Ginagamit upang ipahiwatig ang mga control character

Piping ang karaniwang output ng isang command bilang input para sa isa pang command

Pagpapatakbo ng isang command sa background

Command para sa pagtatrabaho sa isang listahan ng mga naunang ipinasok na command

Mga wildcard

Resulta ng aplikasyon

Tumutugma sa anumang set ng character sa mga pangalan ng file Tumutugma sa alinman isang hiwalay na karakter

sa mga pangalan ng file

Mga simbolo ng pag-redirect

Resulta ng aplikasyon Mga pag-redirect karaniwang output

Ang tandang padamdam ay nagiging dahilan upang ma-overwrite ang file kung mayroon ito. Ino-override ng simbolo na ito ang opsyon na pumipigil sa pag-overwrit. umiiral na mga file

Nire-redirect ang karaniwang input mula sa isang file o device patungo sa isang program

Nire-redirect ang karaniwang output sa isang file o device, na nagdaragdag ng output sa dulo ng file

sa mga pangalan ng file

Resulta ng paglalapat ng karaniwang output ng mensahe ng error

Nagre-redirect at nagdaragdag ng karaniwang output ng error sa isang file o device

Nire-redirect ang karaniwang output ng error sa karaniwang input

Nire-redirect ang karaniwang output ng error sa isang file o device

Pipe ang karaniwang error na output sa isa pang input ng command

Halimbawa, ang asterisk (*) na character ay maaaring gamitin upang sumangguni sa mga file na ang mga pangalan ay nagsisimula o nagtatapos sa isang partikular na kumbinasyon ng mga character. Ipinapakita ng halimbawa kung paano gamitin ang asterisk (*) character sa anumang kumbinasyon ng mga character.

$ls

docl doc2 document docs mydoc monday martes

Nagpakita ng kumpletong listahan ng mga file sa gumaganang direktoryo.

$ls doc*

docl doc2 dokumento docs

Ipinakita ng halimbawang ito kung paano namin ginamit ang asterisk character para "i-filter" ang mga pangalan ng file na hindi nagsisimula sa kumbinasyon ng titik na "doc". Ang mga pangalan ng file lamang na naglalaman ng kumbinasyong "doc" ang ipinapakita. Sa kasong ito, ang natitirang mga file ay hindi tinanggal;

$ ls *araw

lunes t uesday

Dito ay ipinakita namin ang mga pangalan ng file na nagtatapos sa kumbinasyong "araw".

$ ls [ mt ] * d *

lunes martes

At dito ipinakita namin ang mga pangalan ng mga file na ang unang character ay ang titik "m" o "t", ang mga kasunod na mga character ay arbitrary, pagkatapos ay ang titik "d" at muli arbitrary na mga character.

Mag-ingat kapag gumagamit ng asterisk na may utos na rm - maaari itong magresulta sa pagkawala ng iyong data. Tinatanggal ng sumusunod na command ang lahat ng nilalaman ng kasalukuyang folder.

rm *

$ ls *araw

doc doc2 docs

Ang tandang pananong (?) ay tumutukoy lamang sa isang hindi natukoy na karakter sa mga pangalan ng file.