Tuesday, July 5, 2016

පහසුවෙන් ලිනක්ස් පාවිච්චි කරන්න ඉඟි අටක්

මෙන්න 2016! 2008 - 2009 අවුරුදු දෙකේ පැල් බැඳගෙන බ්ලොග් ලිව්ව මම 2015 අවුරුද්දෙත් 2013 අවුරුද්දෙත් මොකුත්ම ලියල නැහැ. 2016ත් නිකංම නාස්ති වෙන්න නොදී ලිනක්ස් පාවිච්චිය ගැන පුංචි සටහනක් තියලා යන්න හිතුවෙ ඒ නිසා.

2016 මට විශේෂයි. මම ලිනක්ස් පාවිච්චි කරන්න පටන් ගෙන අවුරුදු දහයක්! අපොයි මේ මොන මළජරාවක්ද කිය කිය කට්ටිය නිකන් දීපු උබුන්ටු සීඩී වාහන ඇතුළෙ එල්ලන කාලේ උබුන්ටු පාවිච්චි කරන්න පටන් ගනිපු මම, අවුරුදු දෙකකට පස්සේ, ඒ කියන්නෙ 2008 දි සම්පූර්ණයෙන්ම උබුන්ටු වලට මාරු වුණා. එදා සිට අද දක්වාම පුද්ගලික පාවිච්චිය උබුන්ටු හෝ මොකක් හරි ලිනක්ස් මෙහෙයුම් පද්ධතියක්ම තමයි. දැන්.... ප්‍රවණතාව වෙනස්. දැන් මිනිස්සු උබුන්ටු හොය හොය පාවිච්චි කරනවා.


මෑතකදි මම අහම්බෙන් දැක්කා අපූරු දෙයක්. මෑතකදී, ඒ කියන්නෙ මීට අවුරුද්දකට දෙකකට කලින් විතර උබුන්ටු පාවිච්චි කරන්න පටන් ගනිපු කෙනෙකුගෙයි මගෙයි පරිගණකය පාවිචචි කරන රටාව සෑහෙන වෙනස්. උදාහරණයක් ගත්තොත්, මොකක් හරි මෘදුකාංගයක් අළුතින් දාගන්න ගියොත් අළුතින් උබුන්ටු පාවිච්චි කරන කෙනා කරන්නෙ Ubuntu Software Centre --> Search --> Click Install. මගේ විධිය, Ctrl + Alt + T, sudo apt-get install ..... [Tab] ... [Tab] ... -y, Enter. එදා ඉඳන් පුරුදු විධියටම තමයි තාමත් වැඩේ කෙරෙන්නේ. සමහර දේවල් වලදි අළුත් විධිය කාර්යක්ෂම වෙන්න පුළුවන්. සමහර දේවල් වලදි පරණ විධිය කාර්යක්ෂම වෙන්න පුළුවන්. නමුත් එක දෙයක් පැහැදිළියි. අළුත් කොල්ලො කුරුට්ටො ටිකට ලිනක්ස් command line එක නම් පුරුදු නැහැ.

ඉතින් ඕකේ තමා ලිනක්ස් වල 'ගතිය' තියෙන්නෙ ඇත්තටම. මීයා අල්ලන්නෙවත් නැතුව ලිනක්ස් වලින් ගොඩක් වැඩ කරගන්න පුළුවන් command line interpreter එක, දන්න බාසාවෙන් ටර්මිනල් එක, පුරුදු වුණොත්. ඉතින්, අත හුරු කරගන්න පහසු වෙන්න පොඩි ඉඟි ටිකක් තමා අද ලියන්නේ, ලිනක්ස් ගැන පොඩි පහේ අතහුරුවක් තියෙන අයට.



Middle-click Paste

මේකට හැබැයි මීයා ඕනේ. :) වැඩ බැරි ටාසන්ලටත් ඇසයින්මන්ට් ගොඩදාගන්න උදව් කරපු කොපි-පේස්ට් කෙරුවාව ගැන හැමෝම දන්නවනේ. බොහොමයක් ලිනක්ස් මෙහෙයුම් පද්ධති ඇතුළේ කොපි පේස්ට් වැඩේ තවත් ලේසියි, හැබැයි ගොඩක් අය මේක දන්නෙ නෑ. මම දැනගත්තෙත් මම කලින් වැඩ කරපු තැන සගයෙක් කිව්වාමයි.

gif



Terminator

මේ කියන්නෙ අර 1984 අවුරුද්දෙ තිරගත වුණු ක්‍රියාදාම චිත්‍රපටය ගැන නෙමේ. Terminator කියන්නෙ Ubuntu වල පෙරනිමියෙන් එන ටර්මිනල් එක වෙනුවට පාවිච්චි කරන්න පුළුවන්, හැබැයි ඊට වඩා පහසුකම් තියෙන එකක්. Screen එක හතරට නෙමේ අටට වුණත් පලාගෙන වැඩ කරන්න පුළුවන්කම මේකෙ තියෙන විශේෂ පහසුවක් විධියට මම දකිනවා.

පැහැදිලිව බලන්න ක්ලික් කරන්න

මේකේ වැඩ කරද්දි Ctrl + Shift + E වලින් තිරය සිරස් අතට දෙකට වෙන් කරන්නත්, Ctrl + Shift + O වලින් තිරස් අතට වෙන් කරන්නත් පුළුවන්. ඒ වගේම, පරණ Gnome Terminal එකේ විධියට කැමති නම් ටැබ් වෙන් කරගෙන වැඩ කරන්නත් මේකේ පුළුවන්.



vi -R

vi කියන්නෙ ඉතිං පරණ ලිනක්ස් ගුරුන්නාන්සෙලගෙ කැමතිම text editor එක. දැන් කට්ටිය ලේසියට gedit පාවිච්චි කරනවා. ඒකේ වරදක් නැහැ. තවත් සමහරු ලේසියි කියල හිතාගෙන nano පාවිච්චි කරනවා. හැබැයි ඉතිං පොඩ්ඩිත්තක් හොයලා බලලා ඉගෙනගත්තා නම් vi එකේම improved version එක vim කියන්නෙ පාවිච්චියට හරිම පහසු වගේම දියුණු මෘදුකාංගයක්.

අපි සාමාන්‍යයෙන් ලිනක්ස් වලදි text file එකක් කියවන්න පාවිච්චි කරන්නෙ cat විධානය හෝ less විධානය. නමුත්, source code තියෙන ගොනුවක් එහෙම කියවද්දි අල්ලල යන්නෙ vi ම තමා syntax highlighting තියෙන නිසා. හැබැයි ඒකෙන් කියවද්දි වැරදිලා අත්වැරදීමකින් අපි අතින් ෆයිල් එකේ වෙනසක් වුණොත් එහෙම? :wq කියලා වැරදිලාවත් ටයිප් කළොත් ඒක save වෙනවා.

ඉතින් ඒ වගේ අත්වැරදීම් වළක්වන්න vi read-only mode එකෙන් විවෘත කරන්න පුළුවන්. උදාහරණයක් ගත්තොත්,
# vi -R /etc/apache2/sites-enabled/000-default.conf

ගොඩක් අය text file කියවන්න vi editor එකම පාවිච්චි කරනව මම දැකල තියෙනවා. පුරුද්දක් වශයෙන් vi වෙනුවට vi -R ආදේශ කරගන්න පුළුවන් වුණා නම් අත්වැරදීමෙන් පසුතැවෙන්න සිද්ධ වෙන දේවල් ටිකක් අඩු කරගන්න පුළුවන්.



Ctrl + R

ස්වභාවයෙන්ම මම කම්මැලියෙක්. මේක කියවන අයත් එහෙමම ඇති කියල හිතනවා. :)
ඉතිං ඔය කමාන්ඩ් ලයින් එකේ කරපු දේවල් වුණත් ආයෙ ආයෙ කරන්න ගියාම ආපහු ටයිප් කරන්න මම කම්මැලියි. අන්න ඒකට තමා reverse lookup කියන පහසුකම තියෙන්නේ.



මේකෙදි කරන්නෙ විධානයක් යතුරුලියනය කරන්න කලින් Ctrl + R යතුරු සංයෝජනය පාවිච්චි කරලා පෙර පාවිච්චි කරපු විධාන සොයා බලන එක. මේකත් අළුත් අය වැඩිය දන්නෙ නැහැ. හරිම ලේසියි.

උදාහරණයක් ගත්තොත්, Firefox ධාවනය වෙද්දි වෙනත් profile එකකින් Firefox විවෘත කරගන්න විධිය බලමු.

මෙහෙමයි අද කරන්නෙ;
[Ctrl + Alt + T]
$ firefox --ProfileManager --new-instance &
$ [ENTER]

එතකොට හෙට;
[Ctrl + Alt + T]
$ [Ctrl + R]
new-inst
$ [ENTER]

සරලයි නෙහ්!? ;)



!n

මේකෙන් කියන්නෙ ගණිතයෙ එන ක්‍රමාරෝපිතයෙ අනිත් පැත්ත වගේ එකක් නෙමේ. මේකත් ඇත්තටම ආපහු හැරිලා බලන (reverse lookup) කරන ක්‍රමයක්. උදාහරණයකින් පෙන්නුවොත්,

$ history | grep ffmpeg

දැන් මේ වගේ ඒවා එකක් හෝ ගොඩක් පෙන්නයි තමන්ගෙ අතීත පාවිච්චිය අනුව (ඉලක්කම වෙනස් වෙන්න පුළුවන්);
942 ffmpeg -f concat -i concat.txt ~/Videos/video-2016-06-22.mp4

$ !942
ffmpeg -f concat -i concat.txt ~/Videos/video-2016-06-22.mp4

අදාළ ඒක තෝරගෙන ඒකේ අංකය "අහෝ බේදයකි ඉරකි තිතකි" එක්ක ටයිප් කරන්නයි තියෙන්නේ. ඉතාම පහසු සෝට්කට් එකක්. :)
(අමතර සටහනක් - ffmpeg පාවිච්චි කරලා ඉතාම ඉක්මනින් සමහර වීඩියෝ සංස්කරණ වැඩ කරගන්න පුළුවන්)

එච්චරද? ඉවරයි කිව්වට ඉවරයි කියල හිතන්නෙපා තව තියෙනව.

හිතන්න මෙහෙම දෙයක්; root විධියට දිය යුතු විධානයක් අපි වැරදිලා සාමාන්‍ය විධියටම දෙනවා, ඒක වැඩ කරන්නෙ නෑ. එතකොට sudo ඉස්සරහට ටයිප් කරලා අර පතරංග හෑල්ල ආපහු ටයිප් කරන එක කරදර වැඩක් නේද? ඒකට කරන්න තියෙන්නෙ ඉරකි-තිතකි දෙපාරක් පාවිච්චි කරන එක. බලමු උදාහරණෙකින්ම.

$ apt-get install build-essential ubuntu-restricted-extras compizconfig-settings-manager unity-tweak-tool

මෙහෙම හෑල්ලක් එයි.
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

ආපහු ටයිප් කරන්න කම්මැලි නිසා;
$ sudo !!
sudo apt-get install build-essential ubuntu-restricted-extras compizconfig-settings-manager unity-tweak-tool 

සරලයි, ලේසියි! :)



find, grep, strings

මොකක් හරි ෆයිල් එකක් හොයාගන්න ඕනෙ වුණාම file browser එකට ගිහිං Ctrl + F ගහල හිටං නමේ කෑලි ටයිප් කර කර හොයනව නේද? මෙන්න ඊට ලේසි වගේම ප්‍රතිපලදායක විධියක්. පාවිච්චි කරන්න find විධානය.

පරණ ඩොස් ගේම් හොයාගන්න හැටි :-)

$ find . -type f -iname '*.exe' -exec grep '^MZ' '{}' \; | grep 'Binary file'

හාඩ් ඩිස්ක් එකේ කොහෙ හරි හැංගිලා තියෙන පරණ ඩොස් ගේම් ටිකක් අරගෙන DosBox දාගෙන සෙල්ලම් කරන්න ලෑස්ති වෙමු. :) හොයාගන්න මම දීල තියෙන උදාහරණෙන් කාරණා කීපයක්ම කවර් වෙනව.
  • find - iname මගින් filename pattern එකක් ඔස්සේ හොයන්නත්, හොයාගන්නා ගොනු මත -exec මගින් යම්කිසි විධානයක් යොදවන්නත් පුළුවන් (grep වෙනුවට rm භාවිත කළොත් හම්බවෙන හැම එකම ඩිලීට් වෙනවා)
  • grep - මේකෙන් කරන්නෙ pattern matching. ඒ කිව්වෙ find විධානයෙන් හොයා ගන්න හැම ගොනුවකම අපි දෙන 'රටාව' (text pattern) එක තියෙනවද බලන එක. මෙතනදි මට ඕනේ MZ කියන එක. (ඔව්, exe ෆයිල් ඇතුලෙ තියෙන ඒවත් බලන්න පුළුවන් ;) )
  • DOS file header - MS-DOS exe file header එක "MZ" වලින් පටන් ගන්නව කියන එක මෙතනට අමතර කාරණාවක්. විකිපීඩියාවේ තියෙනව විස්තරේ.
  • regular expressions - මෙන්න! සෑම කෙනෙක්ම ඉගෙනගත යුතු පාඨ කොටස් හොයන මන්තරේ. උදාහරණයට අදාළව ගත්තොත් MZ වලට කලින් තියෙන කොක්කෙන් මම කියන්නෙ text කොටසක් විධියට මුලටම MZ කියන එක තියෙනවද කියන එක.
වින්ඩෝස් පාවිච්චි කරන අය සාමාන්‍යයෙන් කරන්නෙ වින්ඩෝස් එක්ස්ප්ලෝරරේ දකුණු පැත්තෙ උඩ search box එකේ අදාළ දේ ටයිප් කරල හොයන එකනේ. හැබැයි ඉතින් මෙච්චර හරියක් නං මළාට වින්ඩෝස් එක්ස්ප්ලෝරර් වල කරන්න බෑ. :)

strings විධානය තවත් ප්‍රයෝජනවත් විධානයක්. මේකෙන් පුළුවන් ඕනෙම ජාතියක ෆයිල් එකක් ඇතුළට ගිහිං ඒවයෙ තියෙන text කොටස් හොයාගන්න. බලමු උදාහරණයකින් Nikon D7100 කැමරාවෙන් ගනිපු පිංතූර ටික හොයාගන්න,

$ find . -type f -type '*.jpg' -exec strings -f '{}' \; | grep "NIKON D7100"



කොහොමද වැඩේ? මරු නේද? රොකට් සයන්ස් නෙමේ ඒත් අපූරුයි නේද? :)



file -i

සමහරු නාගන්න තැනක් තමයි මේක. Text files කියල හිතාගෙන නොදන්න ෆයිල් cat හෝ vi වලින් විවෘත කරල බලන්න ගිහින් අමුතු අමුතු දේවල් වෙලා තියෙනව නේද? සමහර වෙලාවට ටර්මිනල් ස්ක්‍රීන් එකෙ පාටත් වෙනස් වෙනව.


අන්න ඒ වගෙ වෙලාවට පනින්න පෙර සොයා බලන්න file -i විධානය පාවිච්චි කරල අදාළ ගොනුවෙ ජාතිය හොයාගන්න පුළුවන්. මෙන්න උදාහරණයක්;

$ file -i downloaded_file
downloaded_file: audio/mpeg; charset=binary
$ mpg321 downloaded_file

$ file -i unknown_file
unknown_file: application/xml; charset=utf-8
$ vi -R unknown_file



nohup ... &

එල්ලෙන්න එපා කියල කියන්නෙ මෙහෙම තමයි. Hangup කියන්නෙ දුර අතීත කාලේ RS-232 සීරියල් මොඩම් පාවිච්චි කරපු කාලේ හැදුණු වචනයක්. ෆෝන් එකකින් කතා කර කර ඉන්න ගමන් දඩස් ගාලා රිසීවර් එක තියන එකට තමා hangup කියන්නේ. ලිනක්ස් වලදි, මොකක් හරි විධානයක්, ක්‍රමලේඛයක් command line එකේ ධාවනය වෙද්දි ටර්මිනල් එක වැහුවොත් බොහෝ විට අර කිව්ව ක්‍රමලේඛයත් නවතිනවා - ඇත්තම මැරෙනවා. nohup හෙවත් no hangup පාවිච්චි කරලා මේක වළක්වගන්න පුළුවන්.

මෙන්න උදාහරණයක්,
$ skype &
(මෙතන & හෙවත් ඇම්පර්සන්ඩ් ලකුණින් කියන්නේ දැනට ධාවනය වෙන විධානය 'තිරෙන් පිටුපස' ධාවනය වෙන්න දීලා අපට තවත් වැඩක් කරන්න ටර්මිනල් එක නිදහස් කරල දෙන්න කියන එක)

දැන් Close (x) බොත්තම ක්ලික් කරලා ටර්මිනල් එක වහලා බලන්න Skype එක අතුරුදහන් වෙන හැටි. දැන් අපි ඒකම මෙහෙමත් කරල බලමු;

$ nohup skype &

ටර්මිනල් එක වහල බලන්න Skype මැරුන්නෑ නේද?

Skype ගත්තෙ ප්‍රායෝගික නොවන සරල උදාහරණයකට. සම්පූර්ණ වෙන්න ගොඩක් කාලය වැය වෙන, command line program එක්ක මම බොහෝ විට nohup පාවිච්චි කරනවා, අත්වැරදීමකින් ටර්මිනල් එක වැහුණොත් process එක මැරෙන්නෙ නැති වෙන්න.



ඉතින් ඔය ටිප් අටත් එක්ක අදට මගේ සටහන ඉවරයි. මම මේවා වෙන් වෙන් වශයෙන් විස්තර කළත්, සමහර කෙටි ක්‍රම පත අට එකට සිඳවල automation scripts ලියාගෙන වැඩක් කරගනිද්දි කෙරෙන උපකාරය කියා නිම කරන්න බැහැ. ගීක් කෙනෙක් වුණාම එවෙලෙට දැනෙන සතුට හිටං සල්ලි වලට ගන්නත් බැහැ..! :)

5 comments:

  1. හම්මේ කාලෙකට පස්සේ.එළකිරි!!!.මමත් ubuntu server එක මේ දවස්වල use කරන්ව. terminal alternative එකක් විදිහට byobu terminal එක හොඳයි.අපිත් සමහර linux වැඩකෑලි ඉගෙන ගත්තේ ඔයාගෙනුයි සහෝ.ඒකට නම් මෙහෙම ස්තූති කරල මදි :-) !

    ReplyDelete
  2. පුදුමයි පොස්ට් එකක් ලියලා :)

    ReplyDelete
  3. අහම්බෙං වගී මේ පැත්තට ගොඩ උනාම දැක්කෙ. ඒ කලෙ මතක් උනා. . .

    ReplyDelete
  4. අවුරුද්දටම එක පෝස්ට් එකද?

    ReplyDelete
  5. කස්ටියටම ස්තූති ඇවිත් මේ පැත්තෙ මට වතුර පාරක් එහෙම ගහල සප් එක දෙනවට (මැරතන් මතක් වුණා :) ). අවුරුද්දටම එකයි... එහෙම සීන් එකක් තියේ. Quality vs Quantity පළහිලව්වක් තියෙන්නෙ ඒකෙ.

    ReplyDelete

Facebook ප්‍රතිචාර