Kemut Se on tietokoneohjelma, jonka tehtävänä on tulkita tilauksia. Se perustuu unix ja kirjoitettiin projektille GNU on oletuskuori useimmissa GNU / Linux. Hänen nimensä on lyhenne sanoista Bourne-Again -kuori (toinen kuori bourne), pelaamalla sanoja (uudestisyntynyt tarkoittaa uudestisyntymistä) on Bourne-kuori (sh), joka oli yksi ensimmäisistä suurimmista Unix-tulkeista.
Tänään aiomme näyttää joitain komentosarjoja, jotka voivat olla erittäin hyödyllisiä kehittäjille. Suurin osa työskentelee missä tahansa kuoressa unix, vaikka jotkut vaativatkin, että ne toteuttavat nimenomaan Kemut.
Estä muita kuin etuoikeutettuja käyttäjiä suorittamasta komentosarjaa
Jotkut komentosarjat suorittavat hallintatehtäviä, joten saatamme haluta vain pääkäyttäjän suorittavan komentosarjan. Siinä tapauksessa voimme käyttää jotain tällaista:
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "Este script debe ser ejecutado por el usuario root" 1>&2
exit 1
fi
Salli komentosarjojen suorittaminen vain tietylle käyttäjälle
Samanlainen kuin yllä oleva koodi, saatamme haluta vain tietyn käyttäjän suorittavan komentosarjan. Teemme sen niin:
#!/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
Varmista, että palvelu / prosessi on käynnissä
Jos haluamme tietää, onko jokin palvelu tai ohjelma käynnissä, voimme käyttää tätä komentosarjaa (tässä tapauksessa se tarkistaa, että Apache juoksee):
#!/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
Luo lukitustiedosto
Joskus meidän on varmistettava, että komentosarja ei toimi kaksi tai useampia kertoja samanaikaisesti. Tätä varten voimme käyttää lukitustiedostoja. Tämä on yksinkertainen versio komentosarjasta, jonka avulla voimme tehdä tämän:
#!/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
Tässä tapauksessa varmistetaan, että tiedosto mitä tahansa. lukko olla olemassa. Jos se on olemassa, komentosarja EI suorita tehtäviään. Jos sitä ei ole, se luo tiedoston, suorittaa suoritettavat tehtävät ja poistaa sen. Mutta tämä ei ole täysin luotettava. Mitä tapahtuisi, jos komentosarjan ollessa käynnissä se suljetaan äkillisesti?
Siinä tapauksessa lukitustiedostoa ei poisteta, ja siksi se ei salli meidän suorittaa komentosarjaa uudelleen. Näiden tapausten kattamiseksi voisimme käyttää trap-komentoa, jonka avulla voimme suorittaa komentoja, jos komentosarjamme päättyy odottamatta. Tämä on edistyneempi versio, joka myös tallentaa sen suorittavan komentosarjan PID: n lukitustiedostoon:
#!/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
Ymmärretään komento hieman paremmin ansa. Sen syntakse on pohjimmiltaan tämä: ansa-komentosignaali [signaali…]; missä signaali on lopetussignaali, jonka haluat kiinni. Jos haluat nähdä luettelon käytettävissä olevista signaaleista, voit suorittaa komennon kill -l. Edellisessä tapauksessa käytettiin INT-signaaleja (sieppaa Ctrl + c: n tuottaman irtisanomisen), TERMI (lopetus tuotettu tappokomennolla) ja EXIT (komentosarjan normaali lopetus joko siksi, että ei ole enää suoritettavia rivejä, tai koska se törmää exit-komentoon).
Asetukset-valikko
Jos haluat tehdä valikon, jossa annamme käyttäjän valita sarjan vaihtoehtoja, voimme käyttää seuraavaa kaavaa:
#!/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
Kysy vahvistusta ennen komentosarjan suorittamista
Joskus on hyödyllistä saada käyttäjän vahvistamaan lauseerän suorittaminen, toisin sanoen tyypillinen viesti, joka pyytää käyttäjää kirjoittamaan kyllä tai ei. Voimme tehdä tämän näin:
#!/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"
Artikkelin loppu. Yksinkertaisesti hienoa
Muokata: Sinun on oltava varovainen välilyöntien ja välilehtien suhteen, jotka eivät jostain syystä tule ulos ¬¬