Shell Scripting Complete 8: String Manipulation आणि Parameter Expansion (${var#}, ${var%}, ${var//}) सोप्या भाषेत
Scripts सतत text सोबत काम करतात: file names, dates, versions, URLs, log lines आणि user input. Bash स्वतःच text कापू, बदलू, trim करू, case बदलू आणि length मोजू शकतो, sed किंवा awk न बोलावता. याला parameter expansion म्हणतात. या chapter मधे ${#var} length, ${var:start:len} substrings, prefix आणि suffix काढायला # आणि %, replace साठी /, case साठी ^^ आणि ,, , :- := :? आणि :+ defaults, indirect names आणि clean formatting साठी printf शिकाल. प्रत्येक command ला आधी रोजचं उदाहरण आणि मग अनेक industries ची उदाहरणं.
या chapter मध्ये तुम्ही काय शिकाल
- Length मोजा आणि substrings कापा
- # आणि % ने prefix आणि suffix काढा
- / आणि // ने text replace करा
- ^^ आणि ,, ने case बदला
- Defaults :- := :? :+ वापरा
- printf ने output format करा
1. रोजचं उदाहरण: शिंपी आणि लांब कापड
हे का लागतं?
शिंप्याला लांब कापड मिळतं. तो ते मोजतो, पहिला भाग कापतो, कडा trim करतो आणि कधी patch बदलतो. यासाठी तो कापड दुसऱ्या दुकानात पाठवत नाही; कात्री आणि tape त्याच्या टेबलावरच असते. Bash parameter expansion म्हणजे text साठी कात्री आणि tape, तुमच्या script मधेच.
हे काय आहे?
कापड = variable मधली string. Tape = ${#var} length. तुकडा कापणं = ${var:start:len}. डावी कड trim = ${var#pattern}. उजवी कड trim = ${var%pattern}. Patch बदलणं = ${var/old/new}. काही दिलं नाही तर spare कापड = ${var:-default}.
कसं करायचं (step by step)
2. Length आणि substrings
हे का लागतं?
PIN code ला 6 digits आहेत का, किंवा 2026-10-25 सारख्या date मधून वर्ष घ्यायचं, हे नेहमी लागतं.
हे काय आहे?
${#v} characters ची संख्या देतो. ${v:start} position start पासून सगळं देतो (0 पासून मोजून). ${v:start:len} len characters देतो. Negative start शेवटून मोजतो पण space लागतो: ${v: -4}. हे bash मधेच आहेत, त्यामुळे मोठ्या loops मधेही fast.
| प्रकार | काय देतो |
|---|---|
| ${#v} | length |
| ${v:2} | index 2 पासून शेवटपर्यंत |
| ${v:0:4} | पहिले 4 chars |
| ${v: -3} | शेवटचे 3 chars |
| ${v:2:-1} | 2 पासून, शेवटचा 1 सोडून |
कसं करायचं (step by step)
- PIN ची length.
pin=411038; echo ${#pin}
Output:
6
याचा अर्थ: सहा characters.
- Date मधून वर्ष.
d=2026-10-25; echo "${d:0:4}"
Output:
2026
याचा अर्थ: 0 पासून 4.
- महिना.
echo "${d:5:2}"
Output:
10
याचा अर्थ: 5 पासून 2.
- Card चे शेवटचे चार.
card=4111222233334444; echo "XXXX-${card: -4}"
Output:
XXXX-4444
याचा अर्थ: minus आधी space लागतो.
- if मधे length तपासा.
mob=98220; (( ${#mob} == 10 )) || echo 'mobile must be 10 digits'
Output:
mobile must be 10 digits
याचा अर्थ: सोपं input validation.
3. # आणि ## ने prefix काढा
हे का लागतं?
Paths आणि URLs मधे नको असलेले भाग असतात: folder, https:// भाग, v1.4.2 मधला v.
हे काय आहे?
${v#pat} सुरुवातीपासून pat चा सगळ्यात लहान match काढतो. ${v##pat} सगळ्यात मोठा match काढतो. pat glob आहे, म्हणून * म्हणजे कोणताही text. ${path##*/} फक्त file name ठेवतो, basename सारखं, पण नवा process न चालवता.
कसं करायचं (step by step)
- Path मधून file name.
p=/var/log/nginx/access.log; echo "${p##*/}"
Output:
access.log
याचा अर्थ: सगळ्यात मोठा */ काढला.
- सगळ्यात लहान vs मोठा.
echo "${p#*/}"
Output:
var/log/nginx/access.log
याचा अर्थ: फक्त पहिला / काढला.
- Scheme काढा.
u=https://shop.example.in/cart; echo "${u#*://}"
Output:
shop.example.in/cart
याचा अर्थ: :// पर्यंत सगळं काढलं.
- v शिवाय version.
tag=v1.4.2; echo "${tag#v}"
Output:
1.4.2
याचा अर्थ: Fixed prefix पण चालतो.
4. % आणि %% ने suffix काढा
हे का लागतं?
report.csv चं report.json करायला, किंवा path मधून folder घ्यायला, शेवटचा भाग काढावा लागतो.
हे काय आहे?
${v%pat} शेवटून सगळ्यात लहान match काढतो; ${v%%pat} सगळ्यात मोठा. ${f%.*} शेवटचं extension काढतो. ${f%%.*} सगळी extensions काढतो (backup.tar.gz चं backup). ${p%/*} folder देतो, dirname सारखं. लक्षात ठेवायची युक्ती: keyboard वर # हा $ च्या डावीकडे, % उजवीकडे.
कसं करायचं (step by step)
- Extension बदला.
f=sales-2026.csv; echo "${f%.csv}.json"
Output:
sales-2026.json
याचा अर्थ: .csv काढून .json जोडलं.
- शेवटचं vs सगळी extensions.
b=backup.tar.gz; echo "${b%.*} ${b%%.*}"
Output:
backup.tar backup
याचा अर्थ: % लहान, %% मोठा.
- Path चा folder.
p=/srv/app/conf/app.yml; echo "${p%/*}"
Output:
/srv/app/conf
याचा अर्थ: dirname सारखं.
- Loop मधे सगळ्यांचं rename.
for f in *.jpeg; do mv -- "$f" "${f%.jpeg}.jpg"; done; ls
Output:
a.jpg b.jpg
याचा अर्थ: sed नको.
5. / आणि // ने text replace
हे का लागतं?
नावांमधले spaces, चुकीचा city code, किंवा log line मधला password: text बदलावा लागतो.
हे काय आहे?
${v/old/new} पहिला match बदलतो. ${v//old/new} सगळे. ${v/#old/new} फक्त सुरुवातीला, ${v/%old/new} फक्त शेवटी. new रिकामं ठेवलं तर delete: ${v// /}. old glob pattern आहे, म्हणून ${v//[0-9]/#} सगळे digits लपवतो.
| प्रकार | काय करतो |
|---|---|
| ${v/a/b} | पहिला a ते b |
| ${v//a/b} | प्रत्येक a ते b |
| ${v/#a/b} | सुरुवातीचा a |
| ${v/%a/b} | शेवटचा a |
| ${v// /} | सगळे spaces delete |
कसं करायचं (step by step)
- Spaces ते underscores.
n='Q3 sales report.pdf'; echo "${n// /_}"
Output:
Q3_sales_report.pdf
याचा अर्थ: सगळे spaces बदलले.
- फक्त पहिला.
echo "${n/ /_}"
Output:
Q3_sales report.pdf
याचा अर्थ: एक slash = पहिला.
- Digits लपवा.
acct=AC-9876-5432; echo "${acct//[0-9]/*}"
Output:
AC-****-****
याचा अर्थ: Pattern [0-9].
- शेवटी fix.
host=web1.local; echo "${host/%.local/.prod.in}"
Output:
web1.prod.in
याचा अर्थ: /% शेवटी anchor.
- सगळे dashes काढा.
ph=98-22-11-00-00; echo "${ph//-/}"
Output:
9822110000
याचा अर्थ: रिकामं replacement delete.
6. ^ ^^ , ,, ने case बदला
हे का लागतं?
Users Yes, YES किंवा yes type करतात. Environment names paths मधे lowercase पण labels मधे uppercase हवीत.
हे काय आहे?
${v^^} सगळं uppercase, ${v,,} सगळं lowercase. ${v^} फक्त पहिलं अक्षर uppercase, ${v,} फक्त पहिलं lowercase. bash 4 किंवा नवीन लागतो. Lowercase करून answers compare: [[ ${ans,,} == y* ]].
कसं करायचं (step by step)
- Uppercase label.
env=prod; echo "[${env^^}]"
Output:
[PROD]
याचा अर्थ: सगळी अक्षरं मोठी.
- Lowercase input.
ans=YeS; echo "${ans,,}"
Output:
yes
याचा अर्थ: Compare करायला सोपं.
- नाव capitalise.
city=pune; echo "${city^}"
Output:
Pune
याचा अर्थ: फक्त पहिलं अक्षर.
- Case-free yes check.
read -rp 'Continue? ' a; [[ ${a,,} == y* ]] && echo go
Output:
Continue? Y
go
याचा अर्थ: Y, y, yes सगळं चालतं.
7. Defaults: :- := :? :+
हे का लागतं?
Variable किंवा argument नसेल तेव्हा scripts नीट वागायला हवेत, खासकरून set -u सह.
हे काय आहे?
${v:-x} v रिकामा किंवा unset असेल तर x वापरतो, पण v बदलत नाही. ${v:=x} v ला x set पण करतो. ${v:?message} v रिकामा असेल तर message देऊन script थांबवतो. ${v:+x} v ला value असेल तरच x देतो (optional flags साठी छान). Colon शिवाय (${v-x}) फक्त unset मोजतो, रिकामं नाही.
| प्रकार | v रिकामा असेल तर |
|---|---|
| ${v:-x} | x देतो |
| ${v:=x} | x देतो आणि v set |
| ${v:?msg} | msg, exit |
| ${v:+x} | काहीच नाही (set असेल तरच x) |
कसं करायचं (step by step)
- Default env.
env=${1:-dev}; echo "deploying to $env"
Output:
deploying to dev
याचा अर्थ: Argument दिला नाही.
- नसेल तर set.
unset PORT; : "${PORT:=8080}"; echo $PORT
Output:
8080
याचा अर्थ: : काही चालवत नाही पण expand करतो.
- आवश्यक value.
unset DB_HOST; echo "${DB_HOST:?DB_HOST is required}"
Output:
bash: DB_HOST: DB_HOST is required
याचा अर्थ: Script इथे थांबतो.
- Optional flag.
verbose=1; echo rsync -a ${verbose:+-v} src/ dst/
Output:
rsync -a -v src/ dst/
याचा अर्थ: Set असेल तेव्हाच flag.
8. Indirect names आणि variables list
हे का लागतं?
PORT_web आणि PORT_db सारखा config दुसऱ्या variable वरून नाव बनवलं तर सोपा.
हे काय आहे?
${!name} म्हणजे name मधे ज्याचं नाव आहे तो variable वाचा. ${!PREFIX@} PREFIX ने सुरू होणाऱ्या सगळ्या variable names list करतो. declare -n nameref बनवतो, variable चं दुसरं नाव, functions मधे उपयोगी. नवीन code साठी associative arrays बरे; indirect names env-style config साठी.
कसं करायचं (step by step)
- Indirect read.
PORT_web=80; PORT_db=5432; s=db; k=PORT_$s; echo "${!k}"
Output:
5432
याचा अर्थ: s वरून नाव.
- Prefix ने list.
echo ${!PORT_@}
Output:
PORT_db PORT_web
याचा अर्थ: PORT_ ने सुरू होणारी सगळी नावं.
- Nameref.
set_out(){ declare -n r=$1; r=done; }; set_out status; echo $status
Output:
done
याचा अर्थ: Function ने status मधे लिहिलं.
9. Spaces trim आणि input clean
हे का लागतं?
CSV files आणि forms मधल्या values ना extra spaces किंवा Windows line endings असतात ज्यामुळे comparisons बिघडतात.
हे काय आहे?
Windows carriage return ${v%$'\r'} ने काढा. सुरुवातीचे spaces ${v#"${v%%[![:space:]]*}"} ने आणि शेवटचे ${v%"${v##*[![:space:]]}"} ने trim. हे अवघड दिसतं, म्हणून बरेच लोक एकदा trim function बनवतात. Default IFS सह read पण दोन्ही टोकांचे spaces trim करतो.
कसं करायचं (step by step)
- Windows CR काढा.
line=$'pune\r'; line=${line%$'\r'}; [[ $line == pune ]] && echo clean
Output:
clean
याचा अर्थ: आता comparison चालतं.
- Trim function.
trim(){ local s=$1; s=${s#"${s%%[![:space:]]*}"}; s=${s%"${s##*[![:space:]]}"}; printf '%s' "$s"; }; echo "[$(trim ' Asha Patil ')]"
Output:
[Asha Patil]
याचा अर्थ: दोन्ही टोकं clean, मधला space राहिला.
- read पण trim करतो.
read -r x <<< ' nashik '; echo "[$x]"
Output:
[nashik]
याचा अर्थ: Default IFS trim करतो.
10. Clean output साठी printf
हे का लागतं?
echo वेगवेगळ्या systems वर वेगळं वागतो. Reports ना aligned columns आणि fixed decimals हवेत.
हे काय आहे?
printf FORMAT args. %s string, %d integer, %5.2f 2 decimals सह number, %-10s left-aligned 10 रुंद column, \n नवी line. जास्त arguments साठी printf format repeat करतो. printf -v var result print न करता variable मधे ठेवतो. printf '%(%F %T)T' date न बोलावता वेळ print करतो.
कसं करायचं (step by step)
- Aligned table.
printf '%-8s %6s\n' City Orders Pune 1200 Nagpur 85
Output:
City Orders
Pune 1200
Nagpur 85
याचा अर्थ: प्रत्येक pair ला format repeat.
- दोन decimals.
printf 'Total: %.2f\n' 1499.5
Output:
Total: 1499.50
याचा अर्थ: Money format.
- Zero padding.
printf 'INV-%05d\n' 42
Output:
INV-00042
याचा अर्थ: Invoice numbers.
- Variable मधे.
printf -v stamp '%(%Y%m%d)T' -1; echo "backup-$stamp.tgz"
Output:
backup-20261025.tgz
याचा अर्थ: -1 म्हणजे आत्ता.
11. अनेक industries मधली खरी उदाहरणं
हे का लागतं?
तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.
हे काय आहे?
प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.
कसं करायचं (step by step)
| Team आणि शहर | ते कसं वापरतात | Command |
|---|---|---|
| Aditi, e-commerce, Pune | Product images .jpeg ते .jpg | mv "$f" "${f%.jpeg}.jpg" |
| Ben, broadcasting, London | Upload path मधून file name | echo "${p##*/}" |
| Min-jun, gaming, Seoul | Release tags मधून v काढा | echo "${tag#v}" |
| Layla, airline, Cairo | Logs मधे passport numbers mask | echo "${id//[0-9]/*}" |
| Mateo, fintech, Buenos Aires | Zero padding सह invoice IDs | printf 'INV-%05d' "$n" |
| Swapnil, insurance, Nagpur | न दिल्यास default region | region=${1:-ap-south-1} |
12. नेहमीच्या errors आणि त्यांचे fixes
हे का लागतं?
हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.
हे काय आहे?
आधी नेमका message वाचा. मग खालच्या row शी जुळवा.
कसं करायचं (step by step)
| दिसणारा error | का होतं | Fix कसा करायचा |
|---|---|---|
bad substitution | Typo किंवा bash ऐवजी sh | bash ने चालवा; braces तपासा.bash script.sh |
${v: -3} gives the whole string | Space शिवाय ${v:-3} | minus आधी space.echo "${v: -3}" |
^^ prints bad substitution on Mac | bash 3.2 | bash 4+ किंवा tr.tr '[:lower:]' '[:upper:]' |
Comparison fails though text looks same | Windows file मधला लपलेला \r | CR काढा.v=${v%$'\r'} |
Removed too much of the path | # ऐवजी ## | लहान किंवा मोठा नीट निवडा.echo "${p#*/}" |
parameter null or not set | ${v:?} चाललं | Value द्या किंवा set करा.export DB_HOST=db1 |
printf: invalid number | %d ला text दिला | Number द्या किंवा %s.printf '%s\n' "$x" |
echo -e prints -e | sh चा echo वेगळा | printf वापरा.printf 'a\tb\n' |
Glob in pattern matched files | Result unquoted | Expansion quote करा.echo "${v//x/*}" |
13. Troubleshooting step by step
हे का लागतं?
प्रत्येक step च्या आधी आणि नंतर value brackets मधे print करा म्हणजे लपलेले spaces आणि characters दिसतात.
हे काय आहे?
वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.
कसं करायचं (step by step)
- Brackets सह.
printf '[%s]\n' "$v"
- लपलेले characters.
printf '%s' "$v" | od -c
- Length.
echo ${#v}
- Bash version.
echo $BASH_VERSION
- Step trace.
set -x; out=${v%.*}; set +x
- Lint.
shellcheck s.sh
14. Lab 1: File names bulk rename आणि clean
हे का लागतं?
Messy file names बनवा, मग फक्त parameter expansion ने clean करा: spaces ते underscores, lowercase, आणि .jpeg ते .jpg.
हे काय आहे?
पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).
कसं करायचं (step by step)
- Folder आणि files.
mkdir -p ~/lab44 && cd ~/lab44 && touch 'Diwali Sale.JPEG' 'Shop Front.jpeg' 'logo.jpeg'
- बघा.
ls
Output:
Diwali Sale.JPEG Shop Front.jpeg logo.jpeg
- Dry run.
for f in *; do n=${f,,}; n=${n// /_}; n=${n%.jpeg}.jpg; echo "$f -> $n"; done
Output:
Diwali Sale.JPEG -> diwali_sale.jpg
Shop Front.jpeg -> shop_front.jpg
logo.jpeg -> logo.jpg
- Rename.
for f in *; do n=${f,,}; n=${n// /_}; n=${n%.jpeg}.jpg; [[ $f == "$n" ]] || mv -n -- "$f" "$n"; done; ls
Output:
diwali_sale.jpg logo.jpg shop_front.jpg
- Clean up.
cd ~ && rm -r ~/lab44
15. Lab 2: URL आणि version string parse
हे का लागतं?
URL scheme, host आणि path मधे आणि version major, minor आणि patch मधे तोडा, sed किंवा cut शिवाय.
हे काय आहे?
पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).
कसं करायचं (step by step)
- Values set.
u='https://api.shop.in/v2/orders?id=7'; ver=v3.12.5
- Scheme.
echo "${u%%://*}"
Output:
https
- Host.
rest=${u#*://}; echo "${rest%%/*}"
Output:
api.shop.in
- Query शिवाय path.
path=/${rest#*/}; echo "${path%%\?*}"
Output:
/v2/orders
- Version parts.
v=${ver#v}; major=${v%%.*}; minor=${v#*.}; minor=${minor%.*}; patch=${v##*.}; echo "$major $minor $patch"
Output:
3 12 5
- Patch bump.
echo "v$major.$minor.$((patch+1))"
Output:
v3.12.6
Ravindra Bagale's Tip
Learn # for the start and % for the end, one sign for the shortest match and two for the longest. With that rule plus ${v//old/new} and ${v:-default}, you can replace most small sed and basename calls in your scripts.
Ravindra Bagale's Tip – मराठी
# सुरुवातीसाठी आणि % शेवटासाठी, एक चिन्ह सगळ्यात लहान match आणि दोन सगळ्यात मोठा. हा नियम आणि ${v//old/new} व ${v:-default} शिकलात की scripts मधले बहुतेक छोटे sed आणि basename calls बदलू शकता.
Ravindra Bagale's Tip – हिंदी
# शुरुआत के लिए और % अंत के लिए, एक चिह्न सबसे छोटा match और दो सबसे बड़ा. यह नियम और ${v//old/new} व ${v:-default} सीख लिया तो scripts के ज़्यादातर छोटे sed और basename calls बदल सकते हैं.
16. नेहमी विचारले जाणारे प्रश्न
प्र. Parameter expansion sed पेक्षा fast?
छोट्या strings साठी हो, नवा process नाही.
प्र. sh मधे चालतं?
# % :- हो; / ^^ substrings फक्त bash.
प्र. Patterns मधे regex?
नाही, फक्त globs; regex साठी [[ =~ ]].
प्र. Spaces सह characters?
${#v} ते मोजतो.
प्र. Unicode length?
UTF-8 locale मधे बरोबर.
प्र. :- आणि - फरक?
Colon रिकामं पण missing मानतो.
प्र. echo ऐवजी printf का?
सगळीकडे same output.
प्र. Comma वर split?
IFS=, read -ra parts <<< "$v".
17. मुलाखत प्रश्न आणि उत्तरं
Beginner level
प्र. Variable ची length?
${#v}.
प्र. पहिले 3 characters?
${v:0:3}.
प्र. Default value?
${v:-x}.
प्र. सगळं uppercase?
${v^^}.
Mid level level
प्र. Folder शिवाय file name?
${p##*/}.
प्र. Extension बदल?
${f%.*}.new.
प्र. सगळे spaces replace?
${v// /_}.
प्र. नसेल तर fail?
${v:?msg}.
Senior level
प्र. Loops मधे basename का टाळायचा?
प्रत्येक call process सुरू करतो; expansion built in.
प्र. sed कधी?
Files वर regex किंवा multi-line edits.
प्र. Nameref उपयोग?
Caller च्या variable मधे values परत.
प्र. CRLF input?
${v%$'\r'} किंवा dos2unix ने \r काढा.
घरी करून बघा
- 'asha patil' सारखं पूर्ण नाव घेऊन 'Asha Patil' आणि initials 'AP' print करणारी script लिहा.
- 5 शहरं आणि त्यांचे PIN codes aligned columns सह printf table मधे.
सराव Tasks
Maple Leaf Books हा टोरांटो मधला पुस्तक विक्री व्यवसाय आहे. Emily Tremblay त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे CAD मध्ये मोजले जातात आणि AWS resources ca-central-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 21
सोपं लांबी
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: Emily Tremblay ने Maple Leaf Books मधे order id variable id मधे ठेवला. त्यात किती characters ते print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Substring
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: code variable चे पहिले 4 characters print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं फक्त file name
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: path मधे full path आहे. Expansion ने फक्त file name print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं फक्त folder
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: path मधून फक्त folder भाग print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं पहिलं replace
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: s मधे पहिला space underscore ने बदलून print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं सगळे replace
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: s मधले सगळे spaces underscore ने बदलून print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Upper case
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: city सगळ्या capital letters मधे print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Lower case
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: email सगळ्या small letters मधे print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Default value
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: env print करा, किंवा रिकामा/unset असेल तर dev.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम शेवटचे तीन
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: code चे शेवटचे 3 characters print करा (minus आधी space).
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Extension
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: f मधे report.final.csv आहे. शेवटच्या dot नंतरचं extension print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Extension काढा
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: f चं शेवटचं extension काढून print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम पहिलं capital
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: name चं फक्त पहिलं letter capital करून print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Default set
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: port print करा, रिकामा असेल तर त्याला 8080 assign करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Required
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: target print करा, रिकामा असेल तर missing target message देऊन थांबा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Prefix काढा
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: tag मधे v2.4.1. सुरुवातीचा v काढून print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Padded print
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: printf ने n 5-digit zero-padded print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम String मधून field
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: line मधे asha:1001:pune. Colon वर cut ने third field print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Alternate value
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: debug set आणि रिकामा नसेल तेव्हाच --verbose text print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Indirect
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: k मधे दुसऱ्या variable चं नाव आहे. त्या variable ची value print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड सुरुवातीचे spaces काढा
का: BIZ रोज scripts मधे names, paths आणि IDs clean करतो.
काय करायचं: sed ने s चे सुरुवातीचे spaces काढून print करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
18. संबंधित chapters
- DevOps साठी Linux Ops Refresh
- Automation साठी Bash Scripting
- Linux grep आणि find Commands Examples सह
- Linux Servers मध्ये Passwordless SSH
थोडक्यात सांगायचं तर
- ${#v} length, ${v:s:n} substring.
- # आणि ## सुरुवातीपासून काढतात.
- % आणि %% शेवटून काढतात.
- / आणि // replace.
- ^^ ,, case बदलतात.
- :- := :? :+ missing values; printf format.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.








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