27 – ආදාන/ප්‍රතිදාන (input/output) ගමනාන්තය වෙනස් කිරීම (redirection) (2 කොටස)

අද ලිපියෙන් input redirect කිරීම සහ input/output හැසිරවීමට යොදාගන්නා commands පිලිබඳ සොයා බලමු. සම්මත වශයෙන් command එකක input ලෙස අපට අවශ්‍ය file/directory එකක් ලබාදීම සිදු කරන නිසා විශේෂ වශයෙන් input redirect කිරීමක් සිදු කිරීම අවශ්‍ය නොවේ. කෙසේ නමුත් < සංකේතය යොදා ගනිමින් command line හි input redirect කිරීමට පිළිවන. උදාහරණයක් ලෙස file content බලා ගැනීමට cat command සමග පහත පරිදි < භාවිතා කල හැකිය.

cat-input
input redirection with <

මේ සමග input/output redirect කිරීම පිලිබඳ අධ්‍යයනය නිමවේ.

Commands යොදා ගනිමින් input/output හැසිරවීම

මේ යටතේ commands කිහිපයක් විස්තරාත්මක ව ඉගෙන ගනිමු. ඉන් සමහරක් පෙර පාඩම් වලදී මූලික භාවිතාව (basic usage) සමගින් සාකච්චා කරනු ලැබිණි.

cat

මෙම command එකේ මූලික භාවිතාව (usage) file content (අන්තර්ගතය) බලා ගැනීම වුවද files කිහිපයක් එකවර ලබාදීමට හැකියාව ඇති නිසා output redirect කිරීම (>) මගින් files සියල්ලෙහිම content තනි file එකකට එක්කර (concatenate) ලබාගත හැකිය. ඒ සඳහා පහත රීතියේ (syntax) දැක්වෙන පරිදි files ලැයිස්තුව අනුපිළිවෙලින් ලබාදෙන්න. මෙහිදී wildcards (තුරුම්පු) වුවද යොදාගත හැකි අතර එවිට filenames අකාරාදී පිළිවෙලට file content එකතු කිරීම සිදුවේ.

cat file1.txt file2.txt file3.txt > final.txt
cat file* > final.txt

cat command එක සම්මත ආදානය (standard input – stdin) වන keyboard සමග සම්බන්ධ කිරීමට ඇති හැකියාව යොදාගෙන text files නිර්මාණය කිරීමට ද පිළිවන. Command line හි cat ලෙස type කර එබීමෙන් එය keyboard හි අප type කරන සියල්ල input ලෙස ලබාගැනීමට පෙළඹේ. මේ නිසා පහත ආකාරයට text files නිර්මාණයට එය යොදාගත හැකිය. Ctrl + D එබීමෙන් type කිරීම අවසන් කල බව දැක්වීමට පිළිවන. මෙහිදී filename එකක් නොදුනහොත් අප type කල දෑ සම්මත ප්‍රතිදානය (standard output – stdout) වන screen එකෙහි දර්ශනය වේ.

cat-create-files
cat with stdin & stdout

සටහන: | (pipe) යොදා ගනිමින් commands එකතුවක් ක්‍රියාත්මක කිරීම පෙර ලිපියක (Command line භාවිතය පහසු කර ගැනීමේ උපක්‍රම) සඳහන් වූ බැවින් මෙහිදී යළි සාකච්චා නොකෙරේ. එයද command මගින් input/output හැසිරවීමේ ක්‍රමයක් වන නිසා පාඩමේ පුර්ණත්වය උදෙසා මෙහි දක්වනු ලැබිණි.

වැදගත්: | සහ > ක්‍රියාකාරීත්වයෙන් සමාන ලෙස බැලූ බැල්මට පෙනුනද මූලික වශයෙන් වැදගත් වෙනස්කමක් ඇත. එනම් | මගින් command අතර output ගලායාමක් (flow) සිදු කරන අතර > මගින් output එක file එකකට යොමු කිරීම සිදුකරයි. මේ නිසා | වෙනුවට > යොදාගැනීම කිසිසේත් නොකළ යුතු අතර root user ලෙස එසේ කලහොත් අදාළ විධානය අඩංගු file එක overwrite (උඩින් ලිවීම) වනු ඇත.

පෙරහන් (filters) යොදා ගැනීම

එදිනෙදා සාමාන්‍ය භාවිතාව ලෙස filters මගින් ඉටු කෙරෙන කාර්යයට සමාන හැකියාවක් command line හි filters වලටද ඇත. එනම් අපට අවශ්‍ය output පමණක් ලබා දීමයි. මේ සඳහා ප්‍රධාන වශයෙන් sort සහ uniq command දෙක යොදා ගැනේ. sort command මගින් output එකක් අප ලබාදෙන විකල්ප සැකසුම් (options) මත පිහිටා කිසියම් පටිපාටියකට අනුව පෙළගැස්වීම (sort) සිදු කරයි. එමගින් commands output පමණක් නොව file content ද sort කර බලාගත හැකිය. uniq command මගින් අනන්‍ය වූ (unique) output පමණක් ලබා ගැනීමට හැකිය. එක හා සමාන පේළි (duplicate lines) සහිත file එකක හෝ command output එකක් මෙයට ලබාදුන් විට ඉන් එකිනෙකෙට වෙනස් පේළි (unique lines) පමණක් ප්‍රථිපලය ලෙස ලබාදේ. කෙසේ නමුත් uniq command එකට සැමවිටම ලබාදිය යුත්තේ sort command එකක output එකකි. නැතහොත් අප බලාපොරොත්තු වන ප්‍රථිපලය ලබාගත නොහැකිය.

sort-uniq
sort & uniq filters

 wc (word count)

wc command මගින් කිසියම් input එකක ඇති වචන සංඛ්‍යාව (word count) ගණන් කල හැකිය. විකල්ප සැකසුම් (options) යොදා ගනිමින් පේළි (lines) සංඛ්‍යාව ගණනය කිරීමටද පිළිවන. wc command උදාහරණ පහත දැක්වේ. මෙහි -l option මගින් line count ද -w මගින් word count ද ලබාගත හැකිය. wc command එක options නොමැතිව ලබාදුන් විට පිළිවෙලින් line count, word count සහ file size (byte ඒකකයෙන්) දැක්වේ.

wc-command
wc command

grep

පාඨ ගොණු (text files) තුළ ඇති වචන පේළි කිසියම් රටාවකට අනුව සෙවීමට මෙම විධානය යොදාගත හැකිය. අමතර වශයෙන් කිසියම් විධානයක output එක grep command හරහා යැවීමෙන් අප ලබාදෙන වචන රටාව හා සැසඳෙන පේළි පමණක් output ලෙස ලබා ගැනීමේ හැකියාව ඇත. මෙහිදී වචන අතර හිස්තැන් (spaces) ඇත්නම් ඒවා “” (double quotes) තුළ යෙදීම අනිවාර්‍ය වේ. grep command පිලිබඳ දීර්ඝ ලෙස හැදෑරීමක් ඉදිරි ලිපියකදී සිදු කෙරේ.

grep-command
grep command

head/tail

කිසියම් text file එකක මුල හෝ අග පේළි කිහිපය පමණක් බලා ගැනීමට මෙම head සහ tail commands යොදාගනී. සම්මත වශයෙන් file එකේ මුල් හෝ අග පේළි 10 පමණක් දිස්වන අතර -n option සමග ඉලක්කමක් ලබාදීමෙන් ඊට සමාන පේළි ගණනක් දැකගත හැකිය. tail command සමග සුවිශේෂ වශයෙන් -f option ලබාදීමෙන් command එකෙන් ඉවත් නොවී දිගින් දිගට ම යාවත්කාලින (update) වන file එකක අළුතින් එක්වන text බලාගත හැකිය. සේවාදායක පරිගණක (server computers) වල ඇතිවන ගැටළු සොයා ඒවා නිරාකරණය කිරීමට මෙය ඉතා අගනා මෙවලමකි. Command එකෙන් ඉවත් වීමට Ctrl+C එබීම කල හැකිය.

head-tail
head & tail commands

tee

| හෝ > යොදාගනිමින් output redirect කල හැක්කේ එක් ගමනාන්තයකට පමණි. නමුත් tee command යොදාගෙන සම්මත ප්‍රතිදානයට (stdout) සහ file එකකට එකවර output redirect කල හැකිය. | හෝ > මගින් සම්බන්ධ වී ඇති commands කිහිපයක අතරමැදි output මොනවාදැයි file එකකට ලියා තැබීමට මෙම උපක්‍රමය උපයෝගී කරගැනීමට පිළිවන.

tee-command
tee command

3 thoughts on “27 – ආදාන/ප්‍රතිදාන (input/output) ගමනාන්තය වෙනස් කිරීම (redirection) (2 කොටස)

  1. […] අලුතින් text files නිර්මාණය කරන ආකාරය “ආදාන/ප්‍රතිදාන ගමනාන්තය වෙනස් කිරීම” ලිපියේ […]

    කැමතියි

ප්‍රතිචාරයක් ලබාදෙන්න

Fill in your details below or click an icon to log in:

WordPress.com Logo

ඔබ අදහස් දක්වන්නේ ඔබේ WordPress.com ගිණුම හරහා ය. පිට වන්න /  වෙනස් කරන්න )

Google photo

ඔබ අදහස් දක්වන්නේ ඔබේ Google ගිණුම හරහා ය. පිට වන්න /  වෙනස් කරන්න )

Twitter picture

ඔබ අදහස් දක්වන්නේ ඔබේ Twitter ගිණුම හරහා ය. පිට වන්න /  වෙනස් කරන්න )

Facebook photo

ඔබ අදහස් දක්වන්නේ ඔබේ Facebook ගිණුම හරහා ය. පිට වන්න /  වෙනස් කරන්න )