GNU/Linux >> Znalost Linux >  >> Linux

Užitečné Bash příkazy, o kterých možná nevíte

Bash je poměrně výkonný jazyk pro programování a je také docela snadné s ním začít.

Koneckonců, je to téměř univerzálně shell, který uvidíte, když otevřete svůj terminál. Díky tomu je nesmírně užitečné si na něj zvyknout.

V Bash jsou některé mocné příkazy, o kterých možná nevíte, i když jste v používání jazyka poměrně zkušení. Všechny tyto příkazy však mohou sloužit docela užitečným účelům a mohou udělat skripty, které píšete, čistší, lépe udržovatelné a přímo výkonnější, než mohly být dříve.

Čtení:Vyžádání vstupu od uživatele

Příkaz read vám umožňuje převzít vstup od uživatele a uložit jej do proměnné.

#!/usr/bin/env bash
echo "What is your name?"
read name
echo "Your name is ${name}!"

To bude čekat na vstup od vás, uživatele, a poté nastaví hodnotu pro name proměnná na řetězec, který zadáte.

Pokud jste například zadali své jméno jako Linux Handbook při spuštění výše uvedeného skriptu vypíše Your name is Linux Handbook! .

Výše uvedený příklad můžete také učinit kompaktnějším zadáním -p možnost read příkaz, který vypíše řetězec zadaný za -p a poté požádejte uživatele o zadání:

#!/usr/bin/env bash
read -p "What is your name? " name
echo "Your name is ${name}!"

Také si všimnete, že jsem přidal mezeru za What is your name? . Pokud bychom to nepřidali, doslova by to vypsalo What is your name? bez mezery, takže by to vypadalo trochu divněji, když uživatel zadává svůj vstup:

Mapový soubor:Přiřazení proměnné hodnot řádků souboru

Můžete použít mapfile příkaz k načtení obsahu souboru a poté přiřazení tohoto výstupu do pole Bash, přičemž každá položka pole se vytvoří vždy, když se v souboru objeví nový řádek.

Vytvořme například soubor s názvem file.txt který obsahuje následující text:

Line 1
Line 2
Line 3
Line 4
Line 5

Tento soubor můžete převést na pole Bash spuštěním následujícího, který přiřadí obsah souboru k file_var proměnná:

#!/usr/bin/env bash
mapfile file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Všimnete si, že výše uvedené vytváří také nějaký podivně rozložený výstup, který se neshoduje s tím, co je uvnitř souboru, což lze vyřešit přidáním -t možnost do mapfile příkaz:

#!/usr/bin/env bash
mapfile -t file_var < file.txt

for i in "${file_var[@]}"; do
	echo "${i}"
done

Nakonec si můžete všimnout, že následující nefunguje:

#!/usr/bin/env bash
cat file.txt | mapfile -t file_var

Důvodem je mapfile příkaz na pravé straně roury je spuštěn v subshell (nebo jinými slovy v nové instanci Bash), který nemůže ovlivnit váš aktuální shell.

Zdroj:Vložte proměnné ze souboru do prostředí vašeho shellu

Řekněme, že máte následující imaginární soubor config.sh , s následujícím obsahem:

username=linuxhandbook
domain=linuxhandbook.com

Co kdybyste chtěli vzít obsah tohoto souboru a vložit jej do vašeho aktuálního prostředí shellu?

To lze provést zcela jednoduše pomocí příkazu source:

source config.sh

Poté můžete zkontrolovat, zda byly proměnné přiřazeny podle očekávání:

Pod kapotou je source příkaz skutečně spouští zadaný soubor v prostředí vašeho aktuálního shellu, takže zadání jakýchkoli příkazů do tohoto souboru by ve skutečnosti způsobilo jejich spuštění při spuštění source .

Například do config.sh vložíme následující :

name="Linux Handbook"
echo "Hello ${name}!"
echo "Have a good day!"

Pokud potom spustíme soure config.sh , uvidíte, že dva echo spouštějí se příkazy a také name přiřazení proměnné:

Můžete také použít . místo source , který se chová stejným způsobem jako source by.

Zabalení

A stejně tak jste dále na cestě k provádění výkonnějších a užitečnějších úkolů a přitom budete moci zůstat uvnitř Bash.

Existují nějaké další příkazy, které často používáte v Bash? Neváhejte a zanechte kteroukoli z nich v komentářích níže.


Linux
  1. Co jste možná nevěděli o sudo

  2. 4 Užitečný způsob, jak zjistit název připojeného zařízení USB v systému Linux

  3. Co potřebují správci systému vědět o používání Bash

  1. Jak poznám název souboru skriptu ve skriptu Bash?

  2. Jak normalizujete cestu k souboru v Bash?

  3. Spusťte textový soubor jako příkazy v Bash

  1. 30 věcí, které jste nevěděli o linuxovém jádře

  2. Vše, co jste chtěli vědět o Zorin OS 12

  3. Proč substituce procesu Bash nefunguje s některými příkazy?