DevOps_මුලික_UNIX / Linux_කමන්ඩ්ස් _5 - රිටර්න් ටු ls
DevOps_මුලික_UNIX / Linux_කමන්ඩ්ස් _5 - රිටර්න් ටු ls
මම ඔයාලට කලින් කියපුවිදියට අපි ls ගැන වැඩිපුර විස්තරයක් අද කතා කරන්න බලාපොරොත්තු වෙනව. දැන් ඔයාලට UNIX / Linux ගැන තරමක දැනුමක් තියෙන නිසා මම කමාන්ඩ්ස් ගැන දීර්ග විස්තර කිරීම් නොකර ප්රයෝගික උදාහරණ මගින් පාඩම ඉදිරියට ගෙනයනව . යම් අපැහැදිලි තැනක් තිබුනොත් කෙලින්ම අහන්න .
දැන් ඔයාල හැමෝම දන්නවා ls කියන්නෙ file සහ directory ලයිස්තුගතකරන කමාන්ඩ් එකක් කියල. දැනටමත් ඔයාල ls සමග a සහ l ඔප්ෂන් බාවිතාකරන විදිය දන්නවා . අපි එතන සිටි ඉදිරියට යමු. මුලින්ම අපි අලුතින් ඩිරෙක්ටරි එකක් හදල එකේ ඇතුලෙ files ටිකකුත් හදාගෙන වැඩේට බහිමු.
මෙතනින් එහාට යන්න කලින් ඔයාලට Linux terminalඑකට clear කමාන්ඩ් එක දීල screen එක clear කරගන්න පුළුවන්.
1) ls -1
අපිට මේ කමාන්ඩ් එක මගින් file name හෝ directory name පමණක් සහිත ලැයිස්තුවක් output විදියට ලැබෙනව . ඔයාලට Job එකක් කරනකොට shell scripts ලියන්න මේක හුගක් වැදගත් වෙනව. නමුත් අපිට මේ කමාන්ඩ් එකෙන් file එකක් සහ directory එකක් පැහැදිලිව හදුනාගන්න බෑ, මොකද UNIX / Linux වලදී සියලුම දේවල් files විදියට සලකන නිසා file name එකෙන් පමණක් හදුනාගන්න බෑ . මේ බලන්න . (නමුත් terminal emulatorඑකේ ෆයිල් සහ ඩිරෙක්ටරිවල text color එක බාවිතා කරලා හදුනාගන්න පුළුවන් )
ඉහත ලයිස්තුවේ file සහ directory සියල්ල එකට තියෙනවා කියල පේනව . මම ඉදිරියේදී කියල දෙන්නම් අපි කොහොමද file විතක් හෝ directory විතරක් ලැයිස්තු ගතකරන්නේ කියල.
අපි නැවතත් ls -l කමාන්ඩ් එක ට්රයි කරලා බලමු .
ඔයාල පොඩ්ඩක් output එක දිහා ටිකක් ඕනෑකමින් බලන්න. අපිට මේ output එක බලල file සහ directory වෙන්කරල හදුනාගන්න පුලුවන්ද කියල . ඔව් අපිට පුළුවන්. මම ඒ හදුනාගන්න විදිය කියල දෙන්නම්. ඊට කලින් ඔයාලට පොඩි කරුණක් කියන්නම්. job interviews වලදි මට ඕන තරම් අයදුම් කරුවො හමුවෙලා තියෙනවා මේ පුංචි දේවල් නොදන්නා. ඒ වගේම Sys admin ලත් හමුවෙලා තියෙනව. මම එහෙම කිව්වම ඔයාල හිතනව ඇති මේදේවල් නොදැන job එකක් කරන්න බැ කියල. නෑ job එකක් කරන්න පුළුවන්. නමුත් shell script එකක line 3 හෝ 4 කින් කරන්න පුළුවන් වැඩේ ඒ අය කරන්නෙ Java වගේ language එකක් බවිත කරලා line 30ක් විතර code ලියල. ඒකයි මම මේ පොඩි දෙවල් වලට ලොකු තැනක් දෙන්නේ.
දැන් ls පාඩම මොහොතකට නතර කරල අපි ඉතා වැදගත් දෙයක් කතා කරමු.
අපි මුලින් "1dir" කියල directory එකක් හැදුව නේද . අපි එක ඉහත output එකේ කොතනද තියෙන්නේ කියල බලමු. හරි, හොයාගත්ත . මේ තියෙන්නේ ඒ ලයින් එක.
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 1dir
උඩ තියෙන පේලියේ අපිට දැනටදන්නෙ "1dir" කියන directory name එක විතරයි නෙ . දැන් මම කියල දෙන්නෙ ඊට පෙර තියෙන අකුරු සහ ඉලක්කම් වලින් නිරුපනය කරන්නෙ මොනවද කියල . අදට කියල දෙන්නේ මුල්ම අකුර හෝ සංකේතය ගැන, file පර්මිෂන් පාඩමෙන් අනෙක් ටික ගැන කියල දෙනව හොදේ
අපේ වම අත පැත්තෙ සිට එනවිට මුලින්ම හමුවෙන දේ බලමු . අපිට හමු වෙන්නේ "d" අකුර . d අකුරන් නිරුපනය කරන්නේ මේ තියෙන file එක directory එකක් කියල(මතක් කරගන්න UNIX / Linux හි සියලුම දේවල් ගණන් ගැනෙන්නෙ files විදියට). දැන් හරි අපිට මෙහෙම කියන්න පුළුවන් ඉහත පේළියේ මුල්ම ස්ථානය මගින් file type එක පෙන්නුම් කරනව.
දැන් අපි බලමු අපි හදපු "about" කියන file එකට අදාල පේළිය අරගෙන . මෙන්න ඒක
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 about
"about" කියන එකේ file types එක ඉන්ඩිකෙට්ස් කරන තැන තියෙන්නෙ "-" එක . මොකක්ද මේ - න් කියන්නෙ . - නිරුපනය කරන්නේ Ordinary file එකක් කියල.
දැන් ඔයාලට තේරුණා නේද අපි කොහොමද file ද directory ද කියල බලා ගන්නෙ .
UNIX / Linux වල මේ විදියට file types කිහිපයක් තියෙනව මම දන්නා තරමින් ඒ ටික කියන්නම් .
- Ordinary file
d Directory file
l Symbolic link
p Named pipe (FIFO)
s Socket
b Block Special file
c Character Special file
ඉහත ලිස්ට් එකේ මුල් 5 හොදට මතක තියාගන්න ඔයාලට DevOps කෙනෙක් වෙන්න මේදේවල් වැදගත් වෙනව .
දැන් අපි බලමු මේ කියල තියෙන files වර්ග UNIX / Linux වල කොතනදිද හමු වෙන්නේ කියල
ඔයාලත් මම මේ කරල පෙන්නන දේවල් ටික ඔයාලගේ server එකේ හෝ Linux PC එකේ කරල බලන්න.
දැන් මම පෙන්නනව Block Special file හා Character Special file කොහෙද තියෙන්නෙ කියල .
ජස්ට් ls -l /dev
මම ඉහත පෙන්නලා තියෙන්නෙ output එකෙන් තෝරගත් කොටසක් . (output එක කිලෝ මීටරයක් විතර දිගයි)
දැන් දන්නවා b සහ c ටයිප් files නොර්මලි තියෙන්නෙ /dev එක ඇතුලෙ කියල . පොඩ්ඩක් හොදින් බලන්න tty කියාල දෙයකුත් තියෙනව. ඔයාලට මතකද tty ? හරි ඔයාල හොද ළමයි වගේ මතක් කරගන්නකො.
දැන් යන්නේ Symbolic link තියෙන්නේ කොහෙද කියල බලන්න. (Symbolic link ගැන හා ඒවා හදන විදිය මම ඔයාලට පසුව කියල දෙනව)
Symbloic link පහසුවෙන්ම දැකගන්න පුළුවන්වෙන්නේ /usr/lib එකේ
ට්රයි ls -l /usr/lib
සැ . යු ඔයාලගෙ output එකේ රිසල්ට් එක මගේ එකට වඩා වෙනස් වෙන්න පුළුවන්. මොකද /usr/lib එකේ තියෙන දේවල් depend වෙනවා සිස්ටම් එකේ ඉන්ස්ටෝල් කරලා තියෙන library අනුව.
අපි දැන් බලමු Named pipe ගැන. මුලින්ම කියන්න ඕන UNIX / Linux වල pipe වර්ග 2ක් තියෙනව, මින් එක වර්ගයක් පිහිටල තියෙන්නේ Kernel එක ඇතුලෙ. අපි ඒ pipe වර්ගයට කියන්නෙ Unnamed pipe කියල. දෙවන වර්ගය තමයි Named pipe. Named pipe වලට FIFO (First In, First Out) කියලත් කියනවා, මෙම file වල විශේෂත්වයක් වෙන්නෙ file length එක 0 සහ file size එකේ වැඩි වීමක් සිදුනොවීම . මෙන්න මේ ටික හොදට මතක තියාගන්න. Named pipe මගින් විවිධ processes වලට එකිනෙක අතර පණිවුඩ හුවමාරු කරගන්න ඉඩ සලසා දෙනව . දැනට මේ ටික මතක තියාගන්න. ඉදිරියට මම Named pipe ගැන උදාහරණ සමග ප්රයෝජන කියල දෙනව .
අපි දැන් Named pipe එක හදල ls පාරක් දීල බලමු.
අපිට් මෙන්න මේ කමාන්ඩ් එකෙන් Named pipe එකක් හදාගන්න පුළුවන්. මෙහිදී අපි "my_pipe" කියල එක නම් කරමු.
ට්රයි mkfifo my_pipe
prw-r--r-- 1 nix nix 0 Jun 19 17:21 my_pipe
"my_pipe" හි file type ඉන්ඩිකෙට් කරන තැන තියෙන අකුර "p"
මුල්ම කලේ අපි Named pipe හදන්න බාවිතා කලේ mknod කමාන්ඩ් එක. වර්තමනෙ අපි mkfifo කමාන්ඩ් එක තමයි යොදාගන්නෙ, මේක Named pipe වලටම තියන කමාන්ඩ් එකක්.
මම ඔයාලට mknod වලින් Named pipe හදන විදිය කියන්නම්. එකට අපි මෙන්න මේ කමාන්ඩ් එක බාවිතා කරනව
ට්රයි mknod my_pipe2 p
ඉහත කමාන්ඩ් එකේ mknod හි පලවෙනි argument එක විදියට දීල තියෙන්නෙ Named pipe එක සදහා යොදන නම . දෙවන argument එක විදියට තියෙන p අකුරෙන් කියන්නෙ . අපිට Named pipe වර්ගයේ එකක් හදන්න කියල. එකෙන් කියන්නෙ අපිට mknod කමාන්ඩ් එකෙන් Named pipe වලට අමතරව තව file වර්ග හදන්න පුළුවන් කියන එක තමයි. අපි ඒ ගැනත් ඉදිරියට කථා කරමු.
අපි හදපු Named pipe ටික අපිට නොර්මල් file එකක් delete කරන විදියටම delete කරන්න පුළුවන් .
ට්රයි rm my_pipe my_pipe2
දැන් අපි කතා කරමු Socket ගැන. සරලව කිව්වොත් UNIX / Linux Socket කියන්නෙ ක්රියාකාරීත්වයෙන් Named pipe වලට සමාන දෙයක්. Socket වල ක්රියාකාරිත්වය සහ එයින් ඇති ප්රයෝජන මම ඔයාලට උදාහරණ මගින් ඉදිරියේදි කියල දෙනව. දැන් ඒක විස්තර කරන්න ගියොත් ඔයාලට තේරුම් ගන්න ටිකක් අමාරු වෙනව.
මම දැනට් Socket file එකකට උදාහරනයක් විතරක් දැන් පෙන්වනව .
දැන් ඉතින් UNIX / Linux වල ඇති file types ගැන ඔයාලට පොඩ්ඩක් කියල දුන්න. බය වෙන්න දෙයක් නැ මම ඉදිරියේදී උදාහරණ මගින් වැඩි විස්තරයක් ඔයාලට දෙනව.
අපි නැවත ls ගැන ඉගෙන ගන්න යමු
අපි දැන් ls මගින් ලැබෙන output එක ෆිල්ටර් කරල ආකාර ඉගෙන ගනිමු . ඔයාල දැක්ක නේදඅපේ ls -l කමාන්ඩ් එකට කිලෝ මීටර් ගණන් දිග output ලැබෙනව කියල. බොහෝ වේලාවට එමගින් අපි අපහසුතාවයට පත්වෙනව.
මම දැන් ඔයාලට ls හා එහි options / switches වලට අමතරව "Metacharacter " බාවිතා කරලා අපිට උවමනා ආකාරයට ls මගින් තොරතුරු ලබාගන්න ආකාරය කියල දෙන්නම් . Metacharacter කියල අපි හදුන්වන්නෙ character එකෙන් නිරුපනය කරන අගය ට (face value) වඩා වෙනත් විශේෂ තේරුමක් තියෙන characters. උදාහරණයක් ලෙස කියනවනම් මෙන්න මේවගේ ඒවා
* ? [ ] ! -
අපි cd ~/lsmore කමාන්ඩ් එකෙන් lsmore ඩිරෙක්ටරි එකට ඇතුල්වෙලා අපේ වැඩටික දැන් පටන් ගනිමු.
* සමග
ට්රයි ls -l *1
ට්රයි ls -l *s
ට්රයි ls -l m*
ට්රයි ls -l y*u
ට්රයි ls -l t*e
දැන් ? සමග
ට්රයි ls -l ?ou
ට්රයි ls -l i?
ට්රයි ls -l f??e
* හා ?
ට්රයි ls -l ?h*
දැන් අපි ටිකක් සංකීර්ණ උදාහරණ ටික බලමු
[ හා ] සමගින්
ට්රයි ls -l [a]
ට්රයි ls -l [a]*
ට්රයි ls -l [ab]
ට්රයි ls -l [ab]*
ට්රයි ls -l [abc]
ට්රයි ls -l [a-c]
ට්රයි ls -l [a-e]
ට්රයි ls -l [a-e]*
ඉහත උදාහරණ දිහා බලනකොට ඔයාලට යමක් තේරෙනව ඇති කියල හිතනව. පොඩ්ඩක් ඉන්න මම පොඩි පැහැදිලි කිරීමක් කරන්න.
අපී ls -l [a] ගෙන බලමු. මෙහිදී file name එක "a" පමණක් තියෙන file ලැයිස්තුගත වුණා. දැන් බලමු ls -l [a]* මෙහිදී file name එකේ මුල් අකුර "a" වෙන file හා directory ලැයිස්තුගත වුණා. මේ කමාන්ඩ්ස් දෙක ls -l a හා ls -l a* සමානයි .
දැන් බලමු ls -l [ab] මෙහිදී file name එක "a" හෝ "b" පමණක් තියෙන files ලැයිස්තුගත වුණා. අපි ls -l [ab]* යෙදූ විට අපිට file name එකේ මුල් අකුර "a" හෝ "b" වෙන file හා directory ලැයිස්තුගත වුණා.
දැන් ඔයාලට පැහැදිලි වෙනවා අපිට "[" සහ "]" බාවිතා කිරීමෙන් යම්කිසි පරාසයක දෙයක් තෝරාගන්න පුළුවන් කියල. තවදුරටත්බලනවානම් ls -l [a-e]* මගින් කියවෙන්නෙ English හෝඩියේ a වල සිට e දක්වා තිබෙන අකුරු වලින් පටන් ගන්නා file හෝ directory ලැයිස්තුගත කරන්න කියල. මේක short hand ක්රමයක්
අපිට් කෙලින්ම මෙන්න මේ වගේ file name එක දීල වුනත් ls මගින් ලැයිස්තු ගත්කිරීමක් පවා සිදුකරන්න පුළුවන්
ට්රයි ls -l about
අවසන් වරට් කියන්න තියෙන්නේ ? මගින් එක අකුරක සිමාව නිරුපනය කරන අතර * මගින් අසීමිත අකුරු ගණනක් නිරුපනය කරයි.
මම හිතනවා දැන් ඔයාල ls ගැන යම් පමණකට දැනුවත් වීමක් වුන කියල.
අපි ඊළගට file හා directory පර්මිෂන් සමග හමුවෙමු.
ස්තුතියි !
DevOps_UNIX / Linux_6_file permission_ගැන
DevOps_මුලික_UNIX / Linux_කමන්ඩ්ස් _5 - රිටර්න් ටු ls
මම ඔයාලට කලින් කියපුවිදියට අපි ls ගැන වැඩිපුර විස්තරයක් අද කතා කරන්න බලාපොරොත්තු වෙනව. දැන් ඔයාලට UNIX / Linux ගැන තරමක දැනුමක් තියෙන නිසා මම කමාන්ඩ්ස් ගැන දීර්ග විස්තර කිරීම් නොකර ප්රයෝගික උදාහරණ මගින් පාඩම ඉදිරියට ගෙනයනව . යම් අපැහැදිලි තැනක් තිබුනොත් කෙලින්ම අහන්න .
දැන් ඔයාල හැමෝම දන්නවා ls කියන්නෙ file සහ directory ලයිස්තුගතකරන කමාන්ඩ් එකක් කියල. දැනටමත් ඔයාල ls සමග a සහ l ඔප්ෂන් බාවිතාකරන විදිය දන්නවා . අපි එතන සිටි ඉදිරියට යමු. මුලින්ම අපි අලුතින් ඩිරෙක්ටරි එකක් හදල එකේ ඇතුලෙ files ටිකකුත් හදාගෙන වැඩේට බහිමු.
දැන් අපිට අලුතෙන් හදපු ෆයිල් 20 කට සහ ඩිරෙක්ටරි 10 කට වඩා තියෙනව. දැන්අපිට ls සමග සෙල්ලම් කරන්න පුළුවන් .nix@Dell ~ $ mkdir ~/lsmore
nix@Dell ~ $ cd ~/lsmore
nix@Dell ~/lsmore $ touch where is my computer did you see that how about these file names a b c d e 1 2 3 4 5 6 7 8 9 0
nix@Dell ~/lsmore $ mkdir adir bdir cdir ddir edir fdir 1dir 2dir 3dir songs mp3 videos iso windows ...
nix@Dell ~/lsmore $ ls -al
total 68
drwxr-xr-x 17 nix nix 4096 Jun 19 09:16 .
drwxr-xr-x 48 nix nix 4096 Jun 19 09:14 ..
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 ...
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 0
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 1
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 1dir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 2
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 2dir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 3
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 3dir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 4
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 5
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 6
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 7
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 8
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 9
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 about
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 adir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 b
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 bdir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 c
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 cdir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 computer
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 d
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 ddir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 did
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 e
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 edir
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 fdir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 file
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 how
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 is
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 iso
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 mp3
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 my
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 names
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 see
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 songs
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 that
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 these
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 videos
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 where
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 windows
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 you
nix@Dell ~/lsmore $ pwd
/home/nix/lsmore
මෙතනින් එහාට යන්න කලින් ඔයාලට Linux terminalඑකට clear කමාන්ඩ් එක දීල screen එක clear කරගන්න පුළුවන්.
1) ls -1
අපිට මේ කමාන්ඩ් එක මගින් file name හෝ directory name පමණක් සහිත ලැයිස්තුවක් output විදියට ලැබෙනව . ඔයාලට Job එකක් කරනකොට shell scripts ලියන්න මේක හුගක් වැදගත් වෙනව. නමුත් අපිට මේ කමාන්ඩ් එකෙන් file එකක් සහ directory එකක් පැහැදිලිව හදුනාගන්න බෑ, මොකද UNIX / Linux වලදී සියලුම දේවල් files විදියට සලකන නිසා file name එකෙන් පමණක් හදුනාගන්න බෑ . මේ බලන්න . (නමුත් terminal emulatorඑකේ ෆයිල් සහ ඩිරෙක්ටරිවල text color එක බාවිතා කරලා හදුනාගන්න පුළුවන් )
nix@Dell ~/lsmore $ ls -1
0
1
1dir
2
2dir
3
3dir
4
5
6
7
8
9
a
about
adir
b
bdir
c
cdir
computer
d
ddir
did
e
edir
fdir
file
how
is
iso
mp3
my
names
see
songs
that
these
videos
where
windows
you
ඉහත ලයිස්තුවේ file සහ directory සියල්ල එකට තියෙනවා කියල පේනව . මම ඉදිරියේදී කියල දෙන්නම් අපි කොහොමද file විතක් හෝ directory විතරක් ලැයිස්තු ගතකරන්නේ කියල.
අපි නැවතත් ls -l කමාන්ඩ් එක ට්රයි කරලා බලමු .
nix@Dell ~/lsmore $ ls -l
total 56
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 0
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 1
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 1dir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 2
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 2dir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 3
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 3dir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 4
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 5
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 6
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 7
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 8
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 9
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 about
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 adir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 b
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 bdir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 c
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 cdir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 computer
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 d
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 ddir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 did
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 e
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 edir
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 fdir
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 file
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 how
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 is
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 iso
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 mp3
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 my
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 names
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 see
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 songs
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 that
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 these
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 videos
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 where
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 windows
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 you
ඔයාල පොඩ්ඩක් output එක දිහා ටිකක් ඕනෑකමින් බලන්න. අපිට මේ output එක බලල file සහ directory වෙන්කරල හදුනාගන්න පුලුවන්ද කියල . ඔව් අපිට පුළුවන්. මම ඒ හදුනාගන්න විදිය කියල දෙන්නම්. ඊට කලින් ඔයාලට පොඩි කරුණක් කියන්නම්. job interviews වලදි මට ඕන තරම් අයදුම් කරුවො හමුවෙලා තියෙනවා මේ පුංචි දේවල් නොදන්නා. ඒ වගේම Sys admin ලත් හමුවෙලා තියෙනව. මම එහෙම කිව්වම ඔයාල හිතනව ඇති මේදේවල් නොදැන job එකක් කරන්න බැ කියල. නෑ job එකක් කරන්න පුළුවන්. නමුත් shell script එකක line 3 හෝ 4 කින් කරන්න පුළුවන් වැඩේ ඒ අය කරන්නෙ Java වගේ language එකක් බවිත කරලා line 30ක් විතර code ලියල. ඒකයි මම මේ පොඩි දෙවල් වලට ලොකු තැනක් දෙන්නේ.
දැන් ls පාඩම මොහොතකට නතර කරල අපි ඉතා වැදගත් දෙයක් කතා කරමු.
අපි මුලින් "1dir" කියල directory එකක් හැදුව නේද . අපි එක ඉහත output එකේ කොතනද තියෙන්නේ කියල බලමු. හරි, හොයාගත්ත . මේ තියෙන්නේ ඒ ලයින් එක.
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 1dir
උඩ තියෙන පේලියේ අපිට දැනටදන්නෙ "1dir" කියන directory name එක විතරයි නෙ . දැන් මම කියල දෙන්නෙ ඊට පෙර තියෙන අකුරු සහ ඉලක්කම් වලින් නිරුපනය කරන්නෙ මොනවද කියල . අදට කියල දෙන්නේ මුල්ම අකුර හෝ සංකේතය ගැන, file පර්මිෂන් පාඩමෙන් අනෙක් ටික ගැන කියල දෙනව හොදේ

අපේ වම අත පැත්තෙ සිට එනවිට මුලින්ම හමුවෙන දේ බලමු . අපිට හමු වෙන්නේ "d" අකුර . d අකුරන් නිරුපනය කරන්නේ මේ තියෙන file එක directory එකක් කියල(මතක් කරගන්න UNIX / Linux හි සියලුම දේවල් ගණන් ගැනෙන්නෙ files විදියට). දැන් හරි අපිට මෙහෙම කියන්න පුළුවන් ඉහත පේළියේ මුල්ම ස්ථානය මගින් file type එක පෙන්නුම් කරනව.
දැන් අපි බලමු අපි හදපු "about" කියන file එකට අදාල පේළිය අරගෙන . මෙන්න ඒක
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 about
"about" කියන එකේ file types එක ඉන්ඩිකෙට්ස් කරන තැන තියෙන්නෙ "-" එක . මොකක්ද මේ - න් කියන්නෙ . - නිරුපනය කරන්නේ Ordinary file එකක් කියල.
දැන් ඔයාලට තේරුණා නේද අපි කොහොමද file ද directory ද කියල බලා ගන්නෙ .
UNIX / Linux වල මේ විදියට file types කිහිපයක් තියෙනව මම දන්නා තරමින් ඒ ටික කියන්නම් .
- Ordinary file
d Directory file
l Symbolic link
p Named pipe (FIFO)
s Socket
b Block Special file
c Character Special file
ඉහත ලිස්ට් එකේ මුල් 5 හොදට මතක තියාගන්න ඔයාලට DevOps කෙනෙක් වෙන්න මේදේවල් වැදගත් වෙනව .
දැන් අපි බලමු මේ කියල තියෙන files වර්ග UNIX / Linux වල කොතනදිද හමු වෙන්නේ කියල
ඔයාලත් මම මේ කරල පෙන්නන දේවල් ටික ඔයාලගේ server එකේ හෝ Linux PC එකේ කරල බලන්න.
දැන් මම පෙන්නනව Block Special file හා Character Special file කොහෙද තියෙන්නෙ කියල .
ජස්ට් ls -l /dev
nix@Dell ~ $ ls -l /dev
--
--
brw-rw---- 1 root disk 8, 0 Jun 19 08:33 sda
brw-rw---- 1 root disk 8, 1 Jun 19 08:33 sda1
brw-rw---- 1 root disk 8, 2 Jun 19 08:33 sda2
brw-rw---- 1 root disk 8, 3 Jun 19 08:33 sda3
brw-rw---- 1 root disk 8, 16 Jun 19 10:53 sdb
brw-rw---- 1 root disk 8, 17 Jun 19 10:53 sdb1
brw-rw---- 1 root disk 8, 18 Jun 19 10:53 sdb2
--
--
crw-rw-rw- 1 root tty 5, 0 Jun 19 08:33 tty
crw--w---- 1 root tty 4, 0 Jun 19 08:33 tty0
crw--w---- 1 root tty 4, 1 Jun 19 08:34 tty1
crw--w---- 1 root tty 4, 10 Jun 19 08:33 tty10
crw--w---- 1 root tty 4, 11 Jun 19 08:33 tty11
--
--
මම ඉහත පෙන්නලා තියෙන්නෙ output එකෙන් තෝරගත් කොටසක් . (output එක කිලෝ මීටරයක් විතර දිගයි)
දැන් දන්නවා b සහ c ටයිප් files නොර්මලි තියෙන්නෙ /dev එක ඇතුලෙ කියල . පොඩ්ඩක් හොදින් බලන්න tty කියාල දෙයකුත් තියෙනව. ඔයාලට මතකද tty ? හරි ඔයාල හොද ළමයි වගේ මතක් කරගන්නකො.
දැන් යන්නේ Symbolic link තියෙන්නේ කොහෙද කියල බලන්න. (Symbolic link ගැන හා ඒවා හදන විදිය මම ඔයාලට පසුව කියල දෙනව)
Symbloic link පහසුවෙන්ම දැකගන්න පුළුවන්වෙන්නේ /usr/lib එකේ
ට්රයි ls -l /usr/lib
nix@Dell ~ $ ls -l /usr/lib
---
---
lrwxrwxrwx 1 root root 30 May 14 07:37 libblas.so.3 -> /etc/alternatives/libblas.so.3
lrwxrwxrwx 1 root root 15 May 14 07:37 libcjs.so.0 -> libcjs.so.0.0.0
-rw-r--r-- 1 root root 564664 Nov 7 2016 libcjs.so.0.0.0
lrwxrwxrwx 1 root root 19 May 14 07:37 libcpufreq.so.0 -> libcpufreq.so.0.0.0
-rw-r--r-- 1 root root 22896 May 17 2012 libcpufreq.so.0.0.0
lrwxrwxrwx 1 root root 26 Jan 8 2016 libdlrestrictions.so.1 -> libdlrestrictions.so.1.0.0
-rw-r--r-- 1 root root 18752 Jan 8 2016 libdlrestrictions.so.1.0.0
lrwxrwxrwx 1 root root 20 May 14 07:37 libecryptfs.so.1 -> libecryptfs.so.1.0.0
lrwxrwxrwx 1 root root 20 May 14 07:37 libecryptfs.so.1.0 -> libecryptfs.so.1.0.0
-rw-r--r-- 1 root root 136440 Jul 13 2016 libecryptfs.so.1.0.0
---
---
සැ . යු ඔයාලගෙ output එකේ රිසල්ට් එක මගේ එකට වඩා වෙනස් වෙන්න පුළුවන්. මොකද /usr/lib එකේ තියෙන දේවල් depend වෙනවා සිස්ටම් එකේ ඉන්ස්ටෝල් කරලා තියෙන library අනුව.
අපි දැන් බලමු Named pipe ගැන. මුලින්ම කියන්න ඕන UNIX / Linux වල pipe වර්ග 2ක් තියෙනව, මින් එක වර්ගයක් පිහිටල තියෙන්නේ Kernel එක ඇතුලෙ. අපි ඒ pipe වර්ගයට කියන්නෙ Unnamed pipe කියල. දෙවන වර්ගය තමයි Named pipe. Named pipe වලට FIFO (First In, First Out) කියලත් කියනවා, මෙම file වල විශේෂත්වයක් වෙන්නෙ file length එක 0 සහ file size එකේ වැඩි වීමක් සිදුනොවීම . මෙන්න මේ ටික හොදට මතක තියාගන්න. Named pipe මගින් විවිධ processes වලට එකිනෙක අතර පණිවුඩ හුවමාරු කරගන්න ඉඩ සලසා දෙනව . දැනට මේ ටික මතක තියාගන්න. ඉදිරියට මම Named pipe ගැන උදාහරණ සමග ප්රයෝජන කියල දෙනව .
අපි දැන් Named pipe එක හදල ls පාරක් දීල බලමු.
අපිට් මෙන්න මේ කමාන්ඩ් එකෙන් Named pipe එකක් හදාගන්න පුළුවන්. මෙහිදී අපි "my_pipe" කියල එක නම් කරමු.
ට්රයි mkfifo my_pipe
දැන් ls -l දීල බලමුnix@Dell ~/lsmore $ mkfifo my_pipe
nix@Dell ~/lsmore $
මෙබලන්නnix@Dell ~/lsmore $ ls -l
total 56
--
--
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 iso
drwxr-xr-x 2 nix nix 4096 Jun 19 09:16 mp3
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 my
prw-r--r-- 1 nix nix 0 Jun 19 17:21 my_pipe
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 names
--
--
prw-r--r-- 1 nix nix 0 Jun 19 17:21 my_pipe
"my_pipe" හි file type ඉන්ඩිකෙට් කරන තැන තියෙන අකුර "p"
මුල්ම කලේ අපි Named pipe හදන්න බාවිතා කලේ mknod කමාන්ඩ් එක. වර්තමනෙ අපි mkfifo කමාන්ඩ් එක තමයි යොදාගන්නෙ, මේක Named pipe වලටම තියන කමාන්ඩ් එකක්.
මම ඔයාලට mknod වලින් Named pipe හදන විදිය කියන්නම්. එකට අපි මෙන්න මේ කමාන්ඩ් එක බාවිතා කරනව
ට්රයි mknod my_pipe2 p
nix@Dell ~ $ mknod my_pipe2 p
nix@Dell ~ $
ඉහත කමාන්ඩ් එකේ mknod හි පලවෙනි argument එක විදියට දීල තියෙන්නෙ Named pipe එක සදහා යොදන නම . දෙවන argument එක විදියට තියෙන p අකුරෙන් කියන්නෙ . අපිට Named pipe වර්ගයේ එකක් හදන්න කියල. එකෙන් කියන්නෙ අපිට mknod කමාන්ඩ් එකෙන් Named pipe වලට අමතරව තව file වර්ග හදන්න පුළුවන් කියන එක තමයි. අපි ඒ ගැනත් ඉදිරියට කථා කරමු.
අපි හදපු Named pipe ටික අපිට නොර්මල් file එකක් delete කරන විදියටම delete කරන්න පුළුවන් .
ට්රයි rm my_pipe my_pipe2
nix@Dell ~/lsmore $ rm my_pipe my_pipe2
nix@Dell ~/lsmore $
දැන් අපි කතා කරමු Socket ගැන. සරලව කිව්වොත් UNIX / Linux Socket කියන්නෙ ක්රියාකාරීත්වයෙන් Named pipe වලට සමාන දෙයක්. Socket වල ක්රියාකාරිත්වය සහ එයින් ඇති ප්රයෝජන මම ඔයාලට උදාහරණ මගින් ඉදිරියේදි කියල දෙනව. දැන් ඒක විස්තර කරන්න ගියොත් ඔයාලට තේරුම් ගන්න ටිකක් අමාරු වෙනව.
මම දැනට් Socket file එකකට උදාහරනයක් විතරක් දැන් පෙන්වනව .
nix@Dell ~ $ ls -l /run/php/
total 4
-rw-r--r-- 1 root root 4 Jun 19 15:06 php7.0-fpm.pid
srw-rw---- 1 www-data www-data 0 Jun 19 15:06 php7.0-fpm.sock
දැන් ඉතින් UNIX / Linux වල ඇති file types ගැන ඔයාලට පොඩ්ඩක් කියල දුන්න. බය වෙන්න දෙයක් නැ මම ඉදිරියේදී උදාහරණ මගින් වැඩි විස්තරයක් ඔයාලට දෙනව.
අපි නැවත ls ගැන ඉගෙන ගන්න යමු

අපි දැන් ls මගින් ලැබෙන output එක ෆිල්ටර් කරල ආකාර ඉගෙන ගනිමු . ඔයාල දැක්ක නේදඅපේ ls -l කමාන්ඩ් එකට කිලෝ මීටර් ගණන් දිග output ලැබෙනව කියල. බොහෝ වේලාවට එමගින් අපි අපහසුතාවයට පත්වෙනව.
මම දැන් ඔයාලට ls හා එහි options / switches වලට අමතරව "Metacharacter " බාවිතා කරලා අපිට උවමනා ආකාරයට ls මගින් තොරතුරු ලබාගන්න ආකාරය කියල දෙන්නම් . Metacharacter කියල අපි හදුන්වන්නෙ character එකෙන් නිරුපනය කරන අගය ට (face value) වඩා වෙනත් විශේෂ තේරුමක් තියෙන characters. උදාහරණයක් ලෙස කියනවනම් මෙන්න මේවගේ ඒවා
* ? [ ] ! -
අපි cd ~/lsmore කමාන්ඩ් එකෙන් lsmore ඩිරෙක්ටරි එකට ඇතුල්වෙලා අපේ වැඩටික දැන් පටන් ගනිමු.
* සමග
ට්රයි ls -l *1
nix@Dell ~/lsmore $ ls -l *1
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 1
ට්රයි ls -l *s
nix@Dell ~/lsmore $ ls -l *s
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 is
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 names
songs:
total 0
videos:
total 0
windows:
total 0
ට්රයි ls -l m*
nix@Dell ~/lsmore $ ls -l m*
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 my
mp3:
total 0
ට්රයි ls -l y*u
nix@Dell ~/lsmore $ ls -l y*u
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 you
ට්රයි ls -l t*e
nix@Dell ~/lsmore $ ls -l t*e
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 these
දැන් ? සමග
ට්රයි ls -l ?ou
nix@Dell ~/lsmore $ ls -l ?ou
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 you
ට්රයි ls -l i?
nix@Dell ~/lsmore $ ls -l i?
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 is
ට්රයි ls -l f??e
nix@Dell ~/lsmore $ ls -l f??e
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 file
* හා ?
ට්රයි ls -l ?h*
nix@Dell ~/lsmore $ ls -l ?h*
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 that
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 these
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 where
දැන් අපි ටිකක් සංකීර්ණ උදාහරණ ටික බලමු
[ හා ] සමගින්
ට්රයි ls -l [a]
nix@Dell ~/lsmore $ ls -l [a]
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
ට්රයි ls -l [a]*
nix@Dell ~/lsmore $ ls -l [a]*
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 about
adir:
total 0
ට්රයි ls -l [ab]
nix@Dell ~/lsmore $ ls -l [ab]
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 b
ට්රයි ls -l [ab]*
nix@Dell ~/lsmore $ ls -l [ab]*
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 about
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 b
adir:
total 0
bdir:
total 0
ට්රයි ls -l [abc]
nix@Dell ~/lsmore $ ls -l [abc]
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 b
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 c
ට්රයි ls -l [a-c]
nix@Dell ~/lsmore $ ls -l [a-c]
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 b
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 c
ට්රයි ls -l [a-e]
nix@Dell ~/lsmore $ ls -l [a-e]
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 b
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 c
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 d
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 e
ට්රයි ls -l [a-e]*
nix@Dell ~/lsmore $ ls -l [a-e]*
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 a
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 about
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 b
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 c
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 computer
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 d
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 did
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 e
adir:
total 0
bdir:
total 0
cdir:
total 0
ddir:
total 0
edir:
total 0
ඉහත උදාහරණ දිහා බලනකොට ඔයාලට යමක් තේරෙනව ඇති කියල හිතනව. පොඩ්ඩක් ඉන්න මම පොඩි පැහැදිලි කිරීමක් කරන්න.
අපී ls -l [a] ගෙන බලමු. මෙහිදී file name එක "a" පමණක් තියෙන file ලැයිස්තුගත වුණා. දැන් බලමු ls -l [a]* මෙහිදී file name එකේ මුල් අකුර "a" වෙන file හා directory ලැයිස්තුගත වුණා. මේ කමාන්ඩ්ස් දෙක ls -l a හා ls -l a* සමානයි .
දැන් බලමු ls -l [ab] මෙහිදී file name එක "a" හෝ "b" පමණක් තියෙන files ලැයිස්තුගත වුණා. අපි ls -l [ab]* යෙදූ විට අපිට file name එකේ මුල් අකුර "a" හෝ "b" වෙන file හා directory ලැයිස්තුගත වුණා.
දැන් ඔයාලට පැහැදිලි වෙනවා අපිට "[" සහ "]" බාවිතා කිරීමෙන් යම්කිසි පරාසයක දෙයක් තෝරාගන්න පුළුවන් කියල. තවදුරටත්බලනවානම් ls -l [a-e]* මගින් කියවෙන්නෙ English හෝඩියේ a වල සිට e දක්වා තිබෙන අකුරු වලින් පටන් ගන්නා file හෝ directory ලැයිස්තුගත කරන්න කියල. මේක short hand ක්රමයක්
අපිට් කෙලින්ම මෙන්න මේ වගේ file name එක දීල වුනත් ls මගින් ලැයිස්තු ගත්කිරීමක් පවා සිදුකරන්න පුළුවන්
ට්රයි ls -l about
nix@Dell ~/lsmore $ ls -l about
-rw-r--r-- 1 nix nix 0 Jun 19 09:15 about
අවසන් වරට් කියන්න තියෙන්නේ ? මගින් එක අකුරක සිමාව නිරුපනය කරන අතර * මගින් අසීමිත අකුරු ගණනක් නිරුපනය කරයි.
මම හිතනවා දැන් ඔයාල ls ගැන යම් පමණකට දැනුවත් වීමක් වුන කියල.
අපි ඊළගට file හා directory පර්මිෂන් සමග හමුවෙමු.
ස්තුතියි !
DevOps_UNIX / Linux_6_file permission_ගැන
Last edited:
