Linux: Comandos POSIX
Início
1. Introdução
Os comandos da shell são presentemente definidos pelo POSIX (Portable Operating System Interface).
Em geral, encontram-se no todo ou em parte acessíveis a partir nas diferentes shell's.
Há diversas shell's pelo que poderão variar um pouco os comandos.
As maiores diferenças entre elas encontram-se no seu modo como se
escrevem os seus ficheiros de comandos (scripts). Os
Início
2. Pipelines (pipe): Encadear processos num só comando
Este procedimento permine executar uma sucessão de de comandando de uma só vez, usando o stdout de
cada comando como stdin do comando seguinte as mensagens de erro de toda a sequência de comando vão
para stderr, ou seja para a linha de comandos. Por outras palavras, estabelece canais de comunicação
entre diferentes procedimentos. Denota-se por uma barra vertical, |.
Como exemplo simples pode considerar-se um comando que recebe o ficheiro 'file1.txt' substitui 'rosa' por
'cravo' e escreve-o no ficheiro 'file2.txt':
mostra no ecran apenas as linhas em que existe a
instrução 'while':
cat file1.txt | awk '{gsub(/rosa/,"cravo")}1 > file2.txt'
em que 'cat' mostra o ficheiro, 'awk' faz a substituição e, em seguinda o stdout é rediccionado
para 'file2.txt'.
Início
3. Redirecionamento da escrita e leitura
Na linha de comandos pode fazer-se o redirecionamento da leitura e da escrita:
- A instrução ">" permite redirecionar o standard output para um ficheiro. Exemplo:
ls -a > dir.txt
para se acrescentar a um ficheiro já existente pode fazer-se ">>".
Igualmente pode redefinir-se standard input ("<") para ser lido a partir de um ficheiro
- tee: Lê do "standard input" e escreve no "standard output" e em files.
Exemplos:
- $ echo "ola" | tee -a teste_tee_file.txt
(Nota: '-a' significa 'append')
Início
4. 'alias' :- Permite definir sinónimos
Permite definir um sinónimo. Em geral é usado para executar um comando (ou parte dele). Apenas sobrevive durante a sessão
em que é definido. Para definir esses comando, em geral, guardam-se no ficheiro que é lido quando a shell é chamada
(por exemplo, '.bashrc', para a shell 'bash'). Exemplo:
alias dir='ls -l'
Início
5. 'ar' :- Comando para juntar ficheiros, usado especialmente em bibliotecas
Comando usado para juntar ficheiros. Actualmente é usado principalmente para juntar ficheiros em bibliotecas estáticas.
Início
6. 'at' :- Execução de ficheiros a uma determinada hora
Este comando destina-se à execução de programas, em batch, marcados para serem executados a uma determinada hora ou dia.
Exemplo para o executar agora:
at -f programa NOW
Início
7. 'cat' :- Permite criar, juntar e mostrar ficheiros
Início
8. 'cd' :- Muda a pasta de trabalho para outra pasta
Início
9. 'chattr' :- Permite definir e alterar os atributos de um ficheiro
Início
10. 'chgrp' :- Altera o 'group' de ficheiros
Início
11. 'chmod' :- Altera as proteções de ficheiros
O nome deriva de change mode. Altera as proteções de ficheiros, pastas, etc.
As atribuições de proteção podem ser feitas em formato octal ou através de símbolos:
| Proteção | Símbolos | Octal | Binário |
| leitura, escrita e execução | rwx | 7 | 111 |
| leitura e escrita | rw- | 6 | 110
|
| leitura e execução | r-x | 5 | 101
|
| apenas leitura | r-- | 4 | 100
|
| escrita e execução | -wx | 3 | 011
|
| apenas escrita | -w- | 2 | 010
|
| apenas execução | --x | 1 | 001
|
| nenhum | --- | 0 | 000 |
Para se alterar as protecções de um ficheiro podem dar-se os valores em octal
ou usar os símbolos. Exemplos:
$ chmod 740 ficheiro
$ chmod g=rw ficheiro
Para se executar o comando recursivamente sobre as sub-pastas pode usar-se
o atributo '-R'.
É bom ter em conta que as pastas e os ficheiros têm muitas vezes atributos diferentes,
por isso, é conveniente ao fazer a operação recursivamente tê-lo em conta. Para distinguir
os ficheiro das pastas pode usar-se o comando find. Exemplos para ficheiros
e pastas, respectivamente:
$ find pastaDesejada -type d -exec chmod 750 {} \;
$ find pastaDesejada -type f -exec chmod 640 {} \;
Início
12. 'chown' :- Altera o 'user' e o 'group' de ficheiros
Início
13. 'cksum' :- Gera um checksum de 32 de um ficheiro
Início
14. 'cmp' :- Compara dois ficheiros
Início
15. 'cp' :- Copia ficheiros e pastas
Copia ficheiros. Se usado recursivamente (opção '-r'), também pode copiar árvores de pastas.
A sua sintaxe é:
cp [Opções] origem destino
As opções mais usadas são:
| Opção | Descrição. |
|---|
| -i | Pede confirmação antes se sobrepor um ficheiro. |
| -f, --force | Força a copiar sem fazer perguntas. |
| -r, -R | Copia recursivamente se for uma pasta. |
Nota: é aconselhável usar a opção '-i' (perguntar) para evitar que um ficheiro apague outro,
tal pode acontecer se o novo nome for igual ao de um ficheiro já existente.
Início
16. 'dd' :- Copia ficheiros e cria imagens em discos flexíveis, rígidos, etc.
Início
17. 'df' :- Mostra os 'devices' montados e seus atributos
Início
18. 'diff' :- Compara ficheiros ou pastas e mostra as diferenças
Compara ficheiros. Se usado recursivamente pode comparar o conteúdos de pastas. Tem como resultado as diferenças indicando
as linhas em que elas existem.
A sua sintaxe é:
diff [Opções] ficheiros
As opções mais usadas são:
| Opção | Descrição. |
|---|
| -r | Se fizer a comparação recursiva entre pastas. |
| -i | Ignora maiúsculas e minúsculas no conteúdo dos ficheiros. |
| -w | Ignora todos os espaço em branco. |
Início
19. 'du' :- Mostra o espaço de disco ocupado pelos ficheiros numa pasta
Início
20. 'file' :- Determinar o tipo de dados num arquivo, isto é, o tipo de ficheiro
Início
21. 'find' :- Pesquisa ficheiros numa pastas e sub-pastas
O comando 'find' permite encontrar ficheiros a partir de um dado nó da árvore
das pastas. A sua sintaxe é:
find [Opções] [nó] [expressão]
em que 'Opções' permite tratar os links simbólicos (ver manual) e
'expressão' pode ser simplesmente o nome do ficheiro ou uma expressão regular.
Algumas opções de 'expressão':
| Opção | Descrição. |
|---|
| -name <name> | Nome do ficheiro |
| -iname </name> | Nome do ficheiro. Ignora maiúsculas e minúsculas |
| -regex <regex> | Expressão regular |
| -iregex <regex> | Expressão regular. Ignora maiúsculas e minúsculas |
Exemplos:
- Como encontrar recursivamente ficheiros começados por 'Livro' na pasta '/home/Books'
$ find /home/Books -name Livro*
- Como encontrar recursivamente ficheiros a partir de uma certa data (23 de Novembro de 2022)
na pasta '/home/Books'
$ find /home/Books/ -type f -newermt '11/23/2022 0:00:00'
Início
22. 'fuser' :- Mostra os processos que utilizam um determinado ficheiro ou 'device'
Início
23. 'less' :- Mostra um ficheiro no ecrã. Permite usar as setas
O comando 'less' permite visualizar para a frente e para trás com as setas.
Generaliza o comando 'more' que não permitia andar para trás na visualização.
A sua sintaxe é:
less [Opções] ficheiro
Para andar para a frente um ecrã pode usar-se a tecla de espaço. Para sair basta escrever 'q' (quit).
Início
24. 'ln' :- Cria uma ligação (link simbólico) entre ficheiros
Início
25. 'ls' :- Lista os ficheiros da(s) pasta(s) escolhidas
O comando 'ls' mostra os ficheiros existentes numa, ou mais, pastas.
A sua sintaxe é:
ls [Opções] [Pasta(s)]
Sem opções mostra simplesmente os ficheiros existentes na pasta local,
ignorando aqueles que começam por ponto.
Disponibiliza um conjunto de qualificadores que permitem alterar o resultado da saída.
Alguns dos mais frequentes são:
| Opção | Descrição. |
|---|
| -1 | Lista os ficheiros numa única coluna. |
| -a, --all | Mostra todos os ficheiros incluindo os que começam por ponto. |
| -l | Mostra as proteções, utilizador, grupo, tamanho e data da última alteração. |
| -r | Inverte a ordem de saída dos ficheiro. |
| -t | Ordena a saída pela data da última alteração. Começa nos mais recentes. |
Início
26. 'lsattr' :- Mostra os atributos de um ficheiro
Início
27. 'lsof' :- Lista os descritores dos ficheiros abertos pelos processos em execução
Início
28. 'mkdir' :- Cria uma pasta
Início
29. 'more' :- Mostra um ficheiro no ecrã
Início
30. 'mv' :- Move ficheiros ou altera nome de pasta ou ficheiro
A sua acção depende do tipos de argumentos. Assim, se tiver apenas dois argumentos, pode alterar o nome do primeiro
para o segundo. Se o segundo for uma pasta pode mover o(s) ficheiro(s) para essa pasta.
A sua sintaxe é:
mv [Opções] origem destino
Nota: é aconselhável usar a opção '-i' (perguntar) para evitar que um ficheiro apague outro,
tal pode acontecer se o novo nome for igual ao de um ficheiro já existente.
Início
31. 'pax' :- Utilitário de arquivamento. Uma espécie de junção do 'tar' com o 'cpio'
Início
32. 'pwd' :- Mostra no ecrã a pasta em que se encontrar
Imprime no ecrã a pasta em que se encontrar.
Início
33. 'rm' :- Apaga um ou mais ficheiros (e eventualmente pastas)
Permite apaga um ou mais ficheiros. Se usado recursivamente (opção '-r') pode ainda apagar uma árvore de pastas. A sua sintaxe é:
rm [Opções] ficheiros
As opções mais usadas são:
| Opção | Descrição. |
|---|
| -i | Pede confirmação para cada ficheiro a apagar. |
| -f, --force | Força a apagar sem fazer perguntas. |
| -r, -R | Apaga recursivamente se for uma pasta. |
Início
34. 'rmdir' :- Remove uma pasta
Início
35. 'sed' :- Utilitário de edição de texto não interactivo
O "sed" é um editor de texto não interactivo que realiza transformações de texto. Pode aplicar-se a ficheiros ou a pedaços de texto.
"sed" significa "stream editor".
O comando "sed" tem a seguinte sintaxe:
sed [Opções] 'comando' [ficheiro ...]
As mais frequentes opções do "sed" são:
| Opção | Descrição. |
|---|
| -f | Utiliza ficheiro de comandos |
| -i | Faz a edição directamente |
| -n | Não imprime as linhas |
| -r | Utilize expressões regulares estendidas |
Exemplos:
echo 'Boa tarde porque é tarde' |sed 's/tarde/noite/'
echo 'Boa tarde porque é tarde' |sed 's/tarde/noite/g2'
echo 'Boa tarde porque é tarde' |sed 's/tarde/noite/g'
Ver:
Início
36. 'split' :- Utilitário para dividir um ficheiro em partes
Início
37. 'tee' :- Lê do 'standard input' e escreve no 'standard output'
Lê do "standard input" e escreve no "standard output" e em files.
s opção mais usada é:
| Opção | Descrição. |
|---|
| -a | Significa que se acrescenta ao ficheiro. |
Exemplo em que se diz "olá" e é acrescentado ao ficheiro 'tee_file.txt':
$ echo "ola" | sudo tee -a tee_file.txt
(Nota: '-a' significa 'append')
Início
38. 'touch' :- Serve para alterar a data e hora de um ficheiro
Início
39. 'type' :- Mostra como um comando era usado se fosse dado na linha de comandos
Início
40. 'umask' :- Define as permissões para os novos ficheiros e pastas
Início
41. 'wc' :- Dá informação sobre o conteúdo de um ou mais ficheiros
Dá informação sobre o conteúdo de um ou mais ficheiros: número de linhas, palavras e caracteres.
No caso de ser mais do que um ficheiro, acrescenta o resultado da some de todos eles.
A sua sintaxe é:
wc [Opções] ficheiro(s)
As opções mais usadas são:
| Opção | Descrição. |
|---|
| -c, --bytes | Dá o número de bytes. |
| -m, --chars | Dá o número de caracteres. |
| -l, --lines | Dá o número de linhas. |
| -L, --max-line-length | Dá o comprimento da maior linha. |
| -w, --words | Dá o número de palavras. |
Início
42. Acções específicas por acção de comandos compostos (pinelines)
Início
43. Links úteis
Início