Հրամանները Linux-ում։Աշխատանք տերմինալի հետ։

Տերմինալը Linux օպերացիոն համակարգի կարևոր բաղադրիչն է, քանի որ այն թույլ է տալիս կառավարել ամբողջ օպերացիոն համակարգը: Նույնիսկ եթե մենք խոսում ենք Linux-ի distro-ների մասին, որոնք օգտագործում են գրաֆիկական ինտերֆեյս։Միևնույն է ձեզ դեռ պետք է տերմինալ՝ բացելու Linux-ի ամբողջ հզորություննը:

Տերմինալում աշխատելու համար Linux-ը տրամադրում է shell: shell-ը հրամանի թարգմանիչ է. այն պատասխանատու է հրամանի տողում ձեր մուտքագրածից որևէ բան կատարելու համար: Ամենահայտնի shell-ը bash-ն է («Bourne Again Shell»-ի կրճատ, որտեղ «Bourne Shell»-ը Unix-ի առաջին shell-ի անունն է): Կարող են օգտագործվել նաև այլ shell-եր: Նրանք կարող են տրամադրել լրացուցիչ հնարավորություններ, բայց հիմնականում աշխատում են նույն սկզբունքով: Օրինակ, tcsh shell-ը տրամադրում է սկրիպտավորման լեզու, որը նման է C ծրագրավորման լեզվին. zsh shell-ը նույնպես բավականին տարածված է

Հրամաններն օգտագործվում են օպերացիոն համակարգի հետ տերմինալի միջոցով աշխատլու համար: Linux-ն ունի շատ հրամաններ, և պարբերաբար նոր հրամաններ են ավելացվում: Այնուամենայնիվ, այս բոլոր հրամաններն ունեն ընդհանուր գործելաոճ. Այսպիսով, բոլոր հրամանները բաղկացած են երեք մասից՝ ինքնին հրամանը, դրա պարամետրերը և արգումենտները: Օրինակ՝ վերցնենք ամենատարածված հրամաններից մեկը՝ ls-ը, որը նախատեսված է թղթապանակում ֆայլերի և դիրեկտորիաների ցանկը ցուցադրելու համար։ Պարզապես ls մուտքագրելով մենք ընթացիկ թղթապանակից կստանանք ֆայլերի և դիրեկտորիաների ցանկ.

┌─[superuser@parrot]─[~]
└──╼ $ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
┌─[superuser@parrot]─[~]
└──╼ $

Հրամաները սովորաբար ընդնում են հավելյալ արգումենտներ և պարամետրերր: Օրինակ, ls հրամանը կարող է ընդունել -l պարամետրը, որը թույլ է տալիս ցուցադրել ավելի մանրամասն տեղեկատվություն ֆայլերի և կատալոգների մասին, ինչպիսիք են հասանելիությունները, ստեղծման ամսաթիվը և այլն: Եկեք օգտագործենք այս պարամետրը.

┌─[superuser@parrot]─[~]
└──╼ $ls -l
total 0
drwxr-xr-x 1 superuser superuser 28 Jun  3 16:56 Desktop
drwxr-xr-x 1 superuser superuser  0 Oct 22 03:27 Documents
drwxr-xr-x 1 superuser superuser  0 Oct 22 03:27 Downloads
drwxr-xr-x 1 superuser superuser  0 Oct 22 03:27 Music
drwxr-xr-x 1 superuser superuser  0 Oct 22 03:27 Pictures
drwxr-xr-x 1 superuser superuser  0 Oct 22 03:27 Public
drwxr-xr-x 1 superuser superuser 22 Jun  3 16:56 Templates
drwxr-xr-x 1 superuser superuser  0 Oct 22 03:27 Videos
┌─[superuser@parrot]─[~]
└──╼ $


Բացի հրահանգի պարամետրերից, դրանք կարող են ընդունել նաև արգումենտներ։ Առաջինը սովորաբար ներկայացնում է այն օբյեկտները, որոնց վրա հրահանգը կիրառում է։ Արգումենտը նշվում է հրահանգի վերջում։ Օրինակ, ls հրահանգը որպես արգումենտ ստանում է կատալոգի հասցեն, որի պարունակությունը պետք է ցուցադրվի։ Վերևում նշված օրինակներում պանակի հասցե չի փոխանցվել, ուստի ls հրահանգը կատարում է գործողությունը ըստ ներկայիս կատալոգի վրա։ Սակայն այժմ փոխանցենք կատալոգի հասցեն՝ /usr:

┌─[superuser@parrot]─[~]
└──╼ $ls /usr
bin  games  include  lib  lib32  lib64  libexec  local  sbin  share  src  var
┌─[superuser@parrot]─[~]
└──╼ $

Կարող ենք նաև օգտագործել ls -l փոխանցելով կատալոգի հասցեն։Որը կտպի փոխանցված կատալոգի պարունակության մանրամասն ինֆորմացիան։

┌─[superuser@parrot]─[~]
└──╼ $ls -l /usr
total 0
drwxr-xr-x 1 root root 69648 Nov  1 08:45 bin
drwxr-xr-x 1 root root    60 Jun  3 16:56 games
drwxr-xr-x 1 root root  4090 Oct 22 03:40 include
drwxr-xr-x 1 root root  4246 Nov  1 08:42 lib
drwxr-xr-x 1 root root   642 Oct 22 03:34 lib32
drwxr-xr-x 1 root root    40 Oct 22 03:35 lib64
drwxr-xr-x 1 root root  2406 Oct 22 03:51 libexec
drwxr-xr-x 1 root root    72 Jun  3 16:56 local
drwxr-xr-x 1 root root 17108 Nov  1 08:42 sbin
drwxr-xr-x 1 root root  8166 Oct 24 03:57 share
drwxr-xr-x 1 root root   686 Oct 22 04:07 src
drwxr-xr-x 1 root root    18 Jun  3 16:56 var
┌─[superuser@parrot]─[~]
└──╼ $


Հրահանգների շղթաներ


| (հայկական ուղղահայաց գիծ) նշանով կարելի է կազմել հրահանգների շղթաներ։ Օրինակ, հետևյալ շղթան.

ls -R / | less

Ահա, ls -R (տպում է փոխանցված կատալոգի պարունակությունը ռեկուրսիվ) հրահանգը կատարվում է և իր արդյունքը փոխանցում է less հրահանգին։ Իսկ less հրահանգը ցույց է տալիս այդ արդյունքը էջերով։

Փոխանցում


Մեկ այլ հաճախ օգտագործվող օպերատոր է փոխանցման օպերատորը՝ >։ Օգտագործելով փոխանցում, կարելի է հրահանգի արդյունքը ուղարկել տարբեր վայրեր, օրինակ՝ ֆայլ։ Օրինակ, ցուցադրենք ls -l հրահանգի արդյունքը folder.txt ֆայլում։

ls -l > folder.txt

Այս հրահանգի արդյունքում կստեղծվի folder.txt ֆայլը ներկա պանակում, եթե այն դեռ չի ստեղծվել։ Եթե ֆայլը արդեն կա, ապա այն կփոխարինվի նոր տվյալներով։

Եթե ֆայլը կա, բայց պետք է ավելացնել հրահանգի արդյունքը արդեն գոյություն ունեցող ֆայլի մեջ, պետք է օգտագործել >> օպերատորը։

ls -l >> folder.txt

Եթե գործընթացում տեղի ունենան սխալներ, կարելի է օգտագործել 2> օպերատորը սխալները պահպանելու համար, օրինակ՝

ls -l 2> errors.txt

Եթե չենք իմանում, թե արդյոք սխալներ կլինեն, մենք կարող ենք տարբերել սովորական արդյունքը և սխալները՝

ls -l > folder.txt 2> errors.txt

Այս դեպքում հրահանգի արդյունքը կհաղորդվի folder.txt ֆայլում, իսկ սխալները՝ errors.txt ֆայլում։

Օգնություն ստանալ հրահանգների մասին


Linux-ում հրահանգների մասին տեղեկություններ ստանալու համար հատուկ man ("manual" բառի կարճ ձևը) հրահանգն է օգտագործվում։ Այս հրահանգին փոխանցվում է այն հրահանգը, որի մասին պետք է տեղեկություն ստանալ։

man ls
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci‐
       fied.

       Mandatory  arguments  to  long  options are mandatory for short options
       too.

       -a, --all
              do not ignore entries starting with .


Այդ դեպքում կստանանք ls հրահանգի մասին տեղեկատվությունը։ man հրահանգը սովորաբար պարունակում է հետևյալ բաժինները.

  • Name: հրահանգի անունը և նրա հիմնական նշանակությունը։

  • Synopsis: հրահանգի կիրառման համառոտ տեղեկություն։

  • Description: հրահանգի մանրամասն նկարագիր։

  • Options: հրահանգի հասանելի բոլոր պարամետրերի ամբողջական ցանկը։

  • Files: հրահանգի հետ կապված ֆայլեր (եթե կան)։

  • See also: կապված հրահանգներ։

  • Author: հրահանգի հեղինակը և նրա էլեկտրոնային հասցեն։

--help օպցիան


Մյուս տարբերակը հրահանգի մասին տեղեկություն ստանալու համար՝ կարող ենք օգտագործել --help օպցիան։ Այս տարբերակն ունեն գրեթե բոլոր հրահանգները։ Օրինակ, ls հրահանգի համար օգնություն ստանալու համար ։

ls --help

Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      with -l, scale sizes by SIZE when printing them;
                             e.g., '--block-size=M'; see SIZE format below

  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                             modification of file status information);
                             with -l: show ctime and sort by name;
                             otherwise: sort by ctime, newest first

  -C                         list entries by columns
      --color[=WHEN]         color the output WHEN; more info below


Bash-ի հրահանգների պատմությունը


Բաշ շելլը հիշում է հրահանգների պատմությունը և թույլ է տալիս կրկին օգտագործել վերջերս կիրառված հրահանգները։ Բազմաթիվ դիստրիբուտիվներ հիշում են վերջին 1000 հրահանգները, որոնք օգտագործվել են օգտագործողի կողմից։ Իրականում, այն հրահանգների քանակը, որոնք հիշում է շելլը, որոշվում է համակարգի փոփոխականով՝ HISTSIZE։ Պատմությունը (վերջին 1000 հրահանգները) պահվում է .bash_history ֆայլում՝ յուրաքանչյուր օգտագործողի տնային կատալոգում։ Այդ ամբողջ պատմությունը տեսնելու համար կարելի է բացել այս ֆայլը կամ պարզապես օգտագործել history հրահանգը՝ տերմինալում.

history

1  ls
2  ls -l
3  ls /usr/
4  ls -l /usr
5  ls --help
6  history

Linux-ը թույլ է տալիս կրկնել հրահանգը, օգտագործելով դրա համարը պատմության մեջ։ Օրինակ, 4-րդ համարում ցուցադրված է ls -l /usr հրահանգը։ Այդ հրահանգը կրկնելու համար պետք է գրել !4

!4
ls -l /usr
total 148
drwxr-xr-x   2 root root 61440 Mar  4 19:40 bin
drwxr-xr-x   2 root root  4096 Oct 16 13:38 games
...

Եթե ցանկանում եք մաքրել ամբողջ պատմությունը, կարող եք օգտագործել history -c հրահանգը։

Ինֆորմացիոն հրահանգներ

Համակարգի մասին տեղեկատվություն ստանալ

uname: Այս հրահանգը օգտագործվում է օպերացիոն համակարգի և համակարգի հոստի անվան մասին տեղեկատվություն ցուցադրելու համար։ Այս հրահանգը նաև կարող է ցուցադրել սարքավորման տեսակն, օպերացիոն համակարգի տարբերակը և kernel-ի տարբերակի համարի մասին տվյալներ։

┌─[superuser@parrot]─[~]
└──╼ $uname
Linux
┌─[superuser@parrot]─[~]
└──╼ $

uname հրահանգը կարող է ընդունել տարբեր պարամետրեր՝ ելքային տվյալները կոնկրետացնելու համար։ Օրինակ, -a պարամետրը ցուցադրում է ամբողջ տեղեկատվությունը՝ ներառյալ համակարգի անվանումը, հոստի անվանումը, kernel-ի տարբերակը և այլն։

┌─[superuser@parrot]─[~]
└──╼ $uname -a
Linux parrot 6.10.11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.10.11-1parrot1 (2024-10-03) x86_64 GNU/Linux
┌─[superuser@parrot]─[~]
└──╼ $

Ավելին, փոխարեն ամբողջական տեղեկատվություն ցուցադրելու, կարող ենք միայն որոշակի տվյալներ ցուցադրել՝ օգտագործելով հետևյալ օպցիաներից մեկը.

  • -s, --kernel-name: Ցուցադրում է kernel-ի անունը։

  • -n, --nodename: Ցուցադրում է հոստի անվանումը։

  • -r, --kernel-release: Ցուցադրում է kernel-ի թողարկման տարբերակը։

  • -v, --kernel-version: Ցուցադրում է kernel-ի վերսիան։

  • -m, --machine: Ցուցադրում է համակարգչի արխիտեկտուրան։

  • -p, --processor: Ցուցադրում է պրոցեսորի տեսակն։

  • -i, --hardware-platform: Ցուցադրում է սարքավորման պլատֆորմը։

  • -o, --operating-system: Ցուցադրում է օպերացիոն համակարգը։


hostnamectl


hostnamectl հրահանգը ցուցադրում և փոխում է համակարգի հոստի անվանումը, ինչպես նաև թույլ է տալիս դիտել համակարգի տարբեր պարամետրեր:

superuser@parrot:~$ hostnamectl
 Static hostname: parrot
       Icon name: computer-desktop
         Chassis: desktop 🖥️
      Machine ID: 1a2b3c4d5e6f0a1b3c0023ab75fd908a
         Boot ID: d5e6f0a1b3c0a1a2b3c4d5e6f0a1c002
Operating System: Ubuntu 23.10                    
          Kernel: Linux 6.5.0-21-generic
    Architecture: x86-64
 Hardware Vendor: ACER
  Hardware Model: Acer Aspire Z3750 
Firmware Version: 2313


date


date հրահանգը ցուցադրում է ներկայիս ամսաթիվը և ժամը։

┌─[superuser@parrot]─[~]
└──╼ $ date
Sat Nov 30 01:18:15 PM EST 2024
┌─[superuser@parrot]─[~]
└──╼ $

Այսպես, դուք կարող եք հեշտությամբ ստանալ համակարգի մասին օգտակար տեղեկություններ, որոնք օգտակար են ինչպես համակարգի կոնֆիգուրացիաներ կատարելու, այնպես էլ վերլուծություններ ու խնդիրներ լուծելու համար:


• Կիբեռանվտանգության հայալեզու ալիք ` https://t.me/onioncyberblog

• Python ծրագրավորման լեզվին նվիրված հայալեզու ալիք ` https://t.me/pyarmenia

Զգուշացում

Նյութը այլ տեղերում տարածելիս հղումը դեպի մեր ալիք պարտադիր է