Esta disciplina usará o bash, que é padrão em distribuições Linux;
<nome> <opcoes> <argumentos>
ls -l /usr/lib date grep Lili carta.txt awk -f prog.awk lista.txt- Opções podem ter seus próprios argumentos;
ls a*.[0-9] - mostra uma lista de todos os arquivos cujo nome começa com letra "a" e termina com o sufixo formado por "." (ponto) seguido de um dígito de 0 (zero) a 9 (nove) cp [a-z]* /home/delgado/tmp - copia para o diretório "tmp" todos os arquivos cujo nome começa com uma letra minúscula rm [adf]* - remove todos os arquivos cujo nome começa com uma das letras indicadas ("a", "d" ou "f")
Referência básica: Capítulo 4 da Apostila Linux Básico
Existem duas classes de documentação em Linux.
A primeira classe contém documentação referente a esclarecimentos gerais e de instalação dos diversos programas existentes em uma distribuição Linux. Esta documentação está, geralmente, no diretório /usr/doc. Geralmente são mais úteis aos administradores.
A outra classe, a mais importante, contém as páginas de manuais on-line do UNIX. Esta documentação é acessível através do comando man e contém a descrição e forma de uso dos diversos programas existentes em uma distribuição Unix/Linux.
O manual on-line se organiza em 9 seções (numeradas de 1 a 9). Cada seção agrupa manuais referentes a um assunto específico. As seções são:
Eventualmente, pode existir uma seção adicional de novas páginas, denominada Seção n.
Os principais comandos para acesso às páginas de manuais on-line são:
ribas@ino:~$ man man ... ribas@ino:~$ man 1 man ... ribas@ino:~$ man 7 man ... ribas@ino:~$ man 7 ascii ... ribas@ino:~$ man 3 string ...O comportamento default do comando man é consultar as páginas da Seção 1 - Programas e Comandos (e.g., man ls = man 1 ls). ATENÇÃO: Daqui para frente, será utilizada a notação comando(seção) para se referir ao manual on-line do comando que está na seção indicada. Por exemplo, se for pedido para se usar ls(1), o aluno deverá usar o comando man ls para descobrir sobre a forma de uso e opções do comando ls para resolver um determinado problema.
ribas@ino:~$ whatis date date (1) - print or set the system date and time
ribas@ino:~$ apropos date ... autoreconf (1) - update configure scripts autoreconf2.13 (1) - update configure scripts autoupdate (1) - updates an old configure.in file to version 2 autoupdate2.13 (1) - updates an old configure.in file to version 2 cal (1) - displays a calendar and the date of easter catman (8) - create or update the pre-formatted manual pages chpasswd (8) - update password file in batch date (1) - print or set the system date and time ddate (1) - converts Gregorian dates to Discordian dates doupdate (3ncurses) - refresh curses windows and lines ...
Referência básica: Capítulos 3 e 8 da Apostila Linux Básico
Usuários em um sistema UNIX possuem uma identificação numérica única denominada UID (User IDentification) e um nome simbólico único conhecido como Login ou Username.
Também são definidos em um sistema UNIX os chamados grupos. Cada grupo representa um conjunto de usuários que por alguma razão possuem uma função ou atividades em comum (por exemplo, usuários que são alunos de graduação, usuários que são os professores, etc.).
Cada grupo em um sistema UNIX possui também uma identificação numérica única denominada GID (Group IDentification) e um nome simbólico único conhecido como Group name ou simplesmente Grupo.
Estes conceitos são importantes para entender como um sistema UNIX controla a forma com que arquivos podem ser acessados e o que se pode se fazer com eles uma vez acessados. Você pode, por exemplo, desejar que o conteúdo de um determinado arquivo possa ser alterado apenas por você que o criou. Por outro lado você pode fazer com que um outro arquivo tenha seu conteúdo lido por qualquer usuário no sistema.
O comando id(1) pode ser usado para se determinar a identificação completa de um usuário: seu UID e GID.
Quando um arquivo qualquer é criado em UNIX, ele é dito ter um Proprietário e um Grupo. O Proprietário do arquivo corresponde ao Login do usuário que criou o arquivo. O Grupo do arquivo corresponde ao Grupo ao qual pertence o usuário que o criou. Por exemplo, se o usuário ci066, registrado como sendo do grupo especial cria um arquivo, dizemos que este pertence ao Proprietário ci066 e ao Grupo especial.
O acesso a arquivos UNIX é definido através de 3 conjuntos de permissões: um conjunto para Proprietário do arquivo, um conjunto para Grupo do arquivo e um conjunto para Outros usuários.
Cada conjunto pode assumir as permissões de Leitura (representada pela letra r), Escrita (representada pela letra w) e Execução ou Navegação (representada pela letra x).
Em se tratando de um arquivo regular, a permissão de Leitura significa que se pode ler o conteúdo do arquivo, a permissão de Escrita significa que se pode alterar (editar) o conteúdo do arquivo, e a permissão de Execução significa que este arquivo contém um programa ou um script shell, podendo ser executado como um comando.
Em se tratando de um diretório, a permissão de Leitura significa que se pode ler o conteúdo do diretório (por exemplo com ls(1)), a permissão de Escrita significa que se pode criar ou remover arquivos do diretório, e a permissão de Execução significa que este diretório é navegável, isto é, pode-se navegar para ele ou através dele com comandos como cd, pushd, popd ou find(1).
NOTA
Em UNIX, TUDO É CONSIDERADO UM ARQUIVO. Existem assim diferentes tipos de arquivos: regulares, diretórios, links simbólicos, arquivos associados a recursos de hardware (tais como disco, interface de rede, teclado e terminal, etc.). Assim, a permissão de Escrita em um diretório significa alterar o arquivo que representa um diretório, o que significa efetivamente criar e remover arquivos.
As permissões de acesso podem ser definidas a qualquer hora por chmod(1) e podem ser visualizadas através de command(1)ls) usando-se a opção -l. Seja, por exemplo:
ci066@dupond $ ls -l teste.c -rw-r--r-- 1 ci066 especial 2331 Mai 30 11:36 teste.c ci066@dupond $ ls -l a.out -rw-r-x--- 1 ci066 especial 2331 Mai 30 11:36 a.out ci066@dupond $ ls -ld LabNum2 drwxr-xr-- 1 ci066 especial 2331 Mai 30 11:36 LabNum2
No exemplo acima, o arquivo teste.c possui permissão de Leitura e Escrita para o Proprietário do arquivo (usuário ci066), apenas permissão de Leitura para usuários do Grupo do arquivo (grupo especial), e apenas permissão de Leitura para Outros usuários.
Ainda no exemplo acima, o arquivo a.out possui permissão de Leitura e Execução para Proprietário e Grupo, Escrita apenas para Proprietário, e NENHUMA permissão para Outros usuários. Assim, a.out pode ser executado como um comando apenas pelo usuário ci066 e por usuários do grupo especial.
Finalmente, todos os usuários tem permissão para listar o conteúdo do diretório LabNum2. Por outro lado, apenas o usuário ci066 e os usuários do grupo especial tem permissão para navegar para ou através deste diretório. Somente o usuário ci066 tem permissão para criar arquivos dentro do diretório.
As permissões de acesso de um arquivo podem ser representadas de uma forma mais compacta, usando uma notação de 3 DÍGITOS OCTAIS. Esta forma compacta de representar as permissões é referenciada em UNIX como FILE MODE (modo do arquivo ou simplesmente MODO).
Em um MODO, cada dígito corresponde a um grupo de permissões: O primeiro dígito corresponde às permissões do Proprietário, o segundo dígito corresponde às permissões para o Grupo e o terceiro dígito corresponde às permissões para Outros Usuários.
Cada dígito octal do modo é definido pela soma dos valores octais abaixo:
4 = permissão de Leitura 2 = permissão de Escrita 1 = permissão de Execução/Navegação
Assim, a permissão -r-xr--wx pode ser representada pelo Modo 543:
5 ( = 4 + 1) representa permissão de Leitura e Execução para Proprietário; 4 representa unicamente a permissão de Leitura para Grupo; 3 ( = 2 + 1) representa permissão de Escrita e Execução para Outros.
Para alterar as permissões com chmod(1) pode ser usado um Modo (notação octal) ou notação simbólica ([augo][+-=][rwx]) para especificar a mudança de permissões:
chmod 754 teste.c (equiv. a chmod u=rwx,g=rx,o=r teste.c) chmod 664 teste.c (equiv. a chmod ug=rw,o=r teste.c) chmod u+r,go+r,go-wx teste.c
Comando find: opções, execução de um comando em cada arquivo encontrado, etc.;
SINTAXE: find rota_de_diretório critério_de_procura ação
Procura em um conjunto de arquivos e/ou diretórios (rota_de_diretório) por arquivos que tenham características definidas por um critério de procura, e executa uma ação para cada arquivo encontrado.
Exemplo 1:
ci066@dupond:~$ find ~ci066 -name jan83 -print /home/esp/ci066/LabNum4/docs/jan83
Neste exemplo:
rota_de_diretório: ~ci066
critério de procura: -name jan83
ação: -print
Exemplo 2:
ci066@dupond:~$ find ~ci066 -perm -033 -atime -2 -exec chmod go-rwx {} $\backslash$; ci066@dupond:~$
Neste exemplo:
rota_de_diretório: ~ci066
critério de procura: -perm -033 -atime -2 (arquivos acessados nos últimos 2 dias E que tenham permissão de Escrita E Execução para Grupo e Outros)
ação: -exec chmod go-rwx {} $\backslash$; muda a permissão dos arquivos que correspondem ao critério de procura.
Observe o uso de {} para representar em find(1) os arquivos selecionados pelo critério de procura.
Exemplo 3:
ci066@dupond:~$ find ~ci066 $\backslash$( -name '*-8' -o -name '*~' -o -name 'jan[0-9]*' $\backslash$) -exec rm {} $\backslash$; /home/esp/ci066/LabNum4/docs/jan83
Neste exemplo:
rota_de_diretório: ~ci066
critério de procura: . Este critério indica que os nomes dos arquivos que devem ser encontrados devem terminar com -8 OU ~ OU começar com jan seguido de um dígito de 0 a 9.
Observe também o uso de -o para representar a operação lógica OU entre os critérios. A ausência do conectivo -o implica em uma operação E, também representada pelo uso de -a.
Observe o uso de parênteses para agrupar todo o conjunto de critérios. Deve-se observar também que os parênteses são precedidos de $\backslash$, para evitar que o shell interprete os parênteses de forma especial. Finalmente, é mandatória o uso de um espaço em branco entre os parênteses e o conjunto de critérios que eles agrupam.
ação: -rm {} $\backslash$; remove cada arquivo selecionado pelos critérios de procura.
Observe o uso de {} para representar em find(1) os arquivos selecionados pelo critério de procura, e de $\backslash$; para indicar o final da opção -exec.
Família | Compactador | Descompactador | Visualizador | Sufixos |
---|---|---|---|---|
gzip(1) | gzip | gunzip | zcat | .gz |
bzip2(1) | bzip2 | bunzip2 | bzcat | .bz2 |
zip(1) | zip | unzip | - | .zip |
Compactador | Sufixo |
---|---|
gzip(1) | .tar.gz, .tgz, .taz |
bzip2(1) | .tar.bz2, .tbz |
cd chmod -R 600 Trab_Prog_01Mas, depois de executados estes comandos, NEM MESMO VOCÊ consegue agora acessar seus próprios arquivos. O que você fez errado? Como corrigir o problema, mantendo o seu objetivo inicial?
cd chmod -R 600 .