GNU/Linux >> Znalost Linux >  >> Linux

15 užitečných vestavěných příkazů Bash Shell (s příklady)

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

Linux
  1. Propojené příkazy s ovládacími operátory v Bash

  2. Bash Shell Exit Status Tutorial s praktickými příklady

  3. '&&' vs. '&' s příkazem 'test' v Bash

  1. Bash wait Příkaz s příklady

  2. wc Linux Command s příklady

  3. Příkaz Nohup s příklady

  1. Bash HereDoc výukový program s příklady

  2. Příkaz Netstat v Linuxu - 28 příkazů s příklady

  3. 17 Užitečný příkaz Tar s praktickými příklady v Linuxu