15 caracteres especiais que você precisa conhecer para o Bash
Se você deseja dominar o shell Bash no Linux, macOS ou outro sistema semelhante ao UNIX, caracteres especiais (como ~, *, | e >) são críticos.Nós vamos ajudá-lo a desvendar essas sequências de comando enigmáticas do Linux e se tornar um herói dos hieróglifos.
O que são caracteres especiais?
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 caractere.
Às vezes, você só quer imprimir um personagem e não precisa que ele atue como um símbolo mágico. Existe uma maneira de você usar um caractere para se representar, em vez de sua função especial.
Vamos mostrar quais caracteres são especiais "”ou “ meta - ”caracteres, além de como você pode usá-los funcional e literalmente.
~ Diretório Pessoal
O til (~) é uma abreviação para seu diretório pessoal. Isso significa que você não precisa digitar o caminho completo para o diretório inicial em comandos. Onde quer que você esteja no sistema de arquivos, você pode usar este comando para acessar seu diretório pessoal:
cd ~
Você também pode usareste comando com caminhos relativos. Por exemplo, se você estiver em algum lugar do sistema de arquivos que não está na sua pasta pessoal e quiser mudar para o diretório de arquivamento no diretório de trabalho, use o til para fazer isso:
cd ~ / work / archive
. Diretório atual
Um ponto (.) Representa o diretório atual. Você o verá nas listagens de diretórios se usar a opção -a (all) com ls.
ls -a
Você também podeuse o período em comandos para representar o caminho para o diretório atual. Por exemplo, se você deseja executar um script a partir do diretório atual, chame-o assim:
./ script. sh
Isso indica ao Bash para procuraro diretório atual para o arquivo script. sh. Dessa forma, ele não procurará nos diretórios em seu caminho a correspondência de executável ou script.
.. Diretório pai
O período duploou “ ponto duplo ”(..) representa o diretório pai do seu atual. Você pode usar isso para subir um nível na árvore de diretórios.
cd ..
Você também pode usar este comando com relativacaminhos — por exemplo, se você quiser subir um nível na árvore de diretórios e inserir outro diretório nesse nível.
Você também pode usar esta técnica para mover-se rapidamente para um diretório no diretóriomesmo nível na árvore de diretórios que o atual. Você sobe um nível e depois desce um para um diretório diferente.
cd ../gc_help[/PREunette
/ Path Directory Separator
Você pode usar uma barra (/) — geralmente chamada de barra — para separar os diretórios em um nome de caminho.
ls ~ /trabalho / arquivo morto
Uma barra invertida representa o menor caminho de diretório possível. Como tudo na árvore de diretórios do Linux começa no diretório raiz, você pode usar este comando para ir rapidamente para o diretório raiz:
cd /
# Comentar ou aparar cadeias
Na maioria das vezes, você usa o sinal de número ou hash (#) para informar ao shell o que 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 do Bash
Não é realmente ignorado, no entanto, porque é adicionado ao seu histórico de comandos.
Você também pode usar o hash para aparar uma variável de string e remover algum textodo começo. Este comando cria uma variável de seqüência de caracteres chamada this_string.
Neste exemplo, atribuímos o texto "Dave Geek!"para a variável.
this_string = "Dave Geek!"
Este comando usa eco para imprimir as palavras “Para o ”para a janela do terminal. Ele recupera o valor armazenado na variável de string por meio de uma expansão de parâmetro. Porque anexamos o hash e o texto "Dave", ”apara a parte da corda antes de passar para eco.
echo How-To $
Isso não altera o valor armazenado na variável string;afeta apenas o que é enviado para ecoar. Podemos usar echo para imprimir o valor da variável string mais uma vez e verificar isso:
echo $ this_string
?Curinga de Caractere Único
O shell Bash suporta três curingas, um dos quais é o ponto de interrogação (?). Você usa caracteres curinga para substituir caracteres nos modelos de nome de arquivo. Um nome de arquivo que contém um curinga forma um modelo que corresponde a um intervalo de nomes de arquivos, em vez de apenas um.
O curinga do ponto de interrogação representa exatamente um caractere. Considere o seguinte modelo de nome de arquivo:
ls badge? . TxtIsso se traduz como "“ lista todos os arquivos com um nome que comece com" & # 8216; badge & #8217;e é seguido por qualquer caractere único antes da extensão do nome do arquivo. ”
Corresponde aos seguintes arquivos. Observe que alguns têm números e alguns têm letras após o crachá “parte do nome do arquivo.O caractere curinga do ponto de interrogação corresponderá às letras e aos números.
Esse modelo de nome de arquivo não corresponde ao badge. txt, ”no entanto, porque o nome do arquivo não tem um único caractere entre o crachá ”e a extensão do arquivo.O caractere 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 encontrar 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
* Sequência de caracteresCuringa
Você pode usar o curinga asterisco (*) para representar qualquer sequência de caracteres, incluindo nenhum caractere. Considere o seguinte modelo de nome de arquivo:
ls badge *Corresponde a todo o seguinte:
Corresponde a“ badge. txt ”porque o caractere curinga representa qualquer sequência de caracteres ou nenhum caractere.
Este comando corresponde a todos os arquivos chamados "“ source", ”independentemente da extensão do arquivo.
é a fonte. *
[] Caractere curinga do conjunto de caracteres
Conforme abordado acima, use 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 colchetes ([]) e os caracteres queconter.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 “. png ”extensão, um nome de arquivo começando com “ pipes_0, ”e no qual o próximo caractere é 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
;Separador de comandos do shell
Você pode digitar quantos comandos quiser na linha de comando, desde que separe cada um deles com um ponto e vírgula (;). Vamos fazer isso no seguinte exemplo:
ls >count. txt;wc -l count. txt;rm count. txt
Observe que o segundo comando é executado mesmo que o primeiro falhe, o terceiro é executado mesmo que o segundo falhe, 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 ~ / Documentos / relatórios / *.
&Processo em segundo plano
Depois que você digita um comando em uma janela do terminal e ele é concluído, você retorna ao prompt de comando. Normalmente, isso leva apenas um momento ou dois. Mas se você iniciar outro aplicativo, como o gedit, não poderá usar a janela do terminal até fechar o aplicativo.
Você pode, no entanto, iniciar um aplicativo como um processo em segundo plano e continuar usando 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 iniciado e, em seguida, retorna à linha de comando. Você pode continuar usando a janela do seu terminal.
<Redirecionamento de entrada
Muitos comandos do Linux aceitam um arquivo como parâmetro e extraem seus dados desse arquivo.A maioria desses comandos também pode receber entrada de um fluxo. Para criar um fluxo, use o colchete de ângulo esquerdo (<), como mostrado no exemplo a seguir, para redirecionar um arquivo para um comando:
classifique <words. txt
Quando um comando é redirecionado, ele pode se comportar de maneira diferente do que quando lê de um arquivo nomeado.
Se usarmoswc para contar as palavras, linhas e caracteres em um arquivo, ele imprime os valores e 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 do qual os dados vieram. Ele não pode imprimir um nome de arquivo.
Aqui estão alguns exemplos de como você pode usar o wc:
wc words. txt
wc <words. txt
>Redirecionamento de saída
Você pode usar o suporte de ângulo reto (>) para redirecionar a saída de um comando (normalmente para um arquivo);aqui está um exemplo:
ls >files. 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 o & gt ;. Aqui está como fazer isso:
wc doesntexist. txt 2 >errors. txt
cat errors. txt
RELACIONADOS: O que são stdin, stdout e stderr no Linux?
Tubo
A “ pipe ”encadear comandos juntos. Ele pega a saída de um comando e a alimenta para o 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 no grep, que extrai qualquer linha que contenhauma letra maiúscula ou minúscula “ C. ”O grep passará essas linhas para classificar. sort está usando a opção -r (reverse), para que os resultados classificados apareçam na ordem inversa.
Digitamos o seguinte:
cat words. txt |grep [cC] |classifique -r
!Operador lógico de NOT e histórico de pipeline
O ponto de exclamação (!) É um operador lógico que significa NOT.
Existem dois comandos nessa linha de comando:
[!-d ./backup] & &
O primeiro comando usa!como um operador lógico. Os colchetes indicam que um teste será realizado.A opção -d (diretório) testa a presença de um diretório chamado backup.O segundo comando cria o diretório.
Como o duplo e comercial separa os dois comandos, o Bash só executa o segundo se o primeiro tiver êxito. No entanto, esse é o oposto do que precisamos. Se o teste para o “ backup ”diretório 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.
onde o operador lógico!entra. Ele atua como um NÃO lógico. Portanto, se o teste for bem-sucedido (ou seja, o diretório existe), o!vira isso para “ NÃO sucesso, ”o que é falha. Portanto, o segundo comando não está ativado.
Se o teste do diretório falhar (ou seja, o diretório não existe), o!altera a resposta à falha "NÃO", ”o que é sucesso. Portanto, o comando para criar o diretório ausente é executado.
Esse pouco!dá muita força quando você precisa!
Para verificar o status da pasta de backup, use o comando ls e as opções -l (lista longa) e -d (diretório), como mostradoabaixo:
ls -l -d backup
Você também pode executar comandos do seu histórico de comandos com o ponto de exclamação.O comando history lista seu histórico de comandos e, em seguida, você digita o número do comando com o qual deseja executar novamente!para executá-lo, como mostrado abaixo:
! 24
O seguinte executa novamente o comando anterior:
!!
$ Expressões variáveis
No shell Bash, você cria variáveis para armazenar valores. Algumas, como variáveis de ambiente, sempre existem, e você pode acessá-las sempre que abrir uma janela do terminal. Esses valores de retenção, como seu nome de usuário, diretório inicial e caminho.
Você pode usar echo para ver o valor que uma variável possui — apenas precede o nome da variável com o sinal de dólar ($), comomostrado abaixo:
ecoa $ USER
ecoa $ HOME
ecoa $ PATH
Para criar uma variável, você deve dar um nome a ela e fornecer um valor para que ela seja mantida. 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 chaves ({}) ao redor do sinal de dólar e execute uma expansão de parâmetro paraobtenha o valor da variável e permita mais 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 $
Para retornar a substring começando na posição 6 de toda a string, use o seguinte comando (existe um deslocamento de zero, para que a primeira posição seja zero):
echo $
Se você deseja ecoar uma substring queinicia na posição zero e contém os próximos seis caracteres, use o seguinte comando:
echo $
Use o seguinte comando para ecoar uma substring que inicia com positiem quatro e contém os próximos quatro caracteres:
eco $
Citando caracteres especiais
Se você quiseruse um caractere especial como um caractere literal (não especial), você deve informar ao shell do Bash. Isso é chamado de citação e há três maneiras de fazer isso.
Se você colocar o texto entre aspas (“ & # 8230; & 8221;), isso impedirá que o Bash atuea maioria dos caracteres especiais, e eles apenas imprimem. Uma exceção notável, porém, é o cifrão ($). Ele ainda funciona como o caractere para expressões variáveis, para que você possa incluir os valores das variáveis em sua saída.
Por exemplo, este comando imprime a data e a hora:
echo "Today is $ (date)"
Se você colocar o texto entre aspas simples (& # 8216; & # 8230; ’) como mostrado abaixo, ele interromperá a função de todas as funções especiais. caracteres:
echo 'Today is $ (date)'
Você pode usar uma barra invertida (\) para impedir que o seguinte caractere funcione como um caractere especial. Isso é chamado "escapando" ”o personagem;veja o exemplo abaixo:
echo "Hoje é \ $ (data)"
Pense em caracteres especiais como comandos muito curtos. Se você memorizar seus usos, pode beneficiar imensamente a sua compreensão do script do shell Bash e de outras pessoas.
RELACIONADO: 37 Comandos importantes do Linux que você deve conhecer
Via: How to Geek
Nenhum comentário