Ravindra BagaleCourses & study guides English

Linux cat, less, head, tail, wc आणि tee Commands उदाहरणांसह (Files बघा आणि Follow करा)

Linux मधला बहुतेक दिवस text वाचण्यात जातो: logs, configs, CSV files आणि command output. cat, less, head, tail, wc आणि tee ही सहा tools text बघायला, live follow करायला, मोजायला आणि बघता बघता save करायला वापरतात. ही नीट शिकलात की पुढची tools (grep, sed, awk) सोपी होतात.

या chapter मध्ये तुम्ही काय शिकाल

  • cat, tac आणि nl ने files print आणि जोडा
  • less ने मोठ्या files safely वाचा
  • head आणि tail ने सुरुवात किंवा शेवट घ्या
  • tail -f आणि -F ने live logs follow करा
  • wc ने lines, words आणि bytes मोजा
  • tee ने output save आणि दाखवा एकत्र

1. रोजचं उदाहरण: लांब WhatsApp chat वाचणं

हे का लागतं?

सुनीता society चा WhatsApp group chat text file मधे export करते. त्यात 40,000 lines आहेत. ती सगळं वाचत नाही. Group कधी सुरू झाला ते बघायला पहिले काही messages बघते, आजची बातमी बघायला शेवटचे messages, मधला भाग हळू scroll करते, एकूण messages किती ते मोजते, आणि नवीन messages साठी लक्ष ठेवते. वाचता वाचताच बातमी नवऱ्याला forward करते.

हे काय आहे?

पहिले messages = head. शेवटचे = tail. हळू scroll = less. मोजणं = wc. नव्यासाठी लक्ष = tail -f. वाचणं आणि forward एकाच वेळी = tee. पूर्ण chat print = cat.

कसं करायचं (step by step)

Pipe मधून text कसा वाहतोFile किंवा command text बनवतोcat किंवा tail तो screen वर पाठवतो (stdout)Pipe पुढच्या tool ला देतोhead, wc किंवा less त्याला आकार देतोtee copy save करून पुढे देतोतुम्ही result वाचता
प्रत्येक tool एक छोटं काम करतो. Pipes त्यांना जोडतात.

2. cat: files print, join आणि create

हे का लागतं?

अनेकदा छोटी file पूर्ण बघायची किंवा तुकडे एका file मधे जोडायचे असतात.

हे काय आहे?

cat (concatenate) files एकामागून एक print करतो. cat a b > c files जोडतो, >> append. Options: -n सगळ्या lines ना number, -b non-empty lines ना number, -A tabs (^I), line ends ($) आणि Windows CR (^M), -s रिकाम्या lines दाबतो. cat > file <<'END' पटकन file लिहितो. cat फक्त छोट्या files साठी; मोठ्यांसाठी less.

कसं करायचं (step by step)

  1. छोटी file print करा.
cat /etc/hostname

Output:

web-pune-01

याचा अर्थ: Machine चं नाव या file मधे आहे.

  1. Lines ना number द्या.
cat -n shopping.txt

Output:

     1	milk
     2	bread
     3	
     4	eggs

याचा अर्थ: Line 3 रिकामी पण number मिळाला.

  1. Hidden characters दाखवा.
cat -A config.yml

Output:

name: shop$
port:^I8080$
mode: prod ^M$

याचा अर्थ: ^I म्हणजे tab, ^M म्हणजे Windows line end. दोन्हीमुळे YAML आणि scripts तुटतात.

  1. तुकडे एका file मधे जोडा.
cat part1.csv part2.csv > all.csv && wc -l all.csv

Output:

2000 all.csv

याचा अर्थ: > all.csv बनवतो किंवा overwrite. शेवटी जोडायला >>.

  1. Here-doc ने लगेच file लिहा.
cat > note.txt <<'END'
Server: web-01
Owner: Aditi
END
cat note.txt

Output:

Server: web-01
Owner: Aditi

याचा अर्थ: END पर्यंतचं सगळं file मधे.

cat सोबत > आणि >>: overwrite vs append

हे का लागतं?

Output file मधे save करणं रोजचं काम. एका जास्त > मुळे line add होणं आणि file पुसली जाणं यात फरक पडतो.

हे काय आहे?

> output file मधे पाठवतो आणि आधी file रिकामी करतो (overwrite). >> शेवटी जोडतो (append). दोन्ही file नसेल तर बनवतात. cat > file तुम्ही type केलेलं Ctrl+D पर्यंत वाचतो.

नेहमीचे options

Optionकाय करतो
cat a > ba ला b मधे; जुनं b content जातं.
cat a >> ba ला b च्या शेवटी जोडा.
cat > ff मधे text type; Ctrl+D ने save.
cat >> fText type करून f मधे जोडा.
set -o noclobber> ला overwrite करू देत नाही.

कसं करायचं (step by step)

  1. Type करून नवी file.
cat > guests.txt
Rohan
Meera
(press Ctrl+D)

याचा अर्थ: guests.txt मधे दोन lines save.

  1. >> ने आणखी एक नाव.
cat >> guests.txt
Kabir
(press Ctrl+D)
cat guests.txt

Output:

Rohan
Meera
Kabir

याचा अर्थ: >> ने जुन्या lines ठेवून Kabir जोडला.

  1. > काय करतो ते बघा.
cat > guests.txt
Zoya
(press Ctrl+D)
cat guests.txt

Output:

Zoya

याचा अर्थ: > ने आधी file रिकामी केली. बाकी नावं गेली.

  1. > पासून files वाचवा.
set -o noclobber
cat menu.txt > guests.txt

Output:

bash: guests.txt: cannot overwrite existing file

याचा अर्थ: आता > नकार देतो. खरंच हवं असेल तर >|.

खालच्या tasks मधे सराव करा: सराव tasks

3. tac: lines उलट्या क्रमाने

हे का लागतं?

Logs मधे नव्या lines खाली. कधी नव्या आधी हव्यात.

हे काय आहे?

tac शेवटची line आधी आणि पहिली शेवटी print करतो. cat उलटं लिहिलं. rev शी गोंधळू नका, rev प्रत्येक line मधले characters उलटे करतो.

कसं करायचं (step by step)

  1. tac ने नव्या lines आधी.
tac app.log | head -3

Output:

10:05 order 1003 paid
10:04 order 1002 paid
10:03 order 1001 created

याचा अर्थ: tac = उलटा cat.

  1. rev शी तुलना.
echo 'Pune' | rev

Output:

enuP

याचा अर्थ: rev characters उलटे, tac lines उलट्या.

4. nl: lines ना number

हे का लागतं?

Reviews आणि tickets मधे 'line 14 बघा' म्हणतो. Numbers ने सोपं.

हे काय आहे?

nl default non-empty lines ना number देतो (cat -b सारखं). -ba सगळ्या lines, -w3 width, -s': ' separator.

कसं करायचं (step by step)

  1. nl रिकाम्या lines skip करतो.
nl shopping.txt

Output:

     1	milk
     2	bread

     3	eggs

याचा अर्थ: Code review साठी उपयोगी.

  1. Custom separator सह प्रत्येक line.
nl -ba -w2 -s': ' shopping.txt

Output:

 1: milk
 2: bread
 3: 
 4: eggs

याचा अर्थ: -ba रिकामी line 3 पण घेतो.

5. less: मोठ्या files बिनधास्त वाचा

हे का लागतं?

2 GB log cat ने print केला तर screen भरून जातो आणि slow SSH session अडकू शकतो. Scroll, search आणि jump करता यायला हवं.

हे काय आहे?

less file एका वेळी एक screen उघडतो आणि सगळी memory मधे load करत नाही. Keys: Space किंवा f पुढचं page, b मागे, g वर, G खाली, /word पुढे search, ?word मागे search, n पुढचा match, N मागचा, q बाहेर, F tail -f सारखं follow (थांबायला Ctrl+C). Options: -N line numbers, -S लांब lines wrap नाही, +G शेवटी उघडा, -R colours ठेवा. more हा जुना, साधा pager.

Keyकाय करते
Space / bपुढचं / मागचं page
g / Gवर / खाली
/textपुढे search
n / Nपुढचा / मागचा match
Fनव्या lines follow
&textफक्त text असलेल्या lines
qबाहेर

कसं करायचं (step by step)

  1. मोठा log उघडा.
less /var/log/syslog

Output:

Oct 25 09:00:01 web-01 CRON[1201]: (root) CMD (backup.sh)
:

याचा अर्थ: खाली : म्हणजे less key ची वाट बघतोय.

  1. Line numbers सह शेवटी उघडा.
less -N +G /var/log/nginx/access.log

Output:

  48211 10.0.0.7 - - [25/Oct/2026:10:15:02] "GET /cart HTTP/1.1" 200

याचा अर्थ: शेवटच्या line वर, number 48211.

  1. less मधे error search.
/ERROR

Output:

10:12:44 ERROR payment timeout order=8812

याचा अर्थ: पुढच्या ERROR ला n.

  1. Command output page by page.
ps aux | less -S

Output:

USER  PID %CPU %MEM COMMAND
root    1  0.0  0.1 /sbin/init

याचा अर्थ: -S लांब lines wrap होऊ देत नाही. डावी उजवी arrow keys.

  1. Unzip न करता compressed log.
zless /var/log/syslog.2.gz

Output:

Oct 23 00:00:01 web-01 systemd[1]: Started Daily apt upgrade

याचा अर्थ: zless, zcat, zgrep थेट .gz वर चालतात.

6. more: साधा pager

हे का लागतं?

छोट्या systems वर (rescue mode, BusyBox) less नसू शकतो, पण more नेहमी असतो.

हे काय आहे?

more एका वेळी एक screen. Space पुढचं page, Enter पुढची line, /text search, q बाहेर. मागे नीट जाता येत नाही. less असेल तर तो वापरा.

कसं करायचं (step by step)

  1. File page by page.
more /etc/services

Output:

# /etc/services
tcpmux 1/tcp
--More--(2%)

याचा अर्थ: --More-- किती पुढे आलात ते.

  1. Command output page by page.
dmesg | more

Output:

[    0.000000] Linux version 6.1.0
--More--

याचा अर्थ: Pipe मधे पण चालतं.

7. head आणि tail: सुरुवात आणि शेवट

हे का लागतं?

बहुतेक वेळा CSV चा header किंवा log च्या शेवटच्या काही lines पुरतात.

हे काय आहे?

head पहिल्या 10 lines, tail शेवटच्या 10. -n N म्हणजे N lines. head -c N म्हणजे N bytes. head -n -5 म्हणजे शेवटच्या 5 सोडून सगळ्या. tail -n +2 line 2 पासून (header skip). मधला भाग: head -n 30 | tail -n 11 म्हणजे lines 20 ते 30.

कसं करायचं (step by step)

  1. CSV च्या पहिल्या 3 lines.
head -n 3 sales.csv

Output:

date,city,amount
2026-10-01,Pune,4500
2026-10-01,Nashik,3200

याचा अर्थ: Line 1 header आहे.

  1. Log च्या शेवटच्या 5 lines.
tail -n 5 /var/log/auth.log

Output:

Oct 25 10:20:11 web-01 sshd[2231]: Accepted publickey for ravi from 10.0.0.5

याचा अर्थ: नव्या घटना शेवटी.

  1. Header skip करा.
tail -n +2 sales.csv | head -n 2

Output:

2026-10-01,Pune,4500
2026-10-01,Nashik,3200

याचा अर्थ: +2 म्हणजे line 2 पासून.

  1. Lines 20 ते 30.
head -n 30 app.log | tail -n 11

Output:

(11 lines: 20..30)

याचा अर्थ: किंवा sed -n '20,30p' app.log (पुढच्या chapters मधे).

  1. अनेक files एकदम.
head -n 1 *.csv

Output:

==> jan.csv <==
date,city,amount

==> feb.csv <==
date,city,amount

याचा अर्थ: प्रत्येक file साठी ==> name <== banner. -q लपवतो.

  1. 5 सगळ्यात मोठे folders.
du -sh /var/* 2>/dev/null | sort -rh | head -5

Output:

2.1G /var/log
800M /var/lib
120M /var/cache

याचा अर्थ: अनेक 'top N' pipelines चा शेवटचा step head.

8. tail -f आणि tail -F: logs live बघा

हे का लागतं?

Deploy किंवा debug करताना नवीन log lines लिहिल्याबरोबर दिसाव्यात.

हे काय आहे?

tail -f file open ठेवतो आणि नव्या lines print करतो. Log rotate झाला (rename होऊन नवी file) तर -f जुनीच file बघत राहतो आणि शांत होतो. tail -F (म्हणजे --follow=name --retry) नावाने नवी file परत उघडतो, म्हणून servers वर -F. Ctrl+C ने थांबवा. --pid=PID process संपला की थांबतो. systemd services साठी journalctl -u name -f.

कसं करायचं (step by step)

  1. Web log follow करा.
tail -f /var/log/nginx/access.log

Output:

10.0.0.9 - - [25/Oct/2026:10:30:01] "GET / HTTP/1.1" 200 612
(waits for new lines...)

याचा अर्थ: Cursor थांबतो. नवे requests live दिसतात.

  1. Log rotation मधेही safe follow.
tail -F /var/log/app/app.log

Output:

tail: '/var/log/app/app.log' has been replaced;  following new file
10:31:00 INFO started

याचा अर्थ: -F ने नवी file ओळखली आणि चालू राहिला.

  1. दोन logs एकत्र follow.
tail -F app.log worker.log

Output:

==> app.log <==
10:32 GET /api/orders

==> worker.log <==
10:32 job 77 done

याचा अर्थ: कोणत्या file ची line ते banners दाखवतात.

  1. फक्त errors follow.
tail -F app.log | grep --line-buffered ERROR

Output:

10:33:12 ERROR db timeout

याचा अर्थ: --line-buffered मुळे pipe मधे grep लगेच print करतो.

  1. systemd service follow.
journalctl -u nginx -f

Output:

Oct 25 10:34:01 web-01 nginx[880]: reload done

याचा अर्थ: Journal ला log करणाऱ्या services साठी journalctl हाच tail -f.

9. wc: lines, words आणि bytes मोजा

हे का लागतं?

किती users? आज किती errors? File रिकामी आहे का? मोजणी अनेक ops प्रश्नांना पटकन उत्तर देते.

हे काय आहे?

wc lines, words आणि bytes print करतो. -l lines, -w words, -c bytes, -m characters (Unicode साठी), -L सगळ्यात लांब line. Pipe सोबत फक्त number (file नाव नाही), scripts साठी उत्तम. लक्षात ठेवा: wc -l newline characters मोजतो, म्हणून newline नसलेली शेवटची line मोजली जात नाही.

कसं करायचं (step by step)

  1. सगळं मोजा.
wc notes.txt

Output:

  12  85 512 notes.txt

याचा अर्थ: 12 lines, 85 words, 512 bytes.

  1. फक्त lines.
wc -l /etc/passwd

Output:

38 /etc/passwd

याचा अर्थ: 38 user accounts.

  1. Scripts साठी फक्त number.
wc -l < /etc/passwd

Output:

38

याचा अर्थ: < ने file नाव लपतं.

  1. Log मधले errors मोजा.
grep ERROR app.log | wc -l

Output:

27

याचा अर्थ: grep -c ERROR app.log सारखंच.

  1. Marathi text मधे bytes vs characters.
echo -n 'पुणे' | wc -c; echo -n 'पुणे' | wc -m

Output:

12
4

याचा अर्थ: UTF-8 मधे प्रत्येक देवनागरी character ला 3 bytes.

  1. Folder मधल्या files मोजा.
ls /etc/nginx/conf.d | wc -l

Output:

4

याचा अर्थ: पटकन count. विचित्र नावांसाठी find (chapter 12).

10. tee: output save करा आणि बघा पण

हे का लागतं?

Upgrade करताना output बघायचं आणि नंतरसाठी log file पण ठेवायची. किंवा normal shell मधून root च्या file मधे लिहायचं.

हे काय आहे?

tee input वाचून screen वर आणि एक किंवा अधिक files मधे लिहितो, T आकाराच्या pipe जोडासारखा. -a overwrite न करता append. Protected files मधे लिहायचा योग्य मार्ग sudo tee file, कारण sudo echo x > file मधे > तुमच्या नावाने चालतं, root म्हणून नाही. Screen copy लपवायला > /dev/null.

कसं करायचं (step by step)

  1. Upgrade बघा आणि save करा.
sudo dnf -y upgrade 2>&1 | tee upgrade-$(date +%F).log

Output:

Upgrading: openssl 3.0.7 ...
Complete!

याचा अर्थ: 2>&1 errors पण पकडतो. Log चं नाव date ने.

  1. Log ला append.
echo "$(date +%T) deploy v42 by Neha" | tee -a deploy.log

Output:

10:40:02 deploy v42 by Neha

याचा अर्थ: -a जुन्या lines ठेवतो.

  1. Root file योग्य प्रकारे लिहा.
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swap.conf

Output:

vm.swappiness=10

याचा अर्थ: चालतं. sudo echo ... > file Permission denied देईल.

  1. दोन files मधे save.
df -h | tee disk-now.txt disk-$(hostname).txt > /dev/null && ls disk-*

Output:

disk-now.txt  disk-web-01.txt

याचा अर्थ: > /dev/null screen copy लपवतो.

  1. Pipe चा मधला भाग save.
cat access.log | tee raw.txt | grep ' 500 ' | wc -l

Output:

14

याचा अर्थ: raw.txt मधे सगळ्या lines, count फक्त 500 errors चा.

11. अनेक industries मधली खरी उदाहरणं

हे का लागतं?

तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.

हे काय आहे?

प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.

कसं करायचं (step by step)

Team आणि शहरते कसं वापरतातCommand
Priya, e-commerce SRE, BengaluruSale वेळी checkout logs live followtail -F /var/log/shop/checkout.log
Lukas, bank ops, Frankfurtप्रत्येक patch run चा log ठेवतोsudo apt upgrade 2>&1 | tee -a patch.log
Fatima, telecom NOC, Dubaiदर तासाचे dropped calls मोजतेgrep DROP cdr.log | wc -l
Arjun, hospital IT, NagpurPatient data import आधी CSV header बघतोhead -n 1 patients.csv
Chen, game studio, TaipeiSearch सह crash logs page by pageless -N crash.log
Olivia, media, LondonDaily view files एका monthly file मधेcat views-2026-10-*.csv > views-oct.csv

12. नेहमीच्या errors आणि त्यांचे fixes

हे का लागतं?

हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.

हे काय आहे?

आधी नेमका message वाचा. मग खालच्या row शी जुळवा.

कसं करायचं (step by step)

दिसणारा errorका होतंFix कसा करायचा
cat: app.log: No such file or directoryचुकीचा path किंवा नाव (Linux case sensitive)ls ने बघा, Tab completion वापरा.
ls -l /var/log/app/
cat: /var/log/secure: Permission deniedFile फक्त root किंवा group ला वाचता येतेsudo वापरा, किंवा Ubuntu वर adm group.
sudo less /var/log/secure
bash: /etc/sysctl.d/x.conf: Permission denied (with sudo echo >)> redirect तुमच्या user म्हणून चालतो, root नाहीsudo tee मधे pipe करा.
echo 'x=1' | sudo tee /etc/sysctl.d/x.conf
tail -f shows nothing after midnightlogrotate ने file बदलली; -f जुनीच बघतोtail -F वापरा.
tail -F /var/log/app.log
Screen full of strange symbols after catBinary file print केलीआधी file ने तपासा, terminal साठी reset.
file data.bin; reset
cat: big.log: input file is output fileFile स्वतःमधेच redirect केलीनव्या file मधे लिहा, मग move.
cat a big.log > new.log && mv new.log big.log
wc -l shows one less than expectedशेवटच्या line ला newline नाहीNewline जोडा किंवा grep -c '' ने मोजा.
grep -c '' file.txt
head: invalid number of lines: '5x'-n नंतर चुकीचा numberसाधा number द्या.
head -n 5 file.txt
less: WARNING: terminal is not fully functionalTERM set नाही (cron किंवा विचित्र SSH)TERM set करा.
export TERM=xterm-256color
Pipe output appears late with tail -f | grepPipe मधे grep output buffer करतो--line-buffered जोडा.
tail -F app.log | grep --line-buffered ERROR

13. Troubleshooting step by step

हे का लागतं?

Log चुकीचा किंवा रिकामा वाटला तर file, size, permissions आणि अजून लिहिली जातेय का ते तपासा.

हे काय आहे?

वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.

कसं करायचं (step by step)

  1. File आहे का, किती मोठी?
ls -lh /var/log/app/app.log
  1. Text आहे की binary?
file /var/log/app/app.log
  1. वाचता येते का?
head -n 2 /var/log/app/app.log || sudo head -n 2 /var/log/app/app.log
  1. आत्ता कोणी लिहितंय का?
sudo lsof /var/log/app/app.log
  1. Rotate झाली का? .1 किंवा .gz files.
ls -lt /var/log/app/ | head
  1. App journal मधे log करतंय का?
journalctl -u app --since '10 min ago'
  1. Windows line ends किंवा tabs तपासा.
cat -A /var/log/app/app.log | head -3

14. Lab 1: Web server log तपासा आणि follow करा

हे का लागतं?

Fake access log बनवा, head, tail, less ने वाचा, live follow करा आणि errors मोजा.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. Folder आणि sample log बनवा.
mkdir -p ~/lab7 && cd ~/lab7 && for i in $(seq 1 200); do echo "10.0.0.$((i%9)) GET /p$i $([ $((i%10)) -eq 0 ] && echo 500 || echo 200)"; done > access.log

Output:

(no output)
  1. Lines मोजा.
wc -l access.log

Output:

200 access.log
  1. सुरुवात आणि शेवट बघा.
head -n 3 access.log; tail -n 2 access.log

Output:

10.0.0.1 GET /p1 200
10.0.0.2 GET /p2 200
10.0.0.3 GET /p3 200
10.0.0.1 GET /p199 200
10.0.0.2 GET /p200 500
  1. 500 errors मोजा.
grep -c ' 500$' access.log

Output:

20
  1. एका terminal मधे live follow.
tail -F access.log

Output:

(waits)
  1. दुसऱ्या terminal मधे line जोडा.
echo '10.0.0.7 GET /new 200' >> ~/lab7/access.log

Output:

(first terminal shows the new line)
  1. Ctrl+C ने थांबा आणि less मधे शेवटी उघडा.
less -N +G access.log

Output:

   201 10.0.0.7 GET /new 200

15. Lab 2: tee ने patch run save करा

हे का लागतं?

Command चालवा, बघा आणि dated log ठेवा. Root file safely लिहा.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. चालवा आणि log एकाच वेळी.
uname -a 2>&1 | tee -a ~/lab7/run-$(date +%F).log

Output:

Linux web-01 6.1.0 x86_64 GNU/Linux
  1. परत चालवा, log वाढला का.
uptime | tee -a ~/lab7/run-$(date +%F).log >/dev/null; wc -l ~/lab7/run-*.log

Output:

2 /home/ravi/lab7/run-2026-10-25.log
  1. Root file लिहायचा चुकीचा मार्ग.
sudo echo 'hello' > /etc/lab7.conf

Output:

bash: /etc/lab7.conf: Permission denied
  1. योग्य मार्ग.
echo 'hello' | sudo tee /etc/lab7.conf

Output:

hello
  1. Clean up.
sudo rm /etc/lab7.conf

Output:

(no output)

Ravindra Bagale's Tip

On servers always use tail -F, not tail -f. Logs get rotated at night, and -F keeps following the new file so you do not miss the error you are waiting for.

16. नेहमी विचारले जाणारे प्रश्न

प्र. सगळ्यासाठी cat का नाही?

छोट्या files साठी cat ठीक. लांब files मधे screen भरतो. less ने scroll आणि search, head/tail ने हवा तेवढाच भाग.

प्र. 'useless use of cat' म्हणजे काय?

cat file | grep x चालतं पण एक जास्तीचा process. grep x file तेच करतो. फार फरक नाही, पण interviewers ना clean form आवडतो.

प्र. tail -f आणि tail -F मधे फरक?

-f open file follow करतो. -F नाव follow करून retry करतो, म्हणून log rotation मधे टिकतो.

प्र. less पूर्ण file load करतो का?

नाही. लागेल तेवढंच वाचतो, म्हणून मोठ्या files पटकन उघडतो.

प्र. wc -c आणि wc -m वेगळे का?

-c bytes, -m characters मोजतो. English नसलेल्या अक्षरांना UTF-8 मधे एकापेक्षा जास्त bytes.

प्र. Lines 100 ते 120 कशा बघायच्या?

head -n 120 file | tail -n 21, किंवा sed -n '100,120p' file.

प्र. tee अनेक files मधे लिहू शकतो का?

हो, सगळ्या द्या: tee a.txt b.txt.

प्र. .gz logs कसे वाचायचे?

zcat, zless किंवा zgrep. Unzip ची गरज नाही.

17. मुलाखत प्रश्न आणि उत्तरं

Beginner level

प्र. cat काय करतो?

एक किंवा अधिक files screen वर print करतो आणि जोडू शकतो.

प्र. File च्या शेवटच्या 20 lines कशा बघाल?

tail -n 20 file.

प्र. File मधल्या lines कशा मोजाल?

wc -l file, फक्त number साठी wc -l < file.

प्र. less मधून बाहेर कसं पडाल?

q दाबा.

Mid level level

प्र. Production वर tail -F का?

Logs rotate होतात. -F नावाने follow करून नवी file उघडतो; -f जुनी renamed file बघत राहील.

प्र. 'sudo echo x > /etc/file' का fail होतं?

sudo चालायच्या आधी shell तुमच्या user म्हणून > redirect करतो. echo x | sudo tee /etc/file वापरा.

प्र. Lines 50 ते 60 कशा print कराल?

head -n 60 f | tail -n 11, किंवा sed -n '50,60p' f.

प्र. CSV header कसा skip कराल?

tail -n +2 file.csv.

Senior level

प्र. Script wc -l ने lines मोजते आणि एकाने कमी येतं. का?

शेवटच्या line ला newline नाही. wc newline characters मोजतो. Producer fix करा किंवा grep -c ''.

प्र. tail -f | grep उशिरा lines दाखवतो. का आणि fix?

stdout pipe/file असेल तर grep block-buffer करतो. --line-buffered किंवा stdbuf -oL.

प्र. छोट्या server वर 20 GB log safely कसा बघाल?

less (सगळं load करत नाही), किंवा tail/head, gz साठी zless. cat आणि RAM मधे load करणारे editors टाळा.

प्र. मोठा log delete केला तरी disk full. काय झालं?

Process ने file अजून open ठेवली, म्हणून space मोकळी नाही. lsof +L1 ने शोधा आणि restart करा, किंवा पुढच्या वेळी delete आधी : > file ने truncate.

घरी करून बघा

  1. कोणताही chat किंवा मोठा text file मधे export करा. wc ने lines आणि words मोजा, head/tail ने पहिले आणि शेवटचे messages, less ने नाव search करा.
  2. 'ping -c 5 google.com | tee ping.txt' चालवा आणि ping.txt मधे तेच output आहे का बघा.

सराव Tasks

या scenario बद्दल

Maple Leaf Books हा टोरांटो मधला पुस्तक विक्री व्यवसाय आहे. Emily Tremblay त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे CAD मध्ये मोजले जातात आणि AWS resources ca-central-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 21

सोपं Line numbers सह file

का: Reviews मधे line numbers मदत करतात.

काय करायचं: Emily Tremblay ला Maple Leaf Books ची app.conf प्रत्येक line ला number सह cat ने बघायची आहे.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं नव्या log lines आधी

का: नव्या events खाली.

काय करायचं: audit.log उलट्या line क्रमाने print.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Numbers सह मोठा log

का: 2 GB file cat करू नका.

काय करायचं: /var/log/messages less मधे line numbers सह उघडा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं पहिल्या 5 lines

का: CSV header पटकन बघा.

काय करायचं: Maple Leaf Books च्या sales.csv च्या पहिल्या 5 lines.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं शेवटच्या 20 lines

का: अलीकडचे errors शेवटी.

काय करायचं: /var/log/secure च्या शेवटच्या 20 lines.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Lines मोजा

का: किती users आहेत?

काय करायचं: /etc/group मधल्या lines मोजा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Words मोजा

का: Blog posts ना word limit.

काय करायचं: post.md मधले words मोजा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं less मधून बाहेर

का: नवे users अडकतात.

काय करायचं: less मधून कोणती एक key बाहेर काढते?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं Append operator

का: Logs वाढावेत, reset नकोत.

काय करायचं: कोणता operator file मधलं न पुसता output शेवटी जोडतो?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं Overwrite operator

का: File काय पुसतं ते माहीत हवं.

काय करायचं: कोणता एक operator output file मधे पाठवतो आणि आधी file रिकामी करतो?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

सोपं cat input संपवा

का: Users cat मधे अडकतात.

काय करायचं: cat ने file मधे lines type केल्या. कोणतं key combo input संपवून save करतं?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम लपलेले characters

का: Windows line ends scripts तोडतात.

काय करायचं: deploy.sh मधे tabs आणि line ends दाखवा म्हणजे ^M दिसेल.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम दोन files जोडा

का: Monthly exports तुकड्यांत येतात.

काय करायचं: jan.csv आणि feb.csv (याच क्रमाने) q1.csv मधे जोडा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम nl ने सगळ्या lines

का: काही reviews मधे blank lines पण मोजतात.

काय करायचं: nl ने notes.txt च्या रिकाम्या lines सकट प्रत्येक line ला number.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Header row skip

का: Totals मधे header नको.

काय करायचं: leads.csv line 2 पासून print.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Rotate होणारा log follow

का: logrotate नंतर -f थांबतो.

काय करायचं: /var/log/api/api.log live follow करा, file rotate झाली तरी चालू राहील.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Error lines मोजा

का: पटकन health number.

काय करायचं: grep आणि wc pipe ने worker.log मधल्या WARN lines मोजा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Output save आणि बघा

का: Upgrades चा record.

काय करायचं: df -h चालवा, output disk.txt मधे save करा आणि screen वर पण दाखवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम tee ने append

का: जुने records जाऊ देऊ नका.

काय करायचं: date चा output tee ने deploy.log मधे append करा, जुन्या lines ठेवून.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Overwrite पासून वाचवा

का: एका typo ने file पुसली जाते.

काय करायचं: कोणतं bash option (set -o सोबत) > ला असलेल्या files overwrite करू देत नाही?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड Pipe मधून root file

का: sudo echo > file चालत नाही.

काय करायचं: echo आणि sudo tee ने vm.max_map_count=262144 /etc/sysctl.d/99-maps.conf मधे लिहा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

थोडक्यात सांगायचं तर

  1. cat print आणि join; -n numbers, -A hidden characters.
  2. मोठ्या files साठी less: /search, n, G, q, F.
  3. head आणि tail सुरुवात/शेवट; tail -n +2 header skip.
  4. tail -F rotation मधेही logs follow.
  5. wc -l lines मोजतो; wc -l < file फक्त number.
  6. tee save आणि दाखवतो; sudo tee root files लिहितो.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

Files पटकन बघा. Editor न उघडता files वाचा. छोटी cat, मोठी less, टोकं head/tail. Lines ना number, लपलेले chars. Log च्या शेवटच्या 20 lines.
उजळणी card: Files पटकन बघा · PNG download करा · Card page उघडा
Live logs follow. Errors झाल्या क्षणी दिसतात. tail -F rotation नंतरही चालू. tee ने save आणि बघा एकदम. Follow करून errors filter.
उजळणी card: Live logs follow · PNG download करा · Card page उघडा
cat vs less. पूर्ण file print. / एका वेळी एक screen.
तुलना: cat vs less · PNG download करा · Card page उघडा
head vs tail. पहिल्या lines. / शेवटच्या lines.
तुलना: head vs tail · PNG download करा · Card page उघडा
5 GB log cat का नको?. Terminal भरून जातो. less फक्त दिसणारं load करतो. मोठे logs शेवटी उघडा.
मुलाखत card: 5 GB log cat का नको? · PNG download करा · Card page उघडा
tail -f vs tail -F?. -f open file follow करतो. -F rotation नंतर पुन्हा उघडतो. App logs साठी -F.
मुलाखत card: tail -f vs tail -F? · PNG download करा · Card page उघडा
sudo echo > file का fail?. Redirection तुमच्या user ने. tee ला root म्हणून लिहू द्या. Root file लिहा.
मुलाखत card: sudo echo > file का fail? · PNG download करा · Card page उघडा
नावाशिवाय lines मोजा?. Scripts ना फक्त number. wc ला input redirect. फक्त number.
मुलाखत card: नावाशिवाय lines मोजा? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.