Ravindra BagaleCourses & study guides English

Linux directories आणि paths: pwd, ls, mkdir, cd, absolute vs relative paths आणि ~

चला, सुरू करूया. मागच्या class मध्ये आपण SSH ने आपल्या EC2 server मध्ये login केलं आणि बघितलं की operating system म्हणजे मुख्यतः files आणि folders. आज आपण server च्या आत खरंच फिरणार. मी कुठे आहे? इथे काय आहे? Folder कसा बनवायचा, त्यात कसं जायचं, बाहेर कसं यायचं, आणि एका ओळीत कुठल्याही folder मध्ये कसं पोचायचं? Class संपेपर्यंत /home/ec2-user/calendar/weeks सारखा path वाचला की तो नक्की कुठे नेतो ते तुम्हाला कळेल. तुमचा server चालू ठेवा आणि प्रत्येक command माझ्यासोबत type करा.

या class मध्ये काय शिकणार

  • SSH ची छोटी उजळणी, आणि हमखास येणारे चार errors
  • Linux users: root आणि ec2-user, आणि login ec2-user म्हणून का
  • Idle SSH session तुटला तर पटकन परत कसं यायचं
  • Linux चं झाड: सगळं / (root) पासून सुरू होतं
  • तुमची home directory, आणि pwd
  • Path वाचणं
  • Files vs folders (directories)
  • mkdir: एक folder किंवा अनेक
  • ls आणि ls -r
  • cd ने folder मध्ये जाणं, आणि prompt काय सांगतो
  • वर जाणं: cd .., cd ../.., cd ../../..
  • नुसतं cd, cd -, आणि बाजूच्या folder मध्ये जाणं
  • mkdir -p: एका ओळीत folder च्या आत folders
  • Absolute paths, relative paths आणि ~
  • उदाहरण 1: calendar (week1 बनवायचे चार मार्ग)
  • उदाहरण 2: one ते five (22 बनवायचे तीन मार्ग)
  • नावात spaces
  • Tab completion, आणि नावं सारखी सुरू होत असतील तर काय करायचं
  • clear आणि history
  • Practice task

1. छोटी उजळणी: SSH ने login

का. प्रत्येक Linux class server मध्ये login करूनच सुरू होतो. SSH fail झालं, तर पुढचं काहीच चालत नाही. सगळ्या fixes सकट पूर्ण step-by-step मागच्या chapter मध्ये आहे: EC2 server च्या आत: EBS, ENI, instance states, SSH ने connect करणं, आणि Linux म्हणजे काय.

काय. Command चे चार भाग:

ssh -i Downloads\firstserver.pem ec2-user@3.3.3.3

  1. ssh: program.
  2. -i: पुढे identity file (तुमची private key) येणार.
  3. Downloads\firstserver.pem: key चा path. Dow type करून Tab, मग fir type करून Tab, म्हणजे typo होत नाही.
  4. ec2-user@3.3.3.3: user name, @, आणि तुमच्या server चा public IPv4. 3.3.3.3 फक्त जागा भरायला आहे; तुमचा स्वतःचा वापरा.

IP Ctrl+V ने किंवा right-click ने paste करा. Windows 10 आणि 11 च्या PowerShell मध्ये आणि Windows Terminal मध्ये दोन्ही चालतात.

हमखास येणारे चार errors:

Error नेहमीचं कारण Fix
Permission denied (publickey) या server साठी चुकीची key, किंवा चुकीचं user name launch ला निवडलेली key वापरा; Amazon Linux वर ec2-user
No such file or directory key च्या path मध्ये typo Tab completion वापरा
परत Permission denied user name चुकीचं: ec2user, किंवा ec2-user@... च्या आत space ते ec2-user आहे, hyphen सकट, आणि spaces शिवाय
Connection timed out stop आणि start नंतर public IP बदलला console मधून नवीन public IP copy करा

तरीही SSH चालत नसेल तर:

  1. ssh -V ने OpenSSH client तपासा. PowerShell ने ssh is not recognized सांगितलं, तर OpenSSH Client optional feature add करा, किंवा Microsoft चं latest PowerShell install करा. मग नवीन window उघडा.
  2. EC2 Instance Connect वापरा: instance select करा → Connect → EC2 Instance Connect → Connect. Browser मध्ये terminal उघडतं.
  3. PuTTY हा जुना third-party tool आहे. आता तो क्वचितच लागतो, कारण Windows मध्ये ssh आधीच आहे.

Classroom line

Miss one sentence and you won't follow the next.

Correction

Class मध्ये लाल error text "जुन्या PowerShell" वर ढकलला, आणि Ctrl+V ने paste होत नाही असं ऐकलं. लाल text चा अर्थ फक्त command fail झाला. एक नेहमीचं कारण म्हणजे OpenSSH client नसणं; ssh -V ने तपासा. आणि सध्याच्या PowerShell आणि Windows Terminal मध्ये Ctrl+V ने paste होतं; right-click पण चालतं.

2. Linux users: root आणि ec2-user

का. Prompt मध्ये ec2-user दिसतं. हा कोण, आणि administrator म्हणून login का नाही करायचं?

काय.

  1. root हा Linux system चा administrator. तो काहीही करू शकतो, पूर्ण system delete सुद्धा.
  2. ec2-user हा Amazon Linux वरचा नेहमीचा default login user. Ubuntu वर default user ubuntu असतो.
  3. Linux मध्ये system programs साठी अजून बरेच accounts असतात, पण login साठी हे दोनच महत्त्वाचे.
  4. आपण ec2-user म्हणून login करतो. एखाद्या कामाला admin rights लागले, तर फक्त त्या command च्या आधी sudo लावतो, उदा. sudo yum install tree -y.

AWS हे कसं set up करतं.

  1. Launch ला तुम्ही key pair निवडता. Key pair कुठल्याही user ला बांधलेला नसतो.
  2. पहिल्या boot ला AWS त्या key चा public भाग default user च्या ~/.ssh/authorized_keys file मध्ये टाकतं: Amazon Linux वर ec2-user, Ubuntu वर ubuntu.
  3. म्हणूनच तुमची key ec2-user साठी चालते.
  4. root म्हणून थेट SSH login सुरक्षेसाठी बंद असतो. त्याऐवजी sudo वापरा.

Correction

Class मध्ये सांगितलं की AWS root साठी key देत नाही कारण key ec2-user ची असते, आणि Linux मध्ये default दोन users असतात. Key pair कुठल्याही user ला बांधलेला नसतो; AWS पहिल्या boot ला तो default user साठी install करतं, आणि root SSH login मुद्दाम बंद असतो. Linux मध्ये बरेच system accounts असतात; login साठी root आणि ec2-user हे दोनच महत्त्वाचे.

3. Idle SSH session तुटला तर

का. Terminal थोडा वेळ सोडून परत आलात, आणि अचानक तुम्ही तुमच्या Windows prompt वर (PS C:\Users\ravi>) आहात. Server ठीक आहे. फक्त connection तुटलं.

काय. AWS default ने idle SSH sessions बंद करत नाही. बहुतेक वेळा तुमचा घरचा router किंवा Wi-Fi काही idle minutes नंतर शांत connections विसरतो, किंवा laptop sleep मध्ये जातो, म्हणून connection तुटतं.

पटकन परत कसं यायचं.

  1. PowerShell मध्ये Up Arrow दाबा. तुमचा शेवटचा command, ssh -i ... ची ओळ, परत येते.
  2. Enter दाबा. तुम्ही परत login झालात.
  3. Connection तुटूच नये म्हणून keep-alive लावा: ssh -o ServerAliveInterval=60 -i Downloads\firstserver.pem ec2-user@3.3.3.3. मग SSH दर 60 seconds ला छोटा message पाठवतं, म्हणजे router connection लक्षात ठेवतो.

Correction

Class मध्ये connection "10 ते 15 minutes नंतर" तुटतं असं सांगितलं, जणू तो ठरलेला नियम आहे. असा कुठलाही AWS नियम नाही. किती वेळ लागतो ते तुमच्या router, Wi-Fi किंवा laptop च्या sleep settings वर अवलंबून असतं.

4. Linux चं झाड: सगळं / पासून सुरू होतं

का. Windows वर तुम्ही drives मध्ये विचार करता: C:\, D:\. Linux मध्ये drive letters नसतात. सगळं एकाच वरच्या टोकापासून लटकतं.

काय.

  1. सगळ्याच्या वर / असतो, त्याला root (root directory) म्हणतात.
  2. / खाली system directories असतात: bin, sbin, etc, home, root, dev, opt, usr, var आणि बाकी.
  3. /home मध्ये प्रत्येक user चा एक folder: /home/ec2-user, /home/ubuntu, /home/ravi.
  4. तुमचं स्वतःचं काम तुमच्या home folder मध्ये, /home/ec2-user मध्ये.
  5. "root" शब्दाबाबत सावध. / म्हणजे root directory. /root (slash नंतर नाव) म्हणजे root user चा home folder. या दोन वेगळ्या जागा आहेत.
Linux एकाच वरच्या directory पासून सुरू होतं: / (root) / bin sbin etc home root dev opt usr var ec2-user ubuntu ravi तुमचे folders आणि files इथे /home/ec2-user = user ec2-user चं home/root = root user चं home,/ आणि /root एक नाहीत/etc = settings, /var = logs आणि data/bin, /usr = programs, /dev = devices Windows च्या C:\ सारखं (सोपं करून सांगितलं): system वरचं सगळं / खालीच कुठेतरी असतं.

Figure 1. Linux चं झाड / (root) पासून सुरू होतं. त्याखाली bin, sbin, etc, home, root, dev, opt, usr आणि var. /home मध्ये प्रत्येक user चा folder; तुमच्या files /home/ec2-user खाली.

मुख्य directories मध्ये काय असतं (आत्ता फक्त नावं ओळखा):

Directory काय असतं
/bin, /usr/bin ls आणि mkdir सारखे commands
/sbin system admin commands
/etc settings (configuration files)
/home प्रत्येक user चा home folder
/root root user चा home
/var logs आणि बदलणारा data, उदा. /var/log
/dev devices, जसे disks
/opt तुम्ही install केलेलं extra software

Correction

Class च्या board वर / ला "Windows च्या C:\ सारखं" म्हटलं. सुरुवातीला ते चित्र ठीक आहे, पण / हा बाकीच्यांसारखा folder नाही: तो पूर्ण झाडाचं एकमेव वरचं टोक आहे, आणि बाकीच्या disks सुद्धा त्याच्याखालीच कुठेतरी दिसतात.

5. तुमची home directory, आणि pwd

का. "मी कुठे आहे?" हा दरवेळचा पहिला प्रश्न. काहीही बनवायच्या किंवा delete करायच्या आधी तुम्ही कुठे उभे आहात ते माहित पाहिजे.

काय. pwd म्हणजे print working directory. तुम्ही आत्ता ज्या directory मध्ये आहात तिचा पूर्ण path तो print करतो.

कसं.

  1. Login करा.
  2. pwd type करून Enter दाबा.
  3. /home/ec2-user दिसतं.
  4. Login नंतर तुम्ही नेहमी तुमच्या home directory मध्येच पोचता.

6. Path वाचणं

का. "इथे जा" हे Linux path ने सांगतं. एक path एकदा सावकाश वाचला, की बाकी सगळे वाचता येतात.

काय. /home/ec2-user/ravi/one घ्या:

  1. पहिला / म्हणजे root, वरचं टोक.
  2. बाकीचा प्रत्येक / फक्त नावं वेगळी करतो. त्याला "आत जा" असं वाचा.
  3. म्हणजे: root पासून सुरू → home मध्ये → ec2-user मध्ये → ravi मध्ये → one मध्ये.
Path वाचणं: /home/ec2-user/ravi/one / home / ec2-user / ravi / one पहिला / = root, वरचं टोक बाकीचा प्रत्येक / फक्त नावं वेगळी करतो: आत जा असा वाचा: root पासून सुरू → home मध्ये → ec2-user मध्ये → ravi मध्ये → one मध्ये.इथे root खाली चार directories: home, ec2-user, ravi आणि one. pwd असाच path print करतो.

Figure 2. /home/ec2-user/ravi/one हा path: पहिला / म्हणजे root; बाकीचा प्रत्येक / नावं वेगळी करतो. Root, मग home, ec2-user, ravi आणि one मध्ये असा वाचा.

उदाहरण: levels मोजा.

  1. /home/ec2-user मध्ये root खाली दोन directories: home आणि ec2-user.
  2. Root धरून तीन levels: /, home, ec2-user.
  3. /home/ec2-user/ravi/one मध्ये root खाली चार directories.

Correction

Board वर सांगितलं की /home/ec2-user मध्ये "तीन folders आहेत: /, home आणि ec2-user". / path च्या आतला folder नाही; ते वरचं टोक आहे. "दोन directories, किंवा root धरून तीन levels" असं म्हणा.

7. Files vs folders

का. तुम्ही जे काही बनवाल ते या दोघांपैकी एक असेल. दोघं वेगळे वागतात.

काय.

  1. File मध्ये content असतो. ती वाचायला किंवा लिहायला उघडता: notes, web page, script.
  2. Folder म्हणजे container. त्यात files आणि दुसरे folders असतात. डबा (tiffin box) आठवा: डबा स्वतः जेवण नाही; त्यात जेवण असतं, आणि छोटे डबे सुद्धा.
  3. Windows folder म्हणतं. Linux directory म्हणतं. गोष्ट एकच. हा course दोन्ही शब्द वापरतो.

Classroom line

A folder is like a tiffin box.

File vs folder (directory) File: content ठेवतेती वाचता आणि तिच्यात लिहिता folder = tiffin box (डबा) noteslist one folder च्या आत folder Folder: files आणि दुसऱ्या folders साठी containerWindows folder म्हणतं; Linux directory म्हणतं. गोष्ट एकच.

Figure 3. File मध्ये content असतो, जो तुम्ही वाचता आणि लिहिता. Folder (Linux मध्ये directory) म्हणजे tiffin box सारखा container: त्यात files आणि दुसरे folders असतात.

8. mkdir: एक folder, किंवा अनेक

का. काहीही नीट लावायच्या आधी folders लागतात.

काय. mkdir म्हणजे make directory.

कसं.

  1. mkdir ravi ने ravi नावाचा एक folder बनतो.
  2. Linux काहीच print करत नाही. Output नाही म्हणजे success. सगळं ठीक असलं की Linux शांत राहतं.
  3. ls मध्ये ravi दिसतो.
  4. एकदम अनेक: mkdir raja rani aws. प्रत्येक नाव म्हणजे वेगळा folder.
  5. तेच नाव परत करून बघा: mkdir ravi.
  6. Error: mkdir: cannot create directory 'ravi': File exists. एकाच folder मधल्या दोन गोष्टींचं नाव एक असू शकत नाही.

Ravindra Bagale's Tip

ravi आधीच असला तरी mkdir -p ravi error देत नाही. Scripts मध्ये उपयोगी. -p चं खरं काम section 13 मध्ये.

9. ls आणि ls -r

का. प्रत्येक बदलानंतर बघा. बघायचं ते ls ने.

काय. ls म्हणजे list. तुम्ही ज्या directory मध्ये आहात तिच्यातल्या files आणि directories ची list देतो.

कसं.

  1. ls → aws raja rani ravi. Alphabetical क्रम.
  2. ls -r → ravi rani raja aws. -r option क्रम उलटा करतो (Z ते A).
  3. नवीन server वर home folder मध्ये ls काहीच दाखवत नाही. ते normal आहे.

-r हा option आहे: dash नंतरचं अक्षर, जे command चं वागणं बदलतं. असे बरेच भेटतील: ls -l, ls -a, ls -R.

10. cd ने folder मध्ये जाणं, आणि prompt काय सांगतो

का. Folders बनवणं हे निम्मं काम. त्यांच्या आत पण जाता आलं पाहिजे.

काय. cd म्हणजे change directory.

कसं.

  1. Home पासून सुरू. Prompt आहे [ec2-user@ip-172-31-5-10 ~]$.
  2. cd ravi
  3. आता prompt च्या शेवटी ~ ]$ ऐवजी ravi ]$ दिसतं.
  4. pwd → /home/ec2-user/ravi.
  5. mkdir one ने ravi च्या आत one बनतो.
  6. cd one
  7. pwd → /home/ec2-user/ravi/one.

Prompt वाचणं [ec2-user@ip-172-31-5-10 ~]$:

  1. ec2-user: तुम्ही कोण.
  2. ip-172-31-5-10: server चं नाव, त्याच्या private IP वरून बनलेलं (इथला IP उदाहरण आहे).
  3. ~: तुम्ही कुठे. Prompt path चा फक्त शेवटचा भाग दाखवतो, आणि home मध्ये असाल तर ~ दाखवतो.
  4. $: normal user. Root shell मध्ये # दिसतो.
Handwritten board. Left column: mkdir ravi, cd ravi, then mkdir one at the ravi prompt, pwd, /home/ec2-user/ravi, cd one, pwd arrow /home/ec2-user/ravi/one. Right column: mkdir 'my folder', and mkdir 'my folder' 'your folder'.

Class board वरून: डावीकडे: mkdir ravi, cd ravi, mkdir one; pwd दाखवतो /home/ec2-user/ravi; cd one; pwd दाखवतो /home/ec2-user/ravi/one. उजवीकडे: space असलेलं folder चं नाव quotes मध्ये, एक किंवा एकदम अनेक.

Classroom line

Pay attention, and do your own work yourself.

Correction

Prompt मधला ~ एक प्रकारची status खूण आहे असं सांगितलं. तो तुमच्या home path चं छोटं रूप आहे. Prompt छोटा ठेवायला shell /home/ec2-user ऐवजी ~ दाखवतो.

11. वर जाणं: cd .., cd ../.., cd ../../..

का. Folder मध्ये गेलात. आता बाहेर कसं यायचं?

काय. .. (दोन टिंबं) म्हणजे parent directory: एक level वर. प्रत्येक ../ अजून एक level वर नेतो.

कसं.

  1. समजा तुम्ही /home/ec2-user/ravi/one मध्ये आहात.
  2. cd .. → /home/ec2-user/ravi (एक level वर).
  3. परत जा: cd one.
  4. cd ../.. → /home/ec2-user (दोन levels वर).
  5. परत जा: cd ravi/one.
  6. cd ../../.. → /home (तीन levels वर).
  7. प्रत्येक step नंतर pwd ने तपासा.

उदाहरण: नेहमीची चूक.

  1. तुम्ही /home मध्ये आहात (cd ../../.. नंतर).
  2. तुम्ही cd myfolder type करता.
  3. Error: -bash: cd: myfolder: No such file or directory.
  4. का? myfolder हा ec2-user च्या आत आहे, /home च्या आत नाही.
  5. Fix: cd ec2-user/myfolder.

Correction

Class मध्ये "तीन levels" म्हणताना cd ../../../.. (चार levels) type केलं, म्हणून result board शी जुळला नाही. तीन levels वर म्हणजे cd ../../..: प्रत्येक level ला एक .. मोजा, आणि आधी आणि नंतर pwd ने तपासा.

12. नुसतं cd, cd -, आणि बाजूच्या folder मध्ये जाणं

का. खूप ../ type करणं हळू आहे. दोन shortcuts रोज वेळ वाचवतात.

काय.

  1. नुसतं cd कुठूनही तुम्हाला home (/home/ec2-user) मध्ये नेतं.
  2. cd - तुम्हाला आधीच्या directory मध्ये परत नेतं, आणि कुठे गेलं ते print करतं. परत दाबा, परत मागे. Back आणि forward switch सारखं.
  3. बाजूला: तुमच्या शेजारच्या folder मध्ये जायला, एकाच ओळीत आधी वर, मग खाली.

Classroom line

There's a shortcut here too: to go back where you came from.

उदाहरण: पूर्ण फेरी. समजा तुमच्या home मध्ये one/two आणि myfolder शेजारी शेजारी आहेत.

  1. cd ~/one/two मग pwd → /home/ec2-user/one/two.
  2. cd .. → /home/ec2-user/one.
  3. cd ../myfolder → /home/ec2-user/myfolder (वर home मध्ये, मग myfolder मध्ये).
  4. cd ../.. → /home.
  5. cd → /home/ec2-user.
  6. cd - → /home print करतो आणि तिथे जातो.

खोलवरून बाजूला. /home/ec2-user/one/two मधून cd ../../myfolder ने एका step मध्ये myfolder गाठता येतो. परत: cd ../one/two.

cd ने फिरणं / home ec2-user (~) one two myfolder $ pwd/home/ec2-user/one/twoइथून सुरू $ cd ../home/ec2-user/oneएक level वर $ cd ../myfolder/home/ec2-user/myfolderवर, मग बाजूला $ cd ../../homeदोन levels वर $ cd/home/ec2-userनुसतं: home $ cd -/homeआधीच्या मध्ये परत प्रत्येक command नंतर तुम्ही कुठे आहात ते orange box दाखवतो. cd काहीच print करत नाही; pwd तुम्ही कुठे ते सांगतो.

Figure 4. Animation: pwd, cd .., cd ../myfolder, cd ../.., cd आणि cd -. प्रत्येक command नंतर तुम्ही कुठे आहात ते orange box दाखवतो.

Classroom line

What is our job? To solve the problem in the least time.

13. mkdir -p: एका ओळीत folder च्या आत folders

का. खऱ्या projects ना nested folders लागतात: project/src/css. मध्ये मध्ये cd करत एकेक बनवणं हळू आहे.

काय. mkdir साठी spaces आणि slashes चा अर्थ वेगळा:

  1. mkdir india maharashtra pune → spaces = तीन वेगळे folders, शेजारी शेजारी.
  2. mkdir -p india/maharashtra/pune → slashes = एक दुसऱ्याच्या आत: india च्या आत maharashtra, त्याच्या आत pune.
  3. -p म्हणजे parents (--parents): वाटेतले नसलेले parent folders बनव, आणि आधीच असतील तर error देऊ नको.
  4. -p शिवाय, india अजून नसेल तर mkdir india/maharashtra/pune fail होतो: No such file or directory.
शेजारी शेजारी, की एकाच्या आत एक? mkdir india maharashtra puneतीन नावं = तीन folders, शेजारी शेजारी ~ india maharashtra pune ~ मध्ये ls तिन्ही दाखवतो:india maharashtra pune mkdir -p india/maharashtra/puneslashes = एकाच्या आत एक; -p parents बनवतो ~ india maharashtra pune तिघांमध्ये cd करा, मग pwd:/home/ec2-user/india/maharashtra/pune -p शिवाय, india अजून नसेल तर mkdir india/maharashtra/pune fail होतो: No such file or directory.

Figure 5. mkdir india maharashtra pune ने तीन folders शेजारी शेजारी बनतात. mkdir -p india/maharashtra/pune ने ते एकाच्या आत एक बनतात.

Handwritten board: a tree india, arrow to maharashtra, arrow to pune; below it the command mkdir -p india/maharashtra/pune.

Class board वरून: india च्या आत maharashtra, आणि त्याच्या आत pune. एकच command तिन्ही बनवतो: mkdir -p india/maharashtra/pune.

उदाहरण: सिद्ध करा.

  1. cd (home ला जा).
  2. mkdir -p india/maharashtra/pune
  3. cd india मग ls → maharashtra.
  4. cd maharashtra मग ls → pune.
  5. cd pune मग pwd → /home/ec2-user/india/maharashtra/pune.

Class मधला प्रश्न: months मध्ये jan, feb आणि mar.

  1. mkdir -p months/jan/feb/mar ने ते एकाच्या आत एक बनतात: jan च्या आत feb, feb च्या आत mar. बहुतेक वेळा हे नको असतं.
  2. शेजारी शेजारी, सोपा मार्ग: mkdir months, cd months, mkdir jan feb mar.
  3. किंवा home मधूनच, spaces ने वेगळे केलेले पूर्ण paths द्या: mkdir -p months/jan months/feb months/mar.
  4. Bonus shortcut (पुढच्या class मध्ये अजून): mkdir -p months/{jan,feb,mar}. Shell braces उघडून step 3 मधले तीन paths बनवतो.

Classroom line

What will just typing it get you? Short-term satisfaction... What is the main aim? To understand a new concept.

14. Absolute paths, relative paths आणि ~

का. Path घेणारा प्रत्येक command (cd, mkdir, ls, cp) तिन्ही प्रकार चालवतो. हे माहित असलं, की कुठल्याही folder पर्यंत आधी चालत न जाता त्यावर काम करता येतं.

काय.

  1. Absolute path: / ने सुरू होतो. तो root पासून सुरू होतो, म्हणून तुम्ही कुठेही असा, त्याचा अर्थ तीच जागा. उदा. /home/ec2-user/calendar/weeks.
  2. Relative path: / ने सुरू होत नाही. तो तुम्ही आत्ता जिथे आहात तिथून सुरू होतो. .. म्हणजे parent; नुसतं नाव म्हणजे सध्याच्या folder च्या आतला folder. उदा. ../weeks.
  3. Tilde path: ~ ने सुरू होतो. ~ म्हणजे तुमची home directory. उदा. ~/calendar/weeks.

~ कोण login आहे त्यावर अवलंबून:

  1. ec2-user म्हणून login: ~ = /home/ec2-user.
  2. ubuntu म्हणून login: ~ = /home/ubuntu.
  3. ravi म्हणून login: ~ = /home/ravi.
  4. / नेहमी पूर्ण झाडाचं वरचं टोक. ~ म्हणजे त्यातला तुमचा स्वतःचा folder.
~ म्हणजे जो login आहे त्याचं home /home ec2-user login user ec2-user: ~ = /home/ec2-user ubuntu login user ubuntu: ~ = /home/ubuntu ravi login user ravi: ~ = /home/ravi Command चालण्याआधी shell (bash) ~ ला त्या path मध्ये बदलतो. / पूर्ण झाडाचं वरचं टोक; ~ त्यातला तुमचा स्वतःचा folder.

Figure 6. ~ म्हणजे जो login आहे त्याचं home: /home/ec2-user, /home/ubuntu किंवा /home/ravi. Shell ~ ला त्या path मध्ये बदलतो.

Correction

Class मध्ये सांगितलं की "Linux backend ~ बदलतो". Command चालण्याआधी ~ ला तुमच्या home path मध्ये shell (bash) बदलतो. याचा एक परिणाम: quotes च्या आत '~/x' बदलत नाही, म्हणून ~ quotes च्या बाहेर ठेवा.

15. उदाहरण 1: calendar

का. हेच board वरचं उदाहरण तिन्ही प्रकारचे paths डोक्यात बसवतं.

तयारी (home मधून):

  1. mkdir calendar
  2. cd calendar
  3. mkdir months weeks days
  4. cd months
  5. mkdir jan feb mar
  6. pwd → /home/ec2-user/calendar/months. तुम्ही months मध्ये आहात.

काम: तुम्ही months मध्ये असताना weeks च्या आत week1 बनवा. चार मार्ग:

  1. तिथे चालत जा, मग बनवा: cd .., मग cd weeks, मग mkdir week1.
  2. Relative, आहात तिथेच राहून: mkdir ../weeks/week1 (वर calendar मध्ये, weeks मध्ये, week1 बनव).
  3. Absolute, कुठूनही चालतो: mkdir /home/ec2-user/calendar/weeks/week1.
  4. Tilde: mkdir ~/calendar/weeks/week1.
तुम्ही months मध्ये आहात. weeks च्या आत week1 बनवा: चार मार्ग ~ (/home/ec2-user) calendar monthsतुम्ही इथे आहात jan feb mar weeks week1नवीन days 1. तिथे चालत जा, मग बनवाcd ..; cd weeks; mkdir week1 2. Relative (तुम्ही जिथे आहात तिथून)mkdir ../weeks/week1 3. Absolute (/ ने सुरू, कुठूनही चालतो)mkdir /home/ec2-user/calendar/weeks/week1 4. Tilde (~ = तुमचं home)mkdir ~/calendar/weeks/week1 चारही तोच folder बनवतात: /home/ec2-user/calendar/weeks/week1

Figure 7. तुम्ही months मध्ये आहात. weeks च्या आत week1 बनवा: तिथे चालत जाऊन, relative path ने, absolute path ने किंवा tilde path ने. चारही /home/ec2-user/calendar/weeks/week1 बनवतात.

तपासा: ls ~/calendar/weeks → week1. चारही एकाच नावाने करून बघितले, तर दुसऱ्यापासून पुढे File exists येतं, कारण week1 आधीच आहे. चारही practice करायला दरवेळी नवीन नाव वापरा: week1, week2, week3, week4.

Classroom line

Real study happens when you build situations in your own mind.

16. उदाहरण 2: one ते five

तयारी:

  1. cd
  2. mkdir -p one/two/three/four/five
  3. cd one/two/three/four
  4. pwd → /home/ec2-user/one/two/three/four. तुम्ही four मध्ये आहात.

काम: two च्या आत 22 बनवा. तीन मार्ग:

  1. Absolute: mkdir /home/ec2-user/one/two/22. (mkdir -p पण चालतो; parents असले तर तो error देत नाही.)
  2. Relative: mkdir ../../22. पहिला .. four मधून three मध्ये नेतो; दुसरा three मधून two मध्ये.
  3. Tilde: mkdir ~/one/two/22.
तुम्ही four मध्ये आहात. two च्या आत 22 बनवा ~ (/home/ec2-user) one two 22नवीन three fourतुम्ही इथे आहात five पहिला .. : वर three मध्येदुसरा .. : वर two मध्ये Absolutemkdir /home/ec2-user/one/two/22 Relative: four → three → twomkdir ../../22 Tildemkdir ~/one/two/22 दरवेळी result एकच: /home/ec2-user/one/two/22.mkdir -p नसलेले parents बनवतो आणि error देत नाही,parents आधीच असतील तरी.

Figure 8. Animation: तुम्ही four मध्ये आहात. दोन .. steps two पर्यंत चढतात, आणि two च्या आत 22 दिसतो. Absolute, relative आणि tilde paths चा result एकच.

Handwritten board: a tree from / to home to ec2-user, then a chain of circles 1, 2, 3, 4, 5 with 22 branching off 2; on the right three commands: mkdir /home/ec2-user/1/2/22, mkdir ../../22, mkdir ~/1/2/22.

Class board वरून: Class च्या board वर ec2-user खाली 1 ते 5 नावाचे folders वापरले. 4 च्या आतून, 2 च्या आत 22 बनवायचे तीन मार्ग: mkdir /home/ec2-user/1/2/22, mkdir ../../22 आणि mkdir ~/1/2/22.

तपासा: ls ~/one/two → 22 three.

Classroom line

Go back and forth like this yourself; make up your own situations.

17. नावात spaces

का. Windows वर "My Folder" नेहमीचं. Shell मध्ये space arguments वेगळे करतो, म्हणून गोंधळ होतो.

काय.

  1. mkdir my folder ने दोन folders बनतात: my आणि folder.
  2. mkdir 'my folder' ने my folder नावाचा एक folder बनतो. Double quotes पण चालतात: mkdir "my folder".
  3. Spaces असलेली अनेक नावं: mkdir 'my folder' 'your folder'.
  4. आत जायला: cd 'my folder', किंवा cd my type करून Tab दाबा. Tab cd my\ folder/ लिहितो.
  5. Backslash \ हा escape character आहे: तो shell ला सांगतो "पुढचा space नावाचाच भाग आहे".
Space असलेली folder ची नावं mkdir my folderspace नाव तोडतो: दोन folders, my आणि folder my folder mkdir 'my folder'quotes नाव एकत्र ठेवतात: एक folder ("my folder" पण चालतं) my folder cd my\ folderbackslash space escape करतो; Tab हे तुमच्यासाठी लिहितो my folder सगळ्यात सोपं: spaces टाळा. my-folder किंवा my_folder वापरा.

Figure 9. mkdir my folder ने दोन folders बनतात. mkdir 'my folder' ने एक. cd my\ folder space escape करतो; Tab तुमच्यासाठी हे लिहितो.

उदाहरण.

  1. mkdir 'my folder'
  2. cd my + Tab → cd my\ folder/ → Enter.
  3. mkdir 'inside folder'
  4. pwd → /home/ec2-user/my folder.
  5. ls → inside folder.

Classroom line

Go on. Create folders with spaces... Press Tab and see what happens.

Ravindra Bagale's Tip

Job वर files आणि folders च्या नावात spaces टाळा. my-folder किंवा my_folder वापरा. Scripts, URLs आणि दुसऱ्यांचे commands तुम्हाला धन्यवाद देतील.

18. Tab completion, आणि नावं सारखी सुरू होत असतील तर

का. Job वर कोणीही लांब paths अक्षर अक्षर type करत नाही. Tab जास्त fast आहे आणि spelling च्या चुका करत नाही.

काय.

  1. नावाची पहिली काही अक्षरं type करून Tab दाबा. एकच नाव जुळत असेल, तर shell ते पूर्ण करतो.
  2. अनेक नावं जुळत असतील, तर एक Tab फक्त त्यांच्यातली common अक्षरं पूर्ण करतो, किंवा काहीच करत नाही.
  3. जुळणारी नावं बघायला दोनदा Tab दाबा.
  4. एकच नाव जुळेपर्यंत अजून एक-दोन अक्षरं type करा, मग Tab दाबा.

उदाहरण 1: tata, twelve, taja (आणि two).

  1. नवीन folder मध्ये: mkdir tata twelve taja two.
  2. cd t + Tab → काहीच होत नाही: चार नावं t ने सुरू होतात.
  3. Tab Tab → taja/ tata/ twelve/ two/.
  4. cd taj + Tab → cd taja/.
  5. cd .., मग cd tat + Tab → cd tata/.

उदाहरण 2: amazon, amma, aman.

  1. mkdir amazon amma aman
  2. cd ama + Tab → ama वरच थांबतो, कारण amazon आणि aman दोन्ही ama ने सुरू होतात.
  3. cd amaz + Tab → cd amazon/.
  4. cd aman + Tab → cd aman/.
  5. cd amm + Tab → cd amma/.
नावं सारखी सुरू होत असताना Tab completion $ ls taja tata twelve two $ cd t[Tab] → काहीच नाही: चार नावं t ने सुरू होतात $ cd t[Tab][Tab] → पर्याय दाखवतो taja/ tata/ twelve/ two/ $ cd tajअजून अक्षरं type करा, मग [Tab] $ cd taja/पूर्ण झालं दुसरं उदाहरण$ lsaman amazon amma cd ama + Tab→ ama वर थांबतो (amazon, aman) cd amaz + Tab→ cd amazon/ cd aman + Tab→ cd aman/

Figure 10. Animation: cd t + Tab काहीच करत नाही (चार नावं जुळतात); Tab Tab ती दाखवतो; cd taj + Tab ने taja पूर्ण होतं. दुसऱ्या उदाहरणात ama unique नाही, म्हणून amaz किंवा aman type करा.

Correction

Class च्या उदाहरणात amazon गाठायला ama आणि Tab type केलं. aman पण असल्यामुळे ama unique नाही, म्हणून Tab ama वरच थांबतो. amaz type करा, मग Tab.

19. clear आणि history

clear.

  1. clear (किंवा Ctrl+L) screen साफ करतो.
  2. फक्त screen. तुमच्या files आणि folders ना हात लागत नाही.

history.

  1. history तुम्ही चालवलेल्या commands ची numbered list print करतो.
  2. काय केलं ते बघायला, किंवा लांब command परत copy करायला उपयोगी.
  3. !45 command नंबर 45 परत चालवतो.
  4. Up Arrow त्याच list मधून मागे मागे जातो.

Classroom line

While I'm explaining, don't type along... when I'm showing, just watch.

Correction

history ने server वर चालवलेलं सगळं बघता येतं असं सांगितलं. तो फक्त या user च्या shell चे commands दाखवतो (~/.bash_history मध्ये save होतात), आणि user ते edit किंवा clear करू शकतो. तो audit log नाही. AWS वर account मधल्या actions ची नोंद CloudTrail ठेवतं; ते course मध्ये पुढे येईल.

20. Practice task

Classroom line

Don't look at someone else's screen... put in the effort yourself.

घरी करून बघा

Task 1: झाड बनवा आणि त्यात फिरा

  1. Login करून pwd चालवा. काय दिसतं ते लिहून ठेवा.
  2. mkdir -p school/class1/divA school/class2
  3. cd school/class1/divA, मग pwd.
  4. Home ला न जाता एका command मध्ये class2 मध्ये जा. (cd ../../class2)
  5. दोनदा cd - वापरा आणि कुठे पोचता ते बघा.
  6. नुसतं cd, मग pwd.

Task 2: तीन मार्ग

  1. divA च्या आतून relative path ने school च्या आत notes बनवा. (mkdir ../../notes)
  2. Absolute path ने school च्या आत exams बनवा.
  3. ~ path ने school च्या आत results बनवा.
  4. ls ~/school मध्ये class1 class2 exams notes results दिसलं पाहिजे.

Task 3: spaces आणि Tab

  1. mkdir 'my notes' 'my marks'
  2. Tab वापरून my marks मध्ये जा. Tab काय type करतो?
  3. सारख्या सुरू होणाऱ्या तीन folders बनवा: mkdir data date dance.
  4. प्रत्येकात कमीत कमी अक्षरं + Tab वापरून पोचायचा सराव करा.

Task 4: तुमच्या स्वतःच्या situations

  1. कागदावर कमीत कमी चार levels खोल folder चं झाड काढा.
  2. एकाच mkdir -p ओळीत ते बनवा.
  3. त्यातले कुठलेही दोन folders निवडा. त्यांच्यात absolute path, relative path आणि ~ path ने ये-जा करा.
  4. history चालवा आणि काय केलं ते परत वाचा.
  5. संपलं की console मधून instance stop करा.

Classroom line

Don't forget to stop the server.

Correction

Class च्या शेवटी IP "reboot केल्यावर" बदलतो असं सांगितलं. Reboot केल्यावर public IP तोच राहतो. आपोआप दिलेला public IP instance stop करून मग start केल्यावर बदलतो (Elastic IP राहतो). आणि stopped instance ला पण त्याच्या EBS disk चे पैसे लागतात; मागचा chapter बघा.

Ravindra Bagale's Tip

प्रत्येक mkdir, cp किंवा rm आधी स्वतःला विचारा "मी कुठे आहे?", आणि खात्री नसेल तर pwd चालवा. Beginners च्या बहुतेक चुका चुकीच्या command ने नाही, तर चुकीच्या folder मध्ये होतात. या commands च्या थोडक्यात reference साठी 3.2 Navigation आणि 3.3 Working with files and directories बघा.

Recap

थोडक्यात

  1. SSH: ssh -i <key> ec2-user@<public IP>. Key path साठी Tab. Ctrl+V किंवा right-click ने paste.
  2. Errors: publickey (चुकीची key किंवा user), no such file (key path), timed out (stop/start नंतर IP बदलला).
  3. ec2-user म्हणून login; admin कामासाठी sudo. Key pair user ला बांधलेला नसतो; root SSH login बंद.
  4. Idle SSH तुटतो तो router, Wi-Fi किंवा sleep मुळे, AWS मुळे नाही. Up Arrow + Enter ने परत; ServerAliveInterval=60 ने टिकतो.
  5. / पूर्ण झाडाचं वरचं टोक. /root म्हणजे root user चं home, वेगळी जागा.
  6. Login नंतर /home/ec2-user मध्ये. pwd तुम्ही कुठे ते सांगतो.
  7. Path मध्ये पहिला / म्हणजे root; बाकीचे नावं वेगळी करतात.
  8. File मध्ये content; folder (directory) मध्ये files आणि folders.
  9. mkdir a b c ने तीन folders. Output नाही = success. तेच नाव परत = File exists.
  10. ls list देतो; ls -r उलट्या क्रमाने.
  11. cd name ने आत. Home मध्ये prompt ~ दाखवतो.
  12. cd .. एक वर; cd ../.. दोन वर; cd ../../.. तीन वर.
  13. नुसतं cd = home. cd - = आधीच्या directory मध्ये परत.
  14. mkdir -p a/b/c ने nested folders; spaces ने शेजारी शेजारी.
  15. Absolute / ने सुरू; relative तुम्ही जिथे आहात तिथून; ~ तुमचं home (shell ते बदलतो).
  16. Calendar: week1 चे चार मार्ग. One ते five: 22 चे तीन मार्ग.
  17. Spaces: नाव quotes मध्ये किंवा \ ने escape. त्यापेक्षा spaces टाळा.
  18. Tab पूर्ण करतो; Tab Tab list दाखवतो; नावं सारखी सुरू होत असतील तर अजून अक्षरं type करा.
  19. clear फक्त screen साफ करतो. history या user चे commands दाखवतो; तो audit log नाही.
  20. Practice नंतर server stop करा. Reboot ने public IP तोच; stop आणि start ने बदलतो.

समजलं का? आज घरी स्वतःच्या situations बनवा, absolute, relative आणि ~ तिन्ही वापरा. पुढच्या class मध्ये files.


Ravindra Bagale, trainer: linkedin.com/in/ravindra-bagale. Folders ची नावं (ravi, calendar, india/maharashtra/pune, one ते five, tata, amazon), ravi हे user name आणि 3.3.3.3 आणि 172.31.5.10 हे addresses शिकण्यासाठीची उदाहरणं आहेत. Commands चे outputs GNU bash आणि coreutils वर तपासले, जे Amazon Linux 2023 पण वापरतं; AWS चं वागणं October 2026 च्या AWS च्याच documentation वरून.