Theory
બધું જ file છે
Linux એક આશ્ચર્યજનક રીતે સાદા વિચાર પર બંધાયેલું છે: લગભગ બધું જ file છે. તમારા લખાણના દસ્તાવેજો તો દેખીતી રીતે files છે જ. પણ તમારા compile થયેલા programs, તમારી directories, અને તમારાં hardware નાં સાધનો પણ files છે, એટલે કે keyboard, disk, terminal, એ બધાં એવી files તરીકે દેખાય છે જેમાંથી તમે વાંચી શકો અને જેમાં લખી શકો.
'બધું જ file છે' ની આ ફિલસૂફીનો અર્થ એ કે ઓજારો અને વિચારોનો એક જ સુસંગત સમૂહ આખી પદ્ધતિમાં કામ કરે છે. આ પાઠ Linux માં કયા પ્રકારની files હોય છે એનો પરિચય આપે છે, અને એમને એક નજરે કઈ રીતે ઓળખવી એ દેખાડે છે, જેના પર તમે સતત આધાર રાખશો.
Theory
Files ના મુખ્ય પ્રકાર
Linux ની files થોડાક પ્રકારમાં વહેંચાય છે:
Regular files સામાન્ય data સાચવે છે. એ વળી બે ભાગમાં વહેંચાય છે, એટલે કે text files (માણસ વાંચી શકે એવી: scripts, configuration, નોંધો) અને binary files (યંત્ર માટેનો data: compile થયેલા programs, છબીઓ).
Directories પોતે પણ file નો એક પ્રકાર છે, એટલે કે એવી file જેની અંદરનું લખાણ બીજી files ની યાદી હોય છે. Folders એકબીજામાં એ રીતે જ ગોઠવાય છે.
Special files એવી વસ્તુઓ દર્શાવે છે જે સાદો data નથી. એમાં સૌથી અગત્યની છે device files: તમારું hardware અહીં દેખાય છે (દાખલા તરીકે disk કે terminal), એટલે દસ્તાવેજો પર ચાલતી એ જ વાંચવા તથા લખવાની ક્રિયાઓ સાધનો પર પણ ચાલે છે. બીજી special files માં symbolic links (બીજી files તરફ ચીંધતી નિશાનીઓ), named pipes અને sockets આવે છે.
Formula
ls -l નો પહેલો અક્ષર જ પ્રકાર છે
તમે ls -l ચલાવો ત્યારે દરેક લીટી -rwxr-xr-x જેવા અક્ષરોના ટુકડાથી શરૂ થાય છે. એ સાવ પહેલો અક્ષર જ તમને file નો પ્રકાર કહી દે છે:
- એટલે regular file, d એટલે directory, l એટલે symbolic link, c એટલે character device, b એટલે block device, p એટલે named pipe, s એટલે socket.
એટલે નામ વાંચો એ પહેલાં જ, પહેલા અક્ષર પરની એક નજર તમને કહી દે છે કે તમે કઈ જાતની વસ્તુ જોઈ રહ્યા છો. આ ટેવ વહેલી પાડવા જેવી છે.
Practical
ls -l માંથી file નો પ્રકાર વાંચવો
$ ls -l /etc/hostname /bin /dev/null
-rw-r--r-- 1 root root 13 ... /etc/hostname # - regular (text) file
lrwxrwxrwx 1 root root 7 ... /bin -> usr/bin # l symbolic link
crw-rw-rw- 1 root root ... /dev/null # c character device
# First character: -=regular d=directory l=link c=char device b=blockQuiz
ls -l ની યાદીમાં એક લીટી 'd' અક્ષરથી શરૂ થાય છે. એ કયા પ્રકારની file છે?
- Device file, કારણ કે 'd' એટલે device
- Directory, કારણ કે આગળનો 'd' એ directory દર્શાવે છે
- સામાન્ય data ની file
- Symbolic link
Show the answer
Directory, કારણ કે આગળનો 'd' એ directory દર્શાવે છે
ls -l ની યાદીમાં આગળ આવતો 'd' એ directory દર્શાવે છે, એટલે કે એવી file જેની અંદરનું લખાણ બીજી files ની યાદી હોય છે. વિકલ્પ A સ્વાભાવિક લાગતી જાળ છે: 'd' નો અર્થ device નથી; device files ને 'c' (character device) કે 'b' (block device) દર્શાવે છે. વિકલ્પ C ખોટો છે કારણ કે regular file ને આગળ '-' દર્શાવે છે, 'd' નહીં. વિકલ્પ D ખોટો છે કારણ કે symbolic link ને આગળ 'l' દર્શાવે છે. સામાન્ય પહેલા અક્ષરો ગોખી લો: '-' એટલે regular, 'd' એટલે directory, 'l' એટલે link, અને 'c' તથા 'b' એટલે devices. તમે શેની સાથે કામ કરી રહ્યા છો એ જાણવાની સૌથી ઝડપી રીત એ એક જ અક્ષર છે.
Think first
સાધનોને મુદ્દલ files તરીકે કેમ ગણવાં?
Hard disk કંઈ દસ્તાવેજ નથી. તો Linux તમારા keyboard, disk અને terminal ને files તરીકે કેમ દેખાડે છે? વિચારીને પછી tap કરો.
Show the answer
કારણ કે એથી ઓજારોનો એક જ સાદો અને સુસંગત સમૂહ દરેક વસ્તુ પર કામ કરી શકે છે, જે અપાર શક્તિશાળી છે. જો સાધન file ની જેમ વર્તે, તો તમે પહેલેથી જાણો છો એ જ ક્રિયાઓ, એટલે કે વાંચવું અને લખવું, અને એ જ commands, એટલે કે cat, cp અને redirection, hardware પર પણ ચાલે છે, અને એના માટે કોઈ નવું ખાસ દ્વાર શીખવું પડતું નથી. Terminal પર લખાણ મોકલવું છે? એની file માં લખો. Disk માંથી કોરો data વાંચવો છે કે પરિણામ ફેંકી દેવું છે? યોગ્ય device file માંથી વાંચો કે એમાં લખો (જેમ કે /dev/null, એટલે 'ફેંકી દો' વાળી file). Programs ને 'આ file છે કે device?' એવા ખાસ કિસ્સા સંભાળવા પડતા નથી; એ ફક્ત વાંચે અને લખે છે, અને kernel એને યોગ્ય જગ્યાએ પહોંચાડે છે. આ એકરૂપતાને લીધે જ Linux ના commands આટલી સુંદર રીતે એકબીજા સાથે જોડાય છે: directories, દસ્તાવેજો અને સાધનો બધાં એક જ 'file' ની ભાષા બોલતાં હોવાથી, એક માટે બનેલાં ઓજારો બીજા પર પણ ચાલે છે. આ એક જ સુઘડ અમૂર્તતા પ્રચંડ જટિલતા દૂર કરી નાખે છે, અને એટલા માટે જ 'બધું જ file છે' એ Unix તથા Linux ની મહાન રચનાત્મક સૂઝમાંની એક ગણાય છે. બધાં પર રાજ કરતું એક જ દ્વાર.
Summary
Key takeaways
- Linux 'બધું જ file છે' ની ફિલસૂફી પાળે છે: data, directories અને સાધનો સુધ્ધાં files તરીકે વપરાય છે.
- Regular files data સાચવે છે: text files (માણસ વાંચી શકે એવી) અને binary files (programs જેવો યંત્ર માટેનો data).
- Directories એવી files છે જેની અંદરનું લખાણ બીજી files ની યાદી હોય છે; folders એ રીતે જ એકબીજામાં ગોઠવાય છે.
- Special files માં device files (files તરીકે દેખાતું hardware), symbolic links, named pipes અને sockets આવે છે.
- ls -l ની લીટીનો પહેલો અક્ષર પ્રકાર આપે છે: '-' એટલે regular, 'd' એટલે directory, 'l' એટલે link, 'c' એટલે char device, 'b' એટલે block device.
- સાધનોને files તરીકે ગણવાથી એ જ commands અને વાંચવા તથા લખવાની ક્રિયાઓ આખી પદ્ધતિમાં ચાલે છે.
- યાદ રાખવાની કડી: ls -l ના પહેલા અક્ષર પરની એક નજર જ file નો પ્રકાર કહી દે છે.