Failo aprašas



Failų aprašų iliustracija

Į bylos aprašas yra skaičius, unikaliai identifikuojantis atvirą failą kompiuterio Operacinė sistema . Čia aprašoma duomenų išteklius ir tai, kaip galima prieiti prie šio šaltinio.



Kai programa paprašo atidaryti failą ar kitą duomenų šaltinį, pvz., Tinklo lizdą, - branduolys:

  1. Suteikia prieigą.
  2. Sukuria įrašą visuotinėje failų lentelėje.
  3. Pateikia programinei įrangai to įrašo vietą.

Deskriptorius identifikuojamas pagal unikalų ne neigiamą sveikąjį skaičių, pvz., 0, 12 arba 567. Kiekvienam sistemos atidarytam failui yra bent vienas failo deskriptorius.



Failų aprašai pirmą kartą buvo naudojami „Unix“ ir yra naudojamos šiuolaikinėse operacinėse sistemose, įskaitant „Linux“ , „macOS“ ir BSD . Į „Microsoft Windows“ , failų aprašai yra žinomi kaip failų rankenos.

kaip nuvalyti kompiuterį švariu windows 7

Apžvalga

Kai procesas pateikia sėkmingą užklausą atidaryti failą, branduolys grąžina failo aprašą, nurodantį įrašą branduolio visuotinėje failų lentelėje. Failų lentelės įraše yra tokia informacija kaip failo inodas, baitų poslinkis ir prieigos prie to duomenų srauto apribojimai (tik skaityti, tik rašyti ir kt.).

Failo deskriptoriaus schema

Stdin, stdout ir stderr

„Unix“ tipo operacinėje sistemoje pirmieji trys failų aprašai pagal numatytuosius nustatymus yra STDIN ( standartinė įvestis ), STDOUT (standartinė išvestis) ir STDERR (standartinė klaida).

kaip sukurti katalogą unix
vardas Failo aprašas apibūdinimas Santrumpa
Standartinis įvestis 0 Numatytasis įvesties duomenų srautas, pavyzdžiui, komandiniame vamzdyne. Terminale tai yra numatytoji klaviatūros įvestis iš vartotojo. stdin
Standartinė išvestis 1 Numatytasis išvesties duomenų srautas, pavyzdžiui, kai komanda išspausdina tekstą. Terminale tai pagal numatytuosius nustatymus yra vartotojo ekranas. stdout
Standartinė klaida du Numatytasis išvesties duomenų srautas, susijęs su įvykusia klaida. Terminale tai pagal numatytuosius nustatymus yra vartotojo ekranas. stderr

Nukreipia failų aprašus

Su failų aprašais galima tiesiogiai susipažinti naudojant bash , numatytasis „Linux“, „macOS X“ ir „Windows“ posistemės „Linux“ apvalkalas.

Pvz., Kai naudojate rasti komanda, sėkmingas išvestis eina į stdout (failo aprašas 1), o klaidos pranešimai - į stderr (failo aprašas 2). Abu srautai rodomi kaip terminalo išvestis:

find / -name '*something*'
/usr/share/doc/something /usr/share/doc/something/examples/something_random find: '/run/udisks2': Permission denied find: '/run/wpa_supplicant': Permission denied /usr/share/something /usr/games/something

Gauname klaidų, nes „Find“ bando ieškoti keliuose sistemos kataloguose, kurių neturime leidimas Skaityti. Visos eilutės, kuriose sakoma „Atmesti leidimą“, buvo parašytos stderr, o kitos eilutės - stdout.

Galite paslėpti „stderr“, peradresuodami failo deskriptorių 2 į / dev / null, specialų „Linux“ įrenginį, kuris „niekur nedingsta“:

kaip įklijuoti naudojant klaviatūrą
find / -name '*something*' 2>/dev/null
/usr/share/doc/something /usr/share/doc/something/examples/something_random /usr/share/something /usr/games/something

Klaidos išsiųstos / dev / null ir nerodomos.

Suprasti skirtumą tarp „stdout“ ir „stderr“ yra svarbu, kai norite dirbti su programos išvestimi. Pavyzdžiui, jei bandysite sukibimas komandos komandos išvestis pastebėsite, kad klaidų pranešimai nėra filtruojami, nes tik standartinė išvestis perduodama grep.

find / -name '*something*' | grep 'something'
/usr/share/doc/something /usr/share/doc/something/examples/something_random find: '/run/udisks2': Permission denied find: '/run/wpa_supplicant': Permission denied /usr/share/something /usr/games/something

Tačiau galite nukreipti standartinę klaidą į standartinę išvestį, tada grep apdoros abiejų tekstą:

find / -name '*something*' 2>&1 | grep 'something'
/usr/share/doc/something /usr/share/doc/something/examples/something_random /usr/share/something /usr/games/something

Atkreipkite dėmesį, kad aukščiau esančioje komandoje tikslinio failo aprašas (1) priešais yra pažymėtas ampersandu (& &). Norėdami gauti daugiau informacijos apie duomenų srauto peradresavimą, žr vamzdynai bash kiaute .

Pavyzdžių, kaip sukurti ir naudoti failų aprašus „bash“, žr „exec builtin“ komandų pavyzdžiai .