ബാഷ് ഉപയോഗിച്ച് നിങ്ങളുടെ സ്വന്തം സ്ക്രിപ്റ്റുകൾ സൃഷ്ടിക്കുക

ലിനക്സ് പഠിക്കുന്നു

ഞങ്ങൾ ഉപയോഗിക്കുന്ന ലിനക്സ് വിതരണം പരിഗണിക്കാതെ തന്നെ, ഈ സിസ്റ്റത്തിന്റെ ഉപയോഗത്തിലേക്ക് കടന്നയുടനെ എന്റെ പ്രിയപ്പെട്ട ഉബുണ്ടു ആണെന്ന് എനിക്ക് സംശയമില്ല. ഓട്ടോമേഷൻ ആവശ്യങ്ങൾ. അതായത്, നമ്മുടെ സൃഷ്ടിക്കുക സ്വന്തം കമാൻഡുകൾ അത് വ്യക്തിഗതമാക്കിയ രീതിയിൽ ചില കമാൻഡുകൾ നിർവ്വഹിക്കുന്നു. ഈ ആവശ്യം ചില കാരണങ്ങളാൽ ആകാം:

  • വാക്യഘടന ലളിതമാക്കുക ഞങ്ങൾ സാധാരണയായി നടപ്പിലാക്കുന്ന കമാൻഡുകളുടെ.
  • എന്തെങ്കിലും ഉൾക്കൊള്ളുന്ന നടപടികൾ കൈക്കൊള്ളുക സിസ്റ്റത്തിൽ മുൻകൂട്ടി കാണാത്ത ആവശ്യം പ്രവർത്തനക്ഷമമാണ്.
  • സീക്വൻസ് ഓർഡറുകൾ ഞങ്ങൾ അത് ആവർത്തിച്ച് ആവർത്തിക്കുന്നു.

ഏതെങ്കിലും ഡയറക്‌ടറിയിൽ‌ നിന്നും / ഒരു ബാഷ് സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കാൻ‌ കഴിയുമെങ്കിലും, ഇത് സാധാരണയായി ഈ സ്ക്രിപ്റ്റുകൾ ഹോസ്റ്റുചെയ്യുന്നതിന് ഒരു ഡയറക്ടറി സൃഷ്ടിക്കുക. എന്റെ കാര്യത്തിൽ:

$ mkdir /home/pedro/.bin

ഞാൻ ഇത് വിശ്വസിക്കുന്നു ഡയറക്‌ടറി (പേരിന് മുന്നിൽ പിരീഡ് നയിച്ചുകൊണ്ട് മറച്ചിരിക്കുന്നു) ഞാൻ ഉപയോഗിക്കുന്ന എല്ലാ സ്ക്രിപ്റ്റുകളും അവിടെ സൂക്ഷിക്കാൻ. ഡയറക്‌ടറിയുടെ പേര് മറഞ്ഞിരിക്കുന്നു എന്നല്ലാതെ മറ്റൊരു അർത്ഥവുമില്ല - വ്യക്തമായി വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ - ഗ്രാഫിക്കൽ മോഡിൽ ഫയൽ വ്യൂവറിൽ നിന്ന് / ഹോം / പെഡ്രോ കാണുമ്പോൾ ദൃശ്യമാകില്ല.

ഇപ്പോൾ നിങ്ങൾ ചെയ്യണം അത് അവിടെയും നോക്കണമെന്ന് ലിനക്സിനെ അറിയിക്കുക (/home/pedro/.bin) ടെർമിനലിൽ നിന്ന് എക്സിക്യൂട്ട് ചെയ്യുന്ന ഓർഡറുകൾ.

$ PATH=$PATH;/home/pedro/.bin

ഈ രീതിയിൽ സിസ്റ്റം അവിടെ ഞങ്ങളുടെ ഓർഡറുകൾക്കായി നോക്കും ഞങ്ങൾ സെഷൻ അടയ്ക്കുന്നതുവരെ. ഈ അസോസിയേഷൻ ശാശ്വതമാക്കുന്നതിന്:

$ sudo nano /etc/environment

ഞങ്ങൾ ചേർക്കുന്നു

:/home/pedro/.bin

PATH വരിയുടെ അവസാനത്തിൽ‌, ഞങ്ങൾ‌ ഉൾ‌ക്കൊള്ളുന്ന ഡയറക്‌ടറിയുടെ വിലാസത്തിന് മുമ്പായി കോളൻ‌ മറക്കാതിരിക്കേണ്ടത് വളരെ പ്രധാനമാണ്. ഇതാണ് സങ്കലന സംവിധാനം.

ഞങ്ങളുടെ ആദ്യ ഘട്ടം ഘട്ടമായുള്ള സ്ക്രിപ്റ്റ്

എന്റെ കാര്യത്തിൽ ഇതുപോലുള്ള ഞങ്ങളുടെ ഫയൽ ഞങ്ങൾ സൃഷ്ടിക്കുന്നു:

$ touch ~/.bin/donde

ഇത് എഡിറ്റുചെയ്യാൻ, നിങ്ങൾക്ക് ഇഷ്ടപ്പെട്ട എഡിറ്റർ ഉപയോഗിക്കാം അല്ലെങ്കിൽ ഈ സൂചന പിന്തുടരുക:

$ gedit ~/.bin/donde &

ഞങ്ങൾ ഇനിപ്പറയുന്ന ഉള്ളടക്കം ചേർക്കുന്നു:

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

സ്ക്രിപ്റ്റ് വിശകലനം

ഞങ്ങളുടെ ആദ്യത്തെ കോൾ ലൈൻ «ശെബന്ഗ്»(#! / Usr / bin / env bash) റിപ്പോർട്ട് ചെയ്യാൻ ലിനക്സിനോട് ആവശ്യപ്പെടുക ബാഷ് ഷെൽ എവിടെയാണ് സ്ഥിതിചെയ്യുന്നത് ഇനിപ്പറയുന്നവ ബാഷിന്റെ ആവശ്യകത അനുസരിച്ച് നടപ്പിലാക്കുന്നു. ഈ മുൻകരുതൽ അത് ഉറപ്പാക്കുന്നത് സൗകര്യപ്രദമാണ് ഞങ്ങളുടെ സ്ക്രിപ്റ്റുകൾ ഏത് ഇൻസ്റ്റാളേഷനിലും പ്രവർത്തിക്കുന്നു. സാധ്യമായ മറ്റൊന്ന് ശെബന്ഗ് അവൻ ചിരിച്ചു:

#!/bin/bash

അവ തമ്മിലുള്ള വ്യത്യാസം വളരെ വിചിത്രമാണ്, ഞാൻ അത് വിശദീകരിക്കും. ഈ അവസാനത്തിൽ ഞങ്ങളുടെ സിസ്റ്റത്തിൽ ഞാൻ അത് അനുമാനിക്കുന്നു ബാഷ് ഷെൽ / ബിൻ / ബാഷ് വിലാസത്തിലാണ്. എന്നിരുന്നാലും, സ്ക്രിപ്റ്റിൽ ഞാൻ നിർദ്ദേശിക്കുന്നിടത്ത് അത് എവിടെയാണെന്ന് എനിക്കറിയില്ലെന്ന് ഞാൻ ess ഹിക്കുന്നു ബാഷ് ഇന്റർപ്രെറ്റർ. അദ്ദേഹത്തോട് ആ വിലാസം നൽകാൻ ഞാൻ സിസ്റ്റത്തോട് ആവശ്യപ്പെടുന്നു.

മൂന്നാമത്തെ വരി: നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, രണ്ടാമത്തെ വരി ഒരു if ആണ്. പ്രതീകങ്ങൾ ബാഷ് ചെയ്യുന്നതിന് «$#« കമാൻഡ് ലൈനിൽ നിന്ന് ഞങ്ങൾ കടന്നുപോകുന്ന പാരാമീറ്ററുകളുടെ എണ്ണം ഉൾക്കൊള്ളുന്നു. അതിനാൽ, »if [$ # -lt 1];» അക്ഷരാർത്ഥത്തിൽ അർത്ഥമാക്കുന്നത് "പാരാമീറ്ററുകളുടെ എണ്ണം 1 ൽ കുറവാണെങ്കിൽ".

നാലാമത്തെ വരി: അപ്പോള് (അക്ഷരാർത്ഥത്തിൽ ഇംഗ്ലീഷിൽ നിന്ന് വിവർത്തനം ചെയ്യുന്നു: പിന്നെ), അടുത്തതായി വരുന്നത് ഇവിടെ സൂചിപ്പിച്ചിരിക്കുന്നു അവസ്ഥ വിലയിരുത്തുമ്പോൾ നടപ്പിലാക്കും if സത്യമായിരിക്കുക: മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, പാരാമീറ്ററുകളുടെ എണ്ണം 1 ൽ കുറവാണ്, അതായത് പൂജ്യം.

അഞ്ചാമത്തെ വരി: പാരാമീറ്ററുകൾ ഇല്ലാതെ ഞങ്ങൾ സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ട് ചെയ്യുകയാണെങ്കിൽ, ഞങ്ങൾ ടെർമിനലിൽ കാണിക്കും «നിങ്ങൾ ഒരു പാരാമീറ്റർ കടന്നുപോകേണ്ടതുണ്ട്».

ആറാമത്തെ വരി: ഇനിപ്പറയുന്നവ നടപ്പിലാക്കുമെന്ന് സൂചിപ്പിക്കുന്നു ഞങ്ങൾ പ്രഖ്യാപിച്ച വ്യവസ്ഥ ശരിയല്ലെങ്കിൽ.

ഏഴാമത്തെ വരി: സെ കമാൻഡ് പ്രവർത്തിപ്പിക്കുക «എവിടെ« ഞങ്ങൾ കടന്നുപോയ ഉള്ളടക്കത്തിനൊപ്പം ആദ്യ പാരാമീറ്റർ.

എട്ടാമത്തെ വരി: withfiThe ബ്ലോക്ക് അവസാനിക്കുന്നതായി സൂചിപ്പിക്കുന്നു if.

ഞങ്ങളുടെ സ്ക്രിപ്റ്റ് പരിശോധിക്കുന്നു

അത് പ്രധാനമാണ് റൈറ്റ് അനുമതികൾ ചേർക്കുക സ്ക്രിപ്റ്റിലേക്ക്:

$ chmod -x ~/.bin/donde

ഇത് കൂടാതെ, "അനുമതി നിരസിച്ചു" പിശക് ദൃശ്യമാകും.. അതിനുശേഷം, ഞങ്ങളുടെ സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കാൻ കഴിയും.

$ donde php

ഇത് പി‌എച്ച്പി ബൈനറികളുടെ സ്ഥാനം, അവയുടെ ഉറവിട ഫയലുകൾ, മാൻ പേജുകൾ എന്നിവ കാണിക്കും. അതുപോലെയുള്ള ഒന്ന്:

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

വീണ്ടും ശേഖരിക്കുന്നു

  • ഞങ്ങൾ ഒരു പ്രാപ്തമാക്കുന്നു ഞങ്ങളുടെ സ്ക്രിപ്റ്റുകൾ സ്ഥാപിക്കുന്നതിന് ".bin" ഡയറക്ടറി.
  • ഞങ്ങൾ നൽകുന്നു കമാൻഡ് തിരയലുകളിൽ ഈ ഡയറക്ടറി ഉൾപ്പെടുത്തുന്നതിന് ലിനക്സിലേക്കുള്ള വിവരങ്ങൾ.
  • ഞങ്ങൾ ഞങ്ങളുടെ സ്ക്രിപ്റ്റ് സൃഷ്ടിക്കുന്നു.
  • തമ്മിലുള്ള വ്യത്യാസം വ്യത്യസ്തമാണ് ശെബന്ഗ്.
  • ഉപയോഗം para # ഉപയോഗിച്ച് കൈമാറിയ പാരാമീറ്ററുകളുടെ എണ്ണം.
  • ഉപയോഗം ആദ്യ പാരാമീറ്റർ കൂടെ $1.

ഈ സ്ക്രിപ്റ്റ് നിങ്ങൾക്ക് ഉപയോഗപ്രദമാകുമെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു.


ലേഖനത്തിന്റെ ഉള്ളടക്കം ഞങ്ങളുടെ തത്ത്വങ്ങൾ പാലിക്കുന്നു എഡിറ്റോറിയൽ എത്തിക്സ്. ഒരു പിശക് റിപ്പോർട്ടുചെയ്യാൻ ക്ലിക്കുചെയ്യുക ഇവിടെ.

4 അഭിപ്രായങ്ങൾ, നിങ്ങളുടേത് വിടുക

നിങ്ങളുടെ അഭിപ്രായം ഇടുക

നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിച്ചു ചെയ്യില്ല. ആവശ്യമായ ഫീൽഡുകൾ കൊണ്ട് അടയാളപ്പെടുത്തുന്നു *

*

*

  1. ഡാറ്റയുടെ ഉത്തരവാദിത്തം: മിഗുവൽ ഏഞ്ചൽ ഗാറ്റൻ
  2. ഡാറ്റയുടെ ഉദ്ദേശ്യം: സ്പാം നിയന്ത്രിക്കുക, അഭിപ്രായ മാനേജുമെന്റ്.
  3. നിയമസാധുത: നിങ്ങളുടെ സമ്മതം
  4. ഡാറ്റയുടെ ആശയവിനിമയം: നിയമപരമായ ബാധ്യതയല്ലാതെ ഡാറ്റ മൂന്നാം കക്ഷികളുമായി ആശയവിനിമയം നടത്തുകയില്ല.
  5. ഡാറ്റ സംഭരണം: ഒസെന്റസ് നെറ്റ്‌വർക്കുകൾ (ഇയു) ഹോസ്റ്റുചെയ്യുന്ന ഡാറ്റാബേസ്
  6. അവകാശങ്ങൾ: ഏത് സമയത്തും നിങ്ങളുടെ വിവരങ്ങൾ പരിമിതപ്പെടുത്താനും വീണ്ടെടുക്കാനും ഇല്ലാതാക്കാനും കഴിയും.

  1.   മൈഗ്രൽ പറഞ്ഞു

    വളരെ നല്ലതും നന്നായി വിശദീകരിച്ചതുമാണ്, എന്നാൽ ഒരു പാരാമീറ്റർ എന്താണ് സൂചിപ്പിക്കുന്നത്?

    1.    പെഡ്രോ റൂയിസ് ഹിഡാൽഗോ പ്ലെയ്‌സ്‌ഹോൾഡർ ചിത്രം പറഞ്ഞു

      നന്ദി മിഗുവേൽ!

      ഒരു പ്രോഗ്രാം, ഫംഗ്ഷൻ അല്ലെങ്കിൽ സിസ്റ്റത്തിലേക്ക് വിതരണം ചെയ്യുന്ന എല്ലാ പൂരക വിവരങ്ങളും പാരാമീറ്റർ വഴി ഞാൻ മനസ്സിലാക്കുന്നു. ഇത് ബുദ്ധിമുട്ടുള്ളതാകയാൽ, കുറച്ച് ഉദാഹരണങ്ങൾ ഉപയോഗിച്ച് ഞാൻ നിങ്ങൾക്ക് ഉത്തരം നൽകട്ടെ.

      A.txt ഫയൽ b.txt ഫയലിലേക്ക് പകർത്താനുള്ള ലിനക്സ് കമാൻഡിൽ, ഞങ്ങൾ ഇനിപ്പറയുന്നവ എഴുതുന്നു:

      $cp a.txt b.txt

      ഇവിടെയുള്ള സി‌പി പ്രോഗ്രാമിന് രണ്ട് ഫയലുകളുടെ പേരുകളായ രണ്ട് പാരാമീറ്ററുകൾ ലഭിക്കുന്നു, ആദ്യത്തേത് (ഉണ്ടായിരിക്കണം) a.txt ഉം രണ്ടാമത്തെ b.txt ഉം.

      മറ്റൊരു ഉദാഹരണം: കമാൻഡ് ഉപയോഗിച്ച് കൺസോളിൽ നിന്ന് പ്രിന്റുചെയ്യാൻ നിങ്ങൾ അയയ്ക്കുകയാണെങ്കിൽ

      $ lp file.pdf

      ഈ സാഹചര്യത്തിൽ "file.pdf" എന്നത് lp പ്രോഗ്രാമിനായുള്ള ഒരു പാരാമീറ്ററാണ്.

      നിങ്ങളുടെ സംശയങ്ങൾ ഞാൻ തൃപ്തിപ്പെടുത്തിയെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു.

      നന്ദി!

  2.   മൈഗ്രൽ പറഞ്ഞു

    എന്റെ അഭിപ്രായങ്ങൾ പുറത്തുവരുന്നില്ല, അത് ബഹുമാനക്കുറവാണ്, ഞാൻ വീണ്ടും ഈ ഫോറത്തിലേക്ക് മടങ്ങുന്നില്ല.

    1.    പെഡ്രോ റൂയിസ് ഹിഡാൽഗോ പ്ലെയ്‌സ്‌ഹോൾഡർ ചിത്രം പറഞ്ഞു

      എന്താണ് സംഭവിച്ചതെന്ന് എനിക്കറിയില്ല, ഏത് സാഹചര്യത്തിലും ഇത് പ്രസിദ്ധീകരിച്ചു.

      നന്ദി.