Trilha (Linux Tools): Funções em Bash

Opa, voltando ao ritmo novamente 😅; hoje venho com uma série de artigos sobre Linux, onde irei abordar desde comandos mais simples até (Shell Scripts) mais avançados. Se liga só! 🚀

~/scripts$ function funcao-comandos() {
> uptime
> date
> }
$ ~/scripts$ funcao-comandos
14:37:13 up 6:58, 1 user, load average: 1,47, 0,80, 0,89
qui 21 mai 2020 14:37:13 -03
~/scripts$ function funcao-comandos2 { date; uptime; cat /etc/os-release; }$ ~/scripts$ funcao-comandos2
qui 21 mai 2020 14:38:25 -03
14:38:25 up 7:00, 1 user, load average: 1,51, 0,94, 0,93
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
$funcao-comandos3() { uptime; uname -v; hostname; } ~/scripts$ funcao-comandos3
14:39:06 up 7:00, 1 user, load average: 1,39, 0,99, 0,95
#35-Ubuntu SMP Thu May 7 20:20:34 UTC 2020
dell-inspiron
$ typeset -f | grep -i funcao-comandos3
funcao-comandos3 ()
$ unset -f funcao-comandos3
  • como exemplo, foi definida uma variavel chamada ETCPROFILE=valor2 no /etc/profile.
  • declarando a variável BASHRCTESTE=valor2
  • digitando dentro do terminal, $bash ele abre outro shell, digitando $echo $BASHRCTESTE, ele mostra o valor, porque ele abriu outro shell, nova aba tbm serve.
  • “semelhante ao /etc/profile (novo login)”
  • definindo um alias no arquivo /home/.profile alias tt=”date; uptime”
  • $ /etc/inputrc (definir comandos no terminal, definir o tipo de edição que o terminal aceita, vim, emacs).
  • $ /etc/skel (diretório no /etc todos os arquivos e diretórios que estão dentro do /etc/skel, vão ser fazer parte da base de novos usuários que serão criados no sistema, os arquivos vão ser colocados no /home do usuário que eu criar).
  • Se eu quiser adicionar uma configuração específica eu posso por no diretório /etc/skel, que ele vai criar para todos os usuários do sistema.
  • Exemplos de funções no Bash
function sistema() {
sudo apt update
sudo apt list --upgradable
sleep 2
sudo apt upgrade
}
function diretorios() {
for item in /home/user/*
do
if [ -d "$item" ]
then
echo "user, $item é um diretório!"
sleep 2
else
echo "$item não é diretório!"
fi
done
}

Passion for DevOps