કોઈપણ પ્રોગ્રામમાં ઉપયોગી શેલ સ્ક્રિપ્ટો

બાસ તે એક કમ્પ્યુટર પ્રોગ્રામ છે જેનું કાર્ય ઓર્ડરનું અર્થઘટન કરવાનું છે. તે શેલ પર આધારિત છે યુનિક્સ અને પ્રોજેક્ટ માટે લખાયેલું હતું જીએનયુ ના મોટાભાગના ડિસ્ટ્રિબ્યુશનમાં ડિફોલ્ટ શેલ છે જીએનયુ / લિનક્સ. તેનું નામ ટૂંકું નામ છે બોર્ન-અગેન શેલ (બીજો શેલ બોર્ન), શબ્દો પર એક નાટક બનાવે છે (ફરીથી જન્મ લેવાનો અર્થ પુનર્જન્મ) આ વિશે બોર્ન શેલ (શ), જે યુનિક્સના પ્રથમ મુખ્ય દુભાષિયાઓમાંનું એક હતું.

આજે અમે કેટલીક શેલ સ્ક્રિપ્ટો બતાવવા જઈ રહ્યા છીએ જે વિકાસકર્તાઓ માટે ખૂબ ઉપયોગી સાબિત થઈ શકે છે. કોઈપણ શેલમાં મોટાભાગના કામ કરે છે યુનિક્સ, જોકે કેટલાકને જરૂરી છે કે તેઓ ખાસ દ્વારા ચલાવવામાં આવશે બાસ.

બિન-વિશેષાધિકૃત વપરાશકર્તાઓને સ્ક્રિપ્ટ ચલાવવાથી રોકો

કેટલીક સ્ક્રિપ્ટો વહીવટી કાર્યો કરે છે જેથી આપણે ફક્ત રુટ વપરાશકર્તાને સ્ક્રિપ્ટ ચલાવવા માંગતા હોઈએ. તે કિસ્સામાં આપણે આની જેમ કંઈક વાપરી શકીએ છીએ:

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "Este script debe ser ejecutado por el usuario root" 1>&2
exit 1
fi

ફક્ત વિશિષ્ટ વપરાશકર્તાને સ્ક્રિપ્ટ એક્ઝેક્યુશનની મંજૂરી આપો

ઉપરના કોડની જેમ, આપણે પણ ફક્ત સ્ક્રિપ્ટ ચલાવવા માટે કોઈ વિશિષ્ટ વપરાશકર્તાની ઇચ્છા રાખીશું. અમે તે આમ કરીએ છીએ:

#!/bin/bash
AUTHORIZED_USER="usuario_permitido"
if [ $USER != $AUTHORIZED_USER ]; then
echo "Este script debe ser ejecutado por el usuario $AUTHORIZED_USER" 1>&2
exit 1
fi

ચકાસો કે સેવા / પ્રક્રિયા ચાલી રહી છે

જો આપણે જાણવું હોય કે કોઈ સેવા અથવા પ્રોગ્રામની પ્રક્રિયાઓ ચાલી રહી છે કે શું અમે આ સ્ક્રિપ્ટનો ઉપયોગ કરી શકીએ છીએ (આ કિસ્સામાં તે ચકાસે છે કે રાક્ષસ અપાચે ચાલી રહ્યું છે):

#!/bin/sh
SERVICE='httpd'
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "El servicio $SERVICE esta ejecutandose"
else
echo "Chanfle! El servicio $SERVICE esta detenido"
fi

લ fileક ફાઇલ બનાવો

કેટલીકવાર આપણે સુનિશ્ચિત કરવું જોઈએ કે સ્ક્રિપ્ટ એક સાથે બે અથવા વધુ વખત ચાલતી નથી. આ માટે આપણે લ filesક ફાઇલોનો ઉપયોગ કરી શકીએ છીએ. આ સ્ક્રિપ્ટનું એક સરળ સંસ્કરણ છે જે અમને આ કરવાની મંજૂરી આપે છે:

#!/bin/bash
lockfile=/var/lock/loquesea.lock
if [ ! -e $lockfile ]; then
touch $lockfile
echo "hago muchas cosas importantes aqui"
rm $lockfile
else
echo "ya hay otro proceso corriendo"
fi

આ કિસ્સામાં, તે ફાઇલની ચકાસણી કરવામાં આવી છે કંઈપણ.લોક અસ્તિત્વમાં છે. જો તે અસ્તિત્વમાં છે, તો સ્ક્રિપ્ટ તેના કાર્યો ચલાવતું નથી. જો તે અસ્તિત્વમાં નથી, તો તે ફાઇલ બનાવે છે, ચલાવવા માટે જરૂરી કાર્યો ચલાવે છે, અને તેને દૂર કરે છે. પરંતુ, આ સંપૂર્ણ રીતે વિશ્વસનીય નથી. જો આપણી સ્ક્રિપ્ટ ચાલે છે ત્યારે તે અચાનક બંધ થઈ જાય છે, તો શું થશે?

તે કિસ્સામાં લ fileક ફાઇલ કા deletedી નાખવામાં આવશે નહીં, અને તેથી તે અમને ફરીથી સ્ક્રિપ્ટ ચલાવવાની મંજૂરી આપશે નહીં. તે કિસ્સાઓને આવરી લેવા માટે, આપણે ટ્રેપ કમાન્ડનો ઉપયોગ કરી શકીએ છીએ જે આપણી સ્ક્રિપ્ટ અનપેક્ષિત રીતે સમાપ્ત થાય છે તે આદેશો ચલાવવા માટે પરવાનગી આપે છે. આ એક અદ્યતન સંસ્કરણ છે જે સ્ક્રિપ્ટના પીઆઈડીને પણ સાચવે છે જે તેને લ fileક ફાઇલમાં ચલાવે છે:

#!/bin/bash
lockfile=/var/lock/loquesea.lock
if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null;
then
trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
echo "hago muchas cosas aqui tranquilamente"
rm -f "$lockfile"
trap - INT TERM EXIT
else
echo "Ya hay otro proceso de este script ejecutandose"
echo "corriendo con el PID: $(cat $lockfile)"
fi

ચાલો આદેશ થોડી વધુ સારી રીતે સમજીએ છટકું. મૂળભૂત રીતે તેનો વાક્યરચના આ છે: ટ્રેપ આદેશ સંકેત [સિગ્નલ…]; જ્યાં સિગ્નલ એ ટર્મિનેશન સિગ્નલ છે જેને તમે પકડવા માંગો છો. જો તમે ઉપલબ્ધ સિગ્નલોની સૂચિ જોવા માંગતા હો, તો તમે કીલ -l આદેશ ચલાવી શકો છો. પાછલા કેસ માટે આઈએનટી સંકેતોનો ઉપયોગ થતો હતો (Ctrl + c દ્વારા ઉત્પાદિત સમાપ્તિ મેળવે છે), ટર્મ (કીટ આદેશ દ્વારા સમાપ્ત થવું) અને બહાર નીકળો (સ્ક્રિપ્ટની સામાન્ય સમાપ્તિ, કારણ કે ત્યાં ચલાવવા માટે કોઈ વધુ લાઇનો નથી અથવા તે એક્ઝિટ આદેશની આજુબાજુ આવે છે).

વિકલ્પો મેનૂ

મેનુ બનાવવા માટે જ્યાં અમે વપરાશકર્તાને શ્રેણીબદ્ધ વિકલ્પોની પસંદગી કરવાની મંજૂરી આપીએ છીએ અમે નીચેની યોજનાનો ઉપયોગ કરી શકીએ છીએ.

#!/bin/bash
clear
while :
do
echo " Escoja una opcion "
echo "1. quien soy?"
echo "2. cuanto espacio tengo"
echo "3. que es esto?"
echo "4. Salir"
echo -n "Seleccione una opcion [1 - 4]"
read opcion
case $opcion in
1) echo "este eres:";
whoami;;
2) echo "tienes esto";
df;;
3) uname -r;;
4) echo "chao";
exit 1;;
*) echo "$opc es una opcion invalida. Es tan dificil?";
echo "Presiona una tecla para continuar...";
read foo;;
esac
done

સ્ક્રિપ્ટ ચલાવતા પહેલા પુષ્ટિ માટે પૂછો

કેટલીકવાર તે ઉપયોગી છે કે વપરાશકર્તા નિવેદનોના બેચના અમલની પુષ્ટિ કરે, એટલે કે, લાક્ષણિક સંદેશ જે વપરાશકર્તાને હા અથવા ના લખવા માટે પૂછે છે. આપણે આ આ રીતે કરી શકીએ:

#!/bin/bash
while true; do
echo
read -p "esta seguro de hacer lo que sea que vaya a hacer " yn
case $yn in
yes ) break;;
no ) exit;;
* ) echo "por favor responda yes o no";;
esac
done
echo "si se ejecuta esto es que aceptaste"

લેખનો અંત. ફક્ત મહાન 😀

સંપાદિત કરો: તમારે ખાલી જગ્યાઓ અને ટsબ્સથી સાવચેત રહેવું જોઈએ, જે કેટલાક કારણોસર બહાર નથી આવી રહ્યું ¬¬


તમારી ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. આવશ્યક ક્ષેત્રો સાથે ચિહ્નિત થયેલ છે *

*

*

  1. ડેટા માટે જવાબદાર: મિગ્યુએલ gelંજેલ ગેટóન
  2. ડેટાનો હેતુ: નિયંત્રણ સ્પામ, ટિપ્પણી સંચાલન.
  3. કાયદો: તમારી સંમતિ
  4. ડેટાની વાતચીત: કાયદાકીય જવાબદારી સિવાય ડેટા તૃતીય પક્ષને આપવામાં આવશે નહીં.
  5. ડેટા સ્ટોરેજ: cસેન્ટસ નેટવર્ક્સ (ઇયુ) દ્વારા હોસ્ટ કરેલો ડેટાબેઝ
  6. અધિકાર: કોઈપણ સમયે તમે તમારી માહિતીને મર્યાદિત, પુન recoverપ્રાપ્ત અને કા deleteી શકો છો.

  1.   કેઝેડકેજી ^ ગારા જણાવ્યું હતું કે

    વાહિયાત તેઓ મહાન O_O છે ... તે મારી નાની વસ્તુઓ જે હું બાશ do માં કરું છું તેના માટે ઘણું મદદ કરશે

  2.   Ren434 જણાવ્યું હતું કે

    સ્ક્રિપ્ટો સુપર છે! ગંભીરતાથી કેટલું મોટું યોગદાન છે, ફક્ત તે જ હું શોધી રહ્યો હતો.

    પીએસ: ફોરમ ડાઉન છે.

    1.    કેઝેડકેજી ^ ગારા જણાવ્યું હતું કે

      હા, ફોરમ માઉન્ટ થયેલ છે તે સર્વર offlineફલાઇન છે, શા માટે કોઈ ખ્યાલ નથી ... અમે તે મિત્રને એક ઇમેઇલ લખ્યો હતો જે તેની સંભાળ રાખે છે, તે જોવા માટે કે તે અમારો શું પ્રતિસાદ આપે છે.

      શુભેચ્છાઓ.

  3.   Ren434 જણાવ્યું હતું કે

    અરે સારું, ચાલો આશા રાખીએ કે તે કંઈ ગંભીર નથી.

  4.   ડાબી બાજુ જણાવ્યું હતું કે

    શું તે "ચાફ" નો કોડ નીન્જામાં શામેલ હતો? એક્સડી

  5.   ટેરેગન જણાવ્યું હતું કે

    મને બેશ power ની શક્તિ ગમે છે અને તેઓએ મને કહ્યું કે સી ભાષા માટે શું છે ... સારું, શેલ સ્ક્રિપ્ટમાં ઘણી પરિચિત આદેશો છે.

  6.   ક્રિસ્ટોફર જણાવ્યું હતું કે

    આભાર, મને ખરેખર ગમ્યું

  7.   એન્જલબ્લેડ જણાવ્યું હતું કે

    ઇનપુટ પરિમાણોનું માન્યતા ખૂબ જ ઉપયોગી છે. મને મેનૂ કેવી રીતે બનાવવું તે ખબર નથી =)

  8.   હ્યુગાગા_નિજી જણાવ્યું હતું કે

    મહાન…. હવે હું મારી સ્ક્રિપ્ટ કુરરોઝ હેહેને થોડી "કઠિનતા" આપી શકું છું

  9.   જંગલી કાગડો જણાવ્યું હતું કે

    કોડનીંજામાં આપણું નમ્ર કાર્ય આંતરરાષ્ટ્રીય લિનક્સ સમુદાયને કેવી રીતે સેવા આપે છે તે જોઈને ખૂબ આનંદ થયો

    1.    કેઝેડકેજી ^ ગારા જણાવ્યું હતું કે

      ચોખ્ખુ! 🙂
      બધું મદદ કરવા અને એક સાથે યોગદાન આપવા માટે છે, અને જ્વાળાઓ બનાવવા માટે નથી, બરાબર છે? 😉

  10.   ડિએગો જણાવ્યું હતું કે

    પ્રક્રિયા સ્ક્રિપ્ટ કે જે ચાલે છે તે પ્રક્રિયા વિશે તમે જાણવાની ઇચ્છા પસંદ કરીને થોડો સુધારી શકશો, તે આના જેવું દેખાશે:

    #! / બિન / બૅશ
    ઇકો "સેવા પસંદ કરો"
    સર્વિસ વાંચો
    # સર્વિસ = 'mysql'
    જો પીએસ કુહાડી | grep -v ગ્રેપ | ગ્રેપ $ સર્વિસ> / દેવ / નલ
    પછી
    ઇકો "$ સર્વિસ સેવા ચાલુ છે"
    બીજું
    ઇકો "$ સર્વિસ સેવા બંધ છે"

  11.   જુઆ કાર્લોસ સી જણાવ્યું હતું કે

    હું તેની સ્ક્રિપ્ટો સાથે ખૂબ જ વ્યવહારુ છું, પરંતુ મારી પાસે જે સમસ્યા છે તેના નિરાકરણ માટે હું એક ખાસ સ્ક્રિપ્ટ શોધી રહ્યો છું, જે નીચે આપેલ છે: અમારી પાસે કંપનીમાં એક એપ્લિકેશન સર્વર છે જે આંતરિક વપરાશકર્તાઓ ટેલનેટ દ્વારા accessક્સેસ કરે છે, અને એક ખાસ એપ્લિકેશન ચલાવે છે જે મર્યાદિત છે લાઇસન્સ માટે, વપરાશકર્તાઓ 2 અથવા વધુ લાઇસેંસ લેવા માટે એક કરતા વધુ ટેલિનેટ ખોલે છે અને ખોલે છે, તેથી મેં વિચાર્યું છે કે સ્ક્રિપ્ટ એ છે કે કેટલીક પદ્ધતિ દ્વારા 2 કલાકથી વધુ સમય માટે કઈ ટેલનેટ પ્રક્રિયા નિષ્ક્રિય છે અને તેથી તેને એક ખૂન મોકલો. પીડ, તમે મને મદદ કરી શકશો?

    1.    ડિએગો જણાવ્યું હતું કે

      નીચેનો પ્રોગ્રામ ઇન્સ્ટોલ કરો

      યોગ્યતા ઇન્સ્ટોલ autટોલોગ

      અને તમારી પાસે /etc/autolog.conf માં ગોઠવણી ફાઇલ છે

  12.   ટીટો જણાવ્યું હતું કે

    સરસ, મિત્ર, હું તમને એક પ્રશ્ન પૂછી શકું છું, મને વિકલ્પો સાથે શેલ સ્ક્રિપ્ટની જરૂર છે અને હું તે તમારા પર આધારિત છે અને તે મહાન કાર્ય કરે છે, પરંતુ એક વિકલ્પ ઇમેઇલ મોકલવા માટે છે (પોસ્ટીફિક્સનો ઉપયોગ કરીને), તે વિષય, ટેક્સ્ટ માટે પૂછે છે અને સ્ક્રીન પર પ્રાપ્તકર્તાઓને મોકલવા અને તપાસો કે તે યોગ્ય રીતે મોકલવામાં આવ્યું છે, મેઈલક્યુ સાથે હું કતાર જોઈ શકું છું અને તે મોકલ્યો છે કે નહીં તે જોઈ શકું છું, પરંતુ વિષય, ટેક્સ્ટ અને પ્રાપ્તકર્તાઓ પ્રાપ્ત કરનારા ચલોનો ઉપયોગ કરીને હું આદેશો દ્વારા ઇમેઇલ્સ કેવી રીતે મોકલી શકું? 🙁

    1.    કેઝેડકેજી ^ ગારા જણાવ્યું હતું કે

      Escríbeme a mi email (kzkggaara[at]desdelinux[dot]net) para hablar con más calma, te ayudo con mucho gusto 🙂

      1.    ટીટો જણાવ્યું હતું કે

        મહાન આભાર મિત્ર, તમે પસાર થયા!

  13.   ફેર જણાવ્યું હતું કે

    હેલો સારું.
    મને જ્યારે મેનુની જરૂર પડે ત્યારે જ હું આ ઉત્તમ ઉદાહરણોનો અનુભવ કરી શકું છું.
    મેં તે પ્રારંભ કરી દીધું છે અને તેને કામ કરવા માટે મળી શકતો નથી (પહેલાનાં પગલામાં).
    મારી પાસે 247 તત્વો છે, જે વિવિધ પ્રાદેશિક ડોમેન્સનો સંદર્ભ આપે છે.
    મને જેની જરૂર છે તે એક મેનુ છે જ્યાંથી દેશ પસંદ કરો:
    #! / બિન / બૅશ
    ચોખ્ખુ
    જ્યારે:
    do
    પડઘો try પ્રયાસ કરવા માટે દેશ પસંદ કરો »
    પડઘો «1. અફઘાનિસ્તાન (એએફ) »
    પડઘો «2. અલ્બેનિયા (AL) »
    પડઘો «3. જર્મની (ડીઇ) »
    પડઘો «5. એન્ગોલા (એઓ) »
    પડઘો «6. એંગુઇલા (એઆઈ) »
    .. અને 247 સુધી ચાલુ રહે છે

    ઇકો-એન "એક વિકલ્પ પસંદ કરો [1 - 247]"
    વાંચવાનો વિકલ્પ
    કેસ $ વિકલ્પ ઇન
    1) પડઘો "આ તમે છો:"; વ્હામી ;;
    2) પડઘો "તમારી પાસે આ છે"; ડીએફ ;;
    3) ઇકો ""; uname -r ;;
    4) ઇકો "બાય"; એક્ઝિટ 1 ;;
    5) પડઘો "આ તમે છો:"; વ્હામી ;;
    6) પડઘો "આ તમે છો:"; વ્હામી ;;
    … અને 247 સુધી ચાલુ રહે છે
    *) ઇકો "$ ઓપસી એ અમાન્ય વિકલ્પ છે. તે આટલું મુશ્કેલ છે? ";;
    ઇકો "ચાલુ રાખવા માટે કી દબાવો ...";
    વાંચો ફૂ ;;
    એસએએસસી
    કર્યું

    વર્તન નીચે મુજબ છે:
    4 સિવાય કોઈપણ વિકલ્પ, જે આઉટપુટ છે, દાખલ કરેલી સંખ્યાને કાtesી નાખે છે અને નવી સંખ્યાની રાહ જુએ છે.
    4 દાખલ કરીને બહાર આવે છે.
    જો હું કોઈ અન્ય લાઇનમાં 4 નો કોડ મૂકી શકું છું (ચાલો કહીએ કે 150) તે સમસ્યાઓ વિના સમાન રીતે બહાર આવે છે.
    મેં આ ફોર્મેટમાં કોડ મૂકવાનો પ્રયાસ પણ કર્યો છે:
    151) એકો "આ તમે છો:";
    હું કોણ છું ;;
    એ જ પરિણામ સાથે.
    મને આશ્ચર્ય છે કે જો આવા લાંબા મેનુ માટે વધુ સારા વિકલ્પો છે અને અલબત્ત હું પણ ખોટું કરી રહ્યો છું.
    મદદની ખૂબ પ્રશંસા કરવામાં આવશે, આભાર

  14.   માત્ર રાઉલ જણાવ્યું હતું કે

    ઉત્તમ ... મને લાગે છે કે શેલમાં પ્રવેશવું ખૂબ સારું છે

    ગ્રાસિઅસ

  15.   માર્કોસ જણાવ્યું હતું કે

    સરસ, હે, હું મારા બેશને ફાઇલથી કેવી રીતે કાર્ય કરી શકું
    ઉદાહરણ:

    અપલોડ.શ fotodelavecina.jpg

    એવું વિચારીને કે મારી બેશ સ્ક્રિપ્ટ "અપલોડ.શ" પાસે મારા ftp ની informationક્સેસ માહિતી છે

    શુભેચ્છાઓ અને આભાર 😀

  16.   નેટઝુલો એનટીએક્સ જણાવ્યું હતું કે

    સારા માણસ, બધા સ્ક્રિપ્ટો માટે ખૂબ ખૂબ આભાર, મેં એક સેન્ટોએસ સર્વર ગોઠવ્યું છે અને તમને ખબર નથી કે આ નમૂનાઓ મારી પાસે કેટલી સારી રીતે આવે છે, કૃપા કરીને, મને ઇમેઇલ દ્વારા સંપર્ક કરો. હું તમને કંઈક પ્રપોઝ કરવા માંગુ છું

  17.   ગેબ્રિયલ બાલ્ડેરમોઝ જણાવ્યું હતું કે

    તમે મેનૂ બનાવતી વખતે રીડ ફૂનો ઉપયોગ કેમ કરો છો? મને ઝડપી જવાબો જોઈએ