А.В. Столяров - Введение в операционные системы (1152218), страница 12
Текст из файла (страница 12)
Òàê, åñëè ìû îáíàðóæèìôàéë, â èìåíè êîòîðîãî ñîäåðæèòñÿ ïðîáåë (íàïðèìåð, ÷òî-íèáóäü âðîäåjust a file.txt), ñòåðåòü åãî ìîæíî îäíîé èç òàêèõ êîìàíä:$ rm "just a file.txt"$ rm just\ a\ file.txtÊàâû÷êè è ñèìâîë îáðàòíîé êîñîé ÷åðòû ïîçâîëÿþò îòìåíèòü ñïåöèàëüíûéñìûñë è äëÿ íåêîòîðûõ äðóãèõ ñèìâîëîâ, ñ êîòîðûìè ìû âñòðåòèìñÿ íèæå.10.4Ïåðåíàïðàâëåíèÿ ââîäà-âûâîäàÏðàêòè÷åñêè âñå ïðîãðàììû â ÎÑ Unix ñëåäóþò ñîãëàøåíèþ, ïî êîòîðîìóêàæäàÿ ïðîãðàììà èìååò ïîòîê ñòàíäàðòíîãî ââîäà, ïîòîê ñòàíäàðòíîãîâûâîäà è ïîòîê ñîîáùåíèé îá îøèáêàõ.Îñóùåñòâëÿÿ îáìåí äàííûìè ÷åðåç ñòàíäàðòíûå ïîòîêè, áîëüøèíñòâîïðîãðàìì íå äåëàåò ïðåäïîëîæåíèé î òîì, ñ ÷åì íà ñàìîì äåëå ñâÿçàí òîòèëè èíîé ïîòîê. Ýòî ïîçâîëÿåò èñïîëüçîâàòü îäíè è òå æå ïðîãðàììû êàêäëÿ ðàáîòû ñ òåðìèíàëîì, òàê è äëÿ ÷òåíèÿ èç ôàéëà è/èëè çàïèñè â ôàéë.Êîìàíäíûå èíòåðïðåòàòîðû, â òîì ÷èñëå êëàññè÷åñêèé Bourne Shell,ïðåäîñòàâëÿþò âîçìîæíîñòè äëÿ óïðàâëåíèÿ ââîäîì-âûâîäîì çàïóñêàåìûõïðîãðàìì.
Äëÿ ýòîãî èñïîëüçóþòñÿ ñèìâîëû <, >, >>, >& è | (ñì. òàáëèöó 2).49cmd1 > file1cmd2cmd3cmd1cmd4cmd5çàïóñòèòü ïðîãðàììó cmd1, íàïðàâèâ åå âûâîä â ôàéë file1. Åñëè ôàéë ñóùåñòâóåò, îíáóäåò ïåðåçàïèñàí ñ íóëÿ, åñëè íå ñóùåñòâóåò − áóäåò ñîçäàí.< file2çàïóñòèòü ïðîãðàììó cmd2, ïîäàâ åé ñîäåðæèìîå ôàéëà file2 â êà÷åñòâå ñòàíäàðòíîãîââîäà. Åñëè ôàéëà íå ñóùåñòâóåò, ïðîèçîéäåòîøèáêà.> file1 < file2 çàïóñòèòü ïðîãðàììó cmd3, ïåðåíàïðàâèâ êàêââîä, òàê è âûâîä.| cmd2çàïóñòèòü îäíîâðåìåííî ïðîãðàììû cmd1 ècmd2, ïîäàâ äàííûå ñî ñòàíäàðòíîãî âûâîäàïåðâîé íà ñòàíäàðòíûé ââîä âòîðîé.2> errfileíàïðàâèòü ïîòîê ñîîáùåíèé îá îøèáêàõ âôàéë errfile.2>&1 | cmd6îáúåäèíèòü ïîòîêè ñòàíäàðòíîãî âûâîäà èâûâîäà îøèáîê ïðîãðàììû cmd5 è íàïðàâèòüâñå íà ñòàíäàðòíûé ââîä ïðîãðàììå cmd6Òàáëèöà 2: Ïðèìåðû ïåðåíàïðàâëåíèé ââîäà-âûâîäàÎáû÷íî â ÎÑ Unix ïðèñóòñòâóåò ïðîãðàììà less, ïîçâîëÿþùàÿ ïîñòðàíè÷íî ïðîñìàòðèâàòü ñîäåðæèìîå ôàéëîâ, ïîëüçóÿñü êëàâèøàìè "Ñòðåëêàââåðõ "Ñòðåëêà âíèç PgUp, PgDn è äð.
äëÿ ïðîêðóòêè. Ýòà æå ïðîãðàììà ïîçâîëÿåò ïîñòðàíè÷íî ïðîñìàòðèâàòü òåêñò, ïîäàííûé åé íà ñòàíäàðòíûé ââîä.Èñïîëüçîâàíèå ïðîãðàììû less ïîëåçíî â ñëó÷àå, åñëè èíôîðìàöèÿ, âûäàâàåìàÿ êàêîé-ëèáî èç çàïóñêàåìûõ âàìè ïðîãðàìì, íå óìåùàåòñÿ íà ýêðàí.Íàïðèìåð, êîìàíäàls -lR | lessïîçâîëèò âàì ïðîñìîòðåòü ñïèñîê âñåõ ôàéëîâ, íàõîäÿùèõñÿ â òåêóùåé äèðåêòîðèè è âñåõ åå ïîääèðåêòîðèÿõ.10.5Óïðàâëåíèå ïðîöåññàìèÑïèñîê ïðîöåññîâ, âûïîëíÿþùèõñÿ â íàñòîÿùèé ìîìåíò, ìîæíî ïîëó÷èòüêîìàíäîé ps:$ psPID TTYTIME CMD502199 pts/52241 pts/5$00:00:00 bash00:00:00 psÊàê âèäíî, êîìàíäà ïî óìîë÷àíèþ âûäàåò òîëüêî ñïèñîê ïðîöåññîâ, çàïóùåííûõ â äàííîì êîíêðåòíîì ñåàíñå ðàáîòû.Ê ñîæàëåíèþ, êëþ÷è êîìàíäû ps î÷åíü ñèëüíî îòëè÷àþòñÿ â çàâèñèìîñòèîò ñèñòåìû (â ÷àñòíîñòè, îíè ðàçëè÷íû äëÿ FreeBSD è Linux).
Çà ïîäðîáíîéèíôîðìàöèåé ñëåäóåò îáðàùàòüñÿ ê äîêóìåíòàöèè ïî êîíêðåòíîé ÎÑ; çäåñüìû îãðàíè÷èìñÿ çàìå÷àíèåì, ÷òî êîìàíäà ps ax âûäàñò ñïèñîê âñåõ ñóùåñòâóþùèõ ïðîöåññîâ, à êîìàíäà ps axu äîïîëíèòåëüíî âûäàñò èíôîðìàöèþî âëàäåëüöàõ ïðîöåññîâ3 .Ñíÿòü ïðîöåññ ìîæíî ñ ïîìîùüþ ñèãíàëà. Ïîñêîëüêó ñèãíàëû íàìè ïîêàíå ðàññìàòðèâàëèñü, îãðàíè÷èìñÿ çàìå÷àíèåì, ÷òî êîìàíäà kill 2736 ñíèìàåò ïðîöåññ íîìåð 2736, åñëè òîëüêî ïðîöåññ íå ïðåäïðèíÿë ñïåöèàëüíûõìåð; êîìàíäà kill -9 2736 óíè÷òîæèò ïðîöåññ â ëþáîì ñëó÷àå, è ïîìåøàòüýòîìó ïðîöåññ íå ìîæåò.10.6Âûïîëíåíèå â ôîíîâîì ðåæèìåÍåêîòîðûå ïðîãðàììû âûïîëíÿþòñÿ îùóòèìîå âðåìÿ, ïðè ýòîì íå òðåáóÿâçàèìîäåéñòâèÿ ñ ïîëüçîâàòåëåì ÷åðåç ñòàíäàðòíûå ïîòîêè ââîäà/âûâîäà. Âîâðåìÿ âûïîëíåíèÿ òàêèõ ïðîãðàìì óäîáíî èìåòü âîçìîæíîñòü ïðîäîëæàòüäàâàòü êîìàíäû êîìàíäíîìó èíòåðïðåòàòîðó.Äîïóñòèì, íàì ïîòðåáîâàëñÿ ñïèñîê âñåõ ôàéëîâ â ôàéëîâîé ñèñòåìå.
Òàêîé ñïèñîê ìîæíî ïîëó÷èòü ñ ïîìîùüþ êîìàíäû ls -lR /. Åñòåñòâåííî áûëî áû ïåðåíàïðàâèòü åå âûâîä â ôàéë, ÷òîáû ïîçäíåå èìåòü âîçìîæíîñòü åãîàíàëèçà. Çàìåòèì, ÷òî òàêàÿ êîìàíäà áóäåò âûïîëíÿòüñÿ íåñêîëüêî ìèíóò,è æäàòü åå îêîí÷àíèÿ íàì áû íå õîòåëîñü, ïîñêîëüêó ýòè íåñêîëüêî ìèíóòìû ìîãëè áû, íàïðèìåð, èñïîëüçîâàòü äëÿ íàáîðà òåêñòà â ðåäàêòîðå. ×òîáû çàïóñòèòü êîìàíäó â ôîíîâîì ðåæèìå, ê íåé ñëåäóåò â êîíöå ïðèïèñàòüñèìâîë &, íàïðèìåð:$ ls -lR / >list.txt 2>/dev/null &[1] 2437$Ïåðåíàïðàâëåíèå ïîòîêà âûâîäà ñîîáùåíèé îá îøèáêàõ â /dev/null ñäåëàíîäëÿ òîãî, ÷òîáû ñîîáùåíèÿ î íåâîçìîæíîñòè ÷òåíèÿ íåêîòîðûõ êàòàëîãîâ íåìåøàëî íàøåé äàëüíåéøåé ðàáîòå.3 Ýòîâåðíî äëÿ ÎÑ Linux è FreeBSD.
 äðóãèõ ÎÑ, íàïðèìåð â SunOS/Solaris, îïöèè êîìàíäû ps èìåþòñîâåðøåííî èíîé ñìûñë51 îòâåò íà íàøó êîìàíäó ñèñòåìà ñîîáùàåò, ÷òî çàäàíèå çàïóùåíî â ôîíîâîì ðåæèìå â êà÷åñòâå ôîíîâîé çàäà÷è 1, ïðè÷åì íîìåð çàïóùåííîãîïðîöåññà − 2437.Åñëè çàäà÷à óæå çàïóùåíà íå â ôîíîâîì ðåæèìå è íàì íå õî÷åòñÿ æäàòüåå çàâåðøåíèÿ, ìû ìîæåì ñäåëàòü îáû÷íóþ çàäà÷ó ôîíîâîé. Äëÿ ýòîãî ñëåäóåò íàæàòü Ctrl-Z, â ðåçóëüòàòå ÷åãî âûïîëíåíèå òåêóùåé çàäà÷è áóäåòïðèîñòàíîâëåíî. Çàòåì ñ ïîìîùüþ êîìàíäû bg4 ïðèîñòàíîâëåííóþ çàäà÷óìîæíî ñíîâà ïîñòàâèòü íà âûïîëíåíèå, íî óæå â ôîíîâîì ðåæèìå.Òàêæå âîçìîæíî ñäåëàòü òåêóùåé (ò.å.
òàêîé, îêîí÷àíèÿ êîòîðîé îæèäàåòêîìàíäíûé èíòåðïðåòàòîð) ëþáóþ èç ôîíîâûõ è ïðèîñòàíîâëåííûõ çàäà÷.Ýòî äåëàåòñÿ ñ ïîìîùüþ êîìàíäû fg5 .10.7Êîìàíäíûå ôàéëûÊîìàíäíûé èíòåðïðåòàòîð ïîçâîëÿåò îñóùåñòâëÿòü íå òîëüêî ðàáîòó âðåæèìå äèàëîãà ñ ïîëüçîâàòåëåì, íî è âûïîëíåíèå ïðîãðàìì, íàçûâàåìûõ êîìàíäíûìè ôàéëàìè (ñêðèïòàìè). Ôàéë ñ ïðîãðàììîé, ïðåäíàçíà÷åííîé äëÿèñïîëíåíèÿ èíòåðïðåòàòîðîì Bourne Shell, äîëæåí íà÷èíàòüñÿ ñî ñòðîêè#!/bin/shßçûê Bourne Shell ïîääåðæèâàåò ðàáîòó ñ ïåðåìåííûìè. Èìåíà ïåðåìåííûõ ñîñòîÿò èç ëàòèíñêèõ áóêâ, öèôð, çíàêà ïîä÷åðêèâàíèÿ è íà÷èíàþòñÿâñåãäà ñ áóêâû. Ïåðåìåííàÿ ìîæåò èìåòü çíà÷åíèåì ëþáóþ ñòðîêó ñèìâîëîâ.
×òîáû ïðèñâîèòü ïåðåìåííîé çíà÷åíèå, íåîáõîäèìî íàïèñàòü îïåðàòîðïðèñâàèâàíèÿ, íàïðèìåð:I=10MYFILE=/tmp/the_file_nameMYSTRING="Here are several words"Îáðàòèòå âíèìàíèå, ÷òî â èìåíè ïåðåìåííîé, à òàêæå âîêðóã çíàêà ðàâåíñòâà (ñèìâîëà ïðèñâàèâàíèÿ) íå äîëæíî áûòü ïðîáåëîâ, â ïðîòèâíîì ñëó÷àåêîìàíäà áóäåò ðàñöåíåíà íå êàê ïðèñâàèâàíèå, à êàê îáû÷íàÿ êîìàíäà, â êîòîðîé çíàê ïðèñâàèâàíèÿ − îäèí èç ïàðàìåòðîâ.Äëÿ îáðàùåíèÿ ê ïåðåìåííîé èñïîëüçóåòñÿ çíàê $, íàïðèìåð:$ echo $I $MYFILE $MYSTRING ðåçóëüòàòå âûïîëíåíèÿ ýòîé êîìàíäû áóäåò íàïå÷àòàíî:4 Îò5 Îòàíãëèéñêîãî background − ôîíàíãëèéñêîãî foreground5210 /tmp/the_file_name Here are several wordsÏðè íåîáõîäèìîñòè ñêîìïîíîâàòü ñëèòíûé òåêñò èç çíà÷åíèé ïåðåìåííûõìîæíî èìåíà ïåðåìåííûõ çàêëþ÷àòü â ôèãóðíûå ñêîáêè, íàïðèìåð:$ echo ${I}abcÝòà êîìàíäà íàïå÷àòàåò:10abcÄëÿ âûïîëíåíèÿ àðèôìåòè÷åñêèõ äåéñòâèé èñïîëüçóåòñÿ çíàê $(( )).
Íàïðèìåð, êîìàíäà$ I=$(( $I + 7 ))óâåëè÷èò çíà÷åíèå ïåðåìåííîé I íà ñåìü.Ñ ïîìîùüþ âñòðîåííîé â èíòåðïðåòàòîð êîìàíäû test ìîæíî îñóùåñòâëÿòü ïðîâåðêó âûïîëíåíèÿ ðàçëè÷íûõ óñëîâèé. Åñëè çàäàííîå óñëîâèå âûïîëíåíî, êîìàíäà çàâåðøèòñÿ ñ íóëåâûì (óñïåøíûì) êîäîì âîçâðàòà, â ïðîòèâíîì ñëó÷àå − ñ åäèíè÷íûì (íåóñïåøíûì). Ñèíîíèìîì êîìàíäû test ÿâëÿåòñÿ ñèìâîë îòêðûâàþùåé êâàäðàòíîé ñêîáêè.
Ïðèâåäåì íåñêîëüêî ïðèìåðîâ.[ -f "file.txt" ]# ñóùåñòâóåò ëè ôàéë ñ èìåíåì file.txt[ "$I" -lt 25 ]# çíà÷åíèå ïåðåìåííîé I ìåíüøå 25[ "$A" = "abc" ]# çíà÷åíèå ïåðåìåííîé A ÿâëÿåòñÿ ñòðîêîé abc[ "$A" != "abc" ]# çíà÷åíèå ïåðåìåííîé A íå ÿâëÿåòñÿ ñòðîêîé abcÝòî ìîæíî, íàïðèìåð, èñïîëüçîâàòü â óñëîâíîì îïåðàòîðå:if [ -f "file.txt" ]; thencat "file.txt"elseecho "Ôàéë file.txt íå íàéäåí"fiÑëåäóåò îòìåòèòü, ÷òî â êà÷åñòâå êîìàíäû, ïðîâåðÿþùåé óñëîâèå, ìîæåòôèãóðèðîâàòü íå òîëüêî test, íî è ëþáàÿ äðóãàÿ êîìàíäà. Íàïðèìåð:53if gcc -Wall -g myprog.c -o myprog; thenecho "Êîìïèëÿöèÿ ïðîøëà óñïåøíî"elseecho "Ïðè êîìïèëÿöèè ïðîèçîøëà îøèáêà"fißçûê ïîääåðæèâàåò è áîëåå ñëîæíûå êîíñòðóêöèè, â òîì ÷èñëå öèêëû. Íàïðèìåð, ñëåäóþùèé ôðàãìåíò íàïå÷àòàåò âñå ÷èñëà îò 1 äî 100:I=0while [ $I -le 101 ]; doecho $II=$(( $I + 1 ))doneÄëÿ áîëåå ïîäðîáíîé èíôîðìàöèè î ïðîãðàììèðîâàíèè íà ÿçûêå BourneShell ñëåäóåò îáðàòèòüñÿ ê ñïåöèàëüíîé ëèòåðàòóðå [1].10.8Ïåðåìåííûå îêðóæåíèÿÎäíèì èç ñâîéñòâ ïðîöåññà â ÎÑ Unix ÿâëÿåòñÿ íàáîð ïåðåìåííûõ îêðóæåíèÿ.
Îêðóæåíèå ôàêòè÷åñêè ïðåäñòàâëÿåò ñîáîé ìíîæåñòâî òåêñòîâûõñòðîê âèäà VAR=VALUE, ãäå VAR − èìÿ ïåðåìåííîé, à VALUE − åå çíà÷åíèå.Ïðîöåññ èìååò âîçìîæíîñòü èçìåíèòü ñâîå îêðóæåíèå: äîáàâèòü íîâûåïåðåìåííûå, óäàëèòü óæå èìåþùèåñÿ èëè èçìåíèòü èõ çíà÷åíèÿ. Äî÷åðíèåïðîöåññû îáû÷íî íàñëåäóþò îêðóæåíèå ïðîöåññà-ðîäèòåëÿ.Îäíîé èç íàèáîëåå âàæíûõ ÿâëÿåòñÿ ïåðåìåííàÿ ñ èìåíåì PATH. Ýòà ïåðåìåííàÿ ñîäåðæèò ñïèñîê êàòàëîãîâ, â êîòîðûõ ñëåäóåò èñêàòü èñïîëíÿåìûéôàéë, åñëè ïîëüçîâàòåëü äàë êîìàíäó, íå óêàçàâ êàòàëîã.
Ñòîèò òàêæå óïîìÿíóòü ïåðåìåííóþ HOME, ñîäåðæàùóþ ïóòü ê äîìàøíåìó êàòàëîãó ïîëüçîâàòåëÿ; ïåðåìåííóþ LANG, ïî êîòîðîé ìíîãîÿçû÷íûå ïðèëîæåíèÿ îïðåäåëÿþò,íà êàêîì ÿçûêå ñëåäóåò âûäàâàòü ñîîáùåíèÿ; ïåðåìåííóþ EDITOR, â êîòîðóþìîæíî çàíåñòè èìÿ ïðåäïî÷èòàåìîãî ðåäàêòîðà òåêñòîâ.
Ðàçóìååòñÿ, ñïèñîêïåðåìåííûõ îêðóæåíèÿ ýòèì íå èñ÷åðïûâàåòñÿ. Âåñü íàáîð èìåþùèõñÿ â âàøåì îêðóæåíèè ïåðåìåííûõ ìîæíî óâèäåòü, äàâ êîìàíäó set áåç ïàðàìåòðîâ.Èíòåðïðåòàòîð êîìàíäíîé ñòðîêè ïðåäîñòàâëÿåò âîçìîæíîñòè ïî óïðàâëåíèþ ïåðåìåííûìè îêðóæåíèÿ. Âî-ïåðâûõ, ïðè ñòàðòå èíòåðïðåòàòîð êîïèðóåò âñå îêðóæåíèå â ñâîè ñîáñòâåííûå ïåðåìåííûå (çàìåòèì, ÷òî âíóòðåííèåïåðåìåííûå èíòåðïðåòàòîðà îðãàíèçîâàíû òàê æå, êàê ïåðåìåííûå îêðóæåíèÿ, à èìåííî − â âèäå íàáîðà ñòðîê âèäà VAR=VALUE), òàê ÷òî ê íèì ìîæíîîáðàòèòüñÿ:54$ echo $PATH/usr/local/bin:/bin:/usr/bin$ echo $HOME/home/stud/s2003324$ echo $LANGru_RU.KOI8-RÊðîìå òîãî, èíòåðïðåòàòîð ïðåäîñòàâëÿåò âîçìîæíîñòü êîïèðîâàòü çíà÷åíèÿïåðåìåííûõ îáðàòíî â îêðóæåíèå ñ ïîìîùüþ êîìàíäû export:$ PATH=$PATH:/sbin:/usr/sbin$ export PATHèëè ïðîñòî$ export PATH=$PATH:/sbin:/usr/sbinÎòìåòèì, ÷òî ñàìè ïî ñåáå ïðèñâàèâàíèÿ âíóòðåííèõ ïåðåìåííûõ, ïîäîáíûåòåì, ÷òî ìû èñïîëüçîâàëè â êîìàíäíûõ ôàéëàõ â ïðåäûäóùåì ïàðàãðàôå, íàîêðóæåíèå íèêàê íå âëèÿþò.Ïåðåìåííóþ ìîæíî óáðàòü èç îêðóæåíèÿ ñ ïîìîùüþ êîìàíä unset èexport:$ unset MYVAR$ export MYVARÌîäèôèêàöèÿ îêðóæåíèÿ âëèÿåò íà âûïîëíåíèå âñåõ êîìàíä, êîòîðûåìû äàåì èíòåðïðåòàòîðó, ïîñêîëüêó çàïóñêàåìûå èíòåðïðåòàòîðîì ïðîöåññûíàñëåäóþò óæå ìîäèôèöèðîâàííûé íàáîð ïåðåìåííûõ îêðóæåíèÿ.Êðîìå òîãî, ïðè íåîáõîäèìîñòè ìîæíî îòäåëüíî âçÿòóþ êîìàíäó çàïóñòèòü ñ ìîäèôèöèðîâàííûì òîëüêî äëÿ íåå îêðóæåíèåì.
Ýòî äåëàåòñÿ ïðèìåðíî òàê:$ VAR=value commandÒàê, â ÎÑ FreeBSD ìîæíî ñìåíèòü èíôîðìàöèþ î ïîëüçîâàòåëå, âêëþ÷àÿèñïîëüçóåìûé êîìàíäíûé èíòåðïðåòàòîð, ñ ïîìîùüþ êîìàíäû chfn, êîòîðàÿïðåäëàãàåò ê ðåäàêòèðîâàíèþ îïðåäåëåííûé òåêñò, èç êîòîðîãî çàòåì èçâëåêàåò íóæíûå çíà÷åíèÿ. Ýòà êîìàíäà ïî óìîë÷àíèþ çàïóñêàåò ðåäàêòîð òåêñòîâ vim, ÷òî íå äëÿ âñåõ ïîëüçîâàòåëåé óäîáíî. Âûéòè èç ïîëîæåíèÿ ìîæíî,íàïðèìåð, òàê:$ EDITOR=joe chfn ýòîì ñëó÷àå áóäåò çàïóùåí ðåäàêòîð joe.55Ëåêöèÿ 51111.1Ââîä-âûâîäÍåîáõîäèìîñòü àáñòðàãèðîâàíèÿÓñòðîéñòâà, ïîäêëþ÷àåìûå ê êîìïüþòåðàì, ìîãóò âûïîëíÿòü ñàìûå ðàçíûå ôóíêöèè, îò äîìàøíåãî áóäèëüíèêà äî óïðàâëåíèÿ êîñìè÷åñêèìè êîðàáëÿìè.
Ñóùåñòâóþò òûñÿ÷è ðàçíîîáðàçíûõ óñòðîéñòâ, ïðè÷åì íåêîòîðûåèç íèõ ìîãóò âûïîëíÿòü ñõîæèå ôóíêöèè, íî ïðè ýòîì òðåáîâàòü ñîâåðøåííî ðàçíûõ äåéñòâèé äëÿ óïðàâëåíèÿ. Ïðåêðàñíûì ïðèìåðîì ýòîãî ñëóæàòæåñòêèé äèñê è ash-áðåëîê: îáà èñïîëüçóþòñÿ äëÿ äîëãîâðåìåííîãî õðàíåíèÿ ôàéëîâ, ïðè÷åì ÷èòàòåëü íàâåðíÿêà çíàåò èç ñîáñòâåííîãî îïûòà, ÷òîðàáîòà ñ äèñêîì è ñ ash-áðåëêîì ñ òî÷êè çðåíèÿ ïîëüçîâàòåëüñêîãî èíòåðôåéñà ïðàêòè÷åñêè íå ðàçëè÷àþòñÿ (è òî, è äðóãîå óñòðîéñòâî ïðåäñòàâëÿåòñÿ àáñòðàêòíûì õðàíèëèùåì ôàéëîâ). Ìåæäó òåì, ïî ñâîåìó âíóòðåííåìóñòðîåíèþ ýòè óñòðîéñòâà íå èìåþò ìåæäó ñîáîé íè÷åãî îáùåãî.Ïîääåðæêà êàæäîãî êîíêðåòíîãî óñòðîéñòâà − çàäà÷à äîñòàòî÷íî ñëîæíàÿ, îñîáåííî åñëè ó÷åñòü âñå ìíîãîîáðàçèå óñòðîéñòâ; çàìåòèì, ÷òî äàëåêîíå âñåãäà íà ìîìåíò ðàçðàáîòêè ïðîãðàììû èçâåñòíî, ñ êàêèìè óñòðîéñòâàìèåé ïðèäåòñÿ ðàáîòàòü ó ïîëüçîâàòåëåé, ïðè÷åì íåêîòîðûå èç ýòèõ óñòðîéñòâìîãóò åùå è íå ñóùåñòâîâàòü â ïðèðîäå, íî áóäóò èçîáðåòåíû ðàíüøå, ÷åìïðîãðàììà âûéäåò èç óïîòðåáëåíèÿ.