Se você deseja dominar o shell Bash no Linux, macOS ou outro sistema semelhante ao UNIX, os caracteres especiais (como ~, *, | e>) são essenciais. Vamos ajudá-lo a desvendar essas sequências de comandos enigmáticas do Linux e se tornar um herói dos hieróglifos.
Índice
Há um conjunto de caracteres que o shell Bash trata de duas maneiras diferentes. Quando você os digita no shell, eles agem como instruções ou comandos e dizem ao shell para executar uma determinada função. Pense neles como comandos de um único caractere.
Às vezes, você deseja apenas imprimir um caractere e não precisa dele para atuar como um símbolo mágico. Existe uma maneira de usar um personagem para representar a si mesmo, em vez de sua função especial.
Mostraremos quais caracteres são “especiais” ou “meta-“, e também como você pode usá-los funcional e literalmente.
O til (~) é uma forma abreviada de seu diretório pessoal. Isso significa que você não precisa digitar o caminho completo para o seu diretório pessoal nos comandos. Onde quer que você esteja no sistema de arquivos, você pode usar este comando para ir para o seu diretório inicial:
cd ~
Você também pode usar este comando com caminhos relativos. Por exemplo, se você estiver em algum lugar no sistema de arquivos que não está em sua pasta inicial e quiser mudar para o archive
diretório em seu work
diretório, use o til para fazer isso:
cd ~ / work / archive
Um ponto (.) Representa o diretório atual. Você o verá nas listas de diretórios se usar a -a
opção (todos) com ls
.
ls -a
Você também pode usar o ponto em comandos para representar o caminho para o diretório atual. Por exemplo, se você deseja executar um script do diretório atual, você o chamaria assim:
./script.sh
Isso diz ao Bash para procurar o script.sh
arquivo no diretório atual . Dessa forma, ele não pesquisará os diretórios em seu caminho para o executável ou script correspondente.
O ponto duplo ou “ponto duplo” (..) representa o diretório pai do seu diretório atual. Você pode usar isso para subir um nível na árvore de diretórios.
cd ..
Você também pode usar este comando com caminhos relativos – por exemplo, se quiser subir um nível na árvore de diretórios e, em seguida, entrar em outro diretório nesse nível.
Você também pode usar essa técnica para mover-se rapidamente para um diretório no mesmo nível na árvore de diretórios que o seu atual. Você sobe um nível e desce em um diretório diferente.
cd ../gc_help
Você pode usar uma barra (/) – geralmente chamada apenas de barra – para separar os diretórios em um nome de caminho.
ls ~ / work / archive
Uma barra representa o caminho de diretório mais curto possível. Como tudo na árvore de diretório do Linux começa no diretório raiz, você pode usar este comando para ir para o diretório raiz rapidamente:
cd /
Na maioria das vezes, você usa o sinal numérico (#) para informar ao shell o que se segue é um comentário e não deve agir sobre ele. Você pode usá-lo em scripts de shell e – menos útil – na linha de comando.
# Isso será ignorado pelo shell Bash
Não é realmente ignorado, entretanto, porque é adicionado ao seu histórico de comandos.
Você também pode usar o hash para cortar uma variável de string e remover algum texto do início. Este comando cria uma variável de string chamada this_string
.
Neste exemplo, atribuímos o texto “Dave Geek!” para a variável.
this_string = "Dave Geek!"
Este comando usa echo
para imprimir as palavras “Como fazer” na janela do terminal. Ele recupera o valor armazenado na variável de string por meio de uma expansão de parâmetro . Como acrescentamos o hash e o texto “Dave”, ele corta essa parte da string antes de ser passada para echo
.
echo How-To $ {this_string # Dave}
Isso não altera o valor armazenado na variável string; afeta apenas o que é enviado echo
. Podemos usar echo
para imprimir o valor da variável string mais uma vez e verificar isso:
echo $ this_string
O shell Bash oferece suporte a três curingas, um dos quais é o ponto de interrogação (?). Use curingas para substituir caracteres em modelos de nome de arquivo. Um nome de arquivo que contém um curinga forma um modelo que corresponde a uma série de nomes de arquivo, em vez de apenas um.
O curinga de ponto de interrogação representa exatamente um caractere . Considere o seguinte modelo de nome de arquivo:
ls badge? .txt
Isso se traduz como “liste qualquer arquivo com um nome que comece com ‘emblema’ e seja seguido por qualquer caractere antes da extensão do nome do arquivo.”
Corresponde aos seguintes arquivos. Observe que alguns têm números e outros letras após a parte do “emblema” do nome do arquivo. O curinga de ponto de interrogação corresponderá a letras e números.
Esse modelo de nome de arquivo não corresponde a “badge.txt,” porque o nome do arquivo não tem um único caractere entre “badge” e a extensão do arquivo. O curinga do ponto de interrogação deve corresponder a um caractere correspondente no nome do arquivo.
Você também pode usar o ponto de interrogação para localizar todos os arquivos com um número específico de caracteres nos nomes dos arquivos. Isso lista todos os arquivos de texto que contêm exatamente cinco caracteres no nome do arquivo:
ls ?????. txt
Você pode usar o caractere curinga asterisco (*) para representar qualquer sequência de caracteres, incluindo nenhum caractere . Considere o seguinte modelo de nome de arquivo:
emblema ls *
Isso corresponde a todos os seguintes:
Corresponde a “badge.txt” porque o curinga representa qualquer sequência de caracteres ou nenhum caractere.
Este comando corresponde a todos os arquivos chamados “fonte”, independentemente da extensão do arquivo.
Fonte de ls. *
Conforme abordado acima, você usa o ponto de interrogação para representar qualquer caractere único e o asterisco para representar qualquer sequência de caracteres (incluindo nenhum caractere).
Você pode formar um curinga com os colchetes ([]) e os caracteres que eles contêm. O caractere relevante no nome do arquivo deve corresponder a pelo menos um dos caracteres do conjunto de caracteres curinga.
Neste exemplo, o comando se traduz em: “qualquer arquivo com um” .png”extensão, um nome que começa com‘pipes_0’, e em que o próximo caractere é quer 2, 4 ou 6.”
ls badge_0 [246] .txt
Você pode usar mais de um conjunto de colchetes por modelo de nome de arquivo:
ls badge_ [01] [789] .txt
Você também pode incluir intervalos no conjunto de caracteres. O comando a seguir seleciona arquivos com os números 21 a 25 e 31 a 35 no nome do arquivo.
ls badge_ [23] [1-5] .txt
Você pode digitar quantos comandos quiser na linha de comando, desde que separe cada um deles com um ponto e vírgula (;). Faremos isso no seguinte exemplo:
ls> count.txt; wc -l count.txt; rm count.txt
Observe que o segundo comando é executado mesmo se o primeiro falhar, o terceiro será executado mesmo se o segundo falhar e assim por diante.
Se você quiser interromper a sequência de execução se um comando falhar, use um “e” comercial duplo (&&) em vez de um ponto e vírgula:
cd ./doesntexist && cp ~ / Documents / reports / *.
Depois de digitar um comando em uma janela de terminal e ele for concluído, você retornará ao prompt de comando. Normalmente, isso leva apenas um ou dois minutos. Mas se você iniciar outro aplicativo, como gedit
, não poderá usar a janela do terminal até fechar o aplicativo.
Você pode, entretanto, iniciar um aplicativo como um processo em segundo plano e continuar a usar a janela do terminal. Para fazer isso, basta adicionar um “e” comercial à linha de comando:
gedit command_address.page &
O Bash mostra o ID do processo que foi iniciado e, em seguida, retorna para a linha de comando. Você pode então continuar a usar a janela do terminal.
Muitos comandos do Linux aceitam um arquivo como parâmetro e obtêm seus dados desse arquivo. A maioria desses comandos também pode receber entrada de um fluxo. Para criar um fluxo, você usa o colchete angular esquerdo (<), conforme mostrado no exemplo a seguir, para redirecionar um arquivo para um comando:
classificar <palavras.txt
Quando um comando tem uma entrada redirecionada para ele, ele pode se comportar de maneira diferente de quando lê um arquivo nomeado.
Se usarmos wc
para contar as palavras, linhas e caracteres em um arquivo, ele imprimirá os valores e, em seguida, o nome do arquivo. Se redirecionarmos o conteúdo do arquivo para wc
, ele imprimirá os mesmos valores numéricos, mas não saberá o nome do arquivo de onde os dados vieram. Ele não pode imprimir um nome de arquivo.
Aqui estão alguns exemplos de como você pode usar wc
:
wc words.txt
wc <palavras.txt
Você pode usar o colchete angular (>) para redirecionar a saída de um comando (normalmente, para um arquivo); aqui está um exemplo:
ls> arquivos.txt
cat files.txt
O redirecionamento de saída também pode redirecionar mensagens de erro se você usar um dígito (2, em nosso exemplo) com >
. Veja como fazer:
wc doesntexist.txt 2> errors.txt
cat errors.txt
Um “tubo” encadeia os comandos juntos. Ele pega a saída de um comando e a alimenta no próximo como entrada. O número de comandos canalizados (o comprimento da cadeia) é arbitrário.
Aqui, usaremos cat
para alimentar o conteúdo do arquivo words.txt grep
, que extrai qualquer linha que contenha um “C” maiúsculo ou minúsculo. grep
irá então passar essas linhas para sort
. sort
está usando a -r
opção (reversa), então os resultados classificados aparecerão na ordem reversa.
Nós digitamos o seguinte:
cat words.txt | grep [cC] | sort -r
O ponto de exclamação (!) É um operador lógico que significa NÃO.
Existem dois comandos nesta linha de comando:
[! -d ./backup] && mkdir ./backup
&&
.O primeiro comando usa !
como um operador lógico. Os colchetes indicam que um teste será feito. A -d
opção (diretório) testa a presença de um diretório chamado backup. O segundo comando cria o diretório.
Como o e comercial duplo separa os dois comandos, o Bash só executará o segundo se o primeiro for bem-sucedido . No entanto, isso é o oposto do que precisamos. Se o teste para o diretório “backup” for bem-sucedido, não precisamos criá-lo. E se o teste do diretório “backup“ falhar, o segundo comando não será executado e o diretório ausente não será criado.
É aqui que !
entra o operador lógico . Ele atua como um NOT lógico. Portanto, se o teste for bem-sucedido (ou seja, o diretório existe), ele !
muda para “NÃO foi bem-sucedido”, o que significa falha . Portanto, o segundo comando não está ativado.
Se o teste de diretório falhar (ou seja, o diretório não existe), !
a resposta muda para “NÃO falha”, que é bem- sucedida . Assim, o comando para criar o diretório ausente é executado.
Esse pequeno !
pacote de muito soco quando você precisa!
Para verificar o status da pasta de backup, você usa o ls
comando e as opções -l
(lista longa) e -d
(diretório), conforme mostrado abaixo:
ls -l -d backup
Você também pode executar comandos de seu histórico de comandos com o ponto de exclamação. O history
comando lista seu histórico de comandos e você digita o número do comando que deseja executar novamente !
para executá-lo, conforme mostrado abaixo:
! 24
O seguinte executa novamente o comando anterior:
!!
No shell Bash, você cria variáveis para conter valores. Algumas, como variáveis de ambiente, sempre existem e você pode acessá-las sempre que abrir uma janela de terminal. Eles contêm valores, como seu nome de usuário, diretório inicial e caminho.
Você pode usar echo
para ver o valor que uma variável contém – basta preceder o nome da variável com o cifrão ($), conforme mostrado abaixo:
echo $ USER
echo $ HOME
echo $ PATH
Para criar uma variável, você deve dar um nome a ela e fornecer um valor para ela manter. Você não precisa usar o cifrão para criar uma variável. Você só adiciona $
quando faz referência a uma variável, como no exemplo a seguir:
ThisDistro = Ubuntu
MyNumber = 2001
echo $ ThisDistro
echo $ MyNumber
Adicione colchetes ({}) ao redor do cifrão e execute uma expansão de parâmetro para obter o valor da variável e permitir outras transformações do valor.
Isso cria uma variável que contém uma sequência de caracteres, conforme mostrado abaixo:
MyString = 123456qwerty
Use o seguinte comando para ecoar a string na janela do terminal:
echo $ {MyString}
Para retornar a substring começando na posição 6 de toda a string, use o seguinte comando (há um deslocamento de zero, então a primeira posição é zero):
echo $ {myString: 6}
Se você deseja ecoar uma substring que começa na posição zero e contém os próximos seis caracteres, use o seguinte comando:
echo $ {myString: 0: 6}
Use o seguinte comando para ecoar uma substring que começa na posição quatro e contém os próximos quatro caracteres:
echo $ {myString: 4: 4}
Se você quiser usar um caractere especial como um caractere literal (não especial), você deve informar ao shell Bash. Isso é chamado de citar e existem três maneiras de fazer isso.
Se você colocar o texto entre aspas (“…”), isso evita que o Bash atue na maioria dos caracteres especiais e eles apenas serão impressos. Uma exceção notável, porém, é o cifrão ($). Ele ainda funciona como o caractere para expressões de variáveis, portanto, você pode incluir os valores das variáveis em sua saída.
Por exemplo, este comando imprime a data e hora:
echo "Hoje é $ (data)"
Se você colocar o texto entre aspas simples (‘…’) conforme mostrado abaixo, ele interromperá a função de todos os caracteres especiais:
echo 'Hoje é $ (data)'
Você pode usar uma barra invertida (\) para evitar que o caractere a seguir funcione como um caractere especial. Isso é chamado de “escape” do caractere; veja o exemplo abaixo:
echo "Hoje é \ $ (data)"
Pense nos caracteres especiais como comandos muito curtos. Se você memorizar seus usos, isso pode beneficiar sua compreensão do shell Bash – e dos scripts de outras pessoas – imensamente.
Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…
Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…
A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…
A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…
O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…
Para ver suas fotos mais de perto ou para uma edição precisa , você pode…