Theory
Server પર રસ્તો શોધવો
તમે campus ના server પર log in કરો છો અને તમારી home directory, એટલે કે /home/riya માં આવીને ઊભા રહો છો. હવે શું? તમારે જાણવું પડે કે તમે ક્યાં છો, અહીં શું પડ્યું છે એ જોવું પડે, બીજે ક્યાંક જવું પડે, અને તમારા કામ માટે folders બનાવવાં પડે. Commands નું આ પહેલું જૂથ બરાબર એ જ કરે છે.
ફરવા માટેના આ commands તમે સૌથી વધુ વાર ટાઇપ કરશો, અને ટેવ પડ્યા પછી તો દિવસમાં સેંકડો વાર. એ નાના અને ઝડપી છે. આ પાઠ આખા કુટુંબનો પરિચય આપે છે અને એમને ખરેખરી session માં સાથે કામ કરતાં દેખાડે છે.
At a glance
| Command | એ શું કરે છે |
|---|---|
| pwd | Print working directory: તમે અત્યારે ક્યાં છો એ દેખાડે છે |
| ls | અત્યારની directory માં શું છે એની યાદી આપે છે (ls -l વિગતવાર, ls -a છુપી files પણ દેખાડે) |
| cd dir | dir માં જવું; એકલો cd ઘરે લઈ જાય છે, cd .. એક પગથિયું ઉપર લઈ જાય છે |
| mkdir dir | નવી directory બનાવે છે (mkdir -p ઉપરની directories પણ બનાવે છે) |
| rmdir dir | Directory કાઢે છે, પણ ખાલી હોય તો જ |
| tree | Directory અને એની અંદરનું બધું વૃક્ષ તરીકે દોરે છે |
Practical
ફરવાની એક session
$ pwd
/home/riya
$ mkdir -p project/src # make project and project/src in one go
$ cd project
$ pwd
/home/riya/project
$ ls
src
$ cd .. # go back up to /home/riya
$ pwd
/home/riyaFormula
બે ટૂંકા રસ્તા જે તમે સતત વાપરશો
`.` એટલે અહીં (અત્યારની directory) અને `..` એટલે ઉપરની directory (એક પગથિયું ઉપર). એટલે cd .. એક directory ઉપર લઈ જાય છે, અને ./script.sh નો અર્થ થાય છે 'બરાબર અહીં જ પડેલો script'.
વધુમાં: કોઈ argument વગરનો `cd` તમને ગમે ત્યાંથી સીધા /home/riya એટલે ઘરે લઈ જાય છે, અને / થી શરૂ થતો રસ્તો absolute કહેવાય (મૂળથી ગણાય) જ્યારે એના વગરનો રસ્તો relative કહેવાય (તમે અત્યારે જ્યાં છો ત્યાંથી ગણાય). આ થોડાક વિચારો, એટલે કે . અને .. તથા ઘર અને absolute સામે relative, એ જ ફરવાનું આખું વ્યાકરણ છે.
Quiz
તમે /home/riya/project/src માં છો અને cd .. ચલાવો છો (એક પગથિયું ઉપર). હવે તમે ક્યાં છો?
- /home/riya, એટલે સીધા ઘરે પહોંચી ગયા
- /home/riya/project, એટલે src થી એક પગથિયું ઉપર
- /home/riya/project/src, એટલે કશો ફેર પડ્યો નથી
- / , એટલે મૂળ directory
Show the answer
/home/riya/project, એટલે src થી એક પગથિયું ઉપર
'..' એટલે ઉપરની directory, એટલે cd .. તમને બરાબર એક પગથિયું ઉપર લઈ જાય છે: /home/riya/project/src માંથી /home/riya/project માં. વિકલ્પ A એ argument વગરના cd નું (કે cd ~ નું) વર્ણન છે, અહીંથી ચલાવેલા cd .. નું નહીં; એક પગથિયું ઉપર જવાથી project માં પહોંચાય છે, છેક ઘર સુધી નહીં. વિકલ્પ C ખોટો છે: cd .. તમારી જગ્યા બદલે જ છે. વિકલ્પ D ખોટો છે: cd .. ફક્ત એક જ પગથિયું ઉપર જાય છે, છેક મૂળ સુધી નહીં. યાદ રાખો: .. એટલે એક પગથિયું ઉપર; અનેક પગથિયાં ઉપર જવું હોય તો એને દોહરાવો (cd ../..) અથવા absolute રસ્તો વાપરો.
Think first
અંદર files હોય એવી directory કાઢવાની rmdir કેમ ના પાડે છે?
Files ધરાવતા folder પર તમે rmdir અજમાવો છો અને એ 'Directory not empty' કહીને નિષ્ફળ જાય છે. rmdir આટલી સાવધ કેમ છે? વિચારીને પછી tap કરો.
Show the answer
કારણ કે rmdir જાણીજોઈને સલામત રાખવામાં આવ્યો છે: એ ફક્ત ખાલી directories જ કાઢે છે, જેથી તમારા કામથી ભરેલું folder ભૂલથી નાશ ન પામે. હજી files કે અંદરની directories ધરાવતી directory પર તમે rmdir ચલાવો, તો એ ના પાડે છે અને 'Directory not empty' છાપે છે, જે ખરેખર મદદરૂપ ચોકી છે, કારણ કે એ તમને કહે છે કે 'અહીં હજી સામાન પડ્યો છે; ખાતરી છે?'. Directory ને અને એની અંદરના બધાને કાઢવા હોય તો તમારે જુદો અને વધુ શક્તિશાળી command જોઈએ, એટલે કે rm -r (recursive), જે તમને પછીના પાઠમાં મળશે. એ command ખરેખર જોખમી છે કારણ કે એ આખી ડાળ કાઢી નાખે છે અને કોઈ કચરાપેટી હોતી નથી, એટલે Linux રોજિંદા rmdir ને નિર્દોષ રાખે છે અને જ્યારે તમે ખરેખર ભરેલી directory ભૂંસવા માંગતા હો ત્યારે જ સભાનપણે rm -r તરફ હાથ લંબાવવાનું રાખે છે. રચનાની પાછળનું તત્ત્વ એ છે કે સહેલો અને રોજિંદો command સલામત હોવો જોઈએ, અને નાશ કરનારો command તમારી પાસે સ્પષ્ટ માગણી કરાવે એવો હોવો જોઈએ. rmdir ની આ ચીકાશ તમારું જ રક્ષણ કરે છે; ચેતવણીને માન આપો અને rm -r સુધી જતાં પહેલાં તપાસી લો.
Summary
Key takeaways
- pwd તમારી અત્યારની directory દેખાડે છે; ls એની અંદરનું બતાવે છે (ls -l વિગતવાર, ls -a છુપી files સહિત).
- cd તમને ખસેડે છે: cd dir એ directory માં લઈ જાય, cd .. એક પગથિયું ઉપર લઈ જાય, એકલો cd ઘરે લઈ જાય.
- mkdir directory બનાવે છે (mkdir -p ખૂટતી ઉપરની directories પણ બનાવે છે); tree ડાળ દોરી આપે છે.
- '.' એટલે અત્યારની directory અને '..' એટલે એની ઉપરની; relative રીતે ફરવાનું આ બે પર જ ચાલે છે.
- / થી શરૂ થતો રસ્તો absolute છે (મૂળથી); બાકીનો રસ્તો તમે જ્યાં છો ત્યાંથી ગણાતો relative છે.
- rmdir ફક્ત ખાલી directories કાઢે છે; ભરેલી હોય તો 'Directory not empty' કહીને નિષ્ફળ જાય છે (ભરેલી માટે સાવધાનીથી rm -r વાપરો).
- યાદ રાખવાની કડી: pwd એટલે ક્યાં, ls એટલે શું, cd એટલે ખસવું, mkdir એટલે બનાવવું, rmdir એટલે ખાલી હોય તો કાઢવું.