Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

rm: remove o diretório `archive '? y

Discutiremos como tornar essa opção o padrão no Capítulo 7, que discute a personalização de seu ambiente de shell.


imagem


3.3.3. Localizando arquivos


3.3.3.1. Usando recursos de shell


No exemplo sobre como mover arquivos, já vimos como o shell pode manipular vários arquivos de uma vez. Nesse exemplo, o shell descobre automaticamente o que o usuário quer dizer com os requisitos entre os colchetes "[" e "]". O shell pode substituir intervalos de números e caracteres maiúsculos ou minúsculos semelhantes. Ele também substitui quantos caracteres você quiser por um asterisco e apenas um caractere por um ponto de interrogação.


Todos os tipos de substituições podem ser usados ​​simultaneamente; o shell é muito lógico sobre isso. O shell Bash, por exemplo, não tem problemas com expressões como ls dirname / * / * / * [2-3].


Em outros shells, o asterisco é comumente usado para minimizar os esforços de digitação: as pessoas entrariam cd dir * em vez de cd anuário. No Bash, entretanto, isso não é necessário porque o shell GNU tem um recurso chamado completamento de nome de arquivo. Isso significa que você pode digitar os primeiros caracteres de um comando (em qualquer lugar) ou de um arquivo (no diretório atual) e, se nenhuma confusão for possível, o shell descobrirá o que você quer dizer. Por exemplo


em um diretório contendo muitos arquivos, você pode verificar se há algum arquivo começando com a letra A apenas digitando ls A e pressionando o Aba tecla duas vezes, em vez de pressionar Entrar. Se houver apenas um arquivo começando com "A", este arquivo será mostrado como o argumento para ls (ou qualquer comando shell, nesse caso) imediatamente.


imagem

3.3.3.2. Qual


Uma maneira muito simples de pesquisar arquivos é usar o qual comando, para procurar nos diretórios listados no caminho de pesquisa do usuário para o arquivo necessário. Claro, uma vez que o caminho de pesquisa contém apenas caminhos para diretórios contendo programas executáveis, qual não funciona para arquivos comuns. O qual comando é útil ao solucionar problemas de "Comando não encontrado". No exemplo abaixo, o usuário tina não posso usar o Acroread programa, enquanto seu colega não tem nenhum problema no mesmo sistema. O problema é semelhante ao PATH problema na parte anterior: o colega de Tina diz a ela que pode ver o programa necessário em

/ opt / acroread / bin, mas este diretório não está em seu caminho:


tina: ~> qual acroread

/ usr / bin / que: sem acroread em (/ bin: / usr / bin: / usr / bin / X11)

tina: ~> qual acroread

/ usr / bin / que: sem acroread em (/ bin: / usr / bin: / usr / bin / X11)

O problema pode ser resolvido fornecendo o caminho completo para o comando a ser executado ou reexportando o conteúdo do

Variável PATH:


tina: ~> export PATH = $ PATH: / opt / acroread / bin


tina: ~> echo $ PATH

/ bin: / usr / bin: / usr / bin / X11: / opt / acroread / bin

tina: ~> export PATH = $ PATH: / opt / acroread / bin


tina: ~> echo $ PATH

/ bin: / usr / bin: / usr / bin / X11: / opt / acroread / bin

Com o qual comando também verifica se um comando é um alias para outro comando:


gerrit: ~> qual -a ls

ls tem o alias de `ls -F --color = auto 'ls é / bin / ls

gerrit: ~> qual -a ls

ls tem o alias de `ls -F --color = auto 'ls é / bin / ls

Se isso não funcionar em seu sistema, use o aliás comando:


tille @ www: ~ / mail $ alias ls

alias ls = 'ls --color'

tille @ www: ~ / mail $ alias ls

alias ls = 'ls --color'


imagem


3.3.3.3. Encontre e localize


Estas são as ferramentas reais, usadas ao pesquisar outros caminhos além daqueles listados no caminho de pesquisa. O find A ferramenta, conhecida no UNIX, é muito poderosa, o que pode ser a causa de uma sintaxe um pouco mais difícil. GNU find, no entanto, lida com os problemas de sintaxe. Este comando não só permite que você pesquise nomes de arquivos, mas também aceita o tamanho do arquivo, a data da última alteração e outras propriedades do arquivo como critérios para uma pesquisa. O uso mais comum é para encontrar nomes de arquivos:


find -nome


Isso pode ser interpretado como "Procure em todos os arquivos e subdiretórios contidos em um determinado caminho e imprima os nomes dos arquivos que contêm a string de pesquisa em seus nomes" (não em seu conteúdo).


Outra aplicação de find é para pesquisar arquivos de um determinado tamanho, como no exemplo abaixo, onde o usuário peter

deseja encontrar todos os arquivos no diretório atual ou em um de seus subdiretórios, com mais de 5 MB:


Peter: ~> achar . -tamanho + 5000k

psicotic_chaos.mp3

Peter: ~> achar . -tamanho + 5000k

psicotic_chaos.mp3


Se você cavar nas páginas do manual, verá que find também pode realizar operações nos arquivos encontrados. Um exemplo comum é a remoção de arquivos. É melhor testar primeiro sem o -Exec opção de que os arquivos corretos sejam selecionados, após isso o comando pode ser executado novamente para excluir os arquivos selecionados. Abaixo, procuramos por arquivos que terminam em .tmp:


Peter: ~> achar . -name "* .tmp" -exec rm {} \;


Peter: ~>

Peter: ~> achar . -name "* .tmp" -exec rm {} \;


Peter: ~>


imagemOtimize!

Este comando irá chamar rm quantas vezes for encontrado um arquivo respondendo aos requisitos. Na pior das hipóteses, isso pode ser milhares ou milhões de vezes. Isto é uma grande carga para o seu sistema.


Uma forma mais realista de trabalhar seria o uso de um cachimbo (|) e o xargs ferramenta com rm como um argumento. Assim, o rm command só é chamado quando a linha de comando está cheia, em vez de para cada arquivo. Consulte o Capítulo 5 para obter mais informações sobre como usar o redirecionamento de E / S para facilitar as tarefas diárias.

Mais tarde (em 1999 de acordo com as páginas de manual, após 20 anos de find), localizar foi desenvolvido. Este programa é mais fácil de usar, mas mais restrito do que find, já que sua saída é baseada em um banco de dados de índice de arquivo que é atualizado apenas uma vez por dia. Por outro lado, uma pesquisa no localizar banco de dados usa menos recursos do que find e, portanto, mostra os resultados quase instantaneamente.


A maioria das distribuições Linux usa localizar hoje em dia, a localização com segurança aprimorada, a versão moderna do localizar que evita que os usuários obtenham resultados que eles não têm direito de ler. Os arquivos em raizO diretório pessoal de são um exemplo; normalmente, não são acessíveis ao público. Um usuário que deseja encontrar alguém que conheça o shell C pode emitir o comando localizar .cshrc, para exibir todos os usuários que possuem um arquivo de configuração personalizado para o C shell. Supondo que os usuários raiz e jenny estão executando o C shell, então apenas o arquivo

/home/jenny/.cshrc será exibido, e não aquele em raizdiretório inicial de. Na maioria dos sistemas,

localizar é um link simbólico para o programa slocate:


Billy: ~> ls -l / usr / bin / locate

lrwxrwxrwx 1 root slocate 7 out 28 14:18 / usr / bin / locate -> slocate *

Billy: ~> ls -l / usr / bin / locate

lrwxrwxrwx 1 root slocate 7 out 28 14:18 / usr / bin / locate -> slocate *

Utilizador tina poderia ter usado localizar para encontrar o aplicativo que ela queria:


tina: ~> localizar acroread

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/ usr / local / bin / acroread

/ usr / local / Acrobat4 / Reader / intellinux / bin / acroread

/ usr / local / Acrobat4 / bin / acroread

tina: ~> localizar acroread

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/ usr / local / bin / acroread

/ usr / local / Acrobat4 / Reader / intellinux / bin / acroread

/ usr / local / Acrobat4 / bin / acroread

Diretórios que não contêm o nome caixa não pode conter o programa - eles não contêm arquivos executáveis. Existem três possibilidades restantes. O arquivo em / usr / local / bin é aquele tina teria desejado: é um link para o script de shell que inicia o programa real:


tina: ~> arquivo / usr / local / bin / acroread

/ usr / local / bin / acroread: link simbólico para ../Acrobat4/bin/acroread


tina: ~> arquivo / usr / local / Acrobat4 / bin / acroread

/ usr / local / Acrobat4 / bin / acroread: executável de texto de script de shell Bourne


tina: ~> arquivo / usr / local / Acrobat4 / Reader / intellinux / bin / acroread

/ usr / local / Acrobat4 / Reader / intellinux / bin / acroread: ELF executável LSB de 32 bits, Intel 80386, versão 1, vinculado dinamicamente (usa

tina: ~> arquivo / usr / local / bin / acroread

/ usr / local / bin / acroread: link simbólico para ../Acrobat4/bin/acroread


tina: ~> arquivo / usr / local / Acrobat4 / bin / acroread

/ usr / local / Acrobat4 / bin / acroread: executável de texto de script de shell Bourne


tina: ~> arquivo / usr / local / Acrobat4 / Reader / intellinux / bin / acroread

/ usr / local / Acrobat4 / Reader / intellinux / bin / acroread: ELF executável LSB de 32 bits, Intel 80386, versão 1, vinculado dinamicamente (usa


compartilhado libras), não despojado Para manter o caminho o mais curto possível, para que o sistema não precise pesquisar muito cada vez que um usuário deseja executar um comando, adicionamos / usr / local / bin para o caminho e não para os outros diretórios, que

contêm apenas os arquivos binários de um programa específico, enquanto / usr / local / bin contém outros úteis

programas também.


Novamente, uma descrição de todos os recursos do find e localizar pode ser encontrado nas páginas de informações.


imagem

3.3.3.4. O comando grep


3.3.3.4.1. Filtragem de linha geral


Um programa simples, mas poderoso, grep é usado para filtrar linhas de entrada e retornar certos padrões para a saída. Existem literalmente milhares de aplicativos para o grep programa. No exemplo abaixo, jerry utiliza grep para ver como ele fez a coisa com find:


Jerry: ~> grep -a encontrar .bash_history

achar . -name userinfo man find

encontre ../ -nome comum.cfg

Jerry: ~> grep -a encontrar .bash_history

achar . -name userinfo man find

encontre ../ -nome comum.cfg


imagemHistórico de busca

Também útil nesses casos é a função de pesquisa em bater, ativado pressionando Ctrl+R de uma vez, como no exemplo em que queremos verificar como fizemos isso pela última vez find mais uma vez:


Thomas ~> ^R

(pesquisa reversa) `find ': find` / home / thomas` -name * .xml

Thomas ~> ^R

(pesquisa reversa) `find ': find` / home / thomas` -name * .xml

Digite sua string de pesquisa no prompt de pesquisa. Quanto mais caracteres você digitar, mais restrita será a pesquisa. Lê o histórico de comandos para esta sessão de shell (que é escrito em

.bash_history em seu diretório inicial ao sair dessa sessão). A ocorrência mais recente de sua string de pesquisa é mostrada. Se você quiser ver os comandos anteriores contendo a mesma string, digite Ctrl+R novamente.


Veja as páginas de informações em bater para mais.

Todos os UNIXes com um pouco de decência têm um dicionário online. O Linux também. O dicionário é uma lista de palavras conhecidas em um arquivo chamado palavras, localizado em / usr / share / dict. Para verificar rapidamente a grafia correta de uma palavra, nenhum aplicativo gráfico é necessário:


william: ~> grep pinguin / usr / share / dict / words


william: ~> grep penguin / usr / share / dict / words

pinguins pinguins

william: ~> grep pinguin / usr / share / dict / words


william: ~> grep penguin / usr / share / dict / words

pinguins pinguins


imagemDicionário vs. lista de palavras

Algumas distribuições oferecem o ditar comando, que oferece mais recursos do que simplesmente pesquisar palavras em uma lista.

Quem é o proprietário desse diretório inicial próximo ao meu? Ei, aqui está o número do telefone dele!


lisa: ~> grep gdbruyne / etc / passwd

gdbruyne: x: 981: 981: Guy Debruyne, tel 203234: / home / gdbruyne: / bin / bash

lisa: ~> grep gdbruyne / etc / passwd

gdbruyne: x: 981: 981: Guy Debruyne, tel 203234: / home / gdbruyne: / bin / bash


E qual era mesmo o endereço de e-mail de Arno?


serge: ~ / mail> grep -i arno *

e-mail enviado: Para:[email protected]>

e-mail enviado: Na segunda-feira, 24 de dezembro de 2001, [email protected] escreveu:

serge: ~ / mail> grep -i arno *

e-mail enviado: Para:[email protected]>

e-mail enviado: Na segunda-feira, 24 de dezembro de 2001, [email protected] escreveu:

find e locate são freqüentemente usados ​​em combinação com grep para definir algumas consultas sérias. Para obter mais informações, consulte o Capítulo 5 sobre redirecionamento de E / S.


imagem

3.3.3.4.2. Caracteres especiais


Os caracteres que têm um significado especial para a concha devem ser escapou. O caractere de escape no Bash é a barra invertida, como na maioria dos shells; isso tira o significado especial do caractere a seguir. O shell conhece alguns caracteres especiais, entre os mais comuns /,.,? e *. Uma lista completa pode ser encontrada nas páginas de informações e documentação do seu shell.


Por exemplo, digamos que você deseja exibir o arquivo "*" em vez de todos os arquivos em um diretório, você teria que usar


menos \*


Top OS Cloud Computing na OnWorks: