Manipulação de directorias Outra forma de voltarmos para a directoria curso é: > cd ~/curso > pwd > ls -la Manipulação de directorias Os dois exemplos são equivalentes No primeiro exemplo, o comando «cd» sem argumentos traz-nos para a nossa directoria pessoal de trabalho (home) Em seguida, o segundo comando «cd» muda para a subdirectoria «curso» No segundo exemplo, foi utilizado o símbolo «~» que representa a directoria de trabalho (home) Contudo, ao adicionar-lhe o nome da subdirectoria «curso», vamos saltar directamente para a directoria desejada: «~/curso» 1.2.4 – Manipulação de ficheiros Manipulação de ficheiros Até ao momento, a directoria «curso» ainda está vazia Por esse motivo, vamos começar por copiar alguns ficheiros para o seu interior: > > > > > cp cp cp cp ls /etc/passwd abcd /etc/services xpto /proc/cpuinfo qwer /proc/uptime asdf -la Manipulação de ficheiros Ao fazer isto, acabámos de copiar quatro ficheiros para a directoria «curso» Por esse motivo, o comando «ls» que aparece no final, já deverá listar quatro ficheiros novos: «abcd», «xpto», «qwer» e «asdf» O comando «cp», que significa copy, copia um ficheiro de uma directoria para outra Também pode ser usado para copiar ficheiros dentro da mesma directoria, se forem usados nomes diferentes Por esse motivo, o «cp» pode ser utilizado com 2 nomes: o nome do ficheiro original e o nome do ficheiro novo Manipulação de ficheiros Por outro lado, quando desejamos fazer uma cópia de um ficheiro localizado numa determinada directoria, para outra directoria, mantendo o nome original, basta usar o nome da directoria de destino Por exemplo, para copiar um ficheiro para a directoria actual, podemos usar o símbolo «.» > cp /usr/bin/cal > ls -la Manipulação de ficheiros Neste exemplo, estamos a copiar o ficheiro «cal», localizado na directoria «/usr/bin», para a directoria actual Como resultado, é criado um novo ficheiro na directoria actual, com o mesmo nome que o original: «cal» O comando «cp» mantém o «modo» e todas as permissões dos ficheiros originais Contudo, os ficheiros copiados deixam de pertencer ao dono original e passam a pertencer ao utilizador que mandou executar a cópia Manipulação de ficheiros Para mover ou alterar o nome de um ficheiro, temos o comando «mv», que significa move: > > > > > > > mv mv mv ls mv ls ls cal calendario asdfg qwert abcd .. -l ../abcd aaa –l .. -l Manipulação de ficheiros Neste exemplo, o primeiro comando altera o nome do ficheiro «cal» para «calendario» e o segundo muda o nome do ficheiro «asdfg» para «qwert» Contudo, o terceiro comando «mv abcd ..» move o ficheiro «abcd» para a directoria acima O comando seguinte «ls -l ..» mostra a listagem da directoria acima, na qual já se encontra o ficheiro «abcd» que foi movido no comando anterior Manipulação de ficheiros O comando «mv .. /abcd aaa» volta a mover o ficheiro «abcd» para a directoria actual mas desta vez o seu nome é alterado para «aaa» Finalmente, os comandos «ls -l ..» e «ls -l», servem para consultar o estado em que ficaram as duas directorias e verificar se o «mv» funcionou como previsto Para além de copiar e mover ficheiros, também necessitamos muitas vezes de eliminar ficheiros, para libertar espaço em disco O comando usado para remover ficheiros é o «rm» (remove) Manipulação de ficheiros Por exemplo, para eliminar o ficheiro «calendario», basta executar: > rm calendario Por norma, o comando «rm» só funciona sobre ficheiros Para remover directorias, deve ser utilizada a opção «-r», que remove árvores de directorias recursivamente, ou então o comando «rmdir» (remove directory) Manipulação de ficheiros Exemplo: > rm –r subdir A opção «-r», que significa recursive, remove toda a estrutura de ficheiros e subdirectórios debaixo de «subdir» Este comando é bastante útil em situações onde existem estruturas de directórios complicadas que necessitam de ser eliminadas Contudo, é necessário ter bastante cuidado antes de o utilizar, uma vez que os seus efeitos podem ser devastadores, especialmente quando acontecem erros de utilização Manipulação de ficheiros Por exemplo se cometesse o erro de executar na raíz (/) o comando: > rm –r * Este comando eliminaria todo o conteúdo das partições onde o linux está instalado Felizmente, o «rm» tem a opção «-i» Quando o «rm» é chamado com esta opção, pede sempre confirmação antes de apagar cada ficheiro… Manipulação de ficheiros O comando «cp» também possui uma opção «r», que permite copiar árvores inteiras de subdirectorias, escrevendo um único comando O comando «mv» não necessita deste tipo de opções, porque pode ser aplicado directamente sobre directórios Quando se move um directório, todos os ficheiros que estão no seu interior são automaticamente movidos O comando «ls» também possui uma opção «R» que serve para listar recursivamente toda uma árvore de subdirectorias Exemplo: > ls –lR /usr/local Manipulação de ficheiros O comando «ln» (link) é semelhante ao «cp», mas em vez de copiar ficheiros, limita-se a criar ligações, que são geralmente denominadas links ou atalhos Os links são ficheiros que apontam para outros ficheiros Todos os comandos e pedidos que tentam aceder ao conteúdo de um link são automaticamente redireccionados para o ficheiro por ele referenciado Manipulação de ficheiros Por exemplo, para criar um link chamado «serv», apontando para o ficheiro «etc/services», podemos utilizar o seguinte comando: > ln –s /etc/services serv > ls –l serv Depois de o link estar criado, todas as tentativas de aceder ao conteúdo do ficheiro «serv» são redireccionadas para o ficheiro «etc/services» 1.2.5 – Visualização de ficheiros de texto Visualização de ficheiros de texto No campo da visualização de ficheiros, o Linux oferece-nos os comandos «cat», «more» e uma variante do «more», chamada «less» Por exemplo, o comando «cat xpto» mostra o conteúdo do ficheiro «xpto»: > cat xpto 1.2.6 – Wild-cards Wild-cards No trabalho do dia-a-dia, é muito frequente sermos confrontados com a necessidade de realizar a mesma tarefa sobre múltiplos ficheiros Para evitar ter de repetir o mesmo comando muitas vezes, foram criados os wild-cards, que são caracteres especiais, usados para referenciar listas de ficheiros com um único nome Wild-cards Os caracteres que funcionam como wild-cards são os seguintes: Carácter * ? [] Significado Qualquer sequência de caracteres Um único carácter indiferenciado Uma sequência de um ou mais caracteres pertencentes ao conjunto dentro de parêntesis rectos Wild-cards Exemplos: Para obter a lista de todos os ficheiros na directoria «/bin», cujos nomes começam pela letra «s», usamos o wild-card «s*»: > ls /bin/s* Wild-cards Para listar todos os ficheiros da directoria «/etc» que terminam com a extensão «.conf», basta usar o wild-card «*.conf» > ls /etc/*.conf Wild-cards De igual forma, para obter a lista de todos os ficheiros da directoria «/etc» que possuem pelo menos um «x» no seu nome, usamos «*x*»: > ls /etc/*x* Wild-cards Para listar todos os ficheiros da directoria «/bin», cujo segundo carácter do nome é a letra «a», usamos o comando «ls /bin/?a*» Este comando lista todos os ficheiros que possuem um carácter indeterminado no início, seguido de uma letra «a» e de qualquer sequência de caracteres indiferenciados: > ls /bin/?a* Wild-cards Finalmente, o comando «ls /bin/???» apresenta todos os ficheiros da directoria «/bin» que possuem um nome com exactamente três caracteres de comprimento > ls /bin/??? Wild-cards Os wild-cards podem ser usados em conjugação com qualquer comando que utilize ficheiros e directorias Por exemplo, podem ser usados para copiar e para mover vários ficheiros entre directorias. Para esse efeito, vamos criar uma nova subdirectoria e copiar todos os ficheiros na directoria actual, para dentro da nova subdirectoria Wild-cards > > > > mkdir subdir ls -l cp * subdir ls –l subdir A lista de ficheiros abrangida pelo «*» também incluí a própria directoria de destino «subdir» Por essa razão, o comando «cp» vai tentar copiar a directoria para dentro de si própria Por razões óbvias, isso não é possível e o «cp» apresenta uma mensagem de erro… No entanto, os outros ficheiros são todos copiados de forma correcta Wild-cards Os wild-cards são bastante úteis para eliminar ficheiros, pois o comando «rmdir» só funciona sobre directorias vazias Por exemplo, se tentarmos remover a directoria «subdir» que contém vários ficheiros no seu interior, obtemos uma mensagem de erro: > rmdir subdir rmdir: subdir: Directory not empty Wild-cards Por esse motivo, é necessário começar por remover todos os ficheiros dentro da subdirectoria «subdir» e só depois podemos usar o «rmdir»: > rm subdir/* > rmdir subdir Neste exemplo, foi utilizado o wild-card «*» para referenciar todos os ficheiros contidos no interior da directoria «subdir» Neste exemplo, também poderia ter sido usada a opção «-r» do comando «rm» para remover, de uma só vez, a directoria e os ficheiros contidos no seu interior.