Linux I/O (ഇൻപുട്ട്/ഔട്ട്uപുട്ട്) റീഡയറക്ഷൻ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിന്റെ അടിസ്ഥാനകാര്യങ്ങൾ പഠിക്കുക


Linux അഡ്മിനിസ്ട്രേഷന് കീഴിലുള്ള ഏറ്റവും പ്രധാനപ്പെട്ടതും രസകരവുമായ വിഷയങ്ങളിലൊന്നാണ് I/O റീഡയറക്ഷൻ. കമാൻഡ് ലൈനിന്റെ ഈ സവിശേഷത നിങ്ങളെ കൂടാതെ/അല്ലെങ്കിൽ ഫയലുകളിൽ നിന്നുള്ള കമാൻഡുകളുടെ ഇൻപുട്ട് കൂടാതെ/അല്ലെങ്കിൽ ഔട്ട്uപുട്ട് റീഡയറക്uട് ചെയ്യാൻ നിങ്ങളെ പ്രാപ്uതമാക്കുന്നു, അല്ലെങ്കിൽ \കമാൻഡ് പൈപ്പ്uലൈൻ എന്നറിയപ്പെടുന്നത് രൂപീകരിക്കുന്നതിന് പൈപ്പുകൾ ഉപയോഗിച്ച് ഒന്നിലധികം കമാൻഡുകൾ കൂട്ടിച്ചേർക്കുന്നു.

നമ്മൾ പ്രവർത്തിപ്പിക്കുന്ന എല്ലാ കമാൻഡുകളും അടിസ്ഥാനപരമായി രണ്ട് തരത്തിലുള്ള ഔട്ട്പുട്ട് ഉണ്ടാക്കുന്നു:

  1. കമാൻഡ് ഫലം - പ്രോഗ്രാം നിർമ്മിക്കാൻ രൂപകൽപ്പന ചെയ്ത ഡാറ്റ, ഒപ്പം
  2. പ്രോഗ്രാം നിർവ്വഹണ വിശദാംശങ്ങൾ ഉപയോക്താവിനെ അറിയിക്കുന്ന പ്രോഗ്രാം നിലയും പിശക് സന്ദേശങ്ങളും.

Linux-ലും മറ്റ് Unix-പോലുള്ള സിസ്റ്റങ്ങളിലും, മൂന്ന് സ്ഥിരസ്ഥിതി ഫയലുകൾ ചുവടെ നൽകിയിരിക്കുന്നു, അവ ഫയൽ ഡിസ്ക്രിപ്റ്റർ നമ്പറുകൾ ഉപയോഗിച്ച് ഷെൽ തിരിച്ചറിയുന്നു:

  1. stdin അല്ലെങ്കിൽ 0 - ഇത് കീബോർഡുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു, മിക്ക പ്രോഗ്രാമുകളും ഈ ഫയലിൽ നിന്നുള്ള ഇൻപുട്ട് വായിക്കുന്നു.
  2. stdout അല്ലെങ്കിൽ 1 - ഇത് സ്uക്രീനിൽ അറ്റാച്ച് ചെയ്uതിരിക്കുന്നു, കൂടാതെ എല്ലാ പ്രോഗ്രാമുകളും അവയുടെ ഫലങ്ങൾ ഈ ഫയലിലേക്ക് അയയ്uക്കുകയും
  3. stderr അല്ലെങ്കിൽ 2 – പ്രോഗ്രാമുകൾ ഈ ഫയലിലേക്ക് സ്റ്റാറ്റസ്/പിശക് സന്ദേശങ്ങൾ അയയ്ക്കുന്നു, അത് സ്ക്രീനിൽ ഘടിപ്പിച്ചിരിക്കുന്നു.

അതിനാൽ, ഒരു കമാൻഡിന്റെ ഇൻപുട്ട് ഉറവിടവും അതിന്റെ ഔട്ട്uപുട്ടും പിശക് സന്ദേശങ്ങളും എവിടെയാണ് അയയ്uക്കുന്നതെന്ന് മാറ്റാൻ I/O റീഡയറക്ഷൻ നിങ്ങളെ അനുവദിക്കുന്നു. \<”, \>” റീഡയറക്ഷൻ ഓപ്പറേറ്റർമാർ വഴിയാണ് ഇത് സാധ്യമാക്കിയത്.

ലിനക്സിലെ ഫയലിലേക്ക് സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട് എങ്ങനെ റീഡയറക്ട് ചെയ്യാം

ചുവടെയുള്ള ഉദാഹരണത്തിലെന്നപോലെ നിങ്ങൾക്ക് സ്റ്റാൻഡേർഡ് ഔട്ട്uപുട്ട് റീഡയറക്uട് ചെയ്യാൻ കഴിയും, ഇവിടെ, പിന്നീടുള്ള പരിശോധനയ്ക്കായി ടോപ്പ് കമാൻഡിന്റെ ഔട്ട്uപുട്ട് സംഭരിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു:

$ top -bn 5 >top.log

പതാകകൾ എവിടെ:

  1. -b – ബാച്ച് മോഡിൽ പ്രവർത്തിക്കാൻ ടോപ്പ് പ്രവർത്തനക്ഷമമാക്കുന്നു, അതുവഴി നിങ്ങൾക്ക് അതിന്റെ ഔട്ട്uപുട്ട് ഒരു ഫയലിലേക്കോ മറ്റൊരു കമാൻഡിലേക്കോ റീഡയറക്uടുചെയ്യാനാകും.
  2. -n – കമാൻഡ് അവസാനിപ്പിക്കുന്നതിന് മുമ്പുള്ള ആവർത്തനങ്ങളുടെ എണ്ണം വ്യക്തമാക്കുന്നു.

നിങ്ങൾക്ക് ഇനിപ്പറയുന്ന രീതിയിൽ cat കമാൻഡ് ഉപയോഗിച്ച് top.log ഫയലിന്റെ ഉള്ളടക്കം കാണാൻ കഴിയും:

$ cat top.log

ഒരു കമാൻഡിന്റെ ഔട്ട്പുട്ട് കൂട്ടിച്ചേർക്കാൻ, \>>” ഓപ്പറേറ്റർ ഉപയോഗിക്കുക.

ഉദാഹരണത്തിന്, top.log ഫയലിൽ, പ്രത്യേകിച്ച് ഒരു സ്ക്രിപ്റ്റിനുള്ളിൽ (അല്ലെങ്കിൽ കമാൻഡ് ലൈനിൽ) മുകളിലെ ടോപ്പ് കമാൻഡിന്റെ ഔട്ട്പുട്ട് കൂട്ടിച്ചേർക്കുന്നതിന്, താഴെയുള്ള വരി നൽകുക:

$ top -bn 5 >>top.log

ശ്രദ്ധിക്കുക: ഫയൽ ഡിസ്ക്രിപ്റ്റർ നമ്പർ ഉപയോഗിച്ച്, മുകളിലുള്ള ഔട്ട്പുട്ട് റീഡയറക്ട് കമാൻഡ് ഇതുപോലെയാണ്:

$ top -bn 5 1>top.log

ലിനക്സിലെ ഫയലിലേക്ക് സ്റ്റാൻഡേർഡ് പിശക് എങ്ങനെ റീഡയറക്ട് ചെയ്യാം

ഒരു കമാൻഡിന്റെ സ്റ്റാൻഡേർഡ് പിശക് റീഡയറക്uട് ചെയ്യുന്നതിന്, നിങ്ങൾ എന്താണ് ചെയ്യാൻ ശ്രമിക്കുന്നതെന്ന് മനസിലാക്കാൻ ഷെല്ലിനായി ഫയൽ ഡിസ്ക്രിപ്റ്റർ നമ്പർ, 2 വ്യക്തമായി വ്യക്തമാക്കേണ്ടതുണ്ട്.

ഉദാഹരണത്തിന് റൂട്ട് പ്രത്യേകാവകാശങ്ങളില്ലാതെ ഒരു സാധാരണ സിസ്റ്റം ഉപയോക്താവ് എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ താഴെയുള്ള ls കമാൻഡ് ഒരു പിശക് സൃഷ്ടിക്കും:

$ ls -l /root/

നിങ്ങൾക്ക് സ്റ്റാൻഡേർഡ് പിശക് ഇനിപ്പറയുന്ന രീതിയിൽ ഒരു ഫയലിലേക്ക് റീഡയറക്uട് ചെയ്യാൻ കഴിയും:

$ ls -l /root/ 2>ls-error.log
$ cat ls-error.log 

സ്റ്റാൻഡേർഡ് പിശക് കൂട്ടിച്ചേർക്കുന്നതിന്, താഴെയുള്ള കമാൻഡ് ഉപയോഗിക്കുക:

$ ls -l /root/ 2>>ls-error.log

സ്റ്റാൻഡേർഡ് ഔട്ട്uപുട്ട്/ പിശക് ഒരു ഫയലിലേക്ക് എങ്ങനെ റീഡയറക്uട് ചെയ്യാം

ഒരു കമാൻഡിന്റെ എല്ലാ ഔട്ട്uപുട്ടും (സ്റ്റാൻഡേർഡ് ഔട്ട്uപുട്ടും സ്റ്റാൻഡേർഡ് പിശകും) ഒരൊറ്റ ഫയലിലേക്ക് ക്യാപ്uചർ ചെയ്യാനും സാധിക്കും. ഫയൽ ഡിസ്ക്രിപ്റ്റർ നമ്പറുകൾ വ്യക്തമാക്കുന്നതിലൂടെ ഇത് സാധ്യമായ രണ്ട് വഴികളിൽ ചെയ്യാം:

1. ആദ്യത്തേത് താരതമ്യേന പഴയ രീതിയാണ്, അത് ഇനിപ്പറയുന്ന രീതിയിൽ പ്രവർത്തിക്കുന്നു:

$ ls -l /root/ >ls-error.log 2>&1

മുകളിലെ കമാൻഡ് അർത്ഥമാക്കുന്നത് ഷെൽ ആദ്യം ls കമാൻഡിന്റെ ഔട്ട്പുട്ട് ls-error.log എന്ന ഫയലിലേക്ക് അയയ്ക്കും (>ls-error.log ഉപയോഗിച്ച്), തുടർന്ന് എല്ലാ പിശക് സന്ദേശങ്ങളും ഫയൽ ഡിസ്ക്രിപ്റ്ററിലേക്ക് എഴുതുന്നു. 2 (സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട്) അത് ls-error.log എന്ന ഫയലിലേക്ക് റീഡയറക്uട് ചെയ്uതു (2>&1 ഉപയോഗിച്ച്). സ്റ്റാൻഡേർഡ് ഔട്ട്uപുട്ടിന്റെ അതേ ഫയലിലേക്ക് സ്റ്റാൻഡേർഡ് പിശകും അയയ്uക്കുന്നുവെന്ന് സൂചിപ്പിക്കുന്നു.

2. രണ്ടാമത്തേതും നേരിട്ടുള്ളതുമായ രീതി ഇതാണ്:

$ ls -l /root/ &>ls-error.log

നിങ്ങൾക്ക് ഇതുപോലുള്ള ഒരൊറ്റ ഫയലിലേക്ക് സ്റ്റാൻഡേർഡ് ഔട്ട്uപുട്ടും സ്റ്റാൻഡേർഡ് പിശകും ചേർക്കാനും കഴിയും:

$ ls -l /root/ &>>ls-error.log

സ്റ്റാൻഡേർഡ് ഇൻപുട്ട് ഫയലിലേക്ക് എങ്ങനെ റീഡയറക്uട് ചെയ്യാം

മിക്കവാറും എല്ലാ കമാൻഡുകൾക്കും അവയുടെ ഇൻപുട്ട് സാധാരണ ഇൻപുട്ടിൽ നിന്ന് ലഭിക്കുന്നു, കൂടാതെ സ്ഥിരസ്ഥിതിയായി സ്റ്റാൻഡേർഡ് ഇൻപുട്ട് കീബോർഡിൽ ഘടിപ്പിച്ചിരിക്കുന്നു.

കീബോർഡ് ഒഴികെയുള്ള ഒരു ഫയലിൽ നിന്ന് സ്റ്റാൻഡേർഡ് ഇൻപുട്ട് റീഡയറക്uട് ചെയ്യുന്നതിന്, താഴെ പറയുന്നതുപോലെ \<” ഓപ്പറേറ്റർ ഉപയോഗിക്കുക:

$ cat <domains.list 

ഫയലിലേക്ക് സ്റ്റാൻഡേർഡ് ഇൻപുട്ട്/ഔട്ട്പുട്ട് എങ്ങനെ റീഡയറക്ട് ചെയ്യാം

ചുവടെയുള്ള സോർട്ട് കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരേ സമയം സ്റ്റാൻഡേർഡ് ഇൻപുട്ട്, സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ട് റീഡയറക്ഷൻ നടത്താം:

$ sort <domains.list >sort.output

പൈപ്പുകൾ ഉപയോഗിച്ച് I/O റീഡയറക്ഷൻ എങ്ങനെ ഉപയോഗിക്കാം

ഒരു കമാൻഡിന്റെ ഔട്ട്uപുട്ട് മറ്റൊന്നിന്റെ ഇൻപുട്ടായി റീഡയറക്uട് ചെയ്യുന്നതിന്, നിങ്ങൾക്ക് പൈപ്പുകൾ ഉപയോഗിക്കാം, സങ്കീർണ്ണമായ പ്രവർത്തനങ്ങൾക്കായി ഉപയോഗപ്രദമായ കമാൻഡ് ലൈനുകൾ നിർമ്മിക്കുന്നതിനുള്ള ശക്തമായ മാർഗമാണിത്.

ഉദാഹരണത്തിന്, ചുവടെയുള്ള കമാൻഡ് അടുത്തിടെ പരിഷ്കരിച്ച മികച്ച അഞ്ച് ഫയലുകൾ ലിസ്റ്റ് ചെയ്യും.

$ ls -lt | head -n 5 

ഇവിടെ, ഓപ്ഷനുകൾ:

  1. -l – നീണ്ട ലിസ്റ്റിംഗ് ഫോർമാറ്റ് പ്രാപ്തമാക്കുന്നു
  2. -t – ഏറ്റവും പുതിയ ഫയലുകൾ ഉപയോഗിച്ച് പരിഷ്uക്കരിച്ച സമയം അനുസരിച്ച് അടുക്കുക, ആദ്യം കാണിക്കുക
  3. -n – കാണിക്കേണ്ട ഹെഡർ ലൈനുകളുടെ എണ്ണം വ്യക്തമാക്കുന്നു

പൈപ്പ് ലൈനുകൾ നിർമ്മിക്കുന്നതിനുള്ള പ്രധാന കമാൻഡുകൾ

ഇവിടെ, കമാൻഡ് പൈപ്പ് ലൈനുകൾ നിർമ്മിക്കുന്നതിനുള്ള രണ്ട് പ്രധാന കമാൻഡുകൾ ഞങ്ങൾ ചുരുക്കമായി അവലോകനം ചെയ്യും, അവ ഇവയാണ്:

സ്റ്റാൻഡേർഡ് ഇൻപുട്ടിൽ നിന്ന് കമാൻഡ് ലൈനുകൾ നിർമ്മിക്കുന്നതിനും നടപ്പിലാക്കുന്നതിനും ഉപയോഗിക്കുന്ന xargs. xargs ഉപയോഗിക്കുന്ന ഒരു പൈപ്പ്ലൈനിന്റെ ഒരു ഉദാഹരണം ചുവടെയുണ്ട്, Linux-ൽ ഒന്നിലധികം ഡയറക്ടറികളിലേക്ക് ഒരു ഫയൽ പകർത്താൻ ഈ കമാൻഡ് ഉപയോഗിക്കുന്നു:

$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

കൂടാതെ ഓപ്ഷനുകൾ:

  1. -n 1 – ഒരു കമാൻഡ് ലൈനിൽ പരമാവധി ഒരു ആർഗ്യുമെന്റ് ഉപയോഗിക്കാനും cp കമാൻഡിലേക്ക് അയയ്ക്കാനും xargs-നോട് നിർദ്ദേശിക്കുന്നു
  2. cp – ഫയൽ പകർത്തുന്നു
  3. -v – കോപ്പി കമാൻഡിന്റെ പുരോഗതി കാണിക്കുന്നു.

കൂടുതൽ ഉപയോഗ ഓപ്ഷനുകൾക്കും വിവരങ്ങൾക്കും, xargs മാൻ പേജിലൂടെ വായിക്കുക:

$ man xargs 

ഒരു ടീ കമാൻഡ് സ്റ്റാൻഡേർഡ് ഇൻപുട്ടിൽ നിന്ന് വായിക്കുകയും സ്റ്റാൻഡേർഡ് ഔട്ട്പുട്ടിലേക്കും ഫയലുകളിലേക്കും എഴുതുകയും ചെയ്യുന്നു. ടീ എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് നമുക്ക് ഇനിപ്പറയുന്ന രീതിയിൽ കാണിക്കാം:

$ echo "Testing how tee command works" | tee file1 

ലിനക്സ് സിസ്റ്റം അഡ്മിനിസ്ട്രേഷൻ ജോലികൾ.

ലിനക്സ് ഫിൽട്ടറുകളെയും പൈപ്പുകളെയും കുറിച്ച് കൂടുതലറിയാൻ, ഈ ലേഖനം വായിക്കുക, അപ്പാച്ചെ സെർവർ ആക്സസ് ചെയ്യുന്ന മികച്ച 10 IP വിലാസങ്ങൾ കണ്ടെത്തുക, ഫിൽട്ടറുകളും പൈപ്പുകളും ഉപയോഗിക്കുന്നതിനുള്ള ഉപയോഗപ്രദമായ ഉദാഹരണം കാണിക്കുന്നു.

ഈ ലേഖനത്തിൽ, ലിനക്സിലെ I/O റീഡയറക്uഷന്റെ അടിസ്ഥാനകാര്യങ്ങൾ ഞങ്ങൾ വിശദീകരിച്ചു. ചുവടെയുള്ള ഫീഡ്uബാക്ക് വിഭാഗം വഴി നിങ്ങളുടെ ചിന്തകൾ പങ്കിടാൻ ഓർക്കുക.