Escolar Documentos
Profissional Documentos
Cultura Documentos
ndice
1. Introduo...................................................................................................................................2 2. Ambiente dos laboratrios .........................................................................................................2 2.1. Alterao da password........................................................................................................3 3. Ficheiros e directorias ................................................................................................................3 3.1. Convenes de designao dos ficheiros............................................................................3 3.2. Estrutura..............................................................................................................................4 3.3. Operaes sobre ficheiros e directorias ..............................................................................5 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.1 3.4.2 Cpia de ficheiros: comando cp ..............................................................................5 Alterao do nome de ficheiros: comando mv .........................................................5 Remoo de ficheiros: comando rm.........................................................................5 Visualizao do contedo de ficheiros: comandos cat, more e less ...........5 Listar o contedo de directorias: comando ls.........................................................6 Alterar a directoria corrente: comando cd ...............................................................7 Determinar a directoria corrente: comando pwd......................................................7 Criar directorias: comando mkdir ..........................................................................7 Remover directorias: comando rmdir....................................................................8 Introduo ao conceito de permisses em unix........................................................8 O comando chmod ..................................................................................................8
3.5. Ocupao de espao em disco: comando quota...............................................................9 4. Interpretador de comandos: a Shell ..........................................................................................10 4.1. Estrutura da linha de comandos ........................................................................................10 4.2. Ficheiros de configurao da bash..................................................................................11 4.3. Metacaracteres ..................................................................................................................12 4.4. Sequncias de controlo .....................................................................................................13 4.5. Variveis shell...................................................................................................................13 1
4.6. Redireco de entradas e sadas........................................................................................15 4.6.1 4.7.1 4.7.2 Utilizao de pipes: caracter | .............................................................................17 Completar texto na linha de comandos caracter TAB.........................................17 Comando history...............................................................................................17 4.7. Facilidades da shell ...........................................................................................................17
5. Processos ..................................................................................................................................18 5.1. Visualizar processos: comando ps ...................................................................................18 5.2. Execuo de comandos em background ...........................................................................18 5.3. Matar um processo: comando kill ................................................................................18 5.4. Controlo de Jobs ...............................................................................................................19 6. Outros comandos......................................................................................................................20 6.1. Manual do unix: comando man ........................................................................................20 6.2. Filtros ................................................................................................................................21 6.2.1 Filtros grep, egrep, fgrep .........................................................................21
1. Introduo
O Unix um sistema operativo criado no incio da dcada de 70 nos Bell Lab's nos Estados Unidos. um sistema multi-utilizador desenvolvido na linguagem de programao C. Actualmente existem diversas verses (por exemplo, BSD Unix, System V, HPUX, Solaris). O Linux uma verso do Unix para pequenos computadores desenvolvida por Linus Torvalds. Para alm das possibilidades que oferece, o Linux tem-se expandido mundialmente por ser de distribuio gratuita. Actualmente, o Linux mantido por um conjunto de programadores que de forma gratuita o vo actualizando. Presentemente existem diversas verses disponveis. A opo por uma prende-se normalmente com razes culturais embora algumas apresentem vantagens sobre as restantes. Um dos grandes distribuidores de software para Linux a FSF (Free Software Foundation) com o seu projecto GNU. So deles as mais populares verses de compiladores (gcc), debuggers (gdb), editores de texto (gnu emacs) e utilitrios de compresso (gzip). Na prtica, qualquer pessoa pode contribuir para o desenvolvimento do Linux produzindo e distribuindo software. Grandes outras marcas tm disponibilizado software de forma gratuita para este sistema operativo.
Os computadores dos laboratrios tm instalado um sistema de ficheiros distribudo denominado NFS (Network File System) que lhes permite aceder aos ficheiros guardados na mquina onde foram criadas as reas da disciplina. Na eventualidade de esta mquina no se encontrar disponvel, todos os ficheiros ficaro inacessveis. A entrada numa sesso em Linux feita pela digitao de um par (login, password). O login atribudo pela administrao do sistema e permanente (do tipo iXXXXX). A password inicialmente atribuda pela administrao mas dever ser alterada logo que possvel e com regularidade. A sada de uma sesso ser feita pelo comando logout, exit ou ainda, nalgumas configuraes por ctrl^D. Aps a terminao da sesso surgir novamente o dilogo de abertura de sesso. Ateno: frequente, ao longo de um dia de trabalho, os utilizadores abrirem vrias sesses na mesma mquina. Se for esse o caso, assegure-se do encerramento de todas elas percorrendo-as (Alt+F1 a Alt+F7) antes de abandonar a mquina. Os ficheiros dos grupos das disciplinas esto na directoria areas_de_grupo.
Os utilizadores podem alterar a password no sistema operativo Windows fazendo ctrl+alt+del ou no site https://admin.di.fc.ul.pt.
3. Ficheiros e directorias
Em Unix, o nome de um ficheiro ou de uma directoria pode ter at 256 caracteres. Podem ser utilizados quaisquer caracteres excepto a barra (/), embora seja conveniente restringir essa utilizao aos caracteres alfanumricos (letras e algarismos) e aos caracteres _ (underscore) e . (ponto).
Alguns ficheiros especiais comeam com o .. o caso de um ficheiro associado a cada rea de trabalho em Unix (.bash_profile), cujo contedo executado sempre que efectuada uma entrada nessa rea. Este tipo de ficheiros tem a particularidade de no ser visvel na listagem de ficheiros de uma directoria (comando ls) excepto quando utilizada a opo -a.
3.2. Estrutura
As directorias constituem um tipo especial de ficheiros. A sua funo agrupar ficheiros e outras directorias. Estes dir-se-o contidos naquela. Uma subdirectoria um abuso de linguagem utilizado para designar uma directoria que se encontra dentro de uma outra. No que se segue, as caractersticas de uma directoria, enquanto ficheiro Unix, sero esquecidas, sendo alvo da nossa ateno apenas o conceito (lgico) de directoria que ser necessrio para o utilizador do sistema. Todos os ficheiros no Unix so guardados logicamente segundo uma estrutura hierrquica em rvore.
Notas: A rvore tem uma nica raiz, identificada por /'. Este o nome da raiz de qualquer sistema de ficheiros Unix. Todos os ficheiros e directorias so colocados abaixo da raiz. Existem duas directorias chamadas etc. Dois ficheiros (regulares ou directorias) podem ter o mesmo nome desde que no se encontrem dentro da mesma directoria.
Os ficheiros e as directorias podem ser identificados atravs de nomes absolutos ou atravs de nomes relativos. Os nomes absolutos so construdos atravs da concatenao dos nomes das vrias directorias desde a directoria raiz. O separador entre nomes tambm a barra (/). Por exemplo, a directoria so000 tem o seguinte nome absoluto:
/home/nemo/so/so000
Os nomes relativos so utilizados para identificar ficheiros ou directorias a partir de uma determinada directoria: Para referir uma subdirectoria da directoria corrente utiliza-se o nome da subdirectoria; A directoria acima da directoria corrente identificada pelos caracteres .. A directoria corrente identificada pelo caracter . A directoria HOME do utilizador corrente identificada pelo caracter ~ A directoria HOME de um utilizador identificada por ~<nome do utilizador>
Notas: Se fichCopia j existir o seu contedo original ser eliminado; Se fichCopia for o nome de uma directoria o ficheiro ser copiado para dentro da directoria, mantendo o nome original Se forem utilizados meta-caracteres ou se for indicado mais que um ficheiro de origem, fichCopia dever ser uma directoria. Nesse caso, todos os ficheiros mantero o nome original e sero colocados dentro da directoria indicada. -i : pede confirmao antes de reescrever o ficheiro de destino -f : fora a cpia, sem pedir confirmao -R ou -r : copia directorias recursivamente
mv nomeAntigo nomeNovo
Notas: Se nomeNovo for uma directoria, o ficheiro nomeAntigo apenas muda de directoria O ficheiro indicado em nomeAntigo tambm pode ser o nome de uma directoria. Nesse caso, todo o contedo da directoria (incluindo subdirectorias) movido para a nova localizao, dada por nomeNovo. Remoo de ficheiros: comando rm
3.3.3
rm [opes] ficheiros...
3.3.4
cat ficheiros
Notas: O comando cat escreve o contedo dos ficheiros para o cran, por omisso. Se este contedo ocupar mais do que uma pgina do cran ser necessrio, regra geral bastante
incmodo, utilizar as sequncias ctrl^S e ctrl^Q para parar/continuar o preenchimento do cran. Se no for dado nenhum ficheiro como parmetro, o cat, por omisso, escreve no cran o que for digitado no teclado at digitao de ctrl^D (indicao de fim de ficheiro).
Notas: Estes comandos apresentam o contedo dos ficheiros de tal forma que o cran preenchido pgina a pgina. A pgina seguinte visualizada premindo a barra de espaos. O avano linha a linha feito pela tecla <Enter>. O caracter q permite terminar a visualizao do ficheiro. Ambos os comandos dispem de uma facilidade de pesquisa. O padro a pesquisar definido premindo a tecla /' seguida do padro, concluindo com a tecla <Enter>. Ocorrncias seguintes do padro so obtidas utilizando n em vez da barra de espaos. Os comandos permitem a utilizao de padres de pesquisa muito ricos, inclusive com recurso a meta-caracteres e a expresses regulares complexas. Informao sobre a composio destes padres e sobre outros comandos pode ser obtida premindo h durante a utilizao do programa. O recuo nas pginas visveis obtido atravs do comando b. O comando less estende as opes de more. Listar o contedo de directorias: comando ls
3.3.5
ls [opes] ficheiros...
Opes mais comuns: Opo -l A opo -l apresenta um conjunto de informao adicional para cada ficheiro listado. Por exemplo:
[so000@nemo total 8 drwxr-xr-x -rw-r--r--rwxr--r-tmp]$ ls l 2 so000 so 48 Jul 12 17:23 aula1/ 1 so000 so 18 Jul 12 17:25 ex1.c 1 so000 so 13 Jul 12 17:30 myls
A informao apresentada pelo comando ls -l para cada ficheiro divide-se em 7 campos: Tipo do ficheiro A primeira posio da sequncia de caracteres inicial permite distinguir ficheiros normais de directorias. Se o primeiro caracter for (como no caso de aula1 neste exemplo) d, o ficheiro em causa uma directoria. Um - nesta posio indica tratarse de um ficheiro regular. Um l apresenta um link simblico, conceito que no ser abordado neste documento. Permisses Nos 9 caracteres seguintes a existncia de um - significa a ausncia de permisso e um outro caracter a existncia de permisso. As permisses em causa so: r (read)
Permisso de leitura do ficheiro w (write) Permisso de escrita/eliminao do ficheiro x (eXecute) Permisso de execuo do ficheiro Os primeiros trs caracteres descrevem as permisses para o dono do ficheiro, o segundo bloco de trs caracteres as permisses para o grupo e as trs ltimas para os restantes utilizadores. Estes conceitos so aprofundados na seco alterar permisses. Nmero de hard links Este conceito ultrapassa o mbito deste documento pelo que no ser explicado. Dono do ficheiro Utilizador que detm a propriedade do ficheiro (owner). este utilizador que desfruta das permisses apresentadas no primeiro bloco. No exemplo, todos os ficheiros so propriedade do utilizador so000. Grupo do ficheiro Grupo de utilizadores atribudo ao ficheiro. So os utilizadores que pertencem a este grupo que desfrutam das permisses indicadas no segundo bloco. No exemplo, todos os ficheiros esto atribudos ao grupo so. Data/hora da ltima alterao Em ficheiros alterados h mais de um ano, a hora substituda pelo ano da ltima alterao. Nome do ficheiro Tal como apresentado na execuo do comando ls. Opo -a A opo -a apresenta todos os ficheiros da directoria, inclusive os ficheiros iniciados por .. Dois ficheiros particulares nesta categoria so os ficheiros . e .. que representam respectivamente a prpria directoria e a directoria acima, na rvore de directorias. 3.3.6 Alterar a directoria corrente: comando cd
cd [directoria]
Notas: 3.3.7
pwd
Se o nome da directoria for omitido, a directoria corrente passa a ser a HOME do utilizador. Determinar a directoria corrente: comando pwd
3.3.8
mkdir directoria
3.3.9
rmdir directoria
Notas: Uma directoria s poder ser apagada se no contiver quaisquer ficheiros ou outras subdirectorias dentro de si (comparar com rm -r)
Em unix, as permisses podem ser definidas para o utilizador dono do ficheiro, para os outros utilizadores que pertencem ao grupo que est atribudo ao ficheiro ou para os outros utilizadores. As permisses podem ser definidas com trs modos de acesso: read Qualquer utilizador com autorizao de leitura pode ver o contedo de um ficheiro, listando-o por exemplo atravs dos comandos cat e more ou utilizando um editor de texto. No caso de se tratar de uma directoria, o utilizador est autorizado a listar o seu contedo atravs de ls. Para obter informao mais detalhada acerca dos ficheiros nele contidos, tal como a que fornecida por certas opes de ls, necessitar porm do direito de execuo. A possibilidade de ler o contedo dos vrios ficheiros da directoria verificada atravs das permisses de cada um desses ficheiros em particular. write Um utilizador com o direito de escrita num dado ficheiro pode alterar o seu contedo, atravs, por exemplo, de um editor de texto. No caso de se tratar de uma directoria, o utilizador poder alterar o seu contedo, apagando ou criando ficheiros nessa directoria. execute Um utilizador com direito de execuo sobre um ficheiro poder utiliz-lo a nvel do interpretador de comandos como um vulgar comando de sistema, desde que as directorias acima deste possuam autorizao de leitura para esse utilizador. No caso de se tratar de uma directoria, o utilizador pode mudar para essa directoria (comando cd) e copiar os seus ficheiros para outras directorias, desde que possua em relao a estas a permisso de escrita. 3.4.2 O comando chmod
A combinao das letras ugoa define para que utilizadores as permisses sero alteradas: (u) utilizador dono do ficheiro, (g) outros utilizadores do grupo atribudo ao ficheiro, (o) outros utilizadores, (a) todos os utilizadores. O operador + adiciona a permisso, o operador - remove a permisso, o operador = faz com que o ficheiro fique apenas com as permisses que esto a ser definidas por esta invocao do comando. As letras rwxXstugo indicam o modo de acesso das novas permisses: (r) leitura, (w) escrita, (x) execuo. Para as outras letras consultar man chmod.
As permisses tambm podem ser definidas atravs de uma representao numrica na base 8 (modo-octal). A cada permisso corresponde um smbolo octal, do seguinte modo: user/read user/write user/execute group/read group/write other/read other/write other/execute 400 200 100 40 20 4 2 1
group/execute 10
Assim, por exemplo, a rwxr-xr- (todos os direitos para o dono, leitura e execuo para o seu grupo e leitura para os restantes) corresponder o nmero: 400+200+100+40+10+4=754 Notas: O dono de um ficheiro o nico utilizador que est autorizado (para alm do administrador do sistema) a alterar as suas permisses. O grupo de um ficheiro pode ser alterado pelo seu dono atravs do comando chgrp (change group). Atravs do comando ls l podemos visualizar as permisses associadas aos ficheiros. O formato modo-octal prefervel quando se pretende definir um novo conjunto de permisses para um ficheiro. O formato no modo-octal tipicamente utilizado quando se pretende adicionar o remover alguma permisso s permisses j existentes. A opo R pode ser utilizada de modo a aplicar o comando recursivamente a uma directoria.
Exemplos:
chmod 754 fich1
Especifica para fich1 as permisses rwxr-xr- (todos os direitos para o dono, leitura e execuo para o seu grupo e leitura para os restantes);
chmod +x fich1, chmod a+x fich1 e chmod ugo+x fich1
Todos estes exemplos concedem permisso de execuo ao ficheiro fich1 a todos os utilizadores;
chmod ug+rx,o-wx fich1 fich2
Concede permisses de leitura e execuo ao dono e ao grupo e retira permisses de escrita e execuo aos outros utilizadores sobre os ficheiros fich1 e fich2;
utilizador, bem como os recursos consumidos, pode ser vista pelo comando quota que produz o seguinte resultado para um utilizador bem comportado:
Disk quotas for user seg002 (uid 4157): Filesystem blocks quota limit grace files quota limit grace /dev/sda8 23485 25000 35000 1545 0 0
E o seguinte resultado para um utilizador que j est a exceder a sua quota apesar de ainda no ter ultrapassado o limite mximo:
Disk quotas for user seg001 (uid 4156): Filesystem blocks quota limit grace files quota limit grace /dev/sda8 25830* 25000 35000 none 1050 0 0
Nota: Quando utilizado um sistema de ficheiros distribudo, o comando quota utilizado o da mquina local e no o da mquina remota o que d uma noo incorrecta dos limites realmente impostos ou at a informao de que o utilizador no sofre de qualquer limitao. Para obter dados correctos ser necessrio que o utilizador entre na mquina (por exemplo, por ssh).
Perante a invocao de um comando, a shell efectua os seguintes passos: Interpreta os metacaracteres ver seco sobre metacaracteres; Verifica se a primeira palavra corresponde a um comando da prpria shell - neste caso o comando executado pela prpria shell (ver seco SHELL BUILTIN COMMANDS do manual da bash) Caso contrrio, o comando pesquisado sequencialmente na lista de directorias definidas pela varivel de ambiente PATH. Se o comando no for encontrado, o erro indicado pela shell atravs da mensagem command not found. Letras Por exemplo, ls -a.
As opes so:
10
Letras seguidas de valores Por exemplo, lpr -P lp1 Cada opo precedida do caracter -, e possvel juntar vrias opes numa cadeia. Por exemplo, para executar o comando ls (listagem de ficheiros) com as opes l e a poder ser digitado ls -la ou ls -l -a. Devido ao carcter ambguo com que os valores associados a opes so interpretados, conveniente que estes valores sejam sempre especificados em separado, por exemplo: -x -G valor em vez de -xG valor. Se cometido um erro na especificao das opes de um comando, o respectivo programa indica qual a sintaxe correcta. Notas: Por omisso, o Unix no procura comandos na directoria corrente. A execuo de um comando localizado na directoria corrente, quando esta no consta de PATH conseguida de trs formas: 1. Qualificando o nome com a directoria corrente atravs do caracter . (por exemplo ./comando); 2. Adicionando a directoria corrente a PATH. 3. Adicionando o ficheiro especial . a PATH. Nesse caso, qualquer que seja a directoria corrente, o sistema procurar sempre os comandos tambm nessa directoria. O Unix respeita a ordem das directorias indicadas em PATH na pesquisa dos comandos. De dois comandos com o mesmo nome ser invocado aquele cuja localizao se encontre primeiro em PATH. Este facto pode resultar numa quebra de segurana se de alguma forma for introduzido no PATH do utilizador uma directoria contendo programas alterados. Sem se aperceber, o utilizador poder estar a executar aces de terceiros em seu nome, concedendo-lhes permisses que eles no detinham.
O caracter \ pode ser usado para se continuar um comando numa outra linha. Nesta linha a shell apresenta a prompt secundria. Exemplo:
[so000@nemo so000]$ cat /home/nemo/so/so000/trab1.entregues \ > /home/nemo/so/so000/trab2.entregues
11
~/.bash_profile, se este ficheiro no existir a bash ~/.bash_login, e se este ficheiro no existir a bash ~/.profile.
Quando a bash invocada sem requerer autenticao so executados os comandos do ficheiro ~/.bashrc. Quando a bash termina a sua execuo, invoca os comandos do ficheiro ~/.bash_logout. Estes ficheiros podem ser usados pelos utilizadores para personalizarem a sua shell.
4.3. Metacaracteres
A shell interpreta de forma especial vrios caracteres. Os caracteres seguintes so utilizados para especificar conjuntos de ficheiros: *: a shell procura todos os nomes de ficheiros que contenham qualquer conjunto de caracteres na posio de * ?: a shell procura todos os nomes de ficheiros que contenham um caracter na posio de ? [ccc]: a shell procura todos os nomes de ficheiros que contenham um caracter pertencente a [ccc] nesta posio.
Exemplos:
[so000@nemo exemplo]$ ls ex1.class ex2.class t1.class ex1.java ex2.java t1.java t1.java~ t2.class t2.java t2.java~ trabalho.java
//todos os ficheiros comeados por t, seguidos de um character, um ., um conjunto de caracteres e terminados por um caracter diferente de ~
[so000@nemo exemplo]$ ls t?.*[^~] t1.class t1.java t2.class t2.java
// todos os ficheiros comeados por t, seguidos pelo caracter 1 ou pelo caracter 2, um . e um conjunto de caracteres.
[so000@nemo exemplo]$ ls t[12].* t1.class t1.java t1.java~ t2.class t2.java t2.java~
Os caracteres seguintes indicam shell para no interpretar de forma especial determinados caracteres ou conjuntos de caracteres: caracter \: indica shell para no interpretar de forma especial o caracter seguinte.
t1.class t1.java t1.java~
[so000@nemo exemplo]$ echo * ex1.class ex1.java ex2.class ex2.java t2.class t2.java t2.java~ trabalho.java [so000@nemo exemplo]$ echo \* *
12
pelicas: indica shell para no interpretar o conjunto de caracteres que esto entre pelicas.
t1.class t1.java t1.java~
[so000@nemo exemplo]$ echo *.* ex1.class ex1.java ex2.class ex2.java t2.class t2.java t2.java~ trabalho.java [so000@nemo exemplo]$ echo '*.*' *.*
aspas: indica shell para no interpretar o conjunto de caracteres que esto entre aspas, excepto os caracteres $, ` e \.
[so000@nemo exemplo]$ echo '******a minha PATH: $PATH' ******a minha PATH: $PATH [so000@nemo exemplo]$ echo "******a minha PATH: $PATH" ******a minha PATH: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:usr/ lib/jdk1.4.2_06/bin
ctrl^S/ ctrl^Q Suspender o scroll do cran e voltar a activ-lo. Em alternativa deve ser usado um dos filtros less ou more.
define a directoria HOME do utilizador corrente. Este valor utilizado, por exemplo, pelo comando cd. conjunto de directorias onde so pesquisados comandos (a ordem relevante). As directorias so separadas pelo caracter :. Exemplo de um valor possvel para esta varivel: /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: define o prompt da shell (por exemplo: [\u@\h \W]\$)
PS1:
Para mais informao sobre personalizao do prompt ver o manual da bash, seco PROMPTING
PS2:
O utilizador pode definir novas variveis, tendo o cuidado de optar por nomes que no coincidam com variveis usadas pela shell. possvel modificar, apagar e visualizar o valor das variveis da shell.
13
A forma de realizar as operaes sobre as variveis varia ligeiramente com a shell adoptada. De seguida apresentam-se os comandos da bash que realizam as operaes sobre variveis. So definidos dois conceitos. VAR representa o nome da varivel enquanto que $VAR representa o contedo da varivel. Por conveno os nomes das variveis so sempre em maisculas. Operaes sobre variveis: A definio de uma varivel feita digitando o comando:
VAR=valor
Alteraes ao seu valor so feitas da mesma forma que as definies, uma vez que no pode haver duas variveis com o mesmo nome. Um caso particular de alterao a concatenao ao valor j existente. Para tal, utiliza-se o conceito de `contedo da varivel. Por exemplo, para adicionar a directoria /users/xpto/mybin ao fim da lista da varivel PATH executar-se-ia:
PATH=$PATH:/users/xpto/mybin
A remoo de uma varivel de ambiente feita pelo comando unset VAR. O valor de uma varivel pode ser visualizado com o comando:
echo $VAR
A lista de variveis definidas pode ser visualizada pelos comandos set ou env. Quando uma varivel de ambiente definida, o seu mbito restringe-se shell corrente e no a shells ou processos filhos que venham a ser criados no seu mbito. O comando export VAR propaga a definio da varivel a todos os processos filhos que venham a ser criados.
Exemplo:
[so000@nemo exemplo]$ X=ola [so000@nemo exemplo]$ echo $X ola [so000@nemo exemplo]$ X=hello [so000@nemo exemplo]$ echo $X hello [so000@nemo exemplo]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: [so000@nemo exemplo]$ PATH=$PATH:/HOME/nemo/seg/so000/bin [so000@nemo exemplo]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/HOME/nemo/seg/so000/bin [so000@nemo exemplo]$ PATH=$PATH: [so000@nemo exemplo]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/HOME/nemo/seg/so000/bin: [so000@nemo exemplo]$ unset X [so000@nemo exemplo]$ echo $X [so000@nemo exemplo]$ X=hello [so000@nemo exemplo]$ bash [so000@nemo exemplo]$ echo $X [so000@nemo [so000@nemo [so000@nemo [so000@nemo hello exemplo]$ exemplo]$ exemplo]$ exemplo]$ exit export X
bash
echo $X
Notas: Quando adicionamos a directoria corrente varivel PATH o caracter . pode ser omitido. Exemplos:
14
Para cada processo em execuo existe uma tabela de ficheiros abertos. Nesta tabela so sempre inseridos automaticamente trs descritores: 0 1 2 < redirecciona a entrada > redirecciona a sada >> redirecciona a sada para acrescento 2> redirecciona a sada para mensagens de erro 2> redirecciona a sada para mensagens de erro para acrescento n> redirecciona o descrito n
so000]$ echo conteudo da root: >ls.root so000]$ ls / >>ls.root so000]$ cat ls.root root:
Exemplos:
[so000@nemo [so000@nemo [so000@nemo conteudo da bin/ boot/ dev/
15
etc/ HOME/ initrd/ lib/ mnt/ opt/ proc/ root/ sbin/ sys/ tmp/ usr/ var/ [so000@nemo so000]$cat >nTrabalhos trab1: 50 trab2: 48 trab3: 48 <ctrl^d> [so000@nemo so000]$cat nTrabalhos trab1: 50 trab2: 48 trab3: 48 [so000@nemo exemplo]$ echo exemplo de redireccionamento > file1 [so000@nemo exemplo]$ ls file1 [so000@nemo exemplo]$ cat file1 file2 exemplo de redireccionamento cat: file2: No such file or directory [so000@nemo exemplo]$ cat file1 file2 2>erros exemplo de redireccionamento [so000@nemo exemplo]$ cat erros cat: file2: No such file or directory [so000@nemo exemplo]$
as linhas existentes entre <<palavra e a prxima ocorrncia de palavra so utilizadas como entradas (stdin) para um comando.
[so000@nemo exemplo]$ cat <<ola > exemplo > de
16
> here document > ola exemplo de here document [so000@nemo exemplo]$
4.6.1
Um pipeline uma sequncia de comandos separados pelo caracter |. Deste modo o standard output (resultados) do primeiro comando redireccionado para o standard input (entradas) do segundo comando, e assim sucessivamente. Exemplo:
[so000@nemo exemplo]$ ls erros file1 outfile [so000@nemo exemplo]$ ls |wc -w 3
O comando history permite obter a lista dos comandos previamente invocados. Alguns exemplos de utilizao da informao disponibilizada pelo histrico: !! : refere o ltimo comando invocado !n : refere o n-simo comando do histrico !<texto> : refere o ltimo comando cujo incio <texto> Podem tambm ser utilizadas as setas para percorrer o histrico dos comandos
17
5. Processos
Cada utilizador de um sistema Unix tem associados vrios processos. Define-se como processo um programa em execuo. Sempre que a nvel da shell se invoca um comando, so criados um ou mais processos no sistema, para a sua execuo. Cada processo tem um identificador nico, o pid do processo.
Algumas opes do comando ps: -e: apresenta informao sobre todos os processos -f, -F: apresentam mais informao sobre os processos (ver man ps) -H: apresenta a hierarquia dos processos -L: apresenta informao sobre threads
Notas: O lanamento de comandos em background liberta imediatamente a shell para poder continuar a tratar comandos; A shell apresenta o pid do processo; Quando o processo terminar, a shell avisar o utilizador atravs da seguinte mensagem:
[id]+ Done comando
Quando um processo executado em background, normalmente tem-se stdin = /dev/null e stdout = /dev/tty
18
Exemplos de utilizao:
[so000@nemo so000]$ kill 30823 [so000@nemo so000]$ kill -9 30823 [1]+ Killed emacs trab1.c [so000@nemo so000]$ ps PID TTY TIME CMD 27255 pts/3 00:00:00 bash 30975 pts/3 00:00:00 ps
Notas: No primeiro caso o comando kill envia o sinal TERM (nmero 15) ao processo. Por omisso, quando o processo recebe este sinal morre. No entanto, o processo pode tratar este sinal, por exemplo, ignorando-o. No segundo caso o comando kill envia o sinal KILL (nmero 9) ao processo. Este sinal no pode ser tratado pelos processos. Quando um processo recebe este sinal morre. A sequncia de caracteres ctrl^c envia o sinal SIGINT (nmero 2) ao processo. Por omisso, quando os processos recebem este sinal, morrem. No entanto, este sinal tambm pode ser tratado pelos processos. Um utilizador s pode matar processos que tenham sido lanados por si prprio. O administrador do sistema pode realizar esta operao sobre qualquer processo em execuo.
Mais informaes sobre o comando kill: man kill. Mais informaes sobre sinais: man -s 7 signal.
Exemplo:
[so000@nemo exemplo]$ vi trab1.c // dentro do vi fao ctrl^z [1]+ Stopped vi trab1.c [so000@nemo exemplo]$ sleep 120 & [2] 32385 [so000@nemo exemplo]$ jobs [1]+ Stopped vi trab1.c [2]- Running sleep 120 & [so000@nemo exemplo]$ sleep 130 ctrl^z [3]+ Stopped sleep 130
19
[so000@nemo exemplo]$ jobs [1]- Stopped [2] Running [3]+ Stopped [so000@nemo exemplo]$ bg 3 [3]+ sleep 130 & [so000@nemo exemplo]$ jobs [1]+ Stopped [2] Running [3]- Running [so000@nemo exemplo]$ %1 //volto a poder utilizar o vi
Se houver informao respeitante a comando, man apresentar no cran o texto dessa informao dividido em trs seces (tal como no manual de Unix). A seco Name descreve sumariamente o comando. Na seco Synopsis apresentada a sintaxe de invocao. Finalmente a seco Description explica com maior detalhe o comando, descrevendo os seus argumentos, opes e ficheiros. Uma seco opcional de grande interesse See also que encaminha o utilizador para as pginas de manual de funes relacionadas. Para facilitar a leitura, toda a informao apresentada pgina a pgina. O avano nas pginas feito pela barra de espaos. A terminao de visualizao, pesquisa e opes de recuo na pgina esto dependentes do filtro de controlo de visualizao utilizado: more, less ou nenhum (ver notas sobre estes comandos). As pginas do manual esto organizadas em seces: Seco 1: comandos Seco 2: chamadas ao sistema operativo (funes escritas na linguagem de programao C) Seco 3: funes de biblioteca Seco 4: ficheiros especiais device files Seco 5: formatos comuns de ficheiros Seco 6: jogos Seco 7: miscelanea Seco 8: comandos de administrao Seco 9: funes da interface do ncleo do unix
Alguns comandos (por exemplo, printf) dispem de mais de uma pgina de manual, dispersas por vrias seces. Por omisso, man executa a pesquisa apenas at localizar a primeira ocorrncia para o comando. Este comportamento pode ser alterado recorrendo a duas opes: A opo -a pesquisa em todas as seces a pgina referente ao comando. Se existir mais que uma pgina, a seguinte ser apresentada quando a visualizao da anterior for terminada.
20
A opo -S aceita como argumento um conjunto de seces separadas pelo caracter dois pontos (:). Pode-se por isso fazer man -S 3 printf para visualizar a pgina referente ao comando printf da seco 3 em vez da referente ao comando na seco 1 que seria apresentada por omisso.
A utilizao normal do comando man pressupe que o utilizador conhece o nome do comando sobre o qual quer obter informao. Caso contrrio, o utilizador pode utilizar a seguinte opo: Opo k (idntica ao comando apropos) procura a palavra fornecida como argumento numa base de dados de comandos e suas descries. Desta forma, o comando man apresenta uma lista de comandos e suas descries (semelhante seco Name do comando man) em que a palavra indicada figura no nome do comando ou na sua descrio.
6.2. Filtros
Os filtros so comandos que lem alguns dados de entrada, realizam algumas operaes sobre esses dados e escrevem os respectivos resultados. Exemplos de filtros: 6.2.1
fgrep, grep, egrep: wc:
conta o nmero de linhas, palavras e letras ordena linhas de texto apresenta o ltima parte do ficheiro remove linhas duplicadas de um ficheiro ordenado filtros programveis
sed, awk:
considera apenas o valor literal de palavra Algumas expresses regulares usadas com grep: \c: literalmente o valor de c ^: no incio da linha $: no fim da linha .: qualquer caracter [...]: qualquer caracter contido em ... [^...]: qualquer caracter no contido em ... r*: zero ou mais ocorrncias de r
21
Exemplos:
[so000@nemo exemplo]$ cat exemplo.grep Ficheiro para exemplicar a utilizao dos greps linha 1 linha 2 ^linha 3 esta a linha quatro e esta a linha cinco [so000@nemo exemplo]$ grep linha exemplo.grep linha 1 linha 2 ^linha 3 esta a linha quatro e esta a linha cinco [so000@nemo exemplo]$ grep ^linha exemplo.grep linha 1 linha 2
22