O shell tenta facilitar a vida do kernel interpretando
primeiro o conteúdo das variáveis e entregando depois para o kernel
cd tes* - expansão de tab
var=5 para mostrar
echo $var
var="x x"
echo "$var"
echo '$var'
www.julioneves.com
!!uso da crase
O shell interpreta antes o conteúdo das crases
uname -n
echo "você é `uname -n`"
echo "você é $(uname -n)"
echo o julio é
> lindo
!!Criando um arquivo sem descer ao nível shell
> arq
conselho do Júlio para o bash profile
alias rm="rm -i"
rm arq
Redirecionamentos
cat > arq
sort bigfile -o bigfile
2>> saida de erro
rm a b c << eol
s
s
s
eol
!Here document
Péssimo código
if cd dir 2> /dev/null
then
else
mkdir dir
cd dir
fi
melhor
if [ ! -d dir ]
then
mkdir dir
fi
cd dir
Os colchetes são um alias para o comando test
ls xxx || echo arq não encontrado
[ ! -f xxx ] && echo arquivo não encontrado
criando um arquivo rapidinho
[ -d dir ] || mkdir dir ; cd dir
se usar =~ pode usar expressões regulares
[[ $hh == 0[0-9] || $hh == 1[0-2] ]] && echo hora ok
Case
testa a hora do sistema como case
case $hh in
0[0-9]|1[0-1]) echo Bom dia;;
1[2-7]) echo Boa Tarde;;
*) echo Boa Noite ;;
esac
seq 2 10
seq 3 2 10
x=15
echo $((x*3))
resulta 45
unset i
for ((i=1; i<=10; i++)){
echo $i
}
remover carrige return
tr -d 'r'
IFS = branco tab e enter
while who | grep xefe > /dev/null
do
sleep 5
done
echo o xefe xato saiu
killall $(who | cut -c8 | sort uniq -d)
Pegadinha do wile
IFS=:
cat /etc/passwd |
while read nome lixo uid lixo
do
let i++
echo $i $nome $uid
done
a variável $i acima é aberta em um subshel
e portanto fica zerada
a forma correta
while read nome lixo uid lixo
do
let i++
echo $i $nome $uid
((i % 10)) || read < /dev/tty
done < /etc/passwd
tput lines -- pega o número de linhas
Named pipe
mkfifo fofo
ls
no outro shell cat fofo (tem que estar no mesmo diretório)
uso do named pipe é para
sincronizar processos
cat <(ls -l)
ls -l >(cat) -- named pipe temporário
DIFF <(ls -l dir) <(ls -l dir.bkp)
Comments (0)
You don't have permission to comment on this page.