bash

O bash é o nome do tipo de shell que estamos utilizando. O bash, tambem conhecido como Bourne Again Shell é o que é cobrado na LPI. Existem outros tipos de shell como csh, sh, ksh.

Executando comandos em sequencia

O shell tambem tem a opção de executar os comandos em sequencia. E para isso nós utilizamos os operadores:

;

Esse operador permite a execução em sequencia dos comandos, os comandos são simplesmnete executados não importando se eles esão corretos ou ate mesmo sua execução foi realizada com sucesso. Como no exemplo abaixo:

Comandos executados em sequencia

comando1; comando2; comando3

&&

Só executa o proximo comando caso o anterior tenha sido executado com sucesso

comando1 && comando2 && comando3

echo

Imprime uma string na tela

echo "Linux"

env

Lista todas as variáveis de ambiente (environment) setadas:

env
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_CONFIG_DIRS=/etc/xdg/xdg-mate:/etc/xdg
LC_TELEPHONE=pt_BR.UTF-8
LANG=en_US.UTF-8
DISPLAY=:0
SHLVL=1
LOGNAME=alphabraga
LANGUAGE=en_US
MANDATORY_PATH=/usr/share/gconf/mate.mandatory.path
COMPIZ_CONFIG_PROFILE=mate
XDG_VTNR=7
LC_NAME=pt_BR.UTF-8
SESSION_MANAGER=local/helix:@/tmp/.ICE-unix/2152,unix/helix:/tmp/.ICE-unix/2152
XAUTHORITY=/home/alphabraga/.Xauthority
QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/alphabraga
COLORTERM=mate-terminal
XDG_SESSION_ID=c2
PWD=/home/alphabraga
DESKTOP_SESSION=mate
LC_ADDRESS=pt_BR.UTF-8
DEFAULTS_PATH=/usr/share/gconf/mate.default.path
XDG_SESSION_DESKTOP=mate
GDMSESSION=mate
LC_IDENTIFICATION=pt_BR.UTF-8

Você pode tambem usar o comando printenv para exibir a mesma informação.

Para remover uma variável utilizamos o comando:

unset NOMEVAR

export

Coloca uma variável no ambiente, para colocar ela definitivamente no enviroment você deve colocar esse export dentro de .bash_profile ou em /etc/environment .

MEUNOME="ALFREDO"
echo $MEUNOME
ALFREDO
export MEUNOME
env | grep MEUNOME
MEUNOME=ALFREDO

No exemplo acima foi criada a variável MEUNOME com o valor ALFREDO. Em seguida ela foi exportada utilziando o comando export, e por fim com o comando env verificamos se essa variável foi mesmo exportada.

pwd

pwd significa print working directory, ou seja, exibir o diretorio corrente

pwd
/home/alphabraga

set

O comando set quando executado sem parametros imprime variáveis de ambiente e variáveis locais além de funcões. O output dele é bem maior comparado ao env.

Acho que isso tá errado!! Comando relacionado com a capacidade de evitar sobrescrita de arquivos.

man

Exibe os manuais dos comandos exemplo:

whatis

Cada manual possui uma pequena descrição disponível no início. O comando whatis exibe essa descrição do paramêtro passado. Veja o exemplo abaixo:

whatis mysql
mysql (1)            - the MySQL command-line tool

info

Tambem exibe informações sobre um determinado comando similar ao man.

info - read Info documents Fonte Manual do comando info

apropos

Esse comando busca nos arquivos de dos manuais por um determinado termo. Veja o exemplo abaixo:

apropos game       
endgame (6x)         - endgame chess screensaver
intro (6)            - introduction to games
pacman (6x)          - simulates a game of Pac-Man on a randomly-created level.
penetrate (6x)       - simulates a classic arcade shooting game
pong (6x)            - Pong Home Video Game Emulator
winemine (1)         - Wine Minesweeper game

No comando acima buscamos com o comando apropos pelo termo game nos manuais. Como retorno temos todos as documentações onde o termo pesquisado foi encontrado.

man cp
CP(1)                                                                  User Commands

NAME
       cp - copy files and directories

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --archive
              same as -dR --preserve=all

       --attributes-only
              don't copy the file data, just the attributes

Os dados refentes aos manuais ficam no diretorio /usr/share/man

uname

Exibe dados do so. Como versão do kernel distribuicao etc.

Com o parametro -a todas as informações, o a é de all .

uname -a
Linux helix 4.10.0-38-generic #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Só a informação a respeito do release do kernel informe o -r

uname -r
4.13.0-37-generic

history

O comando history é um comando interno do bash. Ele lista o conteudo do ~/.bash_history númerando as linhas. do output.

history
1115  ldd jekyll 
1116  whereis jekyll 
1117  ldd /usr/bin/jekyll
1118  whereis java
1119  ldd /usr/bin/java
1120  whatis ldd
1121  exit
1122  cd Projects/my-awesome-site/
1123  jekyll serve
1124  whereis ln
1125  ldd /bin/ln
1126  locate sln
1127  sln
1128  cd /lib64/
1129  ls -la
1130  cat ld-linux-x86-64.so.2 
1131  q!
1132  sudo aptitude update

~/.bash_history

É o arquivo que contem o historico dos comandos. É esse aquivo que exibido pelo comando history .

Diferença entre .bashrc e .bash_profile

O .bash_profile é executado quando é realizado o login no bash, já o .bashrc é executado sempre se abre o bash dentro do gnome. é comum ver distribuições que colocam no final do arquivo .bash_profile o comando “source ~/.bashrc” dessa forma variáveis e configrações definidas em ambos os arquivos ficam disponiveis.