File

From EIK wiki


Autor

Jürgen Lätte

Rühm: AK21

05.01.16

Sissejuhatus

"File" käsk on Linuxi terminalis väga laialdaselt kasutatav. Seda seetõttu, et UNIX süsteemides on kõiki asju kirjeldatud failidena. Ei tehta vahet sellel, kas on fail või kataloog. Kataloog on lihtsalt üks fail, mis sisaldab endas nimekirjade teiste failide kohta. Süsteem peab failideks programme, teenuseid, tekste, pilte. Samuti loetakse failiks kõiki seadmeid, sealhulgas ka sisend ja väljundseadmeid. "File" käsuga määratakse ära, millise failitüübiga tegu on. Selles artiklis on lühiülevaade file kasutusvõimalustest ja nippidest. Juurde on lisatud ka täpsemad seletused ja näited.

Kasutamine

Failisüsteemide[1] testid põhinevad põhinevad stat süsteemi kutsungil. Programm kontrollib, kas tegu on erilise failiga või mitte. Igale tuntud failitüübile vastab kindel süsteemi päise fail.

Magic teste kasutatakse, et välja uurida, kas failil on ühes kindlas formaadis olevaid andmeid. Nendel failidel on niinimetatud magic number salvestatud konkreetsesse kohta faili alguse lähedale. See fail ütleb UNIX operatsioonisüsteemile, milline fail on binaaris käivitatav ja millised on muud failid. Magic´u kontseptsioon on levinud ka faililaienditele.

Lisaks, kui $ HOME / .magic.mgc või $ HOME / .magic olemas, siis tuleb eelistada süsteemi magic faile. Kui / etc / magic olemas, seda kasutatakse koos teiste magic faile.

Magic[2] faili kirjed on kokku kogutud erinevtest allikatest ja korrastatud.

Magic failis olevate kirjete järjekord on oluline. Sõltuvalt kasutatavast süsteemist võib kokku panemise järjekord olla vale. Võimalusel tasuks hoida vana magic fail alles võrdluse eesmärgil. Sel juhul tasuks ümber nimetada vana fail /usr/local/share/misc/magic.orig


 /usr/local/share/misc/magic.mgc      Vaikimisi koostatud magic nimekiri.
 /usr/share/file/magic                Kataloog, mis sisaldab vaikimisi magic faile.


Ülevaade käskudest

Süntaks [2]


 file [-bcdEhiklLNnprsvzZ0] [--apple] [--extension] [--mime-encoding]
          [--mime-type] [-F separator] [-f namefile]
          [-m magicfiles] [-P name=value] file ...
 file -C [-m magicfiles]
 file [--help]

Võimalused [3]

  • b, --brief Näitab failinimesid lühidalt (brief mode).
  • -C, --compile Väljundiks koostatakse magic.mgc fail, mis sisaldab eelnevalt liigendatud magic faili või kataloogi.
  • -c, --checking-printout Teeb liigendatud magic failist väljatrüki. Seda tavaliselt kasutatakse koos-m tähisega, et vähendada vigade arvu uues magic failis ennem paigaldamist.
  • cdf Prindib ühendatud dokumendifailide detailid
  • compress Otsib kokku pakitud faile ja vaatab nendesse sisse.
  • elf Prindib ELF faili detailid.
  • soft küsib informatsiooni magic failidest.
  • tar Uurib tar faile.
  • -F, --separator separator Saab kasutada spetsiaalset sõne eraldajana failinime ja tagastatud faili vahel. Vaikeseades ‘:’.
  • -f, --files-from namefile Loeb failide nimed nimefailist (rida rea haaval) ennem argumendi nimekirja. Selleks, et testida standard sisendit peab olema nimefail või vähemalt failinime argument olemas ning selleks tuleb kasutada ‘-’failinime argumendina. Tuleb olla tähelepanelik, kuna nimefail on pakkimata ja kaasa tulevad failinimed töödeldakse sel juhul, kui selline võimalus avaneb ennem teisi protsesse. See lubab mitmetel failinimekirjadel erinevate käsureaargumentidena pöörduda sama faili poole. Seega, kui on soov määrata eraldaja, siis tuleks see määrata ennem failide nimekirja. Nagu näiteks: "-F @ -f namefile", ja mitte : "-f namefile -F @".
  • -h, --no-dereference katkestab nimeviitade (symlinks) järgimise (süsteemides, mis toetavad viitamist). See on vaikimisi, juhul kui keskkonnamuutuja POSIXLY_CORRECT ei ole määratletud.
  • -i, --mime Sunnib väljastama mime tüüpi sõnesid, selle asemel, et need oleksid traditsiooniliselt inimese moodi loetav. Seega see võib öelda ‘text/plain; charset=us-ascii’ ja mitte "ASCII text".
  • --mime-type, --mime-encoding Kasutatakse nagu -i, aga väljastab ainult määratletud elemendid.
  • -k, --keep-going Ei peatu esimese sobivuse juures ja jätkab otsimist. Järgnevatel sobivustel on ees sõne ‘\012- ’ (Kui tahta alustada uuelt realt tuleb vaadata -r option)
  • -l, --list Prindib informatsiooni iga magic mustri tugevuse kohta.
  • -L, --dereference Valik sunnib jälgima nimeviitu(symlink) nagu sarnase nimega võimalus ls (süsteemides, kus viitamine on lubatud). See on sätestatud vaikimisi, kui keskkonnamuutuja POSIXLY_CORRECT on määratletud.
  • -l Näitab sorteeritud mustreid selles järjekorras, mida sobitamiseks kasutatakse.
  • -m, --magic-file magicfiles Määrab ära alternatiivse failinimekirja ja kataloogid, mis sisaldavad magic komponenti. See saab olla üksik objekt või kooloniga eraldatud nimekiri. Kui tavalise faili või kataloogi kõrvalt leitakse magic fail, siis kasutatakse seda.
  • -N, --no-pad Ei täida failinimesid ebaolulisega, et nad väljundis joonduksid.
  • -n, --no-buffer Sunnib stdout eemale peale igat faili kontrolli. See on ainult kasulik juhul, kui on vaja kontrollida suuremat failide nimekirja. See on mõeldud programmide jaoks, mis vajavad failitüüpi väljundit.
  • -p, --preserve-date Süsteemides, mis toetavad utime või utimes´i, üritatakse säilitada failide analüüsi ajaks ligipääs, et teeselda nagu ei oleks fail neid kunagi lugenud.
  • -r, --raw Ei prindi tähti \ooo-ks. Tavaliselt tõlgib faili loetamatud tähed vastavasse kaheksandik bitt vormi.
  • -s, --special-files Tavaliselt file üritab määrata, mis tüüpi failiga tegu on. Normaalses olukorras on tegemist tavaliste failidega. See on probleemide ennetamiseks. Nimelt võib erifailide lugemine kummalisi tagajärgi. Valiku -s tähendab, et fail loeb ka faile, mis on plokkkirjas või eritähtedega spetsiaalsed failid. See on kasulik selleks, et ära määratleda partitisioonides oleva failisüsteemi andme tüübid, mida kirjeldatakse plokkkirjas spetsiaalsete failidena. See valik lubab kõrvale jätta ka faili suuruse, sest mõningate partitsioonide jaotused võidakse lugeda võrdseks nulliga.
  • -v, --version Väljastab programmi versiooni ja väljub.
  • -z, --uncompress Proovib vaadata kokku pressitud failide sisse.
  • -0, --print0 Lisab tühja parameetri ‘\0’ failinime lõppu. See on kasulik näiteks siis, kui on vaja väljundit lühendada. See ei mõjuta eraldajat, mis siiski prinditakse.
  • --help Prindib help teate ja väljub.

Näited

Kui kasutada file käsku koos tärniga, siis saame järgneva väljundi

file *

Väljundiks on näidisfailid[2]

shutdown.htm: HTML document text
si.htm: HTML document text
side0.gif: GIF image data, version 89a, 107 x 18
robots.txt: ASCII text, with CRLF line terminators
routehlp.htm: HTML document text
rss: setgid directory


Teisel juhul, kui kasutadafile *.txt lõpuga lausendit, siis on näiteks väljundina[2]:

orm.txt: news or mail text
friend.txt: news or mail text
ihave.txt: news or mail text
index.txt: ASCII Java program text, with 
very long lines, with CRLF line terminators
jargon.txt: news or mail text
news.txt: Non-ISO extended-ASCII C program text, with very long lines, 
with CRLF line terminators
newsdata.txt: Non-ISO extended-ASCII English text, with very long lines, with CRLF line terminators
qad.txt: news or mail text
refrence.txt: news or mail text
robots.txt: ASCII text, with CRLF line terminators
stopwords.txt: ASCII English text, with CRLF line terminators
yhelp.txt: news or mail text

TÖÖ FAILIDEGA [4]

  • Faili loomine: touch file
touch kirjutis.txt

Tulemus: kataloogi, kus kasutaja hetkel viibib, luuakse fail kirjutis.txt .

või

touch kataloog1/kirjutis.txt

Tulemus: kodukataloogis olevasse kataloogi kataloog1 loodi fail kirjutis.txt.


  • Faili kustutamine: rm fail
rm kirjutis.txt

Tulemus: kustutatakse fail kirjutis.txt .

NB! Linuxil ei ole tavaliselt undelete käsku, see tähendab, et kustutatud asju ei saa tagasi võtta.

TÖÖ KATALOOGIDEGA [5]

Nagu varasemalt sai mainitud, siis failid ja kataloogid loeb Linux samaks. Seega käsud on suhteliselt sarnased.


cp

cp programm kopeerib faile ja kaustu. Lihtsaimal tasemel on võimalik kopeerida üks kaust

[Linux]$ cp file1 file2


Seda käsklust saab kasutada, et liigutada mitmeid faile teise kausta:

[Linux]]$ cp file1 file2 file3 directory

Näiteid cp käskluse kohta:

Kopeerib file1 sisu file2 sisse. Kui file2 pole veel loodud, siis luuakse see. Juhul, kui file2 on olemas, siis selle sisu kirjutatakse file1 omaga üle.

cp file1 file2

Järgneva käskluse puhul on oluline silmas pidada "-i". Nimelt antud juhul küsitakse kasutajalt üle, juhul kui file2 eksisteerib, siis kas on ikka soov selle sisu file1 omaga üle kirjutada.

cp -i file1 file2

Antud käsklus kopeerib file1 -s oleva sisu kataloogi dir1 (luues selleks faili nimega file1).

cp file1 dir1

Kopeerib kataloog dir1 sisu. Juhul, kui kataloog dir2 ei eksisteeri, siis see luuakse. Muul juhul luuakse kataloog dir2 sisse kataloog dir1.

cp -R dir1 dir2


mv

mv käsklus täidab kahte erinevat käsklust, sõltuvalt sellest, kuidas seda kasutatakse. See, kas liigutab faile teise kataloogi või nimetab faili või kataloogi ümber.


Faili saab antud käskluse ümber nimetada nii:

[Linux]$ mv filename1 filename2


Selleks, et liigutada faile teise kataloogi saame kasutada järgnevat käsklust:

[Linux]$ mv file1 file2 file3 directory

Näiteid mv- st ja tema võimalustest:

Järgnevas näites, kui file2 ei eksisteeri, siis file1 nimetatakse ümber file2-ks. Kui fail2 eksisteerib, siis asendatakse selle sisu file1 sisuga.

mv file1 file2


Nagu ennemgi, siis "-i" antud juhul küsib kasutajalt file2 olemasolu korral, kas tahetakse ikka file2 sisu file1 sisuga üle kirjutada.

mv -i file1 file2


Järgneva käsuga liigutatakse failid file1, file2 ja file3 kataloogi dir1. Kataloog dir1 peab eksisteerima või mv annab veateate.

mv file1 file2 file3 dir1

Kasulikku lugemist

Üldisemat ülevaadet Linux faili süsteemi kohta: http://www.tldp.org/LDP/intro-linux/html/sect_03_01.html

Ülevaade failisüsteemide õigustest: https://en.wikipedia.org/wiki/File_system_permissions#Permissions

Nimekiri file kohta käivast informatsioonist: http://www.linuxguide.it/command_line/linux-manpage/do.php?file=ls

Kokkuvõte

Failide teke, loomine ja ajas muutumine on orgaaniline protsess. Unix süsteem peab failisüsteemi osaks väga paljusid asju. Seda parem on teada erinevate käskude otstarvet, eripärasid ning viise, kuidas süsteemiadministraatori elu lihtsustada.


Kasutatud allikad