Linux – BASH scripting tips en tricks

Hieronder een paar handige tips om leuke bash scripts te maken die bestanden etc. kunnen manipuleren.


Terminal scherm leegmaken (Printf)

Maak het scherm in de terminal leeg:

printf "\033c"


Tekst weergeven (ECHO)

Om vanuit BASH een regel weer te geven in de console, gebruik echo:

echo "Hallo Wereld"

Meerdere lijnen gebruiken (/n als newline)

echo -e "Hallo\nWereld!"

Ps. -e Enable interpretation of of backslash escapes

of met prinf:

printf "Hallo\nWereld!\n"


Regel toevoegen aan (het einde) van een bestand (BASH -C)

De regel i2c-dev toegevoegen aan het bestand /etc/modules:

sudo bash -c "echo 'i2c-dev' >> /etc/modules"


Regel in een bestand aanpassen (SED)

syntax: sudo sed -i -e ‘s/[TEKSTVAN]/[TEKSTNAAR]/g’ [BESTAND]

Hieronder een voorbeeld om abc aan te passen in xyz

sudo sed -i -e 's/abc/xyz/g' /etc/dhcp/dhcpd.conf

het werkt ook met langere strings etc, hieronder een voorbeeld om een regel als commentaar te zetten door er een hekje (#) voor te plaatsen:

sudo sed -i -e 's/option domain-name "example.org";/#option domain-name "example.org";/g' /etc/dhcp/dhcpd.conf

Regel weghalen (leeg maken), verwijder “country_code=US”

sudo sed -i -e 's/country_code=US//g' /etc/network/interfaces


Vreemde Karakters gebruiken met SED of ECHO

Wil je aanhalingstekens (“) of backslash (/) gebruiken in een SED commando, zet er een slash (\) voor

Vervangen DAEMON_CONF= in DAEMON_CONF=/etc/hostapd/hostapd.conf

sudo sed -i -e 's/DAEMON_CONF=/DAEMON_CONF=\/etc\/hostapd\/hostapd.conf/g' /etc/init.d/hostapd

Toevoegen van een regel met aanhalingstekens: option domain-name “local”;

sudo bash -c "echo '  option domain-name \"local\";' >> /etc/dhcp/dhcpd.conf"


Regel toevoegen voor laatste regel in een bestand (SED)

syntax: sudo sed -i -e ‘$i \[TEKST]\n’ [BESTAND]/
ps.  $ betekend de laatste lijn, i betekend voor de huidige lijn, zodoende is $i invoegen voor de laatste lijn.

Hieronder een voorbeeld om /home/pi/setupgpio.sh toe te voegen in /etc/rc.local

sudo sed -i -e '$i \/home/pi/setupgpio.sh\n' /etc/rc.local


Gebruiker toevoegen om te SUDOen (BASH -C)

Gebruiker www-data toevoegen aan de “sudo’ers lijst” in het bestand /etc/sudoers:

www-data ALL=(ALL) NOPASSWD: ALL

Met het commando:

sudo bash -c "echo 'www-data ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers"


Bestanden downloaden en uitpakken (WGET + BASH)

Downloaden met wget:

-O = output file.

sudo w get http://website.nl/instellingen.zip -O instellingen.zip

ZIP uitpakken

  • -o = overschrijf bestanden
  • -d = folder

sudo unzip -o instellingen.zip -d /var/www/html

TGZ

tar zxvf bestand.tgz

GZ

gunzip file.gz  of gzip -d file.gz


Nieuwe CRONJOB installeren

Voorbeeld bij opstarten en om de 5 minuten:

Installeer de nieuwe cron:


Tijdzone instellen op Amsterdam

sudo cp /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime


Nederlandse talen genereren

Voeg regels toe om talen te genereren in “locale.gen”.

Genereer de nieuwe talen

sudo locale-gen


i2C activeren en laden

Activeren:

sudo bash -c "echo 'dtparam=i2c_arm=on' >> /boot/config.txt"

Laden:

sudo bash -c "echo 'i2c-dev' >> /etc/modules"


1-Wire activeren en laden

Activeren:

sudo bash -c "echo 'dtoverlay=w1-gpio' >> /boot/config.txt"

Laden:


RTC Gebruiken

Gebruik de RTC bij reboot.

Programmeer de RTC met de tijd (van internet):
sudo hwclock -w


Reset SPI bus

use the command lsmod to get the name of your spi module and simply remove it as follows (assuming spi_bcm2708 is module name),

then reload it as follows,

try with sudo if doesn’t work.