Gentoo негізін салушыдан Linux-тың негіздері сабақтары. 1-бөлім (2/4):Файлдарды және папкаларды басқару


Бұл бөлімшеде файлдармен және файлдық жүйемен жұмыс жасайтын ls, mkdir, touch, mv, cp секілді командалар қарастырылады. echo және cat қолданылулары келтіріледі. Файлдық жүйедегі инодтар туралы айтып өтіледі.

Бұл мақала аударма, түпнұсқасы мына жерде орналасқан.

Linux командаларын пайдалану


ls командасымен танысу

Енді, ls командасын тез қарастырып өтейік. Linux-пен алдын кездескен болсаңыз, ол қазіргі папканың ішін тізімге шығаратынын білетін болуыңыз керек:

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

-a кілтін көрсету арқылы, сіз толық тізімді көре аласыз. Толық тізім деп отқанымыз жай папкалар мен файлдарға қоса "." белгісінен басталатын жасырын файлдар мен папкалар. Келесі мысалда көретініміздей ls -a "." және ".." секілді арнайы папкаларды да тізімге шығарады:

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


Папканың кеңейтілген тізімі

Сіз ls командасына бір немесе бірнеше папкалар немесе файлдарды көрсете аласыз. Егер сіз тек қана файл көрсетсеңіз, ls сізге тек сол файлды көрсетеді. Ал егер папканы көрсетсеңіз, онда ls папканың ішінің тізімін шығарып береді. Тағы бір пайдалы кілт ол -l. Ол арқылы сіз файлдың иесін, соңғы өзгертілген уақытын, өлшемін және файлдың қол жетімділік құқықтарын көре аласыз.

Келесі мысалда біз -l кілтін менің /usr папкамның ішін көру үшін пайдаландық:

$ 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
lrwxrwxrwx    1 root     root            9 Dec 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 include
lrwxrwxrwx    1 root     root           10 Dec 22 20:57 info -> share/info
drwxr-xr-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    1 root     root            9 Dec 22 20: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 Dec 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     root          176 Nov 24 14:25 ssl
lrwxrwxrwx    1 root     root           10 Dec 22 20:57 tmp -> ../var/tmp

Бірінші баған әрбір элемент үшін қол жетімділік құқықтарын көрсетіп тұр. Кейінірек, мен оларды қалай түсіну қажет екендігін түсіндіремін. Келесі баған файлдық жүйенің әрбір элементіне сілтемелер санын көрсетеді, бұны да төменде айтып өтеміз. Үшінші және төртінші бағандар — сәйкесінше иелер мен топтар тізімдері. Бесінші баған — объект өлшемі. Алтыншы — объекті соңғы рет өзгертілген уақыт (mtime). Және ең соңғысы, объектінің аты. Егер файлдар символдық сілтемелер болса, онда сіз мына "->" түрдегі бағыттауыш пен сілтеме көрсетіп тұрған объектінің жолы көрсетіледі.

Папкаларды қараймыз

Кейде сізге папканың ішін емес, папканың өзін қарау керек болады. Мұндай жағдайда -d кілтін көрсетуге болады. Ол ls командасына кез-келген папканы, ішкі папка ретінде қарастыру керектігін айтады:

$ 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 Dec 27 08:56 /usr/bin


Рекурсиялық және инодтық тізім

Осылай сіз -d кілтін папканы қарау үшін пайдалана аласыз, бірақ сонымен бірге сіз -R кілтін де пайдалана аласыз. Ол -d кілтіне қарама-қарсы әрекет етеді, яғни ол тек папка ішін қарап қоймай, рекурсиялы түрде оның ішіндегі папкалардың ішін де қарап шығады! Біз нұсқаулықта бұл команданы орындамаймыз, өйткені оның шығаратыны өте ауқымды болар еді, бірақ сіз өзіңіз ls -R немесе ls -Rl командаларын орындап көруіңізге болады.

Ақыры, -i кілтіне келіп жеттік. -i кілті файлдық жүйедегі объектілердің инод номерін қарау үшін пайдаланылады:

$ ls -i /usr
   1409 X11R6        314258 i686-linux           43090 libexec        13394 sbin
   1417 bin            1513 i686-pc-linux-gnu     5120 local          13408 share
   8316 distfiles      1517 include                776 man            23779 src
     43 doc            1386 info                 93892 portage        36737 ssl
  70744 gentoo-x86     1585 lib                   5132 portage.old      784 tmp


Инод түсінігі

Файлдық жүйедегі әрбір объектіге инод номері деп аталатын, қайталанбайтын индекс беріледі. Инодтар түсінігі файлдық жүйедегі көптеген операцияларды түсіну үшін маңызды. Мысалыға, әрбір папкада пайда болатын "." және ".." сілтемелерін қарастырайық. ".." папкасының шын мәнінде не екенін білу үшін біз алдымен, /usr/local папкасының инодын қараймыз:

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

/usr/local папкасының инод номері 5120. Ал енді /usr/local/bin/.. жолының инодын қарап көрейік:

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

Көріп тұрғанымыздай /usr/local/bin/.. және /usr/local папкаларының инод номерлері бірдей. Мұндай таң қаларлық жайтты қалай түсінуге болатындығын қарап көрейік. Біз осыған дейін, /usr/local өзі папка екен деп ойладық. Енді болса, көріп тұрғанымыздай, шынайы папка ол 5120 номерлі инод, және біз осы инодты көрсетіп тұрған екі сілтемені таптық. Бұл инод дискта бір жерде ғана болғанымен, оған көптеген сілтемелер бар болуы мүмкін.

Біз бұл 5120 номерлі инодты көрсетіп тұрған сілтемелер санын қарай аламыз. Ол үшін ls -dl командасын пайдалану керек:

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

Егер екінші бағанға мұқият қарасақ, онда /usr/local (инод 5120) папкасына 8 сілтеме бар екенін көреміз. Менің жүйемде бұл инодқа келесі сілтемелер көрсетіп тұр:

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


mkdir

Енді жаңа папкаларды құруға пайдаланылатын mkdir командасын қарап өтейік. Келесі команда /tmp папкасының ішінде орналасқан tic, tac, toe үш папкасын құрады:

$ cd /tmp
$ mkdir tic tac toe


Үнсіз келісім бойынша mkdir жолдың бастапқы жағында тұрған папкаларды құрмайды; жолда көрсетілген барлық папкалар соңғы жолға дейін (құрылатын папкаға дейін) файлдық жүйеде бар болуы қажет. Яғни, егер сіз бір-бірінің ішінде жататын үш папканы won/der/ful құрғыңыз келсе, сізге mkdir командасын үш бөлек орындауға тура келеді:

$ mkdir won/der/ful
mkdir: cannot create directory `won/der/ful': No such file or directory
$ mkdir won
$ mkdir won/der
$ mkdir won/der/ful

Бірақ mkdir командасында жолдағы файлдық жүйеде жоқ папкаларды құратын -p кілті бар:

$ mkdir -p easy/as/pie

Жалпы өте оңай. mkdir командасы туралы көбірек білгіңіз келсе man mkdir командасын орындаңыз және нұсқаулықты оқып шығыңыз. Бұл біз қарастырған барлық командаларға орынды (мысалы, man ls), тек cd-дан басқа, өйткені ол bash-тың құрамындағы команда.

touch

Енді біз файлдар мен папкаларды көшіруге және олардың орындарын ауыстыруға арналған cp және mv командаларын қарастырамыз. Бірақ біз алдымен touch командасынан бастаймыз. Ол арқылы біз /tmp папкасында файл құра аламыз:

$ cd /tmp
$ touch copyme

touch егер файл бар болса, оның mtime уақытын өзгертеді (ауд. еск. — файл соңғы рет өзгертілген уақыт) (ls -l командасы орындалғандағы алтыншы бағанды естеріңізге түсіріңіздер). Егер файл жоқ болса, онда жаңа бос файл құрылады. Сізде енді /tmp папкасында өлшемі ноль болатын /tmp/copyme файлы жатқан болуы керек.

echo

Енді, файл бар кезде оған бірнеше мәліметтер енгізейік. Оны echo командасының көмегімен істеуге болады. echo берілген аргументтерді стандартты шығаруға басып шығарады. Бірінші, echo командасының өзін көрсетейік:

$ echo "firstfile"
firstfile

Енді тура сол команданы қайта орындаймыз, бірақ шығарылуды файлға бағыттаймыз:
$ echo "firstfile" > copyme

"Үлкендік (>)" белгісі bash-қа echo-ның шығарылуын copyme файлына бағыттау керек екендігін айтады. Егер мұндай атты файл жоқ болса, ол жаңадан құрылады, егер бар болса тазаланып қайтадан жазылады. ls -l командасын орындау арқылы copyme өлшемінің 10 байтқа өскенін көре аламыз. Өйткені енді онда «firstfile» деген сөз жазылған:

$ ls -l copyme
-rw-r--r--    1 root     root           10 Dec 28 14:13 copyme


cat және cp

Файлдың ішіндегілерін терминалға шығару үшін cat командасын пайдаланыңыз:

$ cat copyme
firstfile

Енді біз cp файлын қолданып көре аламыз, copyme файлының copiedme көшірмесін құрайық:
$ cp copyme copiedme

Енді олардың шынымен де әр түрлі файлдар екендігін (сілтеме емес) тексеріп көрейік; олардың инод номерлері әр түрлі болуы керек:

$ ls -i copyme copiedme
  648284 copiedme   650704 copyme


mv

Ал енді copiedme файлының атын movedme деп өзгерту үшін mv командасын пайдаланайық. Инод номері дәл сол қалпында қалады; бірақ, сол инодқа көрсетіп тұрған файл аты өзгертіледі.

$ mv copiedme movedme
$ ls -i movedme
  648284 movedme

Егер барлық әрекеттер бір ғана файлдық жүйеде жасалып жатса, орын ауыстыратын файлдың инод номері өзгермей сақталып тұрады. Біз файлдық жүйелерді нұсқаулығымыздың үшінші бөлімінде толығырақ қарастырамыз.

mv командасының басқа да мүмкіншіліктерін қарастырып көрейік. Файлдардың атын өзгертуден басқа, mv командасын, бір немесе бірнеше файлдың орынын ауыстыруға да қолдануға болады.Мысалы, /var/tmp/myfile.txt файлын менің жеке /home/drobbins папкама орын ауыстыру үшін, келесі команданы пайдаланамын:
$ mv /var/tmp/myfile.txt /home/drobbins

Осыдан соң myfile.txt файлы /home/drobbins/myfile.txt жаңа орнына ауыстырылады. Егер /home/drobbins папкасы басқа файлдық жүйеде орналасқан болса, онда mv файлды бірінші жаңа файлдық жүйеге көшіріп алады да ескі жүйеден өшіреді. Өзіңіз түсінген боларсыз, біз myfile.txt файлын екі түрлі файлдық жүйе арасында орынын ауыстырсақ, онда жаңа жердегі myfile.txt файлы жаңа инод номерін алады. Бұл әрбір файлдық жүйенің өзінің инодтар номерлерінің тізімі бар екендігімен түсіндіріледі.

mv командасын бірнеше файлды бір папкаға орын ауыстыру үшін де пайдалануға болады. Мысалыға, myfile1.txt және myarticle3.txt файлын /home/drobbins папкасына орын ауыстыру үшін, келесі команданы орындау қажет:

$ mv /var/tmp/myfile1.txt /var/tmp/myarticle3.txt /home/drobbins

  • +1
3 пікір
kamyrov
Райымбек, осылай ақырындап өзінің линукс жайлы кітабынды жаза бастасан болады екен ғой), рахмет!
raimbek
Кітап болмаса да, бастап жатқандарға пайдалы материал болады деп үміттенемін. Әлі жұмыс көп, 4 бөлім бар, әрқайсысында 3-4 мақаладан. Ал ағылшыншада одан да көп )) орысшаға аударманың өзі толық бітпеген )
yerbol89
Керемет аударылған, түсінікті. Рахмет!
Тек тіркелген қолданушылар ғана пікір қалдыра алады.