Shell Scripting Complete 12: bash -x, ShellCheck आणि Logging ने Debugging
प्रत्येक script कधीतरी बिघडते. 5 मिनिटांचा fix आणि वाया गेलेली रात्र यातला फरक म्हणजे script काय करते ते तुम्ही किती नीट बघू शकता. या chapter मधे syntax check साठी bash -n, tracing साठी bash -x आणि set -x, line numbers सह चांगला PS4, फक्त एक भाग trace करणं, चालण्याआधी bugs शोधायला ShellCheck, timestamps आणि levels सह logging, logger आणि journald, आणि शांत step-by-step debugging पद्धत शिकाल. प्रत्येक topic रोजच्या उदाहरणाने सुरू होतो आणि मग अनेक industries ची उदाहरणं.
या chapter मध्ये तुम्ही काय शिकाल
- bash -n ने syntax check
- bash -x, set -x आणि PS4 ने trace
- ShellCheck ने bugs लवकर शोधा
- Time आणि level सह log function लिहा
- Logs syslog आणि journald ला पाठवा
- Step by step debug
1. रोजचं उदाहरण: doctor चा check-up
हे का लागतं?
बरं वाटत नसेल तेव्हा पुण्यातली चांगली doctor अंदाज लावत नाही. ती temperature, BP आणि pulse बघते, काय खाल्लं ते विचारते, आणि जुने reports बघते. मग कारण शोधते. Script debug करणं तसंच: syntax check करा, tracing ने प्रत्येक step बघा, logs वाचा, आणि problems सुरू होण्याआधी ShellCheck ला routine check-up करू द्या.
हे काय आहे?
Routine check-up = shellcheck. जीभ बघणं = bash -n. Pulse live बघणं = set -x. Patient चे जुने reports = timestamps सह logs. Symptoms लिहून ठेवणं = log levels INFO, WARN, ERROR.
कसं करायचं (step by step)
2. Syntax check: bash -n
हे का लागतं?
Deploy script मधला missing fi किंवा done production वर चालण्याआधी पकडला जावा.
हे काय आहे?
bash -n script.sh काहीही न चालवता script वाचून syntax errors सांगतो. Missing fi, done, esac, quotes आणि brackets पकडतो. चुकीचे commands किंवा logic पकडत नाही, म्हणून पहिली quick step म्हणून वापरा, बहुदा CI किंवा git hook मधे.
कसं करायचं (step by step)
- Clean script.
bash -n deploy.sh && echo 'syntax ok'
Output:
syntax ok
याचा अर्थ: काही चाललं नाही.
- Missing fi.
bash -n broken.sh
Output:
broken.sh: line 9: syntax error: unexpected end of file
याचा अर्थ: Line शेवटाजवळ दाखवते.
- अनेक check.
for f in scripts/*.sh; do bash -n "$f" || echo "BAD $f"; done
Output:
BAD scripts/old-import.sh
याचा अर्थ: Batch check.
3. Tracing: bash -x आणि set -x
हे का लागतं?
चुकीचा result दिसतो पण का नाही. Tracing प्रत्येक command variables भरून दाखवतो.
हे काय आहे?
bash -x script.sh प्रत्येक command expansion नंतर + सह print करतो. Script मधे set -x on करतो आणि set +x off, म्हणून फक्त अवघड भाग trace करता येतो. Trace stderr ला जातो. bash -v lines वाचल्या तशा, expansion आधी print करतो. BASH_XTRACEFD=3 trace दुसऱ्या file descriptor ला पाठवतो.
कसं करायचं (step by step)
- सगळं trace.
bash -x greet.sh Asha
Output:
+ name=Asha
+ echo 'Hello Asha'
Hello Asha
याचा अर्थ: Values दिसतात.
- एक भाग trace.
set -x
files=$(find /data -mtime +7 | wc -l)
set +x
Output:
++ find /data -mtime +7
++ wc -l
+ files=12
याचा अर्थ: फक्त हा block.
- File मधे trace.
exec 5> /tmp/trace.log; BASH_XTRACEFD=5; set -x
याचा अर्थ: Screen clean राहतो.
- DEBUG=1 असेल तरच trace.
[[ ${DEBUG:-0} == 1 ]] && set -x
याचा अर्थ: DEBUG=1 ./job.sh असं चालवा.
4. PS4 ने चांगले traces
हे का लागतं?
500 lines च्या script मधे + echo done तुम्ही कुठे आहात ते सांगत नाही.
हे काय आहे?
PS4 म्हणजे प्रत्येक trace line आधी print होणारा prefix. File, line आणि function दाखवायला set करा: export PS4='+ ${BASH_SOURCE##*/}:${LINENO}:${FUNCNAME[0]:-main}: '. Single quotes वापरा म्हणजे प्रत्येक line ला values भरल्या जातात. Timing साठी $(date +%T) जोडा, पण tracing slow होतं.
कसं करायचं (step by step)
- Line numbers.
PS4='+ ${LINENO}: ' bash -x backup.sh
Output:
+ 4: src=/data
+ 5: tar czf /backup/data.tgz /data
याचा अर्थ: प्रत्येक step ची line.
- File आणि function.
export PS4='+ ${BASH_SOURCE##*/}:${LINENO}:${FUNCNAME[0]:-main}: '; bash -x deploy.sh
Output:
+ deploy.sh:21:health_check: curl -fs http://localhost/health
याचा अर्थ: Function कळतं.
- Time सह.
PS4='+ $(date +%T) ${LINENO}: ' bash -x slow.sh
Output:
+ 10:02:01 7: rsync -a src/ dst/
+ 10:04:39 8: echo synced
याचा अर्थ: rsync ला 2.5 min.
5. ShellCheck: चालण्याआधी bugs शोधा
हे का लागतं?
Missing quotes, चुकीचे tests आणि बिनकामाचे cats review मधे सुटतात आणि production मधे त्रास देतात.
हे काय आहे?
shellcheck script.sh script वाचून common bugs बद्दल warn करतो, प्रत्येकाला SC2086 (unquoted variable) सारखा code आणि explain करणारं wiki page. dnf, apt किंवा brew ने install. -S warning style notes लपवतो. खात्री असेल तेव्हा line वरची # shellcheck disable=SC2034 comment एक warning शांत करते. Editor आणि CI मधे चालवा म्हणजे प्रत्येक बदल check होतो.
| Code | अर्थ |
|---|---|
| SC2086 | splitting टाळायला quote |
| SC2046 | $( ) result quote |
| SC2164 | cd fail होऊ शकतो; || exit |
| SC2034 | variable वापरला नाही |
| SC2155 | declare आणि assign वेगळे |
कसं करायचं (step by step)
- Install.
sudo dnf install -y ShellCheck # Ubuntu: sudo apt install -y shellcheck
Output:
Complete!
याचा अर्थ: Package name वेगळं.
- Check.
shellcheck clean.sh
Output:
In clean.sh line 3:
rm -rf $dir/*
^--^ SC2086 (info): Double quote to prevent globbing and word splitting.
याचा अर्थ: खरा धोका सापडला.
- फक्त warnings आणि errors.
shellcheck -S warning *.sh
Output:
In run.sh line 7:
cd /opt/app
^---------^ SC2164 (warning): Use 'cd ... || exit' in case cd fails.
याचा अर्थ: Style लपली.
- CI मधे.
find . -name '*.sh' -print0 | xargs -0 shellcheck -S warning
याचा अर्थ: Non-zero build fail करतो.
6. Time आणि level सह log function
हे का लागतं?
echo 'done' दुसऱ्या दिवशी काहीच सांगत नाही. Log line ने कधी, किती गंभीर आणि काय ते सांगावं.
हे काय आहे?
एक log function लिहा: printf '%(%F %T)T [%s] %s\n' -1 "$level" "$*" >&2. info, warn आणि error wrappers जोडा. Logs stderr ला पाठवा म्हणजे stdout data साठी clean राहतो. exec 2> >(tee -a "$LOG" >&2) ने file मधे tee करा. LOG_LEVEL variable जोडा म्हणजे DEBUG lines गरज असेल तेव्हाच दिसतात.
कसं करायचं (step by step)
- Log function.
log(){ local l=$1; shift; printf '%(%F %T)T [%s] %s\n' -1 "$l" "$*" >&2; }
log INFO 'backup started'
Output:
2026-10-25 02:00:01 [INFO] backup started
याचा अर्थ: कधी, level, काय.
- Wrappers.
info(){ log INFO "$@"; }; warn(){ log WARN "$@"; }; err(){ log ERROR "$@"; }
warn 'disk at 82%'
Output:
2026-10-25 02:00:03 [WARN] disk at 82%
याचा अर्थ: grep करायला सोपं.
- Debug level.
debug(){ [[ ${LOG_LEVEL:-INFO} == DEBUG ]] && log DEBUG "$@"; return 0; }
LOG_LEVEL=DEBUG; debug "files=$n"
Output:
2026-10-25 02:00:04 [DEBUG] files=12
याचा अर्थ: Default लपलेलं.
- File मधेही.
exec 2> >(tee -a /var/log/backup.log >&2)
याचा अर्थ: सगळे logs save.
7. logger आणि journald
हे का लागतं?
Servers वर ops teams logs journalctl किंवा log shipper ने centrally शोधतात, random files मधे नाही.
हे काय आहे?
logger -t mytag 'message' tag सह syslog/journald ला लिहितो. -p user.err priority set करतो. journalctl -t mytag ने वाचा, --since today किंवा follow साठी -f. systemd ने चालवलेल्या scripts चं stdout आणि stderr आधीच journal मधे जातं, म्हणून साधा echo journalctl -u name मधे दिसतो.
कसं करायचं (step by step)
- लिहा.
logger -t nightly-backup 'backup ok: 2.1G'
याचा अर्थ: Journal मधे.
- Error priority.
logger -t nightly-backup -p user.err 'backup failed: disk full'
याचा अर्थ: journalctl मधे लाल.
- वाचा.
journalctl -t nightly-backup --since today
Output:
Oct 25 02:00:05 ip-10-0-1-5 nightly-backup[811]: backup ok: 2.1G
याचा अर्थ: Tagged lines.
- फक्त errors.
journalctl -t nightly-backup -p err
Output:
Oct 25 03:00:02 ip-10-0-1-5 nightly-backup[912]: backup failed: disk full
याचा अर्थ: Priority ने filter.
8. Step by step debugging
हे का लागतं?
Random बदल गोष्टी बिघडवतात. ठराविक पद्धत कारण लवकर शोधते.
हे काय आहे?
1. नेमका message आणि line वाचा. 2. bash -n आणि shellcheck. 3. Line numbers च्या PS4 सह bash -x. 4. संशयित values printf '[%s]\n' "$v" आणि od -c ने print करा, लपलेले spaces किंवा \r दिसतात. 5. Environment तपासा: cron आणि systemd कडे छोटा PATH आणि profile नाही. 6. Fail होणारं सगळ्यात छोटं उदाहरण बनवा. 7. एक गोष्ट बदला, test, repeat.
कसं करायचं (step by step)
- लपलेले characters.
printf '%s' "$host" | od -c
Output:
0000000 w e b 1 \r
याचा अर्थ: Windows चा \r.
- Env फरक.
env -i PATH=/usr/bin:/bin bash -c 'command -v aws || echo missing'
Output:
missing
याचा अर्थ: Cron सारखा PATH.
- एका जागी थांबा.
read -rp 'paused, press Enter ' _
Output:
paused, press Enter
याचा अर्थ: पुढे जाण्याआधी files बघा.
- कोणी call केलं?
echo "called from ${FUNCNAME[1]} line ${BASH_LINENO[0]}"
Output:
called from main line 42
याचा अर्थ: Call stack माहिती.
9. अनेक industries मधली खरी उदाहरणं
हे का लागतं?
तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.
हे काय आहे?
प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.
कसं करायचं (step by step)
| Team आणि शहर | ते कसं वापरतात | Command |
|---|---|---|
| Vaibhav, SaaS, Pune | प्रत्येक pull request मधे ShellCheck | shellcheck -S warning *.sh |
| Amelia, NHS trust, Leeds | Audit साठी timestamped logs | printf '%(%F %T)T [INFO] %s\n' -1 "$m" |
| Diego, mining, Santiago | Line numbers सह sensor upload trace | PS4='+ ${LINENO}: ' bash -x up.sh |
| Aisha, fintech, Lagos | Alerts साठी errors journald ला | logger -t pay -p user.err "$m" |
| Yuki, e-learning, Kyoto | मागितलं तरच debug | [[ $DEBUG == 1 ]] && set -x |
| Prakash, sugar factory, Satara | Cron PATH issue शोधा | env -i PATH=/usr/bin:/bin bash job.sh |
10. नेहमीच्या errors आणि त्यांचे fixes
हे का लागतं?
हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.
हे काय आहे?
आधी नेमका message वाचा. मग खालच्या row शी जुळवा.
कसं करायचं (step by step)
| दिसणारा error | का होतं | Fix कसा करायचा |
|---|---|---|
syntax error: unexpected end of file | fi, done किंवा quote नाही | bash -n चालवा आणि blocks जुळवा.bash -n s.sh |
$'\r': command not found | Windows line endings | LF मधे convert.sed -i 's/\r$//' s.sh |
shellcheck: command not found | Install नाही | Install करा.sudo dnf install -y ShellCheck |
Trace too noisy | पूर्ण script वर set -x | फक्त भाग trace.set -x; cmd; set +x |
Works in terminal, fails in cron | छोटा PATH, profile नाही | PATH किंवा full paths.PATH=/usr/local/bin:/usr/bin:/bin |
Logs mixed into output file | stdout ला log | Logs stderr ला.log ... >&2 |
SC2086 Double quote to prevent globbing | Unquoted variable | Quote करा.rm -rf "$dir"/* |
No line numbers in trace | Default PS4 | LINENO सह PS4.PS4='+ ${LINENO}: ' |
journalctl shows nothing for tag | चुकीचा tag किंवा permission नाही | Tag तपासा; sudo.sudo journalctl -t mytag |
11. Troubleshooting step by step
हे का लागतं?
प्रत्येक वेळी हाच क्रम वापरा म्हणजे साधं कारण सुटणार नाही.
हे काय आहे?
वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.
कसं करायचं (step by step)
- Syntax.
bash -n s.sh
- Lint.
shellcheck s.sh
- Lines सह trace.
PS4='+ ${LINENO}: ' bash -x s.sh
- लपलेले chars.
cat -A s.sh | head
- Env.
env | sort > /tmp/env.txt
- Logs.
journalctl -t mytag -n 50
12. Lab 1: ShellCheck आणि bash -x ने broken script fix
हे का लागतं?
Buggy cleanup script घ्या, bash -n, ShellCheck आणि tracing ने problems शोधा, आणि एकेक fix करा.
हे काय आहे?
पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).
कसं करायचं (step by step)
- Buggy script.
cat > ~/clean.sh <<'X'
#!/bin/bash
dir=$1
cd $dir
for f in $(ls *.tmp); do
rm $f
done
echo "removed from $dir"
X
- Syntax ok?
bash -n ~/clean.sh && echo ok
Output:
ok
- Lint.
shellcheck ~/clean.sh | grep -o 'SC[0-9]*' | sort -u
Output:
SC2045
SC2086
SC2164
- Fixed version.
cat > ~/clean.sh <<'X'
#!/usr/bin/env bash
set -euo pipefail
dir=${1:?usage: clean.sh DIR}
cd -- "$dir" || exit 1
for f in ./*.tmp; do [[ -e $f ]] || continue; rm -- "$f"; done
echo "removed from $dir"
X
shellcheck ~/clean.sh && echo clean
Output:
clean
- Test trace.
mkdir -p /tmp/t && touch '/tmp/t/a b.tmp' && PS4='+ ${LINENO}: ' bash -x ~/clean.sh /tmp/t
Output:
+ 3: dir=/tmp/t
+ 4: cd -- /tmp/t
+ 5: for f in ./*.tmp
+ 5: [[ -e ./a b.tmp ]]
+ 5: rm -- './a b.tmp'
+ 6: echo 'removed from /tmp/t'
removed from /tmp/t
13. Lab 2: Script ला logging जोडा
हे का लागतं?
Levels सह log function जोडा, file आणि journald ला लिहा, आणि LOG_LEVEL=DEBUG ने च debug on करा.
हे काय आहे?
पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).
कसं करायचं (step by step)
- Script.
cat > ~/job.sh <<'X'
#!/usr/bin/env bash
LOG=/tmp/job.log
log(){ local l=$1; shift; printf '%(%F %T)T [%s] %s\n' -1 "$l" "$*" | tee -a "$LOG" >&2; logger -t job -- "[$l] $*"; }
debug(){ [[ ${LOG_LEVEL:-INFO} == DEBUG ]] && log DEBUG "$@"; return 0; }
log INFO start
n=$(ls /etc | wc -l); debug "etc entries=$n"
log INFO done
X
chmod +x ~/job.sh
- Normal.
~/job.sh
Output:
2026-10-25 11:00:01 [INFO] start
2026-10-25 11:00:01 [INFO] done
- Debug.
LOG_LEVEL=DEBUG ~/job.sh
Output:
2026-10-25 11:00:09 [INFO] start
2026-10-25 11:00:09 [DEBUG] etc entries=212
2026-10-25 11:00:09 [INFO] done
- File.
wc -l < /tmp/job.log
Output:
5
- Journal.
journalctl -t job -n 3 --no-pager
Output:
Oct 25 11:00:09 host job[2201]: [INFO] start
Oct 25 11:00:09 host job[2203]: [DEBUG] etc entries=212
Oct 25 11:00:09 host job[2205]: [INFO] done
Ravindra Bagale's Tip
Make ShellCheck part of your habit, not a last-minute check: run it in your editor and in CI. When something still breaks, use bash -x with PS4='+ ${LINENO}: ' and print values in brackets. Most bugs are a missing quote, a hidden \r, or a different PATH.
Ravindra Bagale's Tip – मराठी
ShellCheck शेवटच्या क्षणाचा check नाही तर सवय बनवा: editor आणि CI मधे चालवा. तरीही काही बिघडलं तर PS4='+ ${LINENO}: ' सह bash -x वापरा आणि values brackets मधे print करा. बहुतेक bugs म्हणजे missing quote, लपलेला \r किंवा वेगळा PATH.
Ravindra Bagale's Tip – हिंदी
ShellCheck को आख़िरी पल का check नहीं, आदत बनाइए: editor और CI में चलाइए. फिर भी कुछ टूटे तो PS4='+ ${LINENO}: ' के साथ bash -x इस्तेमाल कीजिए और values brackets में print कीजिए. ज़्यादातर bugs एक missing quote, छिपा \r या अलग PATH होते हैं.
14. नेहमी विचारले जाणारे प्रश्न
प्र. bash -n code चालवतो?
नाही.
प्र. set -x कुठे print?
stderr.
प्र. एक ShellCheck rule शांत?
# shellcheck disable=SCxxxx.
प्र. sh साठी ShellCheck?
हो, shebang वाचतो.
प्र. Log stdout की stderr?
stderr.
प्र. PS4 काय?
Trace lines चा prefix.
प्र. Log rotation?
logrotate वापरा.
प्र. Trace secrets लपवतो?
नाही; त्यांच्याभोवती off करा.
15. मुलाखत प्रश्न आणि उत्तरं
Beginner level
प्र. फक्त syntax?
bash -n.
प्र. Script trace?
bash -x.
प्र. Tracing थांबवा?
set +x.
प्र. Lint tool?
ShellCheck.
Mid level level
प्र. Trace मधे line numbers?
LINENO सह PS4.
प्र. journald ला लिहा?
logger -t tag.
प्र. SC2086 अर्थ?
Variable quote करा.
प्र. Logs stderr ला का?
stdout data साठी.
Senior level
प्र. फक्त cron मधे failure?
env, PATH आणि working dir compare.
प्र. Passwords न दाखवता trace?
Secret lines भोवती set +x.
प्र. CI मधे lint?
shellcheck -S warning, build fail.
प्र. फक्त function debug?
आत set -x.
घरी करून बघा
- आधी लिहिलेल्या तीन scripts वर ShellCheck चालवा आणि प्रत्येक warning fix करा.
- या chapter मधलं log function एका script ला जोडा आणि journalctl मधे output तपासा.
सराव Tasks
Milan Furniture हा मिलान मधला फर्निचर व्यवसाय आहे. Giulia Rossi त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे EUR मध्ये मोजले जातात आणि AWS resources eu-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 21
सोपं Syntax check
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: Giulia Rossi ने Milan Furniture मधे release.sh edit केला. न चालवता syntax check करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Trace
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: प्रत्येक command चालताना दाखवत release.sh चालवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Trace on
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: Long option name ने tracing on करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Trace off
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: Long option name ने tracing off करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं ShellCheck
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: ShellCheck ने backup.sh lint करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Syslog ला लिहा
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: backup done message tag backup सह system log ला पाठवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं हे काय आहे
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: ll alias, function, builtin की file ते शोधा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Install आहे?
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: jq available आहे का आणि path print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Line numbers
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: deploy.sh line numbers सह print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Trace मधे line numbers
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: Traces मधे plus, line शब्द आणि line number दिसेल असा PS4 set करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Severity filter
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: backup.sh वर फक्त warnings आणि errors दाखवत ShellCheck चालवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Error priority
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: tag diskcheck सह user.err priority ने disk full log करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Tag ने वाचा
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: tag backup च्या शेवटच्या 20 journal entries दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम फक्त errors
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: आजच्या err आणि त्याहून वाईट priority च्या journal entries दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Variables तपासा
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: cfg variable चा type आणि value दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Verbose read
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: Line वाचताना print करत bash ने deploy.sh चालवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Windows endings fix
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: run.sh Windows line endings पासून Unix ला convert करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Code exclude
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: SC2034 ignore करून backup.sh वर ShellCheck चालवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड File ला trace
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: Variable वापरून bash trace output fd 9 ला पाठवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड CR chars शोधा
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: cat ने run.sh मधले hidden carriage returns दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Functions list
का: BIZ ला script bugs पटकन शोधायचे असतात.
काय करायचं: या shell मधल्या functions ची फक्त नावं list करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
16. संबंधित chapters
- DevOps साठी Linux Ops Refresh
- Automation साठी Bash Scripting
- Linux grep आणि find Commands Examples सह
- Linux Servers मध्ये Passwordless SSH
थोडक्यात सांगायचं तर
- bash -n फक्त syntax.
- bash -x आणि set -x/+x trace.
- PS4 line आणि function जोडतो.
- ShellCheck bugs लवकर शोधतो.
- Time आणि level सह stderr ला log.
- Servers साठी logger आणि journalctl.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.








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