Shell UNIX
Caminhos, expansão de nomes, redirecionamentos, pipes, processos e consulta do manual.
Caminhos e expansão
- Absoluto começa em
/; relativo parte do diretório de trabalho.cdmuda a própria shell;cdsem argumentos volta à pasta pessoal. - A shell expande globs antes de correr o comando. Sem aspas,
*.cchega ao programa já substituído; com aspas, o padrão chega intacto aofind. - Aspas simples protegem tudo; duplas permitem
$VAR. Glob*não é regex.
Canais
| Canal | Descritor | Operadores |
|---|---|---|
| stdin | 0 | < ficheiro |
| stdout | 1 | > ficheiro trunca; >> acrescenta |
| stderr | 2 | 2> ficheiro; 2>&1 copia o destino atual de stdout |
a | bliga stdout deaa stdin deb. Redirecionamentos não entram emargv:./prog 7 < dados.txtdáargc=2.- A ordem decide:
> tudo.txt 2>&1junta ambos no ficheiro;2>&1 > saida.txtdeixa stderr no destino antigo. - Nunca uses o ficheiro de entrada como destino truncado na mesma linha.
Filtros
sort -n < numeros.txt | uniq > distintos.txt
sort -nordena numericamente;uniqsó remove repetições adjacentes.grep -vexclui;cut -d ':' -f 1escolhe campos;sed 's/a/b/g'substitui em cada linha.wc -lconta newlines (printf abc | wc -ldá 0);wc -cconta bytes.
Jobs e manual
comando &não espera;jobslista jobs da shell,pslista processos.Ctrl+CenviaSIGINT;Ctrl+ZenviaSIGTSTPefgretoma.killenvia qualquer sinal:SIGTERMpede saída limpa,SIGKILLnão é tratável.man 2 opené chamada de sistema;man 3 fopené biblioteca.chmod 640dárw-,r--,---. Em diretórios, leitura lista e execução atravessa; apagar depende do diretório.ls -lmostra modificação, não criação.