நான் எழுதும் Little known linux commands ன் தமிழாக்கம் இது.
strings
இது ஒரு கோப்பில் உள்ள அச்சடிக்க முடிகின்ற எழுத்துக்களை மட்டும் கொணரும்.
எ.கா. ஒரு எளிய helloworld ஆணைத் தொடர் gcc முலம் செயல்பாட்டு-தொகுப்பு(executable) ஆக மாற்றப்பட்டு strings முலம் பார்த்தால்
$ strings a.out
/lib/ld-linux.so.2
__gmon_start__
libc.so.6
_IO_stdin_used
puts
__libc_start_main
GLIBC_2.0
PTRh
[^_]
hello world
ஒரு கோப்பு எத்தகையது என அறிய strings உதவும். சில நேரங்களில் பழுது பட்டதன் காரணமாக சில கோப்புகளை அதற்கேற்ற மென்பொருள் மூலம் திறக்க முடியாமல் போவதுண்டு. அத்தகைய கோப்புகளில் முக்கிய தரவுகள் இருந்தால் strings முலம் குறைந்தது அச்சடிக்க முடிகின்ற எழுத்துக்களை மட்டுமாவது கொணர முடியும்.
அதே போல் செயல்பாட்டு-தொகுப்பு(executable) பற்றி எதுவம் தெரியாத நிலையில் strings முலம் சில முக்கிய தகவல்கள் கிடைக்கலாம். மேலே உள்ள எடுத்துக்காட்டில் helloworld linux.so போன்றவை நமக்கு உதவுகின்றன.
od
od எண்ம(octal) அல்லது ஆஸ்கி போன்ற வடிவங்களில் ஒரு கோப்பை காட்ட வல்லது. Od மூலம் ஒரு கோப்பில் உள்ள தரவுகளை ஒவ்வொரு பைட்டாக – எழுத்து, எண்மலக்கு, பதினாறிலக்கம்(hexadecimal)_- பார்க்கலாம்
எ.கா
$ od -c hello.c
0000000 # i n c l u d e < s t d i o . h
0000020 > \n # t h i s i s f i r s t
0000040 \t p r o g r a m e \n i n t m
0000060 a i n ( ) { \n \t p r i n t f ( “
0000100 H e l l o w o r l d \ n ” ; \n }
0000120 \n
0000121
மேலே -c உபயோகப்படுத்தியதால் எழுத்து வடிவத்தில் காட்டுகிறது.
மேலே உள்ளதை கீழே உள்ள cat ஆணையுடன் ஒப்பிடுங்கள்.
$ cat hello.c
#include<stdio.h>
#this is first programe
int main(){
printf(”Helloworld\n”;
}
cat காட்டுவதை உற்று நோக்கினால் first மற்றும் programme இடையே ஒரு வெளி உள்ளது. உண்மையில் அங்கே ஒரு வெளி மற்றும் தத்தல்(tab) உள்ளது. இது od தெளிவாக காட்டுகிறது - 0000040 வரியில்.
od எங்கு பயன்படும்? பல சமயங்களில் தரவுதொகுப்பிற்க்கு textfileலாக உள்ள தரவை உள்ளேற்றுவேன். பொதுவாக தரவுகள் வரிக்கு ஒரு தொகுப்பாக இருக்கும். இதற்குள் தத்துமூலம் தரவு பிரிக்கபட்டிருக்கும். சில சமயங்களில் பல தத்துகள் தேவையில்லாமல் இருந்து கட்டமைப்பை மாற்றிவிடும். இதனால் உள்ளேற்றம் தடைபடும். od மூலம் பார்த்தால் இத்தகைய தவறுகள் அறியலாம். editor மூலம் சரி செய்து உள்ளேற்றம் செய்யலாம்.
type
இது ஒரு எளிய, பயனுள்ள ஆணை. இது shell’ன் ஒரு தொகுப்பு. இது ஒரு செயல்பாட்டு-தொகுப்பு(executable) எங்கே உள்ளது எனக் கூறும். இது $PATH’ல் உள்ள கோப்புகளில் தேடி, எங்கு உள்ளது என்பதை முழு பெயருடன் கூறும். உதாரணம்
$ type sudo
sudo is /usr/bin/sudo
locate ,which ஆகியன இதை போன்ற பிற ஆணைகள். ஆனால் சில வித்தியாசங்கள்
அ. இது shell உள்ளே உள்ளது. அதனால் வேகமானது.
ஆ. $PATH’ல் மட்டுதம் தேடும்
இ.இது ஒரு செயல்பாட்டு-தொகுப்பு(executable) மட்டும் தேடும்
என் கணினியில் இந்த 3 ஆணைகளின் செயல்பாட்டு நேரங்கள்
type
$ time type sudo
sudo is /usr/bin/sudo
real 0m0.000s
user 0m0.000s
sys 0m0.000s
which
$ time which sudo
/usr/bin/sudo
real 0m0.004s
user 0m0.004s
sys 0m0.000s
locate
$ time locate sudo
/etc/sudoerr
/etc/init.d/sudo
..
real 0m0.201s
user 0m0.192s
sys 0m0.004s
இதில் இருந்து type வேகமானது என தெளிவாகிறது.
கீழ் கண்ட சமயங்களில் type சிறந்தது.
அ. $PATH’ல் மட்டும் தேட.
ஆ.செயல்பாட்டு-தொகுப்பு(executable) மட்டும் தேட.
type பயன்படாத இடங்கள்
அ. அணைத்து தொகுப்புகளில் தேட
ஆ.பகுதி பெயர்களில் தேட
இ.செயல்பாட்டு-தொகுப்பு(executable) மட்டும் அல்லாது அணைத்திலும் தேட
file
file: இது ஒரு எளிய, பயனுள்ள ஆணை. இது ஒரு கோப்பு எத்தகையது - ஒரு செயல்பாட்டு-தொகுப்பா(executable) , வெரும் சொற் தொகுப்பா(text) அல்லது தரவு எனக் பகுத்து கூறும். அக்கோப்பு PDF, tar போன்ற நன்கறிந்த வகையை சேர்ந்ததானால் அதையும் கூறும்
உதாரணம்
$ file *
tamil-keyboard-color.jpg: JPEG image data, JFIF standard 1.01
tamil-keyboard-unicode.png: PNG image, 815 x 436, 8-bit/color RGB, non-interlaced
targets: ASCII text
test_data: directory
testprint.txt: ASCII text
test.xls: Microsoft Office Document
thinclient_lts.conf: ASCII English text
ttf_fonts: directory
upgradehims.odt: OpenDocument Text
vec: directory
w2008.sxw: OpenOffice.org 1.x Writer document
w2009.odt: OpenDocument Text
file ஒரு கோப்பு எத்தகையது என அறிய அதன் உள்ளே இருப்பதை படித்து தீர்மானிக்கும். அதன் வாலை (extension) வைத்து அல்ல. பொதுவாக, pdf, odt போன்ற கோப்புகளில், சில தனித்தன்மை வாய்ந்த தொடர்கள், குறிப்பிட்ட இடத்தில் இருக்கும். இதை magic என்பர். நாம் குறி எனக்கொள்ளலாம். file, இவற்றை தேடி என்ன வகை என அறியும். பல வகை கணினி மொழியில் எழுதப்பட்ட ஆணை தொடர்களையும் file வகைப்படுத்தும். பொதுவாக #! -hashbang வைத்து தீர்மானிக்கும்.
இந்த குறி(magic) /usr/share/file/magic கோப்பில் இருக்கும்.
file பல சமயங்களில் மிகவும் உதவியானது. கோப்பு வரைவுமுறை(filesystem- எனக்கு என்னவோ பெருந்தொகுப்பு என்பதே சரி என படுகிறது.) சில சமயம் பழுதடைவதுண்டு. அப்போது fsck மூலம் சரி செய்யும் போது சில கோப்புகள் பெயர் இழந்து எண்களால் குறிக்கப்பட்டு lost+found கோப்பு தொகுப்பில் கானப்படும். pdf,txt போன்ற வால் இல்லாததால், எத்தகையது என அறிய முடியாது. file ஆணை மூலம் எத்தகையது என அறிந்து மாற்று பெயர் சூட்டலாம்.
<!– @page { size: 8.5in 11in; margin: 0.79in } PRE { font-family: “Bitstream Vera Sans Mono”, monospace } P { margin-bottom: 0.08in } H2 { margin-bottom: 0.08in } –>
uniq
uniq இது ஒரு கோப்பில் வரி வரியாக தேடி அதில் உள்ள தனி வரிகளை மட்டும் காட்டும்.
அதாவது ஒண்றுக்கு மேற்பட்டு தொடர்ந்து வந்தால் ஒர் முறை மட்டும் காட்டும். ஆகையால் ஒரு கோப்பு அகர வரிசைப் படுத்தப்பட்டால் மட்டுமே நிறைந்த பலன் கிட்டும்.
உதாரணம் அகர வரிசைப் படுத்தபடாத கோப்பு இதோ $ cat inputfile line 1 line 2 line 2 line 3 line 1 line 1 line 1 uniq ஆணை பயன்படுத்தினால் $ uniq inputfile line 1 line 2 line 3 line 1 மேலே உள்ள விளைவை கீழ் காணும் அகர வரிசை விளைவுடன் ஒப்பிடுக. $ sort inputfile|uniq line 1 line 2 line 3 uniq ஒரே வரி எத்தனை முறை திரும்ப திரும்ப வந்துள்ளது போன்ற பல தகவல்களை தர வல்லது. உ.தா. $ uniq -c inputfile 1 line 1 2 line 2 1 line 3 3 line 1 uniq எங்கே உதவும்? ஒரு தரவுதொகுப்பில்(database) உள்ள அட்டவணையில்(table) சில வரிசைகள் பல முறை இருக்கிறது என வைத்துக் கொள்ளுங்கள். இதை சீர் செய்ய ஒரு நிரல் (program) எழுத வேண்டியிருக்கும். இதற்கு பதிலாக தரவுகளை ஒரு txt தொகுப்பாக கொட்டி, வரிசை படுத்த வேண்டும். பிறகு uniq மூலம் நகல்களை நீக்கிய பின்பு அட்டவணையில் சேர்கலாம்.
[...] இங்கே சொடுக்கவும் [...]
‘கொணர’ என்றால் என்னா?
கொணர – bring out as in வெளிக்கொணர