क्या Linux सीखना मुश्किल है? पहले हफ़्ते का पूरा प्लान
Linux मुश्किल नहीं है, बस command line और नए शब्द अनजान लगते हैं। WSL या सस्ते VPS पर पहले हफ़्ते का प्लान, और एक सुरक्षित practice session जो हर command का मतलब समझाता है।
क्या Linux सीखना सच में मुश्किल है?
Linux सीखना मुश्किल नहीं है। यह मुश्किल लगता है, क्योंकि command line आपके लिए नई है और उसके शब्द अनजान हैं। रोज़ एक घंटा देकर, एक हफ़्ते में आप files बना सकते हैं, उनमें खोज सकते हैं, और server पर software install कर सकते हैं।
ज़्यादातर लोग Linux को एक-एक शब्द करके search करते हैं: "SSH full form", "port क्या होता है", "ufw meaning", "permission denied का मतलब"। यह तरीका गलत नहीं है। पर इससे लगता है कि सैकड़ों शब्द सीखने हैं, और हर शब्द एक नई रुकावट है। सच यह है कि पहले हफ़्ते में आपको लगभग पंद्रह commands और दस शब्द चाहिए। नीचे वही हैं, एक क्रम में, और हर command के साथ यह भी कि वह fail क्यों होती है।
Linux सीखें ही क्यों?
भारत में ज़्यादातर students और job-seekers Linux किसी काम के लिए सीखते हैं, शौक़ के लिए नहीं। वह काम आम तौर पर इन चार में से एक होता है:
- Server और web hosting. ज़्यादातर websites और APIs Linux servers पर चलती हैं। अपना project deploy करना है, तो Linux चाहिए।
- Cloud. AWS, Azure या Google Cloud पर जो virtual machine आप बनाते हैं, उसमें अक्सर Linux ही होता है।
- DevOps. Docker जैसे tools Linux kernel की features पर बने हैं। DevOps के काम में रोज़ Linux terminal खुलता है।
- Cyber security. Security के ज़्यादातर tools Linux पर चलते हैं, और Kali Linux खुद एक Linux distribution है।
इन चारों में एक बात common है: आप Linux को desktop की तरह नहीं, एक remote machine की तरह इस्तेमाल करेंगे। वहाँ mouse नहीं होता। सिर्फ़ terminal होता है। इसलिए यह plan desktop Linux पर नहीं, command line पर है।
असली रुकावट commands नहीं, vocabulary है
Commands छोटे होते हैं: ls, cd, cp। दिक्कत तब आती है जब error message में कोई ऐसा शब्द आता है जिसका मतलब आपको नहीं पता। नीचे के शब्द पहले हफ़्ते में बार-बार आएँगे। हर शब्द का पूरा explanation अलग page पर है। यहाँ सिर्फ़ एक line है।
- Terminal और shell: वह window जहाँ आप commands टाइप करते हैं, और वह program जो उन्हें पढ़कर चलाता है। Ubuntu में default shell
bashहै। - CLI (command-line interface): mouse के बिना, सिर्फ़ text commands से computer चलाने का तरीका।
- Distribution (distro): Linux kernel के साथ tools और package manager का एक पूरा set। Ubuntu और Debian दो distros हैं। कौन सा चुनें, यह VPS के लिए सही Linux distro कैसे चुनें में है।
- Package: install होने लायक software का एक बंडल। Ubuntu पर packages
aptसे आते हैं। - root और sudo:
rootsystem का सबसे ताक़तवर user है।sudo(superuser do) एक command को root के अधिकार से चलाता है। - SSH (Secure Shell): दूसरी machine पर encrypted connection से login करने का तरीका। पूरा मतलब और key से login करना SSH full form और SSH काम कैसे करता है में है।
- Port: एक number, जिससे तय होता है कि आने वाला network traffic किस program को जाए। SSH आम तौर पर port 22 पर होता है। विस्तार से: Linux में port क्या होता है।
- UFW (Uncomplicated Firewall): Ubuntu का आसान firewall tool। यह तय करता है कि बाहर से कौन से ports खुले रहें। देखें VPS पर UFW firewall की basics।
- Permission denied: Linux ने जानबूझकर आपका काम रोका है, क्योंकि आपके user के पास उस file पर अधिकार नहीं है। यह file के owner और mode से तय होता है, जो दूसरे हफ़्ते का topic है।
Error message कैसे पढ़ें
Error messages English में आते हैं, और शुरुआत में पूरा message डराता है। पर ज़्यादातर बार काम का हिस्सा आखिरी कुछ शब्द होते हैं। पहले हफ़्ते के लगभग सारे errors इन चार endings में से एक पर खत्म होते हैं: No such file or directory (नाम या path गलत है), Permission denied (अधिकार नहीं है), command not found (program install नहीं है या नाम गलत है), और File exists (उस नाम की चीज़ पहले से है)। आखिरी शब्द पढ़िए, फिर तय कीजिए कि चारों में से कौन सा है। Search करना हो तो message का यही हिस्सा copy कीजिए, अपना username या path नहीं।
Practice machine: WSL या सस्ता VPS
पहले हफ़्ते के लिए आपको ऐसी machine चाहिए जिसमें गलती करने से कोई नुकसान न हो। दो सस्ते रास्ते हैं।
WSL (Windows Subsystem for Linux) आपके Windows laptop के अंदर एक असली Linux चलाता है, और इसके पैसे नहीं लगते। Windows 10 या 11 पर PowerShell को Administrator की तरह खोलिए और यह चलाइए:
wsl --installRestart के बाद Ubuntu खुलेगा और एक नया username और password माँगेगा। यह password याद रखिए, क्योंकि sudo यही माँगेगा।
VPS (virtual private server) एक data center में चलने वाली आपकी अपनी Linux machine है। इसका फ़ायदा यह है कि यह असली server जैसा है: public IP, SSH login, firewall और package updates। नौकरी में आप यही चलाएँगे। गलती हो जाए, तो control panel से server को rebuild कीजिए, और कुछ मिनट में एक साफ़ machine वापस मिल जाती है। Login ऐसे होता है:
ssh root@203.0.113.10203.0.113.10 की जगह अपने VPS का IP डालिए, और root की जगह वह username जो आपके provider ने दिया है। पहली बार SSH server का fingerprint दिखाकर पूछेगा कि आप इस host पर भरोसा करते हैं या नहीं। yes टाइप कीजिए।
दोनों में फ़र्क और कब कौन बेहतर है, इस पर पूरा comparison WSL vs VPS: development के लिए क्या चुनें में है। छोटा जवाब: commands सीखने के लिए WSL काफ़ी है। SSH, ports और firewall सीखने हैं, तो VPS लीजिए।
पहले हफ़्ते का प्लान, दिन-ब-दिन
- दिन 1: Practice machine तैयार कीजिए। WSL install कीजिए, या VPS लेकर SSH से login कीजिए। SSH और port वाले pages पढ़िए।
- दिन 2: Folders में घूमना सीखिए:
pwd,ls -la,cd। हरcdके बादpwdचलाइए, ताकि पता रहे कि आप कहाँ हैं। - दिन 3: Files बनाइए और बदलिए:
mkdir -p,echo,cat,cp,mv,rm। - दिन 4: खोजना और help लेना:
grepऔर--help। देखिए कि आपकी machine परmanक्या करता है। - दिन 5: Software install कीजिए:
sudo apt update, फिर एक छोटा package। - दिन 6: Vocabulary का दिन। Port और UFW वाले pages पढ़िए। अभी firewall rules मत बदलिए, सिर्फ़ समझिए।
- दिन 7: नीचे वाला पूरा practice session बिना देखे दोबारा कीजिए। जो command याद न आए, उसका
--helpखोलिए, यह guide नहीं।
हर दिन एक घंटा काफ़ी है। Session को पढ़िए नहीं, खुद टाइप कीजिए। Copy-paste करने से commands याद नहीं रहतीं।
पहली Linux commands: एक सुरक्षित practice session
यह session एक fresh Ubuntu server पर चलता है, और WSL वाले Ubuntu पर भी। यह आपके home folder के अंदर एक नया folder बनाता है और आखिर में उसे हटा देता है, इसलिए system की किसी file को नहीं छूता। सिर्फ़ एक हिस्सा sudo माँगता है, और वह सिर्फ़ एक छोटा package install करता है।
आप अभी कहाँ हैं?
pwd
ls -lapwd (print working directory) बताता है कि आप अभी किस folder में हैं। Login के बाद यह आपका home folder होता है। उसका path आपके username पर निर्भर करता है, इसलिए जो दिखे, वही आपका home है। ls folder की चीज़ें दिखाता है। -l हर file की details देता है, और -a उन files को भी दिखाता है जिनका नाम . से शुरू होता है। ऐसी files hidden कहलाती हैं। List में . और .. भी दिखेंगे: . मतलब यही folder, और .. मतलब इसका parent folder।
Folder बनाइए और उसमें जाइए
mkdir -p ~/linux-practice/notes
cd ~/linux-practice
pwd
ls -la~ आपके home folder का छोटा नाम है। mkdir -p दो काम करता है: ज़रूरत हो तो बीच के folders भी बनाता है, और folder पहले से हो तो error नहीं देता। -p के बिना mkdir ~/linux-practice/notes तब fail होता है जब linux-practice अभी बना ही नहीं है, और message के आखिर में No such file or directory लिखा होता है। cd के बाद pwd नया path दिखाएगा, और ls -la में notes folder दिखेगा।
File लिखिए और पढ़िए
echo "day 1: linux practice" > notes/day1.txt
echo "day 1: grep test" >> notes/day1.txt
cat notes/day1.txtcat से ये दो lines वापस आनी चाहिए:
day 1: linux practice
day 1: grep testयहाँ notes/day1.txt एक relative path है: यह मौजूदा folder से गिना जाता है। इसलिए ये commands cd ~/linux-practice के बाद ही सही जगह file लिखती हैं। > file बनाता है, और file पहले से हो तो उसे पूरा बदल देता है। >> file के आखिर में नई line जोड़ता है। दूसरी line में गलती से > लिख दिया, तो cat सिर्फ़ एक line दिखाएगा, क्योंकि पहली line मिट चुकी है। Linux यह नहीं पूछता कि आप पक्का ऐसा करना चाहते हैं या नहीं। इसलिए > लिखने से पहले एक बार रुकने की आदत डालिए।
Copy, rename और delete
cp notes/day1.txt notes/day1-copy.txt
mv notes/day1-copy.txt notes/backup.txt
ls notes
rm notes/backup.txt
ls notescp file की copy बनाता है। Linux में rename का अलग command नहीं है: mv (move) ही file का नाम बदलता है, क्योंकि नया नाम देना और नई जगह भेजना उसके लिए एक ही काम है। पहले ls notes में backup.txt और day1.txt दोनों दिखेंगी। rm के बाद सिर्फ़ day1.txt बचेगी।
rm के साथ कोई Recycle Bin नहीं होता। हटाई हुई file वापस नहीं आती। इसलिए internet से कोई rm -r वाली line, ख़ासकर sudo के साथ, बिना समझे कभी मत चलाइए। जिस file को हटाना है, पहले ls से उसका नाम देखिए, फिर वही नाम rm को दीजिए। गलत नाम दिया, तो rm कुछ नहीं मिटाता और message के आखिर में No such file or directory लिखता है।
grep से file में खोजिए
grep -n "linux" notes/day1.txt
grep -c "day 1" notes/day1.txt
grep -i "LINUX" notes/day1.txtgrep file में शब्द ढूँढता है और जिन lines में वह मिला, उन्हें दिखाता है। -n line number जोड़ता है, तो पहली command 1:day 1: linux practice दिखाएगी। -c मिलने वाली lines गिनता है, और यहाँ जवाब 2 होगा, क्योंकि दोनों lines में day 1 है। grep बड़े और छोटे अक्षरों को अलग मानता है, इसलिए -i के बिना "LINUX" कुछ नहीं ढूँढता और बिना किसी message के खत्म हो जाता है। -i यह फ़र्क हटा देता है, और तीसरी command फिर वही line ढूँढ लेती है।
असली server पर logs में error ढूँढने का पहला tool यही grep है। Command वही रहता है। बस file बड़ी होती है।
Help कहाँ से लें: --help और man
ls --help | head -n 15लगभग हर GNU command --help समझता है। यह help program के अंदर ही बनी होती है, इसलिए इसके लिए कोई अलग package नहीं चाहिए। | (pipe) एक command का output अगले command को भेजता है, और head -n 15 सिर्फ़ पहली 15 lines दिखाता है। इससे लंबी help एक बार में ऊपर scroll होकर गायब नहीं होती। ऊपर ls को चलाने का तरीका लिखा होता है, और नीचे options की list होती है, जैसे -a और -l। cd bash के अंदर बना command है, इसलिए उसकी help के लिए help cd चलाइए।
अब manual page आज़माइए:
man ls | head -n 5man किसी command का पूरा manual दिखाता है। पर minimal Ubuntu server images में जगह बचाने के लिए manual pages अक्सर हटा दिए जाते हैं। तो यह सवाल अपनी machine पर खुद settle कीजिए: आपकी image पर man ls क्या करता है? अगर manual की पहली lines दिखें, तो man पूरा काम करता है। अगर message कहे कि system को minimize किया गया है, तो manual pages हटाए गए हैं, और वही message बताता है कि उन्हें वापस कैसे लाएँ। अगर command not found आए, तो man program ही install नहीं है। यहाँ | head लगाने से man अपना scroll वाला viewer नहीं खोलता, इसलिए command तुरंत खत्म होती है। तीनों हालत में ls --help काम करता है, क्योंकि वह program के अंदर है। इसीलिए पहले हफ़्ते में --help आपकी पहली help है।
Software install कीजिए: sudo apt update
पहले सिर्फ़ tree टाइप करके चलाइए। अगर message में not found आए, तो यह package अभी install नहीं है। अब उसे install कीजिए:
sudo apt update
sudo apt install -y tree
tree ~/linux-practicesudo apt update कोई software install नहीं करता। यह सिर्फ़ package lists को ताज़ा करता है, यानी Ubuntu के servers से पूछता है कि अभी कौन से packages और versions उपलब्ध हैं। इसके बिना apt install पुरानी list से काम करता है, और कभी-कभी ऐसी file माँगता है जो अब server पर नहीं है, तो download 404 Not Found पर fail होता है। apt install -y tree package install करता है, और -y आगे बढ़ने वाले सवाल का जवाब पहले से yes दे देता है। आखिर में tree आपके practice folder को tree जैसे ढाँचे में दिखाएगा: notes folder, और उसके अंदर day1.txt।
sudo password माँगे, तो अपने user का password डालिए। Ubuntu 24.04 पर टाइप करते समय screen पर कुछ नहीं दिखता, और यह सामान्य है। VPS पर आप root से login हैं, तो sudo password नहीं माँगता।
दो रुकावटें जो पहले हफ़्ते में अक्सर दिखती हैं:
sudoभूल गए, तोapt updateएकE:वाली line पर रुक जाता है। उस line में/var/lib/apt/listsके अंदर का कोई path होता है, और वहPermission deniedपर खत्म होती है। Package lists system files हैं, और उन्हें सिर्फ़ root बदल सकता है। "Permission denied" का यही असली मतलब है।- नया VPS शुरू होते ही अक्सर अपने-आप security updates चलाता है। तब
apt installfail नहीं होता, बल्कि package lock खाली होने का इंतज़ार करता है, और command कुछ मिनट तक अटकी हुई लग सकती है। एक समय में सिर्फ़ एक program packages बदल सकता है। Command को चलने दीजिए, update खत्म होते ही install अपने-आप आगे बढ़ेगा। Lock file को हाथ से मत हटाइए।
Session का अंत
cd ~
rm -r ~/linux-practice
lscd ~ (या सिर्फ़ cd) आपको home folder में वापस ले जाता है। rm -r folder को उसके अंदर की हर चीज़ के साथ हटाता है, इसलिए पहले cd ~ से उस folder से बाहर आइए। आखिरी ls में linux-practice अब नहीं दिखेगा। दिन 7 पर यही पूरा session याद से दोबारा कीजिए।
दूसरे हफ़्ते में क्या सीखें
पहला हफ़्ता जानबूझकर छोटा रखा गया है। नीचे के topics अगले हफ़्ते के लिए हैं, क्योंकि इनमें गलती का असर बड़ा होता है या ये interactive programs हैं:
- Permissions:
chmodऔरchown।Permission deniedकहाँ से आता है, यह यहीं पूरा समझ आता है। शुरुआत chmod के numeric और symbolic modes और chown command से file का owner बदलना से कीजिए। - Editors:
nanoपहले,vimबाद में। दोनों terminal के अंदर खुलते हैं, और दोनों से बाहर निकलने का अपना तरीका है। - Processes:
topदिखाता है कि कौन सा program कितना CPU और memory ले रहा है। - Networking:
ping,ipऔरss।ssबताता है कि कौन सा program किस port पर सुन रहा है, और यहीं port वाला पाठ काम आता है। - Firewall: VPS पर UFW चालू करना। एक गलत rule से SSH port बंद हो सकता है, और तब आप अपने ही server से बाहर हो जाते हैं। इसलिए यह तभी कीजिए जब SSH अच्छी तरह समझ आ जाए।
FAQ
क्या Linux सीखने के लिए programming आनी चाहिए?
नहीं। पहले हफ़्ते की हर command एक छोटा, सीधा निर्देश है, जैसे mkdir -p या grep -n। Programming तब काम आती है जब आप कई commands को एक script में जोड़ते हैं, और वह बाद का कदम है। शुरुआत में ज़्यादा ज़रूरी यह है कि आप error message पूरा पढ़ें और उसके आखिरी शब्दों पर ध्यान दें।
Linux practice के लिए WSL अच्छा है या VPS?
Commands सीखने के लिए WSL काफ़ी है। यह मुफ़्त है और आपके Windows laptop पर चलता है। SSH, ports और firewall सीखने के लिए VPS बेहतर है, क्योंकि वह असली server की तरह public internet पर होता है। गलती होने पर VPS को control panel से rebuild किया जा सकता है, इसलिए वह practice के लिए सुरक्षित है।
Linux में "Permission denied" का मतलब क्या है?
इसका मतलब है कि आपके user को उस file या काम की अनुमति नहीं है। उदाहरण: बिना sudo के apt update चलाने पर /var/lib/apt/lists के अंदर की files के लिए Permission denied आता है, क्योंकि package lists सिर्फ़ root बदल सकता है। काम system का है, तो command के आगे sudo लगाइए। यह error आपकी अपनी file पर आए, तो उस file के owner और mode देखिए, जो chmod और chown का topic है।
Ubuntu server पर man काम नहीं करता। Help कैसे लें?
Minimal Ubuntu server images में जगह बचाने के लिए manual pages अक्सर हटाए जाते हैं। man ls | head -n 5 चलाकर देखिए कि आपकी image पर क्या होता है। हर हालत में ls --help काम करता है, क्योंकि यह help program के अंदर ही बनी है। cd जैसे bash के अपने commands के लिए help cd चलाइए।
Linux की basics सीखने में कितना समय लगता है?
रोज़ एक घंटे के practice से ऊपर वाली commands एक हफ़्ते में याद हो जाती हैं। Permissions और networking जोड़कर, एक सामान्य VPS खुद संभालने में आम तौर पर कुछ हफ़्ते लगते हैं। सबसे ज़्यादा फ़र्क रोज़ के practice से पड़ता है, किसी course की लंबाई से नहीं।