Bash má několik příkazů, které jsou součástí shellu (tj. zabudované uvnitř bash shellu).
Když spustíte vestavěný příkaz, bash Shell jej provede okamžitě, bez vyvolání jakéhokoli jiného programu.
Vestavěné příkazy shellu Bash jsou rychlejší než externí příkazy, protože externí příkazy obvykle rozvětvují proces, aby jej provedly.
V tomto článku si projdeme několik užitečných vestavěných shellů bash s příklady.
1. Příklad příkazu exportu Bash
Příkaz export se používá k exportu proměnné nebo funkce do prostředí všech podřízených procesů běžících v aktuálním shellu.
export varname=value
export -f functionname # exports a function in the current shell.
Exportuje proměnnou nebo funkci s hodnotou. Příkaz „env“ vypíše všechny proměnné prostředí. V následujícím příkladu můžete vidět, že env zobrazuje exportovanou proměnnou.
$ export country=India $ env SESSIONNAME=Console country=India _=/usr/bin/env
Příkaz „export -p“ také zobrazí všechny exportované proměnné v aktuálním shellu.
2. Příklad příkazu Bash eval
příkaz eval zkombinuje všechny zadané argumenty a vyhodnotí kombinovaný výraz a provede jej a vrátí stav ukončení provedeného příkazu.
$ cat evalex.sh if [ ! -z $1 ] then proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | grep $1" else proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu" fi eval $proccomm
Výše uvedený fragment kódu přijímá argument, což je vzor pro příkaz grep. Zde jsou uvedeny procesy v pořadí využití procesoru a greps pro konkrétní vzor uvedený v příkazovém řádku.
Poznámka: Tento článek je součástí naší probíhající série výukových programů Bash.
3. Příklad příkazu Bash hash
hash příkaz udržuje hash tabulku, která má názvy cest použitého příkazu. Když spustíte příkaz, hledá příkaz v proměnné $PATH.
Pokud je však příkaz dostupný v hašovací tabulce, vybere se odtud a provede jej. Tabulka hash udržuje počet nalezených zásahů pro jednotlivé příkazy dosud používané v daném shellu.
$ hash hits command 1 /usr/bin/cat 2 /usr/bin/ps 4 /usr/bin/ls
Konkrétní příkaz můžete z hašovací tabulky odstranit pomocí volby -d a volby -r pro resetování celé hašovací tabulky.
$ hash -d cat $ hash hits command 2 /usr/bin/ps 4 /usr/bin/ls
4. Příklad příkazu Bash pwd
pwd je vestavěný příkaz shellu pro tisk aktuálního pracovního adresáře. V podstatě vrací hodnotu vestavěné proměnné ${PWD}
$pwd /home/sasikala/bash/exercises $echo $PWD /home/sasikala/bash/exercises
5. Příklad příkazu Bash pouze pro čtení
readonly příkaz se používá k označení proměnné nebo funkce jako pouze pro čtení, kterou nelze dále měnit.
$ cat readonly_ex.sh #!/bin/bash # Restricting an array as a readonly readonly -a shells=("ksh" "bash" "sh" "csh" ); echo ${#shells[@]} # Trying to modify an array, it throws an error shells[0]="gnu-bash" echo ${shells[@]} $ ./readonly_ex.sh 4 readonly_ex.sh: line 9: shells: readonly variable
6. Příklad příkazu Bash shift
Příkaz shift se používá k posunutí pozičních parametrů doleva o N kolikrát a po posunutí odpovídajícím způsobem přejmenuje proměnnou.
$ cat shift.sh #! /bin/bash while [ $# -gt 0 ] do case "$1" in -l) echo "List command" ls shift ;; -p) echo "Process command" ps -a shift ;; -t) echo "Hash Table command" hash shift ;; -h) echo "Help command" help shift ;; esac done $./shift.sh -l -t List command analysis break testing t1.sh temp Hash Table command hits command 1 /usr/bin/ls
7. Bash test Příklad příkazu
příkaz test vyhodnotí podmíněný výraz a na základě vyhodnocení vrátí nulu nebo jedničku. Další testovací operátory naleznete na manuálové stránce bash.
#! /bin/bash if test -z $1 then echo "The positional parameter \$1 is empty" fi
8. Příklad příkazu Bash getopts
Příkaz getopts se používá k analýze daných argumentů příkazového řádku. Můžeme definovat pravidla pro možnosti, tj. která možnost přijímá argumenty a která ne. Pokud v příkazu getopts následuje za volbou dvojtečka, pak očekává argument pro tuto volbu.
getopts poskytuje dvě proměnné $OPTIND a $OPTARG, které mají index dalšího parametru a argumenty volby.
$ cat options.sh #! /bin/bash while getopts :h:r:l: OPTION do case $OPTION in h) echo "help of $OPTARG" help "$OPTARG" ;; r) echo "Going to remove a file $OPTARG" rm -f "$OPTARG" ;; esac done $ ./options.sh -h jobs help of jobs jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args] Lists the active jobs. The -l option lists process id's in addition to the normal information; the -p option lists process id's only.
9. Bash logout Command
Vestavěné odhlášení slouží k ukončení aktuálního shellu.
10. Příklad příkazu Bash umask
Příkaz umask nastavuje masku vytvoření režimu souboru pro aktuální proces. Když uživatel vytvoří soubor, jeho výchozí oprávnění je založeno na hodnotě nastavené v umask. Výchozí oprávnění pro soubor je 666 a bude maskováno bity umask, když uživatel vytvoří soubor.
Další podrobnosti naleznete v našem článku Oprávnění k souborům a adresářům.
Když uživatel vytvoří soubor, 666 je maskováno 022, takže výchozí oprávnění k souboru bude 644.
$ umask 0022 $ > temporary $ ls -l temporary -rw-r--r-- 1 root root 4 Jul 26 07:48 temporary
11. Bash set Příklady příkazů
set je vestavěný příkaz shellu, který se používá k nastavení a úpravě vnitřních proměnných shellu. příkaz set bez argumentu vypíše všechny proměnné a jejich hodnoty. příkaz set se také používá k nastavení hodnot pro poziční parametry.
$ set +o history # To disable the history storing. +o disables the given options. $ set -o history -o enables the history $ cat set.sh var="Welcome to thegeekstuff" set -- $var echo "\$1=" $1 echo "\$2=" $2 echo "\$3=" $3 $ ./set.sh $1=Welcome $2=to $3=thegeekstuff
12. Příklady příkazů Bash unset
unset vestavěný se používá k nastavení proměnné shellu na hodnotu null. unset se také používá k odstranění prvku pole a
k odstranění celého pole.
Další podrobnosti o poli Bash naleznete v našem dřívějším článku 15 Operace s polem Bash
$ cat unset.sh #!/bin/bash #Assign values and print it var="welcome to thegeekstuff" echo $var #unset the variable unset var echo $var $ ./unset.sh welcome to thegeekstuff
Ve výše uvedeném příkladu bude po zrušení nastavení proměnné „var“ přiřazen řetězec null.
13. Příklad příkazu Bash let
let se používá k provádění aritmetických operací s proměnnými shellu.
$ cat arith.sh #! /bin/bash let arg1=12 let arg2=11 let add=$arg1+$arg2 let sub=$arg1-$arg2 let mul=$arg1*$arg2 let div=$arg1/$arg2 echo $add $sub $mul $div $ ./arith.sh 23 1 132 1
14. Příklad příkazu Bash shopt
Vestavěný příkaz shopt se používá k nastavení a zrušení nastavení možností shellu. Pomocí tohoto příkazu můžete využít inteligenci shellu.
$cat shopt.sh #! /bin/bash ## Before enabling xpg_echo echo "WELCOME\n" echo "GEEKSTUF\n" shopt -s xpg_echo ## After enabling xpg_echo echo "WELCOME\n" echo "GEEKSTUF\n" # Before disabling aliases alias l.='ls -l .' l. # After disabling aliases shopt -u expand_aliases l. $ ./shopt.sh WELCOME\n GEEKSTUF\n WELCOME GEEKSTUF total 3300 -rw------- 1 root root 1112 Jan 23 2009 anaconda-ks.cfg -r-xr-xr-x 1 root root 3252304 Jul 1 08:25 backup drwxr-xr-x 2 root root 4096 Jan 26 2009 Desktop shopt.sh: line 17: l.: command not found
Před povolením možnosti xpg_echo příkaz echo nerozšiřoval sekvence escape. "l." je přiřazen k ls -l aktuálního adresáře. Po deaktivaci volby expand_aliases v shellu nerozbalil aliasy, můžete si všimnout chyby l. příkaz nenalezen.
15. Příklad příkazu Bash printf
Podobně jako printf v jazyce C se k formátování tiskových operací používá vestavěný bash printf.
V příkladu 13 skript provádí aritmetické operace na dvou vstupech. V tomto skriptu místo příkazu echo můžete použít příkaz printf k tisku formátovaného výstupu, jak je uvedeno níže.
V arith.sh nahraďte příkaz echo tímto příkazem printf.
printf "Addition=%d\nSubtraction=%d\nMultiplication=%d\nDivision=%f\n" $add $sub $mul $div $ ./arith.sh Addition=23 Subtraction=1 Multiplication=132 Division=1.000000