fbpx

Comandos Linux – Comando bash

O shell bash

Atualizado: 05/04/2019 por Computer Hope

comando bash

Abreviação de “Bourne-Again Shell”, bash é um shell Unix . Originalmente lançado em 1989 como um substituto gratuito para o Bourne Shell , o bash faz parte do projeto GNU .

O Bash é o shell padrão no macOS , no Windows Subsystem para Linux e na maioria dos sistemas operacionais Linux .

Descrição

bash é um interpretador de linguagem de comando compatível com sh que executa comandos lidos a partir da entrada padrão ou de um arquivo. O bash também incorpora recursos úteis dos shells Korn e C ( ksh e csh ).

O bash deve ser uma implementação conforme da parte Shell e Utilitários da especificação IEEE POSIX (IEEE Standard 1003.1). O bash pode ser configurado para ser compatível com POSIX por padrão.

Sintaxe

  bash [ opções ] [ arquivo ]

Opções

Todas as opções de shell de caractere único documentadas na descrição do comando set builtin podem ser usadas como opções ao chamar o bash .

As seguintes opções também estão disponíveis:

-c stringSe a opção -c estiver presente, os comandos serão lidos da sequência . Se houver argumentos após a sequência, eles serão atribuídos aos parâmetros posicionais, começando com $ 0 .
-iSe a opção -i estiver presente, o shell será interativo. Para obter mais informações sobre shells interativos, consulte a chamada abaixo.
-IFaça o bash agir como se tivesse sido chamado como um shell de logon . Consulte a seção ” Invocação ” abaixo para obter mais detalhes.
-rSe a opção -r estiver presente, o shell ficará restrito (consulte a seção ” Shell restrito ” abaixo para obter mais detalhes.
-sSe a opção -s estiver presente ou se nenhum argumento permanecer após o processamento da opção, os comandos serão lidos a partir da entrada padrão . Esta opção permite que os parâmetros posicionais sejam definidos ao chamar um shell interativo.
-DUma lista de todas as seqüências de aspas duplas precedidas por $ é impressa na saída padrão. Essas são as strings que estão sujeitas à tradução do idioma quando o código do idioma atual não é C ou POSIX. Isso implica a opção -n ; nenhum comando será executado.
[-+]O [shopt_option]shopt_option é uma das opções de shell aceitas pelo shopt builtin (consulte a seção ” Comandos internos do shell ” para obter detalhes). Se shopt_option estiver presente, -O definirá o valor dessa opção; + O desativa. Se shopt_option não for fornecido, os nomes e valores das opções de shell aceitos por shopt serão impressos na saída padrão. Se a opção de chamada for + O , a saída será exibida em um formato que pode ser reutilizado como entrada.
 sinaliza o fim das opções e desativa o processamento adicional das opções. Quaisquer argumentos após o  são tratados como nomes de arquivos e argumentos. Um argumento de  é equivalente a  .

O bash também interpreta várias opções de vários caracteres. Essas opções devem aparecer na linha de comando antes que as opções de caractere único sejam reconhecidas:

–debuggerOrganize para que o perfil do depurador seja executado antes do início do shell. Ativa o modo de depuração estendida (veja a descrição da opção extdebug para a loja criada abaixo).
–dump-po-stringsEquivalente a -D , mas a saída está no formato de arquivo GNU gettext po (objeto portátil).
–dump-stringsequivalente a -D .
–helpExiba uma mensagem de uso e saia.
–initfile file,

–rcfile file

Execute comandos do arquivo em vez do arquivo de inicialização em todo o sistema /etc/bash.bashrc e o arquivo de inicialização pessoal padrão ~ / .bashrc se o shell for interativo (consulte a seção ” Invocação ” abaixo para obter detalhes).
–loginEquivalente a -l
–noeditingNão use a biblioteca GNU readline para ler linhas de comando quando o shell for interativo.
–noprofileNão leia o arquivo de inicialização de todo o sistema / etc / profile ou qualquer um dos arquivos de inicialização pessoal ~ / .bash_profile , ~ / .bash_login ou ~ / .profile . Por padrão, o bash lê esses arquivos quando é chamado como um shell de logon (consulte a seção ” Invocação ” abaixo para obter detalhes).
–norcNão leia e execute o arquivo de inicialização em todo o sistema /etc/bash.bashrc e o arquivo de inicialização pessoal ~ / .bashrc se o shell for interativo. Esta opção está ativada por padrão se o shell for chamado como sh .
–posixAltere o comportamento do bash onde a operação padrão difere do padrão POSIX para corresponder ao padrão.
–restrictedO shell fica restrito (consulte a seção ” Shell restrito ” abaixo para obter detalhes).
–verboseEquivalente a -v .
–versionMostrar informações da versão para esta instância do bash e exit.

Argumentos

Se os argumentos permanecerem após o processamento da opção e nem a opção -c nem a opção -s tiver sido fornecida, o primeiro argumento será assumido como o nome de um arquivo que contém comandos do shell. Se o bash for chamado dessa maneira, $ 0 será definido como o nome do arquivo e os parâmetros posicionais serão definidos como os argumentos restantes. o bash lê e executa comandos deste arquivo e sai. O status de saída do bash é o status de saída do último comando executado no script. Se nenhum comando for executado, o status de saída será 0. Primeiro, é feita uma tentativa de abrir o arquivo no diretório atual e, se nenhum arquivo for encontrado, o shell pesquisará nos diretórios no PATH o script.

Invocação

Um shell de login é aquele cujo primeiro caractere do argumento zero é um  ou um iniciado com a opção –login .

Um shell interativo é aquele iniciado sem argumentos de não-opção e sem a opção -c cuja entrada e erro padrão estão conectados aos terminais (conforme determinado por isatty ), ou um iniciado com a opção -i . O PS1 (sequência do prompt de comando ) está definido e $ – inclui i se o bash for interativo, permitindo que um script de shell ou um arquivo de inicialização teste esse estado.

Os parágrafos a seguir descrevem como o bash executa seus arquivos de inicialização. Se algum dos arquivos existir, mas não puder ser lido, o bash reportará um erro. Tildes são expandidos em nomes de arquivos, conforme descrito abaixo em ” Expansão Tilde ” na seção ” Expansão “.

Quando o bash é chamado como um shell de logon interativo ou como um shell não interativo com a opção –login , ele primeiro lê e executa comandos do arquivo / etc / profile , se esse arquivo existir. Depois de ler esse arquivo, ele procura ~ / .bash_profile , ~ / .bash_login e ~ / .profile , nessa ordem, e lê e executa comandos do primeiro que existe e é legível. A opção –noprofile pode ser usada quando o shell é iniciado para inibir esse comportamento.

Quando um shell de login sai, o bash lê e executa comandos do arquivo ~ / .bash_logout , se existir.

Quando um shell interativo que não é um shell de login é iniciado, o bash lê e executa comandos de /etc/bash.bashrc e ~ / .bashrc , se esses arquivos existirem. Isso pode ser inibido usando a opção –norc . A opção –rcfile file forçará o bash a ler e executar comandos do arquivo em vez de /etc/bash.bashrc e ~ / .bashrc .

Quando o bash é iniciado de maneira não interativa, para executar um script de shell, por exemplo, ele procura a variável BASH_ENV no ambiente, expande seu valor se aparecer lá e usa o valor expandido como o nome de um arquivo para ler e executar . O Bash se comporta como se o seguinte comando tivesse sido executado:

  if [-n "$ BASH_ENV"];  então .  "$ BASH_ENV";  fi

mas o valor da variável PATH não é usado para procurar o nome do arquivo.

Se o bash for chamado com o nome sh , ele tentará imitar o comportamento de inicialização das versões históricas do sh o mais próximo possível, além de estar em conformidade com o padrão POSIX . Quando invocado como um shell de login interativo ou não-interativo com a opção –login , ele primeiro tenta ler e executar comandos de / etc / profile e ~ / .profile , nessa ordem. A opção –noprofile pode ser usada para inibir esse comportamento. Quando chamado como um shell interativo com o nome sh , o bash procura a variável ENV , expande seu valor se for definido e usa o valor expandido como o nome de um arquivo para ler e executar. Como um shell chamado sh não tenta ler e executar comandos de outros arquivos de inicialização, a opção –rcfile não tem efeito. Um shell não interativo chamado com o nome sh não tenta ler outros arquivos de inicialização. Quando chamado como sh , o bash entra no modo posix após a leitura dos arquivos de inicialização.

Quando o bash é iniciado no modo posix, como na opção de linha de comando –posix , ele segue o padrão POSIX para arquivos de inicialização. Nesse modo, shells interativos expandem a variável ENV e os comandos são lidos e executados a partir do arquivo cujo nome é o valor expandido. Nenhum outro arquivo de inicialização é lido.

O Bash tenta determinar quando está sendo executado com sua entrada padrão conectada a uma conexão de rede, como quando executada pelo daemon de shell remoto , geralmente rshd , ou pelo daemon de shell seguro sshd . Se o bash determinar que está sendo executado dessa maneira, ele lerá e executará comandos de ~ / .bashrc e ~ / .bashrc , se esses arquivos existirem e forem legíveis. Isso não será feito se invocado como sh . A opção –norc pode ser usada para inibir esse comportamento, e a opção –rcfile pode ser usada para forçar a leitura de outro arquivo, mas o rshd geralmente não chama o shell com essas opções ou permite que elas sejam especificadas.

Se o shell for iniciado com o ID do usuário (ou grupo) efetivo não igual ao ID do usuário (ou grupo) real e a opção -p não for fornecida, nenhum arquivo de inicialização será lido, as funções do shell não serão herdadas do ambiente, as variáveis ​​SHELLOPTS , BASHOPTS , CDPATH e GLOBIGNORE , se aparecerem no ambiente, são ignoradas e o ID do usuário efetivo é definido como o ID do usuário real. Se a opção -p for fornecida na chamada, o comportamento de inicialização será o mesmo, mas o ID do usuário efetivo não será redefinido.

Definições

Nas seções a seguir, esses termos são definidos da seguinte maneira:

 blankum espaço em branco ou guia.
 worduma sequência de caracteres considerados como uma única unidade pelo shell. Também conhecido como um token.
 nameuma palavra que consiste apenas em caracteres alfanuméricos e sublinhados e começa com caractere alfabético ou sublinhado. Também chamado de identificador .
 metacharacterum caractere que, quando não citado, separa as palavras. Um metacaractere de bash é um dos seguintes: | & ,; ( , ) , < , > , espaço ou tabulação .
 control operatorum token que executa uma função de controle. É um dos seguintes símbolos: || & , && ,; ;; ( , ) , | | & , ou uma nova linha.

Palavras reservadas

Palavras reservadas são aquelas que têm um significado especial para o shell. As seguintes palavras são reconhecidas como reservadas quando não estão entre aspas e a primeira palavra ou um comando simples (consulte a seção ” Gramática do Shell ” abaixo) ou a terceira palavra de um caso ou comando:

 !
 case
 do
 done
 elif
 else
 esac
 fi
 for
 function
 if
 in
 select
 then
 until
 while
 {
 }
 time
 [[
 ]]

Gramática do shell

Comandos simples

Um comando simples é uma sequência opcional de atribuições de variáveis, seguida por palavras e redirecionamentos separados em branco e finalizada por um operador de controle. A primeira palavra especifica o comando a ser executado e é passado como argumento zero. As palavras restantes são passadas como argumentos para o comando invocado.

O valor de retorno de um comando simples é seu status de saída ou 128 + n se o comando for finalizado pelo sinal n .

Tubulações

Um pipeline é uma sequência de um ou mais comandos separados por um dos operadores de controle | ou | & . O formato para um pipeline é:

  [hora [-p]] [!  ] comand [[|   &] command2 ...]

A saída padrão do comando é conectada através de um tubo à entrada padrão do comando2 . Essa conexão é realizada antes de qualquer redirecionamento especificado pelo comando (consulte a seção ” Redirecionamento ” abaixo para obter detalhes). Se | & for usado, o erro padrão de comando será conectado à entrada padrão do command2 através do tubo; é uma abreviação de 2> & 1 | . Esse redirecionamento implícito do erro padrão é executado após qualquer redirecionamento especificado pelo comando.

O status de retorno de um pipeline é o status de saída do último comando, a menos que a opção pipefail esteja ativada. Se o pipefail estiver ativado, o status de retorno do pipeline será o valor do último comando (mais à direita) para sair com um status diferente de zero ou zero se todos os comandos forem encerrados com êxito. Se a palavra reservada ! precede um pipeline, o status de saída desse pipeline é a negação lógica do status de saída, conforme descrito acima. O shell aguarda que todos os comandos no pipeline sejam finalizados antes de retornar um valor.

Se a palavra tempo reservado preceder um pipeline, o tempo decorrido e o usuário e do sistema consumidos por sua execução serão relatados quando o pipeline terminar. A opção -p altera o formato de saída para o especificado pelo POSIX. Quando o shell está no modo posix, ele não reconhece o tempo como uma palavra reservada se o próximo token começar com um ‘  ‘. A variável TIMEFORMAT pode ser definida como uma sequência de formato que especifica como as informações de tempo devem ser exibidas; consulte a descrição do TIMEFORMAT na seção ” Shell Variables ” abaixo para obter detalhes.

Quando o shell está no modo posix, o tempo pode ser seguido por uma nova linha. Nesse caso, o shell exibe o tempo total do usuário e do sistema consumido pelo shell e seus filhos. A variável TIMEFORMAT pode ser usada para especificar o formato das informações de hora.

Cada comando em um pipeline é executado como um processo separado (um subshell).

Listas

Uma lista é uma sequência de um ou mais pipelines separados por um dos operadores ; & , && , ou || e opcionalmente encerrado por um de ; & ou <nova-line> .

Desses operadores da lista, && e || ter igual precedência, seguido por ; & , que têm igual precedência.

Uma sequência de uma ou mais novas linhas pode aparecer em uma lista em vez de um ponto e vírgula para delimitar comandos.

Se um comando é finalizado pelo operador de controle & , o shell executa o comando em segundo plano em uma subshell. O shell não espera o comando terminar e o status de retorno é 0. Comandos separados por a ; são executados sequencialmente; o shell aguarda que cada comando termine por sua vez. O status de retorno é o status de saída do último comando executado.

As listas AND e OR são sequências de um ou mais pipelines separados pelos && e || operadores de controle, respectivamente. As listas AND e OR são executadas com associatividade esquerda. Uma lista AND tem o formato

  command1 && command2

command2 é executado se, e somente se, command1 retorna um status de saída igual a zero.

Uma lista OR tem o formato

  command1 ||  command2

command2 é executado se e somente se command1 retornar um status de saída diferente de zero. O status de retorno das listas AND e OR é o status de saída do último comando executado na lista.

Comandos compostos

Um comando composto é um dos seguintes:

( list )A lista é executada em um ambiente de subcasca (consulte a seção ” Ambiente de execução de comando ” abaixo para obter detalhes). As atribuições variáveis ​​e os comandos internos que afetam o ambiente do shell não permanecem em vigor após a conclusão do comando. O status de retorno é o status de saída da lista.
{ list ; }A lista é executada no ambiente atual do shell. lista deve ser encerrada com uma nova linha ou ponto e vírgula. Isso é conhecido como um comando de grupo . O status de retorno é o status de saída da lista . Observe que, diferentemente dos metacaracteres ( e ) , { e } são palavras reservadas e devem ocorrer onde uma palavra reservada pode ser reconhecida. Como eles não causam uma quebra de palavra, eles devem ser separados da lista por espaços em branco ou outro metacaractere do shell.
((expression))expressão é avaliada de acordo com as regras descritas abaixo na seção ” Avaliação Aritmética “. Se o valor da expressão for diferente de zero, o status de retorno será 0; caso contrário, o status de retorno é 1. Isso é exatamente equivalente a deixar “ expressão  .
[ expression ]Retorne um status de 0 ou 1, dependendo da avaliação da expressão da expressão condicional. As expressões são compostas das primárias descritas abaixo na seção ” Expressões condicionais “. A divisão de palavras e a expansão do nome do caminho não são executadas nas palavras entre os [[ e ]] ; expansão de til, expansão de parâmetro e variável, expansão aritmética, substituição de comando, substituição de processo e remoção de cotação. Operadores condicionais como -f devem estar sem aspas para serem reconhecidos como primários.

Quando usados ​​com [[ , os operadores < e > classificam lexicograficamente usando o código do idioma atual.

Veja a descrição do comando builtin de teste (na seção ” Comandos internos do shell ” abaixo) para obter informações sobre como lidar com parâmetros (isto é, parâmetros ausentes).

Quando os operadores == e ! = São usados, a sequência à direita do operador é considerada um padrão e corresponde de acordo com as regras descritas abaixo em Correspondência de Padrão. Se a opção de concha nocasematch estiver ativada, a correspondência será realizada sem considerar o caso de caracteres alfabéticos. O valor de retorno é 0 se a sequência corresponder ( == ) ou não ( ! = ) Ao padrão e 1 caso contrário. Qualquer parte do padrão pode ser citada para forçá-lo a corresponder como uma sequência.

Um operador binário adicional, = ~ , está disponível, com a mesma precedência que == e ! = . Quando usada, a sequência à direita do operador é considerada uma expressão regular estendida e correspondida de acordo (como no regex ). O valor de retorno é 0 se a sequência corresponder ao padrão e 1 caso contrário. Se a expressão regular estiver sintaticamente incorreta, o valor de retorno da expressão condicional será 2. Se a opção de concha nocasematch estiver ativada, a correspondência será realizada sem considerar o caso de caracteres alfabéticos. Qualquer parte do padrão pode ser citada para forçá-lo a corresponder como uma sequência. As cadeias correspondentes a subexpressões entre parênteses na expressão regular são salvas na variável de matriz BASH_REMATCH . O elemento BASH_REMATCH com índice 0 é a parte da sequência que corresponde à expressão regular inteira. O elemento BASH_REMATCH com o índice n é a parte da sequência que corresponde à nésima subexpressão entre parênteses.

As expressões podem ser combinadas usando os seguintes operadores, listados em ordem decrescente de precedência:

  ( expression )

Retorna o valor da expressão . Isso pode ser usado para substituir a precedência normal dos operadores.

  !  expression

Verdadeiro se a expressão for falsa.

  expression1 && expression2

Verdadeiro se expressão1 e expressão2 forem verdadeiras.

  expressão1 ||  expression2

Verdadeiro se expressão1 ou expressão2 for verdadeira.

&& e || operadores não avaliam expressão2 se o valor da expressão1 for suficiente para determinar o valor de retorno de toda a expressão condicional.

  para o nome [[in [ word ...]];  ] faça a lista ;  feito

A lista de palavras a seguir é expandida, gerando uma lista de itens. nome da variável é definido para cada elemento desta lista, por sua vez, e a lista é executada toda vez. Se a palavra in for omitida, o comando for executa a lista uma vez para cada parâmetro posicional definido (consulte a seção ” Parâmetros ” abaixo). O status de retorno é o status de saída do último comando que é executado. Se a expansão dos itens a seguir resultar em uma lista vazia, nenhum comando será executado e o status de retorno será 0 .

  para (( expr1 ; expr2 ; expr3 ));  faça a lista ;  feito

Primeiro, a expressão aritmética expr1 é avaliada de acordo com as regras descritas abaixo em ” Expansão aritmética “. A expressão aritmética expr2 é então avaliada repetidamente até ser avaliada como zero. Cada vez que expr2 é avaliado como um valor diferente de zero, a lista é executada e a expressão aritmética expr3 é avaliada. Se alguma expressão for omitida, ela se comportará como se fosse avaliada como 1. O valor de retorno é o status de saída do último comando na lista que é executado ou falso se alguma das expressões for inválida.

  selecione o nome [na palavra ];  faça a lista ;  feito

A lista de palavras a seguir é expandida, gerando uma lista de itens. O conjunto de palavras expandidas é impresso no erro padrão, cada um precedido por um número. Se a palavra in for omitida, os parâmetros posicionais serão impressos (consulte a seção ” Parâmetros ” abaixo). O prompt do PS3 é exibido e uma linha é lida na entrada padrão. Se a linha consistir em um número correspondente a uma das palavras exibidas, o valor do nome será definido para essa palavra. Se a linha estiver vazia, as palavras e o prompt serão exibidos novamente. Se o EOF for lido, o comando será concluído. Qualquer outro valor lido faz com que o nome seja definido como nulo . A linha lida é salva na variável REPLY . A lista é executada após cada seleção até que um comando de interrupção seja executado. O status de saída de seleção é o status de saída do último comando executado na lista ou zero se nenhum comando foi executado.

  maiúsculas e minúsculas na lista [[(] padrão [| padrão ] ...) ;;  ] ... esac

Um comando case expande primeiro a palavra e tenta correspondê-la a cada padrão , usando as mesmas regras de correspondência da expansão do nome do caminho (consulte a seção ” Expansão do nome do caminho “, abaixo). palavra é expandida usando expansão de til, expansão de parâmetro e variável, substituição aritmética, substituição de comando, substituição de processo e remoção de cotação. Cada padrão examinado é expandido usando expansão de til, expansão de parâmetro e variável, substituição aritmética, substituição de comando e substituição de processo. Se a opção de concha nocasematch estiver ativada, a correspondência será realizada sem considerar o caso de caracteres alfabéticos. Quando uma correspondência é encontrada, a lista correspondente é executada. Se o ;; Se o operador for usado, nenhuma correspondência subsequente será tentada após a primeira correspondência de padrão. Usando ; & no lugar de ;; faz com que a execução continue com a lista associada ao próximo conjunto de padrões s. Usando ;; & no lugar de ;; faz com que o shell teste a próxima lista de padrões na instrução, se houver, e execute qualquer lista associada em uma correspondência bem-sucedida. O status de saída é zero se nenhum padrão corresponder. Caso contrário, é o status de saída do último comando executado na lista .

  se lista ;  então lista ;  [ lista elif;  então lista ;  ] ... [outra lista ;  ] fi

lista if é executada. Se o status de saída for zero, a lista então é executada. Caso contrário, cada lista elif será executada sucessivamente e, se o status de saída for zero, a lista correspondente será executada e o comando será concluído. Caso contrário, a lista else é executada, se presente. O status de saída é o status de saída do último comando executado ou zero se nenhuma condição testada for verdadeira.

  enquanto lista-1 ;  faça a lista 2 ;  feito até a lista 1 ;  faça a lista 2 ;  feito

O comando while executa continuamente a lista lista 2 , desde que o último comando na lista lista 1 retorne um status de saída zero. O comando até é idêntico ao comando while , exceto que o teste é negado; a lista-2 é executada desde que o último comando da lista-1 retorne um status de saída diferente de zero. O status de saída dos comandos while e till é o status de saída do último comando executado na lista-2 ou zero se nenhum foi executado.

Coprocesses

Um “coprocesso” é um comando do shell precedido pela palavra reservada do coproc . Um coprocesso é executado de forma assíncrona em um subshell, como se o comando tivesse sido finalizado com o operador & control, com um canal bidirecional estabelecido entre o shell de execução e o coprocesso.

O formato para um coprocesso é:

  Comando [ NAME ] coproc [ redirecionamentos ]

Isso cria um coprocesso chamado NAME . Se NAME não for fornecido, o nome padrão é COPROC . NAME não deve ser fornecido se o comando for um comando simples (veja acima ); caso contrário, é interpretada como a primeira palavra do comando simples. Quando o coproc é executado, o shell cria uma variável de matriz (consulte a seção ” Matrizes ” abaixo) chamada NAME no contexto do shell em execução. A saída padrão do comando é conectada através de um canal a um descritor de arquivo no shell de execução, e esse descritor de arquivo é atribuído a NAME [0]. A entrada de comando padrão é conectada através de um canal a um descritor de arquivo no shell de execução, e esse descritor de arquivo é atribuído a NAME [1]. Esse canal é estabelecido antes de qualquer redirecionamento especificado pelo comando (consulte a seção ” Redirecionamento ” abaixo). Os descritores de arquivo podem ser utilizados como argumentos para shell comandos e redirecionamentos usando expansões de palavras padrão. O ID do processo do shell gerado para executar o coprocesso está disponível como o valor da variável NAME_PID . O comando wait builtin pode ser usado para aguardar a conclusão do coprocesso.

O status de retorno de um coprocesso é o status de saída do comando.

Definições de Função Shell

Uma função shell é um objeto chamado como um comando simples e executa um comando composto com um novo conjunto de parâmetros posicionais. As funções do shell são declaradas da seguinte maneira:

  name () comando-composto [ redirecionamento ]
  nome da função [()] comando-composto [ redirecionamento ]

Isso define uma função chamada nome . função de palavra reservada é opcional. Se a palavra reservada da função for fornecida, os parênteses são opcionais. O corpo da função é o comando composto composto-comando (consulte a seção ” Comandos compostos ” acima). Esse comando geralmente é uma lista de comandos entre { e } , mas pode ser qualquer comando listado em Comandos compostos acima. comando composto é executado sempre que o nome é especificado como o nome de um comando simples. Quaisquer redirecionamentos (consulte a seção ” Redirecionamento ” abaixo) especificados quando uma função é definida são executados quando a função é executada. O status de saída de uma definição de função é zero, a menos que ocorra um erro de sintaxe ou uma função somente leitura com o mesmo nome já exista. Quando executado, o status de saída de uma função é o status de saída do último comando executado no corpo. Consulte a seção ” Funções ” abaixo.

Comentários

Em um shell não interativo ou em um shell interativo no qual a opção interactive_comments para o shopt builtin está ativada (consulte a seção ” Comandos internos do shell ” abaixo), uma palavra iniciada com # faz com que essa palavra e todos os caracteres restantes nessa linha sejam ignorado. Um shell interativo sem a opção interactive_comments ativada não permite comentários. A opção interactive_comments está ativada por padrão em shells interativos.

Citação

A citação é usada para remover o significado especial de certos caracteres ou palavras do shell. A citação pode ser usada para desativar o tratamento especial de caracteres especiais, impedir que palavras reservadas sejam reconhecidas como tal e impedir a expansão de parâmetros.

Cada um dos metacaracteres listados acima na seção ” Definições ” tem um significado especial para o shell e deve ser citado para que ele se represente.

Quando as instalações de expansão do histórico de comandos estão sendo usadas (consulte a seção ” Expansão do histórico ” abaixo), o caractere de expansão do histórico, geralmente ! , deve ser citado para impedir a expansão do histórico.

Existem três mecanismos de citação: o caractere de escape, aspas simples e aspas duplas.

Uma barra invertida não citada ( \ ) é o caractere de escape. Ele preserva o valor literal do próximo caractere a seguir, com exceção de <newline> . Se um par \ <newline> aparecer e a barra invertida não estiver entre aspas, o \ <newline> será tratado como uma continuação de linha (ou seja, é removido do fluxo de entrada e efetivamente ignorado).

Incluir caracteres entre aspas simples preserva o valor literal de cada caractere dentro das aspas. Uma aspas simples pode não ocorrer entre aspas simples, mesmo quando precedida por uma barra invertida.

A inclusão de caracteres entre aspas duplas preserva o valor literal de todos os caracteres entre aspas, com exceção de $ , ` , \ e, quando a expansão do histórico estiver ativada ,! . Os caracteres $ e ` mantêm seu significado especial entre aspas duplas. A barra invertida mantém seu significado especial somente quando seguida por um dos seguintes caracteres: $ , ` ,  , \ ou <newline> . Uma citação dupla pode ser citada entre aspas duplas, precedendo-a com uma barra invertida. Se ativado, expansão do histórico será executada, a menos que um ! que apareça entre aspas duplas seja escapado usando uma barra invertida. A barra invertida que precede o ! não será removida.

Os parâmetros especiais * e @ têm significado especial entre aspas duplas (consulte a seção ” Parâmetros ” abaixo).

Palavras da forma $ ‘string’ são tratadas especialmente. A palavra se expande para cadeia, com caracteres de escape de barra invertida substituídos conforme especificado pelo padrão ANSI C. Seqüências de escape de barra invertida, se presentes, são decodificadas da seguinte maneira:

\umaalerta (sino)
\ bbackspace
\ E , \ Eum caractere de escape
\ fformulário de alimentação
\ nnova linha
\ rretorno de carro
\ taba horizontal
\ vaba vertical
\\barra invertida
\ ‘citação única
\ “citação dupla
\ nnno caractere de oito bits cujo valor é o valor octal nnn (um a três dígitos)
\ x HHo caractere de oito bits cujo valor é o valor hexadecimal HH (um ou dois dígitos hexadecimais)
\ u HHHHo caractere Unicode (ISO / IEC 10646) cujo valor é o valor hexadecimal HHHH (um a quatro dígitos hexadecimais)
\ U HHHHHHHHo caractere Unicode (ISO / IEC 10646) cujo valor é o valor hexadecimal HHHHHHHH (um a oito dígitos hexadecimais)
\ c xum caractere de controle x

O resultado expandido é de aspas simples, como se o cifrão não estivesse presente.

Uma sequência de aspas duplas precedida por um sinal de dólar ( $ “string” ) fará com que a string seja traduzida de acordo com o código de idioma atual. Se o código do idioma atual for C ou POSIX , o cifrão será ignorado. Se a sequência for traduzida e substituída, a substituição será citada duas vezes.

Parâmetros

Um parâmetro é uma entidade que armazena valores. Pode ser um nome, um número ou um dos caracteres especiais listados abaixo em Parâmetros especiais. Uma variável é um parâmetro indicado por um nome. Uma variável tem um valor e zero ou mais atributos. Os atributos são atribuídos usando o comando declare builtin (consulte declarar abaixo na seção ” Comandos internos do shell “). Um parâmetro é definido se tiver sido atribuído um valor. A cadeia nula é um valor válido. Depois que uma variável é definida, ela pode ser desabilitada apenas usando o comando built-in não configurado (também documentado na seção ” Comandos internos do shell “).

Uma variável pode ser atribuída por uma declaração do formulário:

  nome = [ valor ]

Se o valor não for fornecido, a variável receberá uma sequência nula. Todos os valores passam por expansão de til, expansão de parâmetro e variável, substituição de comando, expansão aritmética e remoção de cotação (consulte a seção ” Expansão ” abaixo). Se a variável tiver seu atributo inteiro definido, o valor será avaliado como uma expressão aritmética, mesmo que a expansão $ ((…)) não seja usada (consulte a seção ” Expansão aritmética ” abaixo). A divisão de palavras não é executada, com exceção de ” $@ “, conforme explicado abaixo em Parâmetros especiais . A expansão do nome do caminho não é executada. As instruções de atribuição também podem aparecer como argumentos para os comandos alias , declare , typeset , export , readonly e builtin local .

No contexto em que uma instrução de atribuição está atribuindo um valor a uma variável de shell ou índice de matriz, o operador + = pode ser usado para acrescentar ou adicionar ao valor anterior da variável. Quando + = é aplicado a uma variável para a qual o atributo inteiro foi definido, o valor é avaliado como uma expressão aritmética e adicionado ao valor atual da variável, que também é avaliado. Quando + = é aplicado a uma variável de matriz usando atribuição composta (consulte ” Matrizes ” abaixo), o valor da variável não é desabilitado (como é o caso de usar = ) e novos valores são acrescentados à matriz, começando com um valor maior que o valor da matriz. índice máximo (para matrizes indexadas) ou adicionado como pares de valores-chave adicionais em uma matriz associativa. Quando aplicado a uma variável com valor de sequência, o valor é expandido e anexado ao valor da variável.

Parâmetros posicionais

Um parâmetro posicional é um parâmetro indicado por um ou mais dígitos, exceto o dígito único 0. Os parâmetros posicionais são atribuídos a partir dos argumentos do shell quando são chamados e podem ser reatribuídos usando o comando set builtin. Os parâmetros posicionais não podem ser atribuídos a com instruções de atribuição. Os parâmetros posicionais são substituídos temporariamente quando uma função shell é executada (consulte a seção ” Funções ” abaixo).

Quando um parâmetro posicional que consiste em mais de um dígito é expandido, ele deve ser colocado entre chaves (consulte a seção ” Expansão ” abaixo).

Parâmetros especiais

O shell trata vários parâmetros especialmente. Esses parâmetros podem ser referenciados apenas; a atribuição a eles não é permitida.

*Expande para os parâmetros posicionais, iniciando em um. Quando a expansão ocorre entre aspas duplas, ela se expande para uma única palavra com o valor de cada parâmetro separado pelo primeiro caractere da variável especial IFS. Ou seja, ” $ * ” é equivalente a ” $ 1c $ 2c … “, em que c é o primeiro caractere do valor da variável IFS . Se o IFS não estiver definido, os parâmetros serão separados por espaços. Se o IFS for nulo, os parâmetros serão unidos sem separadores intervenientes. @ expande para os parâmetros posicionais, iniciando em um. Quando a expansão ocorre entre aspas duplas, cada parâmetro se expande para uma palavra separada. Ou seja, ” $@ ” é equivalente a ” $ 1 ” ” $ 2 ” … Se a expansão de aspas duplas ocorrer dentro de uma palavra, a expansão do primeiro parâmetro será associada à parte inicial da palavra original e a expansão do último parâmetro é associada à última parte da palavra original. Quando não há parâmetros posicionais, ” $@ ” e $@ expandem para nada (ou seja, eles são removidos).
#Expande para o número de parâmetros posicionais em decimal.
?Expande para o status de saída do pipeline de primeiro plano executado mais recentemente.
Expande para os sinalizadores de opções atuais, conforme especificado na chamada, pelo comando set builtin ou pelos definidos pelo próprio shell (como a opção -i ). $ expande para o ID do processo do shell. Em um subshell () , ele se expande para o ID do processo do shell atual, não para o subshell.
!Expande para o ID do processo do comando em segundo plano (assíncrono) executado mais recentemente.
0 0Expande para o nome do shell ou script de shell. Isso é definido na inicialização do shell. Se o bash for chamado com um arquivo de comandos, $ 0 será definido como o nome desse arquivo. Se o bash for iniciado com a opção -c , $ 0 será definido como o primeiro argumento após a sequência a ser executada, se houver algum. Caso contrário, é definido como o nome do arquivo usado para chamar o bash, conforme fornecido pelo argumento zero.
_Na inicialização do shell, defina o nome do caminho absoluto usado para chamar o shell ou script de shell sendo executado conforme passado no ambiente ou na lista de argumentos. Posteriormente, expande para o último argumento para o comando anterior, após a expansão. Defina também o nome do caminho completo usado para chamar cada comando executado e colocado no ambiente exportado para esse comando. Ao verificar e-mail, esse parâmetro contém o nome do arquivo de e-mail que está sendo verificado no momento.

Variáveis ​​do shell

As seguintes variáveis ​​são definidas pelo shell:

BASHExpande para o nome completo do arquivo usado para chamar esta instância do bash.
BASHOPTSUma lista separada por dois pontos de opções de shell ativadas. Cada palavra da lista é um argumento válido para a opção -s no comando shopt builtin (consulte a seção ” Comandos internos do shell ” abaixo). As opções que aparecem no BASHOPTS são aquelas relatadas como por shopt . Se essa variável estiver no ambiente quando o bash for iniciado, cada opção de shell na lista será ativada antes de ler qualquer arquivo de inicialização. Essa variável é somente leitura.
BASHPIDExpande para o ID do processo atual do bash. Isso difere de $$ em determinadas circunstâncias, como subshells que não exigem que o bash seja reinicializado.
BASH_ALIASESUma variável de matriz associativa cujos membros correspondem à lista interna de aliases, mantida pelo alias incorporado. Os elementos adicionados a essa matriz aparecem na lista de alias; a desabilitação dos elementos da matriz faz com que os alias sejam removidos da lista de alias.
BASH_ARGCUma variável de matriz cujos valores são o número de parâmetros em cada quadro da pilha de chamadas de execução do bash atual. O número de parâmetros para a sub-rotina atual (função shell ou script executado com. Ou source) está no topo da pilha. Quando uma sub-rotina é executada, o número de parâmetros passados ​​é enviado para BASH_ARGC . O shell define BASH_ARGC somente quando estiver no modo de depuração estendida (consulte a descrição da opção extdebug para o shopt incorporado abaixo)
BASH_ARGVUma variável de matriz que contém todos os parâmetros na pilha de chamadas de execução do bash atual. O parâmetro final da última chamada de sub-rotina está no topo da pilha; o primeiro parâmetro da chamada inicial está na parte inferior. Quando uma sub-rotina é executada, os parâmetros fornecidos são enviados para BASH_ARGV . O shell define BASH_ARGV apenas quando estiver no modo de depuração estendida (consulte a descrição da opção extdebug no shopt incorporado abaixo)
BASH_CMDSUma variável de matriz associativa cujos membros correspondem à tabela de comandos de hash interna, conforme mantida pelo hash embutido. Os elementos adicionados a essa matriz aparecem na tabela de hash; elementos de matriz não configurados fazem com que os comandos sejam removidos da tabela de hash.
BASH_COMMANDO comando atualmente sendo executado ou prestes a ser executado, a menos que o shell esteja executando um comando como resultado de uma interceptação; nesse caso, é o comando que está sendo executado no momento da interceptação.
BASH_EXECUTION_STRINGO argumento de comando para a opção de chamada -c .
BASH_LINENOUma variável de matriz cujos membros são os números de linha nos arquivos de origem em que cada membro correspondente de FUNCNAME foi chamado. $ {BASH_LINENO [$ i]} é o número da linha no arquivo de origem ( $ {BASH_SOURCE [$ i + 1]} ) onde $ {FUNCNAME [$ i]} foi chamado (ou $ {BASH_LINENO [$ i-1 ]} se referenciada dentro de outra função shell). Use LINENO para obter o número da linha atual.
BASH_REMATCHUma variável de matriz cujos membros são atribuídos pelo operador binário = ~ ao comando [[ condicional. O elemento com índice 0 é a parte da sequência que corresponde à expressão regular inteira. O elemento com índice n é a parte da sequência que corresponde à sub-expressão enésima entre parênteses. Essa variável é somente leitura.
BASH_SOURCEUma variável de matriz cujos membros são os nomes de arquivos de origem onde são definidos os nomes das funções de shell correspondentes na variável de matriz FUNCNAME . A função shell $ {FUNCNAME [$ i]} é definida no arquivo $ {BASH_SOURCE [$ i]} e é chamada a partir de $ {BASH_SOURCE [$ i + 1]}.
BASH_SUBSHELLIncrementado por um cada vez que um ambiente subshell ou subshell é gerado. O valor inicial é 0.
BASH_VERSINFOUma variável de matriz somente leitura cujos membros mantêm informações de versão para esta instância do bash. Os valores atribuídos aos membros da matriz são os seguintes:

BASH_VERSINFO [0] : O número da versão principal (o release).

BASH_VERSINFO [1] : O número da versão secundária (a versão).

BASH_VERSINFO [2] : O nível do patch.

BASH_VERSINFO [3] : a versão do build.

BASH_VERSINFO [4] : O status do release (por exemplo, beta1).

BASH_VERSINFO [5] : o valor de MACHTYPE.

BASH_VERSIONExpande para uma string que descreve a versão desta instância do bash.
COMP_CWORDUm índice em $ {COMP_WORDS} da palavra que contém a posição atual do cursor. Essa variável está disponível apenas em funções de shell chamadas pelos recursos de conclusão programável (consulte ” Conclusão programável ” abaixo).
COMP_KEYA chave (ou chave final de uma sequência de teclas) usada para chamar a função de conclusão atual.
COMP_LINEA linha de comando atual. Essa variável está disponível apenas em funções de shell e comandos externos chamados pelos recursos de conclusão programável (consulte ” Conclusão programável abaixo).
COMP_POINTO índice da posição atual do cursor em relação ao início do comando atual. Se a posição atual do cursor estiver no final do comando atual, o valor dessa variável é igual a $ {# COMP_LINE} . Essa variável está disponível apenas em funções de shell e comandos externos chamados pelos recursos de conclusão programável (consulte a seção ” Conclusão programável ” abaixo).
COMP_TYPEDefina como um valor inteiro correspondente ao tipo de conclusão tentada que fez com que uma função de conclusão fosse chamada: TAB , para conclusão normal ,? , para listar conclusões após guias sucessivas ,! , para listar alternativas na conclusão parcial da palavra, @ , para listar conclusões se a palavra não for modificada, ou % , para conclusão do menu. Essa variável está disponível apenas em funções de shell e comandos externos chamados pelos recursos de conclusão programável (consulte a seção ” Conclusão programável ” abaixo).
COMP_WORDBREAKSO conjunto de caracteres que a biblioteca readline trata como separadores de palavras ao executar a conclusão de palavras. Se COMP_WORDBREAKS estiver desativado , ele perderá suas propriedades especiais, mesmo que seja redefinido posteriormente.
COMP_WORDSUma variável de matriz (consulte ” Matrizes ” abaixo) que consiste em palavras individuais na linha de comando atual. A linha é dividida em palavras como a linha de leitura a dividiria, usando COMP_WORDBREAKS conforme descrito acima. Essa variável está disponível apenas em funções de shell chamadas pelos recursos de conclusão programável (consulte a seção ” Conclusão programável ” abaixo).
COPROCUma variável de matriz (consulte ” Matrizes ” abaixo) criada para reter os descritores de arquivo para saída e entrada em um coprocesso sem nome (consulte a seção ” Coprocessos ” acima).
DIRSTACKUma variável de matriz (consulte a seção ” Matrizes ” abaixo) contendo o conteúdo atual da pilha de diretórios. Os diretórios aparecem na pilha na ordem em que são exibidos pelos diretórios internos. A atribuição a membros dessa variável de matriz pode ser usada para modificar diretórios que já estão na pilha, mas os recursos pushd e popd devem ser usados ​​para adicionar e remover diretórios. A atribuição a essa variável não altera o diretório atual. Se o DIRSTACK estiver desativado , ele perderá suas propriedades especiais, mesmo que seja redefinido posteriormente.
EUIDExpande para o ID de usuário efetivo do usuário atual, inicializado na inicialização do shell. Essa variável é somente leitura.
FUNCNAMEUma variável de matriz que contém os nomes de todas as funções de shell atualmente na pilha de chamadas de execução. O elemento com índice 0 é o nome de qualquer função shell em execução no momento. O elemento mais baixo (aquele com o índice mais alto) é “principal”. Essa variável existe apenas quando uma função shell está em execução. As atribuições a FUNCNAME não têm efeito e retornam um status de erro. Se FUNCNAME estiver desativado , ele perderá suas propriedades especiais, mesmo que seja redefinido posteriormente. Essa variável pode ser usada com BASH_LINENO e BASH_SOURCE . Cada elemento de FUNCNAME possui elementos correspondentes em BASH_LINENO e BASH_SOURCE para descrever a pilha de chamadas. Por exemplo, $ {FUNCNAME [$ i]} foi chamado do arquivo $ {BASH_SOURCE [$ i + 1]} na linha número $ {BASH_LINENO [$ i]} . chamador interno exibe a pilha de chamadas atual usando essas informações.
GROUPSUma variável de matriz que contém a lista de grupos dos quais o usuário atual é membro. As atribuições a GRUPOS não têm efeito e retornam um status de erro. Se GRUPOS estiver desabilitado, ele perde suas propriedades especiais, mesmo que seja redefinido posteriormente.
HISTCMDO número do histórico, ou índice na lista do histórico, do comando atual. Se o HISTCMD estiver desativado , ele perderá suas propriedades especiais, mesmo que seja redefinido posteriormente.
HOSTNAMEDefina automaticamente o nome do host atual.
HOSTTYPEDefina automaticamente uma sequência que descreva exclusivamente o tipo de máquina na qual o bash está sendo executado. O padrão é dependente do sistema.
LINENOCada vez que esse parâmetro é referenciado, o shell substitui um número decimal que representa o número atual da linha seqüencial (começando com 1) em um script ou função. Quando não estiver em um script ou função, não é garantido que o valor substituído seja significativo. Se o LINENO estiver desabilitado, ele perde suas propriedades especiais, mesmo que seja redefinido posteriormente.
ACHTYPEConfigure automaticamente como uma sequência que descreva completamente o tipo de sistema no qual o bash está sendo executado, no formato padrão GNU cpu-company-system. O padrão é dependente do sistema.
MAPFILEUma variável de matriz (consulte a seção ” Matrizes ” abaixo) criada para reter o texto lido pelo arquivo de mapa embutido quando nenhum nome de variável é fornecido.
OLDPWDO diretório de trabalho anterior, conforme definido pelo comando cd .
OPTARGO valor do último argumento da opção processado pelo comando getopts builtin (consulte a seção ” Comandos internos do shell ” abaixo).
OPTINDO índice do próximo argumento a ser processado pelo comando getopts builtin (consulte a seção ” Comandos internos do shell ” abaixo).
OSTYPEConfigure automaticamente como uma sequência que descreva o sistema operacional no qual o bash está sendo executado. O padrão é dependente do sistema.
PIPESTATUSUma variável de matriz (consulte a seção ” Matrizes ” abaixo) que contém uma lista de valores de status de saída dos processos no pipeline de primeiro plano executado mais recentemente (que pode conter apenas um único comando).
PPIDO ID do processo do pai do shell. Essa variável é somente leitura.
PWDO diretório de trabalho atual, conforme definido pelo comando cd .
RANDOMCada vez que esse parâmetro é referenciado, um número inteiro aleatório entre 0 e 32767 é gerado. A sequência de números aleatórios pode ser inicializada atribuindo um valor a RANDOM . Se RANDOM estiver desabilitado, ele perde suas propriedades especiais, mesmo que seja redefinido posteriormente.
READLINE_LINEO conteúdo do buffer da linha readline , para uso com ” bind -x ” (consulte a seção ” Comandos internos do shell ” abaixo).
READLINE_POINTA posição do ponto de inserção no buffer da linha de linha de leitura, para uso com ” bind -x ” (consulte a seção ” Comandos internos do shell ” abaixo).
REPLYConfigure como a linha de entrada lida pelo comando read builtin quando nenhum argumento for fornecido.
SECONDSCada vez que esse parâmetro é referenciado, o número de segundos desde a chamada do shell é retornado. Se um valor for atribuído a SECONDS , o valor retornado nas referências subseqüentes será o número de segundos desde a atribuição mais o valor atribuído. Se SECONDS estiver desabilitado, ele perde suas propriedades especiais, mesmo que seja redefinido posteriormente.
SHELLOPTSUma lista separada por dois pontos de opções de shell ativadas. Cada palavra da lista é um argumento válido para a opção -o no comando set builtin (consulte a seção ” Comandos internos do shell ” abaixo). As opções que aparecem no SHELLOPTS são aquelas relatadas como ativadas por set -o . Se essa variável estiver no ambiente quando o bash for iniciado, cada opção de shell na lista será ativada antes de ler qualquer arquivo de inicialização. Essa variável é somente leitura.
SHLVLIncrementado por um cada vez que uma instância do bash é iniciada.
UIDExpande para o ID do usuário atual, inicializado na inicialização do shell. Essa variável é somente leitura.

As seguintes variáveis ​​são usadas pelo shell. Em alguns casos, o bash atribui um valor padrão a uma variável; esses casos são mencionados abaixo.

BASH_ENVSe esse parâmetro for definido quando o bash estiver executando um script de shell, seu valor será interpretado como um nome de arquivo que contém comandos para inicializar o shell, como em ~ / .bashrc . O valor de BASH_ENV está sujeito a expansão de parâmetro, substituição de comando e expansão aritmética antes de ser interpretado como um nome de arquivo. PATH não é usado para procurar o nome do arquivo resultante.
BASH_XTRACEFDSe definido como um número inteiro correspondente a um descritor de arquivo válido, o bash gravará a saída de rastreio gerada quando o conjunto -x estiver ativado no descritor de arquivo. O descritor de arquivo é fechado quando BASH_XTRACEFD está desconfigurado ou recebe um novo valor. Desarmar BASH_XTRACEFD ou atribuir a sequência vazia faz com que a saída de rastreio seja enviada ao erro padrão. Observe que definir BASH_XTRACEFD como 2 (o descritor de arquivo de erro padrão) e desmarcá- lo resultará no fechamento do erro padrão.
CDPATHO caminho de pesquisa para o comando cd . Esta é uma lista de diretórios separada por dois pontos, na qual o shell procura os diretórios de destino especificados pelo comando cd . Um valor de amostra é ” .: ~: / Usr “.
COLUMNSUsado pelo comando select composto para determinar a largura do terminal ao imprimir listas de seleção. Definido automaticamente após o recebimento de um SIGWINCH .
COMPREPLYUma variável de matriz da qual o bash lê as possíveis conclusões geradas por uma função de shell invocada pelo recurso de conclusão programável (consulte ” Conclusão programável ” abaixo).
EMACSSe o bash encontrar essa variável no ambiente quando o shell iniciar com o valor ” t “, ele assumirá que o shell está sendo executado em um buffer de shell do Emacs e desativará a edição de linha.
ENVSemelhante ao BASH_ENV ; usado quando o shell é chamado no modo POSIX.
FCEDITO editor padrão para o comando fc builtin.
FIGNOREUma lista separada por dois pontos de sufixos a serem ignorados ao executar a conclusão do nome de arquivo (consulte a seção ” Linha de leitura ” abaixo). Um nome de arquivo cujo sufixo corresponde a uma das entradas em FIGNORE é excluído da lista de nomes de arquivos correspondentes. Um valor de amostra é ” .o: ~ ” (é necessário citar ao atribuir um valor a essa variável, que contém tons).
FUNCNESTSe definido como um valor numérico maior que 0, define um nível máximo de aninhamento de função. As invocações de funções que excederem esse nível de aninhamento farão com que o comando atual seja interrompido.
GLOBIGNOREUma lista de padrões separados por dois pontos que define o conjunto de nomes de arquivos a serem ignorados pela expansão do nome do caminho. Se um nome de arquivo correspondido por um padrão de expansão de nome de caminho também corresponder a um dos padrões em GLOBIGNORE , ele será removido da lista de correspondências.
HISTCONTROLUma lista de valores separados por dois pontos que controla como os comandos são salvos na lista de histórico. Se a lista de valores incluir ignorespace , as linhas que começam com um caractere de espaço não serão salvas na lista de histórico. Um valor de ignoredups faz com que as linhas correspondentes à entrada do histórico anterior não sejam salvas. Um valor de ignoreboth é uma abreviação de ignorespace e ignoredups . Um valor de apagados faz com que todas as linhas anteriores correspondentes à linha atual sejam removidas da lista de histórico antes que a linha seja salva. Qualquer valor que não esteja na lista acima é ignorado. Se HISTCONTROL estiver desabilitado ou não incluir um valor válido, todas as linhas lidas pelo analisador de shell serão salvas na lista de histórico, sujeitas ao valor de HISTIGNORE . A segunda linha e as linhas subseqüentes de um comando composto de várias linhas não são testadas e são adicionadas ao histórico, independentemente do valor de HISTCONTROL .
HISTFILEO nome do arquivo no qual o histórico de comandos é salvo (consulte a seção ” Histórico ” abaixo). O valor padrão é ~ / .bash_history . Se não estiver definido, o histórico de comandos não será salvo quando um shell interativo sair.
HISTFILESIZEO número máximo de linhas contidas no arquivo de histórico. Quando essa variável recebe um valor, o arquivo de histórico é truncado, se necessário, removendo as entradas mais antigas, para conter não mais que esse número de linhas. O valor padrão é 500. O arquivo de histórico também é truncado para esse tamanho depois de gravado quando um shell interativo sai.
HISTIGNOREUma lista de padrões separados por dois pontos usada para decidir quais linhas de comando devem ser salvas na lista de histórico. Cada padrão é ancorado no início da linha e deve corresponder à linha completa (nenhum ‘ * ‘ implícito é anexado). Cada padrão é testado em relação à linha após as verificações especificadas por HISTCONTROL serem aplicadas. Além do padrão normal de shell que corresponde aos caracteres, ‘ & ‘ corresponde à linha do histórico anterior. ‘ & ‘ pode ser escapado usando uma barra invertida; a barra invertida é removida antes de tentar uma correspondência. A segunda linha e as linhas subseqüentes de um comando composto de várias linhas não são testadas e são adicionadas ao histórico, independentemente do valor de HISTIGNORE .
HISTSIZEO número de comandos a serem lembrados no histórico de comandos (consulte a seção ” Histórico ” abaixo). O valor padrão é 500.
HISTTIMEFORMATSe essa variável estiver configurada e não nula, seu valor será usado como uma sequência de formato para strftime para imprimir o carimbo de data / hora associado a cada entrada de histórico exibida pelo histórico incorporado. Se essa variável estiver configurada, os carimbos de hora serão gravados no arquivo de histórico para que possam ser preservados nas sessões do shell. Isso usa o caractere de comentário do histórico para distinguir carimbos de data e hora de outras linhas do histórico.
HOMEO diretório inicial do usuário atual; o argumento padrão para o comando cd builtin. O valor dessa variável também é usado ao executar a expansão de til.
HOSTFILEContém o nome de um arquivo no mesmo formato que / etc / hosts que deve ser lido quando o shell precisar concluir um nome de host . A lista de possíveis conclusões de nome de host pode ser alterada enquanto o shell está em execução; na próxima tentativa de conclusão do nome do host após a alteração do valor, o bash adiciona o conteúdo do novo arquivo à lista existente. Se HOSTFILE estiver definido, mas não tiver valor ou não nomear um arquivo legível, o bash tentará ler / etc / hosts para obter a lista de possíveis conclusões de nome de host. Quando HOSTFILE está desabilitado , a lista de nomes de host é limpa.
IFSO separador de campo interno usado para dividir palavras após a expansão e para dividir linhas em palavras com o comando interno de leitura . O valor padrão é ” <espaço> <guia> <nova linha> “.
IGNOREEOFControla a ação de um shell interativo ao receber um caractere EOF como a única entrada. Se definido, o valor é o número de caracteres EOF consecutivos que devem ser digitados como os primeiros caracteres em uma linha de entrada antes da saída do bash. Se a variável existir, mas não tiver um valor numérico, ou não tiver um valor, o valor padrão será 10. Se não existir, o EOF significa o fim da entrada no shell.
INPUTRCO nome do arquivo para o arquivo de inicialização da linha de leitura, substituindo o padrão ~ / .inputrc (consulte a seção ” Linha de leitura ” abaixo).
LANGUsado para determinar a categoria de localidade para qualquer categoria não selecionada especificamente com uma variável iniciada por LC_ .
LC_ALLEssa variável substitui o valor de LANG e qualquer outra variável LC_ que especifique uma categoria de localidade.
LC_COLLATEEssa variável determina a ordem de intercalação usada ao classificar os resultados da expansão do nome do caminho e determina o comportamento das expressões de intervalo, classes de equivalência e sequências de intercalação na expansão do nome do caminho e na correspondência de padrões.
LC_CTYPEEssa variável determina a interpretação dos caracteres e o comportamento das classes de caracteres na expansão do nome do caminho e na correspondência de padrões.
LC_MESSAGESEssa variável determina o código do idioma usado para converter seqüências de caracteres entre aspas duplas, precedidas por um $ .
LC_NUMERICEssa variável determina a categoria de localidade usada para formatação de números.
LINESUsado pelo comando select composto para determinar o comprimento da coluna para imprimir listas de seleção. Definido automaticamente após o recebimento de um SIGWINCH .
MAILSe esse parâmetro estiver definido como um nome de arquivo ou diretório e a variável MAILPATH não estiver definida, o bash informará o usuário sobre a chegada de mensagens no arquivo especificado ou no diretório no formato Maildir.
MAILCHECKEspecifica com que frequência (em segundos) o bash verifica o correio. O padrão é 60 segundos. Quando chegar a hora de verificar o correio, o shell o fará antes de exibir o prompt principal. Se essa variável estiver desabilitada ou definida como um valor que não seja um número maior ou igual a zero, o shell desabilitará a verificação de email.
MAILPATHUma lista separada por dois pontos de nomes de arquivos a serem verificados quanto a correio. A mensagem a ser impressa quando o correio chegar em um arquivo específico pode ser especificada separando o nome do arquivo da mensagem com um ‘ ?  Quando usado no texto da mensagem, $ _ se expande para o nome do arquivo de mensagens atual. Exemplo:

MAILPATH = ‘/ var / mail / bfox? “Você tem correio”: ~ / shell-mail? “$ _ Tem correio!”‘

O Bash fornece um valor padrão para essa variável, mas o local dos arquivos de mensagens do usuário que ele usa depende do sistema (por exemplo, / var / mail / $ USER ).

OPTERRSe definido como o valor 1, o bash exibirá mensagens de erro geradas pelo comando getopts builtin (consulte a seção ” Comandos internos do shell ” abaixo). OPTERR é inicializado como 1 toda vez que o shell é chamado ou um script de shell é executado. CAMINHO O caminho de busca de comandos. É uma lista de diretórios separada por dois pontos, na qual o shell procura por comandos (consulte a seção ” Execução de Comando ” abaixo). Um nome de diretório de comprimento zero (nulo) no valor de PATH indica o diretório atual. Um nome de diretório nulo pode aparecer como dois pontos adjacentes ou como dois pontos iniciais ou finais. O caminho padrão depende do sistema e é definido pelo administrador que instala o bash. Um valor comum é ” / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin “.
POSIXLY_CORRECTSe essa variável estiver no ambiente quando o bash for iniciado, o shell entrará no modo posix antes de ler os arquivos de inicialização, como se a opção de chamada –posix tivesse sido fornecida. Se estiver definido enquanto o shell estiver em execução, o bash ativará o modo posix, como se o comando set -o posix tivesse sido executado.
PROMPT_COMMANDSe definido, o valor é executado como um comando antes de emitir cada prompt primário.
PROMPT_DIRTRIMSe definido como um número maior que zero, o valor será usado como o número de componentes de diretório à direita a serem retidos ao expandir a cadeia de prompt \ w e \ W (consulte a seção ” Prompting ” abaixo). Os caracteres removidos são substituídos por reticências.
PS1O valor desse parâmetro é expandido (consulte ” Prompting ” abaixo) e usado como a string de prompt principal. O valor padrão é ” \ s- \ v \ $ “.
PS2O valor desse parâmetro é expandido como no PS1 e usado como a sequência de prompt secundária. O padrão é ” > “.
PS3O valor desse parâmetro é usado como prompt para o comando select (consulte a seção ” Gramática do shell ” acima).
PS4O valor desse parâmetro é expandido como no PS1 e o valor é impresso antes de cada comando bash ser exibido durante um rastreamento de execução. O primeiro caractere do PS4 é replicado várias vezes, conforme necessário, para indicar vários níveis de indireção. O padrão é ” + “.
SHELLO nome do caminho completo para o shell é mantido nessa variável de ambiente. Se não estiver definido quando o shell iniciar, o bash atribui a ele o nome do caminho completo do shell de logon do usuário atual.
TIMEFORMATO valor desse parâmetro é usado como uma sequência de formato que especifica como as informações de tempo dos pipelines prefixados com a palavra reservada no horário devem ser exibidas. O caractere % introduz uma sequência de escape que é expandida para um valor de tempo ou outras informações. As seqüências de escape e seus significados são os seguintes; as chaves indicam partes opcionais.

%% : um % literal.

% [p] [l] R : O tempo decorrido em segundos.

% [p] [l] U : o número de segundos de CPU gastos no modo de usuário.

% [p] [l] S : O número de segundos de CPU gastos no modo de sistema.

% P : a porcentagem da CPU, calculada como ( % U + % S ) / % R.

Op opcional é um dígito que especifica a precisão, o número de dígitos fracionários após um ponto decimal. Um valor 0 faz com que nenhum ponto decimal ou fração seja gerado. No máximo três casas após o ponto decimal podem ser especificadas; valores de p maiores que 3 são alterados para 3. Se p não for especificado, o valor 3 será usado.

l opcional especifica um formato mais longo, incluindo minutos, no formato MMmSS.FFs . O valor de p determina se a fração está incluída ou não.

Se essa variável não estiver definida, o bash funcionará como se tivesse o valor $ ‘\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS’ . Se o valor for nulo, nenhuma informação de tempo será exibida. Uma nova linha à direita é adicionada quando a sequência de formatação é exibida.

TMOUTSe definido como um valor maior que zero, o TMOUT será tratado como o tempo limite padrão para a leitura incorporada. O comando select termina se a entrada não chegar após segundos de TMOUT quando a entrada vier de um terminal. Em um shell interativo, o valor é interpretado como o número de segundos para aguardar a entrada após a emissão do prompt primário. O Bash termina depois de aguardar esse número de segundos se a entrada não chegar.
TMPDIRSe definido, o bash usa seu valor como o nome de um diretório no qual o bash cria arquivos temporários para uso do shell.
auto_resumeEssa variável controla como o shell interage com o usuário e o controle do trabalho. Se essa variável estiver configurada, comandos simples de palavra única sem redirecionamentos serão tratados como candidatos à retomada de um trabalho parado existente. Não há ambiguidade permitida; se houver mais de um trabalho começando com a sequência digitada, o trabalho acessado mais recentemente será selecionado. O nome de um trabalho parado, neste contexto, é a linha de comando usada para iniciá-lo. Se definida como o valor exato, a sequência fornecida deve corresponder exatamente ao nome de um trabalho parado; se definida como substring, a sequência fornecida precisará corresponder a uma substring do nome de um trabalho parado. O valor da substring fornece funcionalidade análoga à %? identificador de trabalho (consulte a seção ” Controle de trabalho ” abaixo). Se definida como qualquer outro valor, a cadeia fornecida deve ser um prefixo do nome de um trabalho parado; isso fornece funcionalidade análoga ao identificador de tarefa % string .
histcharsOs dois ou três caracteres que controlam a expansão e a tokenização do histórico (consulte a seção ” Expansão do histórico ” abaixo). O primeiro caractere é o caractere de expansão do histórico, o caractere que sinaliza o início de uma expansão do histórico, normalmente ‘ !  O segundo caractere é o caractere de substituição rápida, usado como atalho para executar novamente o comando anterior digitado, substituindo uma sequência por outra no comando. O padrão é ‘ ^ ‘. O terceiro caractere opcional é o caractere que indica que o restante da linha é um comentário quando encontrado como o primeiro caractere de uma palavra, normalmente ‘ # ‘. O caractere de comentário do histórico faz com que a substituição do histórico seja ignorada pelas palavras restantes na linha. Isso não necessariamente faz com que o analisador de shell trate o restante da linha como um comentário.

Matrizes

O Bash fornece variáveis ​​unidimensionais de array indexadas e associativas. Qualquer variável pode ser usada como uma matriz indexada; declare builtin declarará explicitamente uma matriz. Não há limite máximo para o tamanho de uma matriz, nem qualquer requisito de que os membros sejam indexados ou atribuídos de forma contígua. Matrizes indexadas são referenciadas usando números inteiros (incluindo expressões aritméticas) e são baseadas em zero; matrizes associativas são referenciadas usando seqüências arbitrárias.

Uma matriz indexada é criada automaticamente se qualquer variável for atribuída ao uso do nome da sintaxe [ subscrito ] = valor . O subscrito é tratado como uma expressão aritmética que deve ser avaliada como um número. Se o índice subscrito for avaliado como um número menor que zero, ele será usado como um deslocamento de um número maior que o índice máximo da matriz (portanto, um índice subscrito -1 se refere ao último elemento da matriz). Para declarar explicitamente uma matriz indexada, use declare -a name (consulte a seção ” Comandos internos do shell ” abaixo). declare -um nome [ subscrito ] também é aceito; o subscrito é ignorado.

Matrizes associativas são criadas usando o nome -A declarar.

Os atributos podem ser especificados para uma variável de matriz usando os recursos declarar e somente leitura . Cada atributo se aplica a todos os membros de uma matriz.

As matrizes são atribuídas ao uso de atribuições compostas do nome do formulário = ( valor1 … valor ) , em que cada valor é do formato [ subscrito ] = sequência . As atribuições de matriz indexada não requerem colchete e subscrito. Ao atribuir a matrizes indexadas, se os colchetes opcionais e o subscrito forem fornecidos, esse índice será atribuído; caso contrário, o índice do elemento designado é o último índice atribuído pela instrução mais um. A indexação começa em zero.

Ao atribuir a uma matriz associativa, o subscrito é necessário.

Essa sintaxe também é aceita pelo declarar embutido. Elementos individuais da matriz podem ser atribuídos ao uso da sintaxe nome [ subscrito ] = valor introduzida acima.

Qualquer elemento de uma matriz pode ser referenciado usando $ { name [ subscript ]} . Os colchetes são necessários para evitar conflitos com a expansão do nome do caminho. Se subscrito for @ ou * , a palavra se expandirá para todos os membros do nome. Esses subscritos diferem apenas quando a palavra aparece entre aspas duplas. Se a palavra estiver entre aspas duplas, $ { name [*]} será expandida para uma única palavra com o valor de cada membro da matriz separado pelo primeiro caractere da variável especial IFS e $ { name [@]} expandirá cada elemento de nome para uma palavra separada. Quando não há membros da matriz, $ { name [@]} se expande para nada. Se a expansão de aspas duplas ocorrer em uma palavra, a expansão do primeiro parâmetro será associada à parte inicial da palavra original e a expansão do último parâmetro será associada à última parte da palavra original. Isso é análogo à expansão dos parâmetros especiais * e @ (consulte a seção ” Parâmetros especiais ” acima). $ {# name [ subscript ]} se expande para o comprimento de $ { name [ subscript ]} . Se subscrito for * ou @ , a expansão é o número de elementos na matriz. Referenciar uma variável de matriz sem um subscrito é equivalente a referenciar a matriz com um subscrito de 0.

Uma variável de matriz é considerada definida se um valor subscrito tiver sido atribuído a um índice. A cadeia nula é um valor válido.

O built-in não configurado é usado para destruir matrizes. nome não definido [ subscrito ] destrói o elemento da matriz no índice subscrito . Deve-se tomar cuidado para evitar efeitos colaterais indesejados causados ​​pela expansão do nome do caminho. nome não definido , em que nome é uma matriz, ou nome não definido [ subscrito ] , em que subscrito é * ou @ , remove a matriz inteira.

Os embutidos declarar , local e somente leitura aceitam, cada um, uma opção -a para especificar uma matriz indexada e uma opção -A para especificar uma matriz associativa. Se as duas opções forem fornecidas, -A terá precedência. leitura incorporada aceita uma opção -a para atribuir uma lista de palavras lidas da entrada padrão a uma matriz. Os recursos internos definir e declarar exibem valores de matriz de uma maneira que permite que sejam reutilizados como atribuições.

Expansão

A expansão é realizada na linha de comando após ter sido dividida em palavras. Existem sete tipos de expansão executados: expansão de chaves, expansão de til, expansão de parâmetro e variável, substituição de comando, expansão aritmética, divisão de palavras e expansão de nome de caminho.

A ordem das expansões é: expansão de chaves, expansão de til, parâmetro, expansão variável e aritmética e substituição de comando (feita da esquerda para a direita), divisão de palavras e expansão do nome do caminho.

Em sistemas que podem suportá-lo, há uma expansão adicional disponível: substituição de processo.

Somente expansão de chaves, divisão de palavras e expansão de nome de caminho pode alterar o número de palavras da expansão; outras expansões expandem uma única palavra para uma única palavra. As únicas exceções são as expansões de ” $@ ” e ” $ { name [@]} “, conforme explicado acima (consulte a seção ” Parâmetros “).

Expansão de cinta

A expansão de chaves é um mecanismo pelo qual cadeias arbitrárias podem ser geradas. Esse mecanismo é semelhante à expansão do nome do caminho, mas os nomes de arquivos gerados não precisam existir. Os padrões a serem expandidos entre colchetes assumem a forma de um preâmbulo opcional, seguido por uma série de cadeias separadas por vírgula ou uma expressão de sequência entre um par de colchetes, seguido de um postscript opcional. O preâmbulo é prefixado para cada string contida entre chaves, e o postscript é anexado a cada string resultante, expandindo da esquerda para a direita.

As expansões de chaves podem ser aninhadas. Os resultados de cada sequência expandida não são classificados; a ordem da esquerda para a direita é preservada. Por exemplo, a {d, c, b} e se expande para ‘ ade ace abe ‘.

Uma expressão de sequência assume o formato { x .. y [.. incr ] } , em que x e y são números inteiros ou caracteres únicos e incr , um incremento opcional, é um número inteiro. Quando números inteiros são fornecidos, a expressão se expande para cada número entre x e y , inclusive. Os números inteiros fornecidos podem ser prefixados com 0 para forçar cada termo a ter a mesma largura. Quando x ou y começam com zero, o shell tenta forçar todos os termos gerados a conter o mesmo número de dígitos, preenchendo o zero quando necessário. Quando os caracteres são fornecidos, a expressão se expande para cada caractere lexicograficamente entre x e y , inclusive. Observe que ambos x e y devem ser do mesmo tipo. Quando o incremento é fornecido, ele é usado como a diferença entre cada termo. O incremento padrão é 1 ou -1, conforme apropriado.

A expansão entre chaves é executada antes de qualquer outra expansão e qualquer caractere especial para outras expansões é preservado no resultado. É estritamente textual. O Bash não aplica nenhuma interpretação sintática ao contexto da expansão ou ao texto entre os chavetas.

Uma expansão de chave formada corretamente deve conter chaves de abertura e fechamento sem aspas e pelo menos uma vírgula sem aspas ou uma expressão de sequência válida. Qualquer expansão de braçadeira formada incorretamente permanece inalterada. Um { ou , pode ser citado com uma barra invertida para impedir que seja considerado parte de uma expressão entre chaves. Para evitar conflitos com a expansão de parâmetros, a cadeia $ { não é considerada elegível para expansão de chaves.

Essa construção é normalmente usada como abreviação quando o prefixo comum das sequências a serem geradas é maior que no exemplo acima:

  mkdir / usr / local / src / bash / {velho, novo, dist, bugs}

ou

  raiz do chown /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

A expansão entre chaves introduz uma ligeira incompatibilidade com as versões históricas do sh . O sh não trata chaves de abertura ou fechamento, especialmente quando elas aparecem como parte de uma palavra, e as preserva na saída. O Bash remove chaves das palavras como consequência da expansão da chave. Por exemplo, uma palavra inserida em sh como arquivo {1,2} aparece identicamente na saída. A mesma palavra é emitida como arquivo1 arquivo2 após a expansão por bash. Se desejar uma compatibilidade estrita com sh , inicie o bash com a opção + B ou desative a expansão de chave com a opção + B no comando set (consulte a seção ” Comandos internos do shell ” abaixo).

Expansão Tilde

Se uma palavra começar com um caractere de til sem aspas (‘ ~ ‘), todos os caracteres que precedem a primeira barra sem aspas (ou todos os caracteres, se não houver uma barra sem aspas) serão considerados um prefixo de til. Se nenhum dos caracteres no prefixo de til for citado, os caracteres no prefixo de til após o til serão tratados como um possível nome de login. Se este nome de login for a cadeia nula, o til será substituído pelo valor do parâmetro do shell HOME . Se HOME estiver desabilitado, o diretório inicial do usuário que está executando o shell será substituído. Caso contrário, o prefixo til será substituído pelo diretório inicial associado ao nome de login especificado.

Se o prefixo til é um ‘ ~ + ‘, o valor da variável shell PWD substitui o prefixo til. Se o prefixo til for um ‘ ~ – ‘, o valor da variável de shell OLDPWD , se estiver definido, será substituído. Se os caracteres que seguem o til no prefixo do til consistirem em um número N , opcionalmente prefixado por um ‘ + ‘ ou um ‘  ‘, o prefixo do til será substituído pelo elemento correspondente da pilha de diretórios, como seria exibido pelos dirs internos chamados com o prefixo til como argumento. Se os caracteres que seguem o til no prefixo de til consistem em um número sem um ‘ + ‘ ou ‘  ‘, ‘ + ‘ inicial é assumido.

Se o nome de login for inválido ou a expansão do til falhar, a palavra permanecerá inalterada.

Cada atribuição de variável é verificada quanto a prefixos de til sem aspas imediatamente após a : ou o primeiro = . Nesses casos, a expansão do til também é realizada. Consequentemente, pode-se usar nomes de arquivos com tildes em atribuições para PATH , MAILPATH e CDPATH , e o shell atribui o valor expandido.

Expansão de parâmetros

O caractere ‘ $ ‘ introduz expansão de parâmetro, substituição de comando ou expansão aritmética. O nome ou símbolo do parâmetro a ser expandido pode ser colocado entre chaves, que são opcionais, mas servem para proteger a variável a ser expandida dos caracteres imediatamente a seguir, que podem ser interpretados como parte do nome.

Quando chaves são usadas, a chave final correspondente é o primeiro ‘ } ‘ não escapado por uma barra invertida ou dentro de uma cadeia de caracteres citada, e não dentro de uma expansão aritmética incorporada, substituição de comando ou expansão de parâmetro.

Referência rápida: Aqui está a tabela descrevendo brevemente cada formulário de expansão do parâmetro bash e como ele se comporta, dependendo do valor do parâmetro .

Formatoparâmetro é definido e
não nulo
parâmetro é definido, mas
Nulo
parâmetro é Unset
$ { parâmetro : – palavra }expandir para o parâmetroexpandir para palavraexpandir para palavra
$ { parâmetro  palavra }expandir para o parâmetroexpandir para Nuloexpandir para palavra
$ { parâmetro : = palavra }expandir para o parâmetroexpanda a palavra ,
atribuir ao parâmetro ,
expandir para o parâmetro
expanda a palavra ,
atribuir ao parâmetro ,
expandir para o parâmetro
$ { parameter = word }expandir para o parâmetroexpandir para Nuloexpanda a palavra ,
atribuir ao parâmetro ,
expandir para o parâmetro
$ { parâmetro 😕 palavra }expandir para o parâmetroretornar um erro,
comando terminar
retornar um erro,
comando terminar
parâmetro $ { ? palavra }expandir para o parâmetroexpandir para Nuloretornar um erro,
comando terminar
$ { parâmetro : + palavra }expandir para o parâmetroexpandir para Nuloexpandir para Nulo
$ { parâmetro + palavra }expandir para o parâmetroexpandir para palavraexpandir para Nulo

Como você pode ver, se o formulário de expansão incluir dois pontos (” : “), há um comportamento alternativo quando o parâmetro é definido, mas seu valor é Nulo (que é equivalente à sequência vazia de aspas simples,  ). If parameter is not set at all, behavior is the same with or without a colon.

The following descriptions go into a bit more detail:

 ${ parameter }

Here, the value of parameter is substituted. The braces are required when parameter is a positional parameter with more than one digit, or when parameter is followed by a character that is not to be interpreted as part of its name.

If the first character of parameter is an exclamation point ( ! ), a level of variable indirection is introduced. Bash uses the value of the variable formed from the rest of parameter as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather than the value of parameter itself. This is known as indirect expansion . The exceptions to this are the expansions of ${! prefix *} and ${! name [@]} described below. The exclamation point must immediately follow the left brace to introduce indirection.

In each of the cases below, word is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion.

When not performing substring expansion, using the forms documented below, bash tests for a parameter that is unset or null. Omitting the colon results in a test only for a parameter that is unset, bypassing the test if the parameter is null.

 ${ parameter :- word }

Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.

 ${ parameter := word }

Assign Default Values. If parameter is unset or null, the expansion of word is assigned to parameter . The value of parameter is then substituted. Positional parameters and special parameters may not be assigned to in this way.

 ${ parameter :? word }

Display Error if Null or Unset. If parameter is null or unset, the expansion of word (or a message to that effect if word is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of parameter is substituted.

 ${ parameter :+ word }

Use Alternate Value. If parameter is null or unset, nothing is substituted, otherwise the expansion of word is substituted.

 ${ parameter : offset }
 ${ parameter : offset : length }

Substring Expansion. Expands to up to length characters of parameter starting at the character specified by offset . If length is omitted, expands to the substring of parameter starting at the character specified by offset . The length and offset are arithmetic expressions (see the section ” Arithmetic Evaluation ” below). If offset evaluates to a number less than zero, the value is used as an offset from the end of the value of parameter . Arithmetic expressions starting with a  must be separated by whitespace from the preceding : to be distinguished from the Use Default Values expansion. If length evaluates to a number less than zero, and parameter is not @ and not an indexed or associative array, it is interpreted as an offset from the end of the value of parameter rather than a number of characters, and the expansion is the characters between the two offsets. If parameter is @ , the result is length positional parameters beginning at offset . If parameter is an indexed array name subscripted by @ or * , the result is the length members of the array beginning with ${ parameter [ offset ] } . A negative offset is taken relative to one greater than the maximum index of the specified array. Substring expansion applied to an associative array produces undefined results. Note that a negative offset must be separated from the colon by at least one space to avoid being confused with the :- expansion. Substring indexing is zero-based unless the positional parameters are used, in which case the indexing starts at 1 by default. If offset is 0, and the positional parameters are used, $0 is prefixed to the list.

 ${! prefix *}
 ${! prefix @}

Names matching prefix . Expands to the names of variables whose names begin with prefix , separated by the first character of the IFS special variable. When @ is used and the expansion appears within double quotes, each variable name expands to a separate word.

 ${! name [@]}
 ${! name [*]}

List of array keys. If name is an array variable, expands to the list of array indices (keys) assigned in name. If name is not an array, expands to 0 if name is set and null otherwise. When @ is used and the expansion appears within double quotes, each key expands to a separate word.

 ${# parameter }

Parameter length. The length in characters of the value of parameter is substituted. If parameter is * or @ , the value substituted is the number of positional parameters. If parameter is an array name subscripted by * or @ , the value substituted is the number of elements in the array.

 ${ parameter # word }
 ${ parameter ## word }

Remove matching prefix pattern. The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches the beginning of the value of parameter , then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the ” # ” case) or the longest matching pattern (the ” ## ” case) deleted. If parameter is @ or * , the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or * , the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list.

 ${ parameter % word }
 ${ parameter %% word }

Remove matching suffix pattern. The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches a trailing portion of the expanded value of parameter , then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the ” % ” case) or the longest matching pattern (the ” %% ” case) deleted. If parameter is @ or * , the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or * , the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list.

 ${ parameter / pattern / string }

Pattern substitution. The pattern is expanded to produce a pattern just as in pathname expansion. The Parameter is expanded and the longest match of pattern against its value is replaced with string. If pattern begins with / , all matches of pattern are replaced with string . Normally only the first match is replaced. If pattern begins with # , it must match at the beginning of the expanded value of parameter . If pattern begins with % , it must match at the end of the expanded value of parameter . If string is null, matches of pattern are deleted and the / following pattern may be omitted. If parameter is @ or * , the substitution operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or * , the substitution operation is applied to each member of the array in turn, and the expansion is the resultant list.

 ${ parameter ^ pattern }
 ${ parameter ^^ pattern }
 ${ parameter , pattern }
 ${ parameter ,, pattern }

Case modification. This expansion modifies the case of alphabetic characters in parameter . The pattern is expanded to produce a pattern just as in pathname expansion. The ^ operator converts lowercase letters matching pattern to uppercase; the , operator converts matching uppercase letters to lowercase. The ^^ and ,, expansions convert each matched character in the expanded value; the ^ and , expansions match and convert only the first character in the expanded value. If pattern is omitted, it is treated like a ? , which matches every character. If parameter is @ or * , the case modification operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or * , the case modification operation is applied to each member of the array in turn, and the expansion is the resultant list.

Substituição de comando

Command substitution allows the output of a command to replace the command name. There are two forms:

 $( command )

ou

 ` command `

Bash performs the expansion by executing command and replacing the command substitution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are not deleted, but they may be removed during word splitting. The command substitution $(cat file) can be replaced by the equivalent but faster $(< file) .

When the old-style backquote form of substitution is used, backslash retains its literal meaning except when followed by $ , ` , or \ . The first backquote not preceded by a backslash terminates the command substitution. When using the $( command ) form, all characters between the parentheses make up the command; none are treated specially.

Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes.

If the substitution appears within double quotes, word splitting and pathname expansion are not performed on the results.

Arithmetic expansion

Arithmetic expansion allows the evaluation of an arithmetic expression and the substitution of the result. The format for arithmetic expansion is:

 $(( expression ))

The old format $[ expression ] is deprecated and will be removed in upcoming versions of bash.

The expression is treated as if it were within double quotes, but a double quote inside the parentheses is not treated specially. All tokens in the expression undergo parameter expansion, string expansion, command substitution, and quote removal. Arithmetic expansions may be nested.

The evaluation is performed according to the rules listed below under the section ” Arithmetic Evaluation .” If expression is invalid, bash prints a message indicating failure and no substitution occurs.

Process substitution

Process substitution is supported on systems that support named pipes ( FIFO s) or the /dev/fd method of naming open files. It takes the form of <( list ) or >( list ) . The process list is run with its input or output connected to a FIFO or some file in /dev/fd . The name of this file is passed as an argument to the current command as the result of the expansion. If the >( list ) form is used, writing to the file will provide input for list. If the <( list ) form is used, the file passed as an argument should be read to obtain the output of list.

When available, process substitution is performed simultaneously with parameter and variable expansion, command substitution, and arithmetic expansion.

Word splitting

The shell scans the results of parameter expansion, command substitution, and arithmetic expansion that did not occur within double quotes for word splitting.

The shell treats each character of IFS as a delimiter , and splits the results of the other expansions into words on these characters. If IFS is unset, or its value is exactly <space><tab><newline> , the default, then sequences of <space> , <tab> , and <newline> at the beginning and end of the results of the previous expansions are ignored, and any sequence of IFS characters not at the beginning or end serves to delimit words. If IFS has a value other than the default, then sequences of the whitespace characters space and tab are ignored at the beginning and end of the word, as long as the whitespace character is in the value of IFS (an IFS whitespace character). Any character in IFS that is not IFS whitespace, along with any adjacent IFS whitespace characters, delimits a field. A sequence of IFS whitespace characters is also treated as a delimiter. If the value of IFS is null, no word splitting occurs.

Explicit null arguments ( “” or  ) are retained. Unquoted implicit null arguments, resulting from the expansion of parameters that have no values, are removed. If a parameter with no value is expanded within double quotes, a null argument results and is retained.

Note that if no expansion occurs, no splitting is performed.

Pathname expansion

After word splitting, unless the -f option has been set, bash scans each word for the characters * , ? , and [ . If one of these characters appears, then the word is regarded as a pattern, and replaced with an alphabetically sorted list of file names matching the pattern. If no matching file names are found, and the shell option nullglob is not enabled, the word is left unchanged. If the nullglob option is set, and no matches are found, the word is removed. If the failglob shell option is set, and no matches are found, an error message is printed and the command is not executed. If the shell option nocaseglob is enabled, the match is performed without regard to the case of alphabetic characters. Note that when using range expressions like [az] (see the next section, ” Pattern Matching “), letters of the other case may be included, depending on the setting of LC_COLLATE . When a pattern is used for pathname expansion, the character ” . ” at the start of a name or immediately following a slash must be matched explicitly, unless the shell option dotglob is set. When matching a pathname, the slash character must always be matched explicitly. In other cases, the ” . ” character is not treated specially. See the description of shopt below under the section ” Shell Builtin Commands ” for a description of the nocaseglob , nullglob , failglob , and dotglob shell options.

The GLOBIGNORE shell variable may be used to restrict the set of file names matching a pattern. If GLOBIGNORE is set, each matching file name that also matches one of the patterns in GLOBIGNORE is removed from the list of matches. The file names ” . ” and ” .. are always ignored when GLOBIGNORE is set and not null. However, setting GLOBIGNORE to a non-null value has the effect of enabling the dotglob shell option, so all other file names beginning with a ” . ” will match. To get the old behavior of ignoring file names beginning with a ” . “, make ” .* ” one of the patterns in GLOBIGNORE . The dotglob option is disabled when GLOBIGNORE is unset.

Pattern matching

Any character that appears in a pattern, other than the special pattern characters described below, matches itself. The NUL character may not occur in a pattern. A backslash escapes the following character; the escaping backslash is discarded when matching. The special pattern characters must be quoted if they are to be matched literally.

The special pattern characters have the following meanings:

*Matches any string, including the null string. When the globstar shell option is enabled, and * is used in a pathname expansion context, two adjacent * s used as a single pattern will match all files and zero or more directories and subdirectories. If followed by a / , two adjacent * s will match only directories and subdirectories.
?Matches any single character.
[…]Corresponde a qualquer um dos caracteres incluídos. Um par de caracteres separados por um hífen indica uma expressão de intervalo; qualquer caractere que classifique entre esses dois caracteres, inclusive, usando a sequência de intercalação e o conjunto de caracteres do código de idioma atual, é correspondido. Se o primeiro caractere após o [ for a ! ou a ^ , qualquer caractere não incluído é correspondido. A ordem de classificação dos caracteres nas expressões de intervalo é determinada pelo código do idioma atual e pelo valor da variável de shell LC_COLLATE , se configurada. A  pode ser correspondido incluindo-o como o primeiro ou o último caractere no conjunto. A ] pode ser correspondido incluindo-o como o primeiro caractere do conjunto.

Dentro de [ e ] , as classes de caracteres podem ser especificadas usando a sintaxe [: class :] , em que classe é uma das seguintes classes definidas no padrão POSIX:

alnum alfa ascii em branco cntrl dígito gráfico menor imprimir pontual palavra superior xdigit

Uma classe de personagem corresponde a qualquer caractere pertencente a essa classe. A classe de caracteres da palavra corresponde a letras, dígitos e o caractere _ .

Dentro de [ e ] , uma classe de equivalência pode ser especificada usando a sintaxe [= c =] , que corresponde a todos os caracteres com o mesmo peso de intercalação (conforme definido pelo código de idioma atual) que o caractere c .

Dentro de [ e ] , a sintaxe [. símbolo .] corresponde ao símbolo do símbolo de intercalação .

Eu

Se a opção extglob shell estiver ativada usando o shopt embutido, vários operadores estendidos de correspondência de padrões serão reconhecidos. Na descrição seguinte, um padrão de lista é uma lista de um ou mais padrões separados por uma | . Padrões compostos podem ser formados usando um ou mais dos seguintes subpadrões:

? ( lista de padrões )Corresponde a zero ou uma ocorrência dos padrões fornecidos
* ( lista de padrões )Corresponde a zero ou mais ocorrências dos padrões fornecidos
+ ( lista de padrões )Matches one or more occurrences of the given patterns
@( pattern-list )Matches one of the given patterns
!( pattern-list )Matches anything except one of the given patterns

Quote removal

After the preceding expansions, all unquoted occurrences of the characters \ ,  , and  that did not result from one of the above expansions are removed.

Redirecionamento

Before a command is executed, its input and output may be redirected using a special notation interpreted by the shell. Redirection may also be used to open and close files for the current shell execution environment. The following redirection operators may precede or appear anywhere within a simple command or may follow a command. Redirections are processed in the order they appear, from left to right.

Each redirection that may be preceded by a file descriptor number may instead be preceded by a word of the form { varname } . In this case, for each redirection operator except >&- and <&- , the shell will allocate a file descriptor greater than 10 and assign it to varname . If >&- or <&- is preceded by { varname } , the value of varname defines the file descriptor to close.

In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is < , the redirection refers to the standard input (file descriptor 0). If the first character of the redirection operator is > , the redirection refers to the standard output (file descriptor 1).

The word following the redirection operator in the following descriptions, unless otherwise noted, is subjected to brace expansion, tilde expansion, parameter expansion, command substitution, arithmetic expansion, quote removal, pathname expansion, and word splitting. If it expands to more than one word, bash reports an error.

Note that the order of redirections is significant. For example, the command

 ls > dirlist 2>&1

directs both standard output and standard error to the file dirlist , while the command

 ls 2>&1 > dirlist

directs only the standard output to file dirlist , because the standard error was duplicated from the standard output before the standard output was redirected to dirlist .

Bash handles several filenames specially when they are used in redirections, as described in the following table:

/dev/fd/fdIf fd is a valid integer, file descriptor fd is duplicated.
/dev/stdinFile descriptor 0 is duplicated.
/dev/stdoutFile descriptor 1 is duplicated.
/dev/stderrFile descriptor 2 is duplicated.
/dev/tcp/host/portIf host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open a TCP connection to the corresponding socket.
/dev/udp/host/portIf host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open a UDP connection to the corresponding socket.

A failure to open or create a file causes the redirection to fail.

Redirections using file descriptors greater than 9 should be used with care, as they may conflict with file descriptors the shell uses internally.

Note that the exec builtin command can make redirections take effect in the current shell.

Redirecting input

Redirection of input causes the file whose name results from the expansion of word to be opened for reading on file descriptor n , or the standard input (file descriptor 0) if n is not specified.

The general format for redirecting input is:

 [ n ]< word

Redirecting output

Redirection of output causes the file whose name results from the expansion of word to be opened for writing on file descriptor n , or the standard output (file descriptor 1) if n is not specified. If the file does not exist it is created; if it does exist it is truncated to zero size.

The general format for redirecting output is:

 [ n ]> word

If the redirection operator is > , and the noclobber option to the set builtin has been enabled, the redirection will fail if the file whose name results from the expansion of word exists and is a regular file. If the redirection operator is >| , or the redirection operator is > and the noclobber option to the set builtin command is not enabled, the redirection is attempted even if the file named by word exists.

Appending redirected output

Redirection of output in this fashion causes the file whose name results from the expansion of word to be opened for appending on file descriptor n , or the standard output (file descriptor 1) if n is not specified. If the file does not exist it is created.

The general format for appending output is:

 [ n ]>> word

Redirecting standard output and standard error

This construct allows both the standard output (file descriptor 1) and the standard error output (file descriptor 2) to be redirected to the file whose name is the expansion of word .

There are two formats for redirecting standard output and standard error:

 &> word

e

 >& word

Of the two forms, the first is preferred. This is semantically equivalent to

 > word 2>&1

Appending standard output and standard error

This construct allows both the standard output (file descriptor 1) and the standard error output (file descriptor 2) to be appended to the file whose name is the expansion of word .

The format for appending standard output and standard error is:

 &>> word

This is semantically equivalent to

 >> word 2>&1

Here documents

This type of redirection instructs the shell to read input from the current source until a line containing only delimiter (with no trailing blanks) is seen. All of the lines read up to that point are then used as the standard input for a command.

The format of here-documents is:

 <<[-] word here-document delimiter

No parameter expansion, command substitution, arithmetic expansion, or pathname expansion is performed on word. If any characters in word are quoted, the delimiter is the result of quote removal on word, and the lines in the here-document are not expanded. If word is unquoted, all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion. In the latter case, the character sequence \<newline> is ignored, and \ must be used to quote the characters \ , $ , and ` .

If the redirection operator is <<- , then all leading tab characters are stripped from input lines and the line containing delimiter. This allows here-documents within shell scripts to be indented in a natural fashion.

Here strings

A variant of here documents, the format is:

 <<< word

The word is expanded and supplied to the command on its standard input.

Duplicating file descriptors

The redirection operator

 [ n ]<& word

is used to duplicate input file descriptors. If word expands to one or more digits, the file descriptor denoted by n is made to be a copy of that file descriptor. If the digits in word do not specify a file descriptor open for input, a redirection error occurs. If word evaluates to  , file descriptor n is closed. If n is not specified, the standard input (file descriptor 0) is used.

O operador

 [ n ]>& word

is used similarly to duplicate output file descriptors. If n is not specified, the standard output (file descriptor 1) is used. If the digits in word do not specify a file descriptor open for output, a redirection error occurs. As a special case, if n is omitted, and word does not expand to one or more digits, the standard output and standard error are redirected as described previously.

Moving file descriptors

The redirection operator

 [ n ]<& digit -

moves the file descriptor digit to file descriptor n , or the standard input (file descriptor 0) if n is not specified. The digit is closed after being duplicated to n .

Similarly, the redirection operator

 [ n ]>& digit -

moves the file descriptor digit to file descriptor n , or the standard output (file descriptor 1) if n is not specified.

Opening file descriptors for reading and writing

The redirection operator

 [ n ]<> word

causes the file whose name is the expansion of word to be opened for both reading and writing on file descriptor n , or on file descriptor 0 if n is not specified. If the file does not exist, it is created.

Pseudônimo, suposto nome

Aliases allow a string to be substituted for a word when it is used as the first word of a simple command. The shell maintains a list of aliases that may be set and unset with the alias and unalias builtin commands (see the section ” Shell Builtin Commands ” for details). The first word of each simple command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the alias. The characters / , $ , ` , and = and any of the shell metacharacters or quoting characters listed above may not appear in an alias name. The replacement text may contain any valid shell input, including shell metacharacters. The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias ls to ls -F , for instance, and bash does not try to recursively expand the replacement text. If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion.

Aliases are created and listed with the alias command, and removed with the unalias command.

There is no mechanism for using arguments in the replacement text. If arguments are needed, a shell function should be used (see the section ” Functions ” below).

Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under the section ” Shell Builtin Commands ” below).

The rules concerning the definition and use of aliases are somewhat confusing. Bash always reads at least one complete line of input before executing any of the commands on that line. Aliases are expanded when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new alias. This behavior is also an issue when functions are executed. Aliases are expanded when a function definition is read, not when the function is executed, because a function definition is itself a compound command. As a consequence, aliases defined in a function are not available until after that function is executed. To be safe, always put alias definitions on a separate line, and do not use alias in compound commands.

For almost every purpose, aliases are superseded by shell functions.

Funções

shell function , defined as described above under the section ” Shell Grammar “, stores a series of commands for later execution. When the name of a shell function is used as a simple command name, the list of commands associated with that function name is executed. Functions are executed in the context of the current shell; no new process is created to interpret them (contrast this with the execution of a shell script). When a function is executed, the arguments to the function become the positional parameters during its execution. The special parameter # is updated to reflect the change. Special parameter 0 is unchanged. The first element of the FUNCNAME variable is set to the name of the function while the function is executing.

All other aspects of the shell execution environment are identical between a function and its caller with these exceptions: the DEBUG and RETURN traps (see the description of the trap builtin under the section ” Shell Builtin Commands ” below) are not inherited unless the function has been given the trace attribute (see the description of the declare builtin below) or the -o functrace shell option has been enabled with the set builtin (in which case all functions inherit the DEBUG and RETURN traps), and the ERR trap is not inherited unless the -o errtrace shell option has been enabled.

Variables local to the function may be declared with the local builtin command. Ordinarily, variables and their values are shared between the function and its caller.

The FUNCNEST variable, if set to a numeric value greater than 0, defines a maximum function nesting level. Function invocations that exceed the limit cause the entire command to abort.

If the builtin command return is executed in a function, the function completes and execution resumes with the next command after the function call. Any command associated with the RETURN trap is executed before execution resumes. When a function completes, the values of the positional parameters and the special parameter # are restored to the values they had before the function’s execution.

Function names and definitions may be listed with the -f option to the declare or typeset builtin commands. The -F option to declare or typeset will list the function names only (and optionally the source file and line number, if the extdebug shell option is enabled). Functions may be exported so that subshells automatically have them defined with the -f option to the export builtin. A function definition may be deleted using the -f option to the unset builtin. Note that shell functions and variables with the same name may result in multiple identically-named entries in the environment passed to the shell’s children. Care should be taken in cases where this may cause a problem.

Functions may be recursive. The FUNCNEST variable may be used to limit the depth of the function call stack and restrict the number of function invocations. By default, no limit is imposed on the number of recursive calls.

Arithmetic evaluation

The shell allows arithmetic expressions to be evaluated , under certain circumstances (see the let and declare builtin commands and the section ” Arithmetic Expansion “). Evaluation is done in fixed-width integers with no check for overflow, though division by 0 is trapped and flagged as an error. The operators and their precedence, associativity, and values are the same as in the C language . The following list of operators is grouped into levels of equal-precedence operators. The levels are listed in order of decreasing precedence.

id ++ , id variable post-increment and post-decrement
++ id ,  idvariable pre-increment and pre-decrement
 , +unary minus and plus
! , ~logical and bitwise negation
**exponentiation
* , / , %multiplication, division, remainder
+ , addition, subtraction
<< , >>left and right bitwise shifts
<= , >= , < , >comparação
== , !=equality and inequality
&AND bit a bit
^bitwise exclusive OR
|OR bit a bit
&&AND lógico
||OR lógico
expr ? expr : exprconditional operator
= , *= , /= , %= , += , -= , <<= , >>= , &= , ^= , |=tarefa
expr1 , expr2comma

Shell variables are allowed as operands; parameter expansion is performed before the expression is evaluated. Within an expression, shell variables may also be referenced by name without using the parameter expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. The value of a variable is evaluated as an arithmetic expression when it is referenced, or when a variable which has been given the integer attribute using declare -i is assigned a value. A null value evaluates to 0. A shell variable need not have its integer attribute turned on to be used in an expression.

Constants with a leading 0 are interpreted as octal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, numbers take the form [base#]n , where the optional base is a decimal number between 2 and 64 representing the arithmetic base, and n is a number in that base. If base# is omitted, then base 10 is used. The digits greater than 9 are represented by the lowercase letters, the uppercase letters, @ , and _ , in that order. If base is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 and 35.

Operators are evaluated in order of precedence. Sub-expressions in parentheses are evaluated first and may override the precedence rules above.

Conditional expressions

Conditional expressions are used by the [[ compound command and the test and [ builtin commands to test file attributes and perform string and arithmetic comparisons. Expressions are formed from the following unary or binary primaries. If any file argument to one of the primaries is of the form /dev/fd/n , then file descriptor n is checked. If the file argument to one of the primaries is one of /dev/stdin , /dev/stdout , or /dev/stderr , file descriptor 0, 1, or 2, respectively, is checked.

Unless otherwise specified, primaries that operate on files follow symbolic links and operate on the target of the link, rather than the link itself.

When used with [[ , the < and > operators sort lexicographically using the current locale. The test command sorts using ASCII ordering.

-a fileTrue if file exists.
-b fileTrue if file exists and is a block special file.
-c fileTrue if file exists and is a character special file.
-d fileTrue if file exists and is a directory.
-e fileTrue if file exists.
arquivo -fTrue if file exists and is a regular file.
-g fileTrue if file exists and is set-group-id.
-h fileTrue if file exists and is a symbolic link.
-k fileTrue if file exists and its “sticky” bit is set.
-p fileTrue if file exists and is a named pipe (FIFO).
-r fileTrue if file exists and is readable.
-s fileTrue if file exists and has a size greater than zero.
-t fdTrue if file descriptor fd is open and refers to a terminal.
-u fileTrue if file exists and its set-user-id bit is set.
-w fileTrue if file exists and is writable.
-x fileTrue if file exists and is executable.
-G fileTrue if file exists and is owned by the effective group id.
-L fileTrue if file exists and is a symbolic link.
-N fileTrue if file exists and has been modified since it was last read.
-O fileTrue if file exists and is owned by the effective user id.
-S fileTrue if file exists and is a socket.
file1 -ef file2True if file1 and file2 refer to the same device and inode numbers.
file1 -nt file2True if file1 is newer (according to modification date) than file2 , or if file1 exists and file2 does not.
file1 -ot file2True if file1 is older than file2 , or if file2 exists and file1 does not.
-o optnameTrue if the shell option optname is enabled. See the list of options under the description of the -o option to the set builtin below.
-v varnameTrue if the shell variable varname is set (has been assigned a value).
-z stringTrue if the length of string is zero.
string , -n stringTrue if the length of string is non-zero.
string1 == string2 , string1 = string2True if the strings are equal. = should be used with the test command for POSIX conformance.
string1 != string2True if the strings are not equal.
string1 < string2True if string1 sorts before string2 lexicographically.
string1 > string2True if string1 sorts after string2 lexicographically.
arg1 OP arg2OP is one of -eq , -ne , -lt , -le , -gt , or -ge . These arithmetic binary operators return true if arg1 is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to arg2 , respectively. The Arg1 and arg2 may be positive or negative integers.

Simple command expansion

When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right.

  1. The words that the parser has marked as variable assignments (those preceding the command name) and redirections are saved for later processing.
  2. The words that are not variable assignments or redirections are expanded. If any words remain after expansion, the first word is taken to be the name of the command and the remaining words are the arguments.
  3. Redirections are performed as described above under REDIRECTION.
  4. The text after the = in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before being assigned to the variable.

If no command name results, the variable assignments affect the current shell environment. Otherwise, the variables are added to the environment of the executed command and do not affect the current shell environment. If any of the assignments attempts to assign a value to a readonly variable, an error occurs, and the command exits with a non-zero status.

If no command name results, redirections are performed, but do not affect the current shell environment. A redirection error causes the command to exit with a non-zero status.

If there is a command name left after expansion, execution proceeds as described below. Otherwise, the command exits. If one of the expansions contained a command substitution, the exit status of the command is the exit status of the last command substitution performed. If there were no command substitutions, the command exits with a status of zero.

Command execution

After a command has been split into words, if it results in a simple command and an optional list of arguments, the following actions are taken.

If the command name contains no slashes, the shell attempts to locate it. If there exists a shell function by that name, that function is invoked as described above in the section ” Functions .” If the name does not match a function, the shell searches for it in the list of shell builtins. If a match is found, that builtin is invoked.

If the name is neither a shell function nor a builtin, and contains no slashes, bash searches each element of the PATH for a directory containing an executable file by that name. Bash uses a hash table to remember the full pathnames of executable files (see hash under the section ” Shell Builtin Commands ” below). A full search of the directories in PATH is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named command_not_found_handle . If that function exists, it is invoked with the original command and the original command’s arguments as its arguments, and the function’s exit status becomes the exit status of the shell. If that function is not defined, the shell prints an error message and returns an exit status of 127.

If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execution environment. Argument 0 is set to the name given, and the remaining arguments to the command are set to the arguments given, if any.

If this execution fails because the file is not in executable format, and the file is not a directory, it is assumed to be a shell script, a file containing shell commands. A subshell is spawned to execute it. This subshell reinitializes itself, so that the effect is as if a new shell had been invoked to handle the script, with the exception that the locations of commands remembered by the parent (see hash below under the section ” Shell Builtin Commands “) are retained by the child.

Se o programa for um arquivo começando com #! , o restante da primeira linha especifica um intérprete para o programa. O shell executa o intérprete especificado em sistemas operacionais que não manipulam esse formato executável. Os argumentos para o intérprete consistem em um único argumento opcional após o nome do intérprete na primeira linha do programa, seguido pelo nome do programa, seguido pelos argumentos do comando, se houver.

Ambiente de execução de comando

O shell possui um ambiente de execução , que consiste no seguinte:

  • arquivos abertos herdados pelo shell na chamada, modificados pelos redirecionamentos fornecidos ao exec incorporado
  • o diretório de trabalho atual, conforme definido por cd , pushd ou popd ou herdado pelo shell na chamada
  • a máscara do modo de criação de arquivo, conforme definido por umask ou herdado do pai do shell
  • armadilhas atuais definidas por armadilha
  • parâmetros de shell que são definidos por atribuição de variável ou com conjunto ou herdados do pai do shell no ambiente
  • funções de shell definidas durante a execução ou herdadas do pai do shell no ambiente
  • opções ativadas na chamada (por padrão ou com argumentos de linha de comando) ou por conjunto
  • opções ativadas pelo shopt
  • aliases de shell definidos com alias
  • várias identificações de processo, incluindo tarefas de segundo plano, o valor de $$ e o valor de PPID

Quando um comando simples que não seja uma função interna ou shell deve ser executado, ele é chamado em um ambiente de execução separado que consiste no seguinte. Salvo indicação em contrário, os valores são herdados do shell.

  • os arquivos abertos do shell, além de quaisquer modificações e adições especificadas por redirecionamentos para o comando
  • o diretório de trabalho atual
  • a máscara do modo de criação de arquivo
  • variáveis ​​e funções do shell marcadas para exportação, juntamente com variáveis ​​exportadas para o comando, passadas no ambiente
  • armadilhas capturadas pelo shell são redefinidas para os valores herdados do pai do shell e armadilhas ignoradas pelo shell são ignoradas

Um comando chamado neste ambiente separado não pode afetar o ambiente de execução do shell.

Substituição de comando, comandos agrupados entre parênteses e comandos assíncronos são chamados em um ambiente de subshell que é uma duplicata do ambiente do shell, exceto que os traps capturados pelo shell são redefinidos para os valores que o shell herdou do pai na chamada. Comandos internos que são chamados como parte de um pipeline também são executados em um ambiente de subshell. As alterações feitas no ambiente do subshell não podem afetar o ambiente de execução do shell.

Subshells gerados para executar substituições de comando herdam o valor da opção -e do shell pai. Quando não está no modo posix, o bash limpa a opção -e nesses subshells.

Se um comando for seguido por & e o controle de tarefa não estiver ativo, a entrada padrão padrão para o comando é o arquivo vazio / dev / null . Caso contrário, o comando invocado herda os descritores de arquivo do shell de chamada, conforme modificado pelos redirecionamentos.

Meio Ambiente

Quando um programa é chamado, é fornecida uma matriz de cadeias chamada ambiente . Esta é uma lista de pares nome-valor, no formato nome = valor .

O shell fornece várias maneiras de manipular o ambiente. Na chamada, o shell varre seu próprio ambiente e cria um parâmetro para cada nome encontrado, marcando-o automaticamente para exportação para processos filho. Os comandos executados herdam o ambiente. Os comandos export e declare -x permitem que parâmetros e funções sejam adicionados e excluídos do ambiente. Se o valor de um parâmetro no ambiente for modificado, o novo valor se tornará parte do ambiente, substituindo o antigo. O ambiente herdado por qualquer comando executado consiste no ambiente inicial do shell, cujos valores podem ser modificados no shell, menos pares removidos pelo comando unset, mais adições por meio dos comandos export e declare -x .

O ambiente para qualquer comando ou função simples pode ser aumentado temporariamente, prefixando-o com atribuições de parâmetros, conforme descrito acima na seção ” Parâmetros “. Essas instruções de atribuição afetam apenas o ambiente visto por esse comando.

Se a opção -k estiver configurada (consulte o comando set builtin abaixo), todas as designações de parâmetros serão colocadas no ambiente para um comando, não apenas aquelas que precedem o nome do comando.

Quando o bash chama um comando externo, a variável _ é definida como o nome completo do arquivo do comando e passada para esse comando em seu ambiente.

Status de saída

status de saída de um comando executado é o valor retornado pela chamada do sistema waitpid ou função equivalente. Os status de saída ficam entre 0 e 255; no entanto, conforme explicado abaixo, o shell pode usar valores acima de 125 especialmente. Os status de saída dos shell builtins e comandos compostos também são limitados a esse intervalo. Sob certas circunstâncias, o shell usará valores especiais para indicar modos de falha específicos.

Para os propósitos do shell, um comando que sai com um status de saída zero foi bem-sucedido. Um status de saída zero indica sucesso. Um status de saída diferente de zero indica falha. Quando um comando termina em um sinal fatal N , o bash usa o valor de 128 + N como status de saída.

Se um comando não for encontrado, o processo filho criado para executá-lo retornará um status 127. Se um comando for encontrado, mas não for executável, o status de retorno será 126.

Se um comando falhar devido a um erro durante a expansão ou o redirecionamento, o status de saída será maior que zero.

Os comandos internos do shell retornam um status 0 (verdadeiro) se for bem-sucedido e diferente de zero (falso) se ocorrer um erro durante a execução. Todos os componentes internos retornam um status de saída 2 para indicar o uso incorreto.

O próprio Bash retorna o status de saída do último comando executado, a menos que ocorra um erro de sintaxe; nesse caso, ele sai com um valor diferente de zero. Veja também o comando exit builtin abaixo.

Signals

Quando o bash é interativo, na ausência de interceptações, ele ignora o SIGTERM (para que kill 0 não mate um shell interativo) e o SIGINT é capturado e tratado (para que a espera incorporada seja interrompida). Em todos os casos, o bash ignora SIGQUIT . Se o controle do trabalho estiver em vigor, o bash ignorará SIGTTIN , SIGTTOU e SIGTSTP .

Comandos não integrados executados pelo bash têm manipuladores de sinal definidos para os valores herdados pelo shell de seu pai. Quando o controle da tarefa não está em vigor, os comandos assíncronos ignoram SIGINT e SIGQUIT , além desses manipuladores herdados. Os comandos executados como resultado da substituição de comando ignoram os sinais de controle de tarefa gerados pelo teclado SIGTTIN , SIGTTOU e SIGTSTP .

O shell sai por padrão após o recebimento de um SIGHUP . Antes de sair, um shell interativo reenvia o SIGHUP para todos os trabalhos, em execução ou interrompidos. Os trabalhos interrompidos são enviados SIGCONT para garantir que eles recebam o SIGHUP . Para impedir que o shell envie o sinal para um trabalho específico, ele deve ser removido da tabela de trabalhos com o renegado interno (consulte a seção ” Comandos internos do shell ” abaixo) ou marcado para não receber SIGHUP usando disown -h .

Se a opção de shell huponexit tiver sido definida com shopt , o bash enviará um SIGHUP para todas as tarefas quando um shell de logon interativo sair.

Se o bash estiver aguardando a conclusão de um comando e receber um sinal para o qual uma captura foi configurada, a captura não será executada até que o comando seja concluído. Quando o bash está aguardando um comando assíncrono via a espera incorporada, a recepção de um sinal para o qual uma captura foi configurada fará com que a espera retorne imediatamente com um status de saída maior que 128, imediatamente após o qual a captura é executada.

Controle de trabalho

O controle de tarefas refere-se à capacidade de parar (suspender) seletivamente a execução de processos e continuar (retomar) sua execução posteriormente. Um usuário normalmente emprega esse recurso por meio de uma interface interativa fornecida em conjunto pelo driver de terminal e bash do kernel do sistema operacional.

O shell associa um trabalho a cada pipeline. Ele mantém uma tabela de trabalhos em execução no momento, que pode ser listada com o comando jobs . Quando o bash inicia um trabalho de forma assíncrona (em segundo plano), ele imprime uma linha parecida com:

  [1] 25647

indicando que esse trabalho é o número 1 e que o ID do último processo no pipeline associado a esse trabalho é 25647 . Todos os processos em um único pipeline são membros do mesmo trabalho. O Bash usa a abstração do trabalho como base para o controle do trabalho.

Para facilitar a implementação da interface do usuário para o controle de tarefas, o sistema operacional mantém a noção de um ID do grupo de processos do terminal atual. Os membros desse grupo de processos (processos cujo ID do grupo de processos é igual ao atual ID do grupo de processos do terminal) recebem sinais gerados pelo teclado, como SIGINT . Diz-se que esses processos estão em primeiro plano. Processos em segundo plano são aqueles cujo ID do grupo de processos difere do terminal; esses processos são imunes aos sinais gerados pelo teclado. Somente processos em primeiro plano têm permissão para ler ou, se o usuário especificar com stty tostop, gravar no terminal. Os processos em segundo plano que tentam ler (gravar para quando stty tostop está em vigor) recebem um sinal SIGTTIN ( SIGTTOU ) pelo driver de terminal do kernel, que, a menos que seja capturado, suspende o processo.

Se o sistema operacional no qual o bash estiver em execução suportar o controle de tarefas, o bash conterá recursos para usá-lo. Digitar o caractere de suspensão (normalmente ^ Z , Control-Z ) enquanto um processo está em execução faz com que o processo seja parado e retorna o controle ao bash. Digitar o caractere de suspensão atrasada (normalmente ^ Y , Control-Y ) faz com que o processo seja interrompido quando ele tenta ler a entrada do terminal e o controle retornado ao bash. O usuário pode então manipular o estado desse trabalho, usando o comando bg para continuar em segundo plano, o comando fg para continuar em primeiro plano ou o comando kill para matá-lo. ^ Z entra em vigor imediatamente e tem o efeito colateral adicional de fazer com que a saída pendente e o cabeçote de impressão sejam descartados.

Existem várias maneiras de se referir a um trabalho no shell. O caractere % apresenta uma especificação de trabalho ( jobspec ). O número do trabalho n pode ser referido como % n . Um trabalho também pode ser referido usando um prefixo do nome usado para iniciá-lo ou uma substring que aparece em sua linha de comando. Por exemplo, % ce refere-se a um trabalho interrompido. Se um prefixo corresponder a mais de um trabalho, o bash reportará um erro. O uso de %? Ce , por outro lado, refere-se a qualquer trabalho que contenha a cadeia ce em sua linha de comando. Se a substring corresponder a mais de um trabalho, o bash reportará um erro. Os símbolos %% e % + referem-se à noção do shell do trabalho atual, que é o último trabalho parado enquanto estava em primeiro plano ou iniciado em segundo plano. O trabalho anterior pode ser referenciado usando % – . Se houver apenas um trabalho, % + e % – podem ser usados ​​para se referir a esse trabalho. Na saída referente aos trabalhos (por exemplo, a saída do comando jobs ), o trabalho atual é sempre marcado com um + e o trabalho anterior com um  . Um único % (sem especificação de trabalho que o acompanha) também se refere ao trabalho atual.

A nomeação de um trabalho pode ser usada para trazê-lo para o primeiro plano: % 1 é sinônimo de “fg% 1”, trazendo o trabalho 1 do segundo plano para o primeiro plano. Da mesma forma, ” % 1 & ” retoma a tarefa 1 em segundo plano, equivalente a ” bg% 1 “.

O shell aprende imediatamente sempre que um trabalho muda de estado. Normalmente, o bash aguarda até que esteja prestes a imprimir um prompt antes de relatar alterações no status de um trabalho para não interromper nenhuma outra saída. Se a opção -b para o comando set builtin estiver ativada, o bash reportará essas alterações imediatamente. Qualquer armadilha no SIGCHLD é executada para cada filho que sai.

Se uma tentativa de sair do bash for feita enquanto os trabalhos estiverem parados (ou, se a opção de shell checkjobs tiver sido ativada usando o shopt interno, em execução), o shell imprimirá uma mensagem de aviso e, se a opção checkjobs estiver ativada, listará os trabalhos e seus status. O comando jobs pode então ser usado para inspecionar seu status. Se uma segunda tentativa de saída for feita sem um comando intermediário, o shell não imprimirá outro aviso e os trabalhos interrompidos serão encerrados.

Prompting

Ao executar interativamente, o bash exibe o prompt primário PS1 quando estiver pronto para ler um comando, e o prompt secundário PS2 quando precisar de mais entradas para concluir um comando. O Bash permite que essas seqüências de caracteres de prompt sejam personalizadas inserindo vários caracteres especiais com escape de barra invertida que são decodificados da seguinte maneira:

\aum caractere de campainha ASCII (07)
\ da data no formato “Dia do mês da semana” (por exemplo, “terça-feira 26 de maio”)
\ D { format }o formato é passado para strftime e o resultado é inserido na string de prompt; um formato vazio resulta em uma representação de hora específica do código do idioma. As chaves são necessárias.
\ eum caractere de escape ASCII (033)
\ ho nome do host até o primeiro ‘.’
\ Ho nome do host
\ jo número de trabalhos atualmente gerenciados pelo shell
\Io nome base do nome do dispositivo terminal do shell
\ nnova linha
\ rretorno de carro
\ so nome do shell, o nome base de $ 0 (a parte após a barra final)
\ ta hora atual no formato HH: MM: SS de 24 horas
\ Ta hora atual no formato HH: MM: SS de 12 horas
\ @a hora atual no formato de 12 horas am / pm
\Aa hora atual no formato HH: MM de 24 horas
\uo nome de usuário do usuário atual
\ va versão do bash (por exemplo, 2,00)
\ Vo lançamento do bash, versão + nível de patch (por exemplo, 2.00.0)
\Wo diretório de trabalho atual, com $ HOME abreviado com um til (usa o valor da variável PROMPT_DIRTRIM )
\Wnome base do diretório de trabalho atual, com $ HOME abreviado com um til
\!o número do histórico deste comando
\ #o número do comando deste comando
\ $se o UID efetivo for 0, um # , caso contrário, um $
\ nnno caractere correspondente ao número octal nnn
\\uma barra invertida
\ [inicie uma sequência de caracteres não imprimíveis, que pode ser usada para incorporar uma sequência de controle de terminal no prompt.
\]finaliza uma sequência de caracteres não imprimíveis

O número do comando e o número do histórico geralmente são diferentes: o número do histórico de um comando é sua posição na lista do histórico, que pode incluir comandos restaurados do arquivo de histórico (consulte a seção ” Histórico “, abaixo), enquanto o número do comando é a posição na sequência de comandos executados durante a sessão atual do shell. Depois que a string é decodificada, ela é expandida via expansão de parâmetro, substituição de comando, expansão aritmética e remoção de cotação, sujeita ao valor da opção do prompt do prompt de comandos (consulte a descrição do comando shopt na seção ” Comandos internos do shell ” abaixo).

Leia a linha

Esta é a biblioteca que lida com a entrada de leitura ao usar um shell interativo, a menos que a opção –noediting seja fornecida na chamada do shell. A edição de linha também é usada ao usar a opção -e na leitura incorporada. Por padrão, os comandos de edição de linha são semelhantes aos do Emacs . Uma interface de edição de linha no estilo vi também está disponível. A edição de linha pode ser ativada a qualquer momento usando as opções -o emacs ou -o vi no conjunto interno (consulte a seção ” Comandos internos do shell ” abaixo). Para desativar a edição de linha depois que o shell estiver em execução, use as opções + o emacs ou + o vi no conjunto interno.

Notação Readline

Nesta seção, a notação no estilo Emacs é usada para indicar as teclas digitadas. As teclas de controle são indicadas pela tecla C , por exemplo, Cn significa Control-N . Da mesma forma, as meta chaves são indicadas pela tecla M , então Mx significa Meta-X . Nos teclados sem uma tecla meta, Mx significa ESC x , ou seja, pressione a tecla Escape e a tecla x . Isso faz do ESC o prefixo meta. A combinação MCx significa ESC-Control-x , ou pressione a tecla Escape e mantenha pressionada a tecla Control enquanto pressiona a tecla x .

Os comandos da linha de leitura podem receber argumentos numéricos, que normalmente atuam como uma contagem de repetição. Às vezes, porém, é o sinal do argumento que é significativo. Passar um argumento negativo para um comando que atua na direção para a frente (por exemplo, linha da morte ) faz com que esse comando atue na direção para trás. Os comandos cujo comportamento com argumentos se desvia disso são anotados abaixo.

Quando um comando é descrito como eliminador de texto, o texto excluído é salvo para possível recuperação futura (puxão). O texto morto é salvo em um anel de morte. Mortes consecutivas fazem com que o texto seja acumulado em uma unidade, que pode ser puxada de uma só vez. Os comandos que não matam texto separam os pedaços de texto no anel de matança.

Inicialização Readline

O Readline é personalizado, colocando comandos em um arquivo de inicialização (o arquivo inputrc ). O nome desse arquivo é obtido do valor da variável INPUTRC . Se essa variável não estiver definida, o padrão é ~ / .inputrc . Quando um programa que usa a biblioteca readline é iniciado, o arquivo de inicialização é lido e as associações de teclas e variáveis ​​são definidas. Existem apenas algumas construções básicas permitidas no arquivo de inicialização da linha de leitura. Linhas em branco são ignoradas. Linhas começando com um # são comentários. Linhas começando com $ indicam construções condicionais. Outras linhas indicam ligações de teclas e configurações variáveis.

As combinações de teclas padrão podem ser alteradas com um arquivo inputrc . Outros programas que usam essa biblioteca podem adicionar seus próprios comandos e ligações.

Por exemplo, colocando

  M-Control-u: argumento universal

ou

  C-Meta-u: Argumento universal

no inputrc , o MCu executaria o comando readline universal-argument .

Os seguintes nomes de caracteres simbólicos são reconhecidos: RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE e TAB .

Além dos nomes de comando, a linha de leitura permite que as teclas sejam vinculadas a uma sequência que é inserida quando a tecla é pressionada (uma macro ).

Ligações de teclas Readline

A sintaxe para controlar as combinações de teclas no arquivo inputrc é simples. Tudo o que é necessário é o nome do comando ou o texto de uma macro e uma sequência de teclas à qual ele deve estar vinculado. O nome pode ser especificado de duas maneiras: como um nome de chave simbólico, possivelmente com prefixos Meta ou Controle , ou como uma sequência de chaves.

Ao usar o formulário keyname: function-name ou macro, keyname é o nome de uma chave digitada em inglês. Por exemplo:

  Control-u: argumento universal Meta-Rubout: backward-kill-word Control-o: "> output"

No exemplo acima, Cu está vinculado à função argumento universal, M-DEL está vinculado à função backward-kill-word e Co é obrigado a executar a macro expressa no lado direito (ou seja, para inserir o texto ” > output ” na linha).

Na segunda forma, “keyseq”: nome da função ou macro , keyseq difere do nome da chave acima, pois as cadeias que indicam uma sequência de teclas inteira podem ser especificadas colocando-a entre aspas duplas. Algumas escapes de teclas no estilo GNU Emacs podem ser usadas, como no exemplo a seguir, mas os nomes de caracteres simbólicos não são reconhecidos.

  "\ Cu": argumento universal "\ Cx \ Cr": re-read-init-file "\ e [11 ~": "Tecla de função 1"

Neste exemplo, Cu é novamente vinculado à função argumento universal. Cx Cr é vinculado à função re-read-init-file , e ESC [1 1 ~ é vinculado para inserir o texto ” Function Key 1 “.

O conjunto completo de seqüências de escape no estilo GNU Emacs é

\ C-prefixo de controle
\ M-meta prefixo
\ eum caractere de escape
\\barra invertida
\ “literal 
\ ‘literal 

Além das seqüências de escape no estilo GNU Emacs, está disponível um segundo conjunto de escapes de barra invertida:

\aalerta (sino)
\ bbackspace
\ dexcluir
\ fformulário de alimentação
\ nnova linha
\ rretorno de carro
\ taba horizontal
\ vaba vertical
\ nnno caractere de oito bits cujo valor é o valor octal nnn (um a três dígitos)
\ xHHo caractere de oito bits cujo valor é o valor hexadecimal HH (um ou dois dígitos hexadecimais)

Ao inserir o texto de uma macro , aspas simples ou duplas devem ser usadas para indicar uma definição de macro. O texto não citado é considerado um nome de função. No corpo da macro, as escapes de barra invertida descritas acima são expandidas. A barra invertida citará qualquer outro caractere no texto da macro, incluindo  e  .

O Bash permite que as ligações de teclas da linha de leitura atuais sejam exibidas ou modificadas com o comando bind builtin. O modo de edição pode ser alternado durante o uso interativo usando a opção -o no comando set builtin (consulte a seção ” Comandos internos do shell ” abaixo).

Variáveis ​​Readline

O Readline possui variáveis ​​que podem ser usadas para personalizar ainda mais seu comportamento. Uma variável pode ser definida no arquivo inputrc com uma declaração do formulário.

  definir valor do nome da variável

Exceto quando indicado, as variáveis ​​de linha de leitura podem ativar ou desativar os valores (sem considerar o caso). Nomes de variáveis ​​não reconhecidos são ignorados. Quando um valor variável é lido, os valores vazios ou nulos “, on ” (sem distinção entre maiúsculas e minúsculas) e ” 1 ” são equivalentes a Ativado . Todos os outros valores são equivalentes a Desativado . As variáveis ​​e seus valores padrão são:

estilo sinoaudívelControla o que acontece quando a linha de leitura deseja tocar a campainha do terminal. Se definido como nenhum , a linha de leitura nunca toca a campainha. Se definido como visível , o readline usará uma campainha visível, se houver uma disponível. Se definido como audível , a linha de leitura tentará tocar a campainha do terminal.
bind-tty-special-charsEmSe definido como Ativado , a linha de leitura tentará vincular os caracteres de controle tratados especialmente pelo driver de terminal do kernel aos seus equivalentes de linha de leitura.
comentar-começar“#”A sequência que é inserida quando o comando readline insert-comment é executado. Este comando está vinculado a M- # no modo emacs e a # no modo de comando vi.
conclusão-ignorar-casoForaSe definido como Ativado , o readline executa a correspondência e a conclusão do nome do arquivo de maneira que não diferencia maiúsculas de minúsculas.
comprimento-prefixo-exibição-comprimento0 0O comprimento em caracteres do prefixo comum de uma lista de possíveis conclusões que é exibida sem modificação. Quando definido como um valor maior que zero, prefixos comuns maiores que esse valor são substituídos por reticências ao exibir possíveis conclusões.
itens de consulta de conclusão100Isso determina quando o usuário é consultado sobre a exibição do número de possíveis conclusões geradas pelo comando possíveis-conclusões. Pode ser definido como qualquer valor inteiro maior ou igual a zero. Se o número de conclusões possíveis for maior ou igual ao valor dessa variável, o usuário é perguntado se deseja ou não visualizá-las; caso contrário, eles estão listados no terminal.
convert-metaEmSe definido como Ativado , o readline converterá caracteres com o oitavo bit definido em uma sequência de teclas ASCII removendo o oitavo bit e prefixando um caractere de escape (na verdade, usando escape como o meta prefixo).
desativar conclusãoForaSe definido como Ativado , a linha de leitura inibirá a conclusão de palavras. Caracteres de conclusão serão inseridos na linha como se tivessem sido mapeados para inserção automática.
modo de ediçãoemacsControla se a linha de leitura começa com um conjunto de combinações de teclas semelhantes ao Emacs ou vi. o modo de edição pode ser definido como emacs ou vi .
caracteres de controle de ecoEmQuando definido como Ativado , nos sistemas operacionais que indicam que o suportam, a linha de leitura faz eco de um caractere correspondente a um sinal gerado pelo teclado.
enable-keypadForaQuando definido como Ativado , o readline tentará ativar o teclado do aplicativo quando for chamado. Alguns sistemas precisam disso para ativar as teclas de seta.
enable-meta-keyEmQuando definido como Ativado , o readline tentará habilitar qualquer tecla meta modificadora que o terminal reivindicar suportar quando for chamada. Em muitos terminais, a meta-chave é usada para enviar caracteres de oito bits.
expand-tilForaSe definido como Ativado , a expansão do til é executada quando a linha de leitura tenta concluir a palavra.
ponto de preservação da históriaForaSe definido como Ativado , o código do histórico tenta colocar o ponto no mesmo local em cada linha do histórico recuperada com o histórico anterior ou o histórico seguinte .
tamanho histórico0 0Defina o número máximo de entradas do histórico salvas na lista de histórico. Se definido como zero, o número de entradas na lista do histórico não será limitado.
modo de rolagem horizontalForaQuando definido como Ativado , faz com que a linha de leitura use uma única linha para exibição, rolando a entrada horizontalmente em uma única linha da tela quando ela se torna maior que a largura da tela em vez de agrupar em uma nova linha.
input-metaForaSe definido como Ativado , o readline ativará a entrada de oito bits (ou seja, não removerá o bit alto dos caracteres que lê), independentemente do que o terminal alega poder suportar. O nome meta-flag é um sinônimo para essa variável.
isearch-terminadores“C- [CJ”A sequência de caracteres que deve encerrar uma pesquisa incremental sem executar posteriormente o caractere como um comando. Se essa variável não receber um valor, os caracteres ESC e CJ encerrarão uma pesquisa incremental.
keymapemacsDefina o mapa de teclas da linha de leitura atual. O conjunto de nomes válidos de keymap é emacs , emacs-standard , emacs-meta , emacs-ctlx , vi , vi-command e vi-insert . vi é equivalente a vi-command ; O emacs é equivalente ao padrão emacs . O valor padrão é emacs ; o valor do modo de edição também afeta o mapa de teclas padrão.
diretórios de marcasEmSe definido como Ativado , os nomes de diretório completos terão uma barra anexada.
marcar linhas modificadasForaSe definido como Ativado , as linhas do histórico que foram modificadas são exibidas com um asterisco anterior ( * ).
marca-symlinked-diretóriosForaSe definido como Ativado , os nomes completos que são links simbólicos para os diretórios terão uma barra anexada (sujeita ao valor dos diretórios de marcas).
corresponder-arquivos-ocultosEmEssa variável, quando definida como Ativado , faz com que a linha de leitura corresponda aos arquivos cujos nomes começam com ‘ . ‘(arquivos ocultos) ao executar a conclusão do nome do arquivo. Se definido como Desligado , o líder ‘ . ‘deve ser fornecido pelo usuário no nome do arquivo para ser concluído.
menu-complete-display-prefixForaSe definido como Ativado , a conclusão do menu exibe o prefixo comum da lista de possíveis conclusões (que podem estar vazias) antes de percorrer a lista.
meta de saídaForaSe definido como Ativado , a linha de leitura exibirá caracteres com o oitavo bit definido diretamente, e não como uma sequência de escape com meta-prefixo.
conclusões de páginaEmSe definido como Ativado , o readline usa um pager interno semelhante para exibir uma tela cheia de conclusões possíveis por vez.
impressão-conclusões-horizontalmenteForaSe definido como Ativado , a linha de leitura exibirá conclusões com correspondências ordenadas horizontalmente em ordem alfabética, em vez de na tela.
reverter tudo em nova linhaForaSe definido como Ativado , o readline desfará todas as alterações nas linhas do histórico antes de retornar quando a linha de aceitação é executada. Por padrão, as linhas do histórico podem ser modificadas e manter listas individuais de desfazer nas chamadas para a linha de leitura.
mostre tudo se ambíguoForaIsso altera o comportamento padrão das funções de conclusão. Se definido como Ativado , as palavras com mais de uma conclusão possível fazem com que as correspondências sejam listadas imediatamente em vez de tocar a campainha.
mostre tudo se não for modificadoForaIsso altera o comportamento padrão das funções de conclusão de maneira semelhante a mostrar tudo se ambíguo . Se definido como Ativado , palavras com mais de uma conclusão possível sem conclusão parcial possível (as conclusões possíveis não compartilham um prefixo comum) fazem com que as correspondências sejam listadas imediatamente em vez de tocar a campainha.
pular texto completoForaSe definido como Ativado , isso altera o comportamento de conclusão padrão ao inserir uma única correspondência na linha. Só está ativo ao executar a conclusão no meio de uma palavra. Se ativada, a linha de leitura não insere caracteres da conclusão que correspondam aos caracteres após o ponto na palavra que está sendo concluída, portanto, partes da palavra após o cursor não são duplicadas.
Estatísticas visíveisForaSe definido como Ativado , um caractere que denota o tipo de arquivo, conforme relatado por stat, é anexado ao nome do arquivo ao listar possíveis conclusões.

Construções condicionais Readline

O Readline implementa um recurso semelhante em espírito aos recursos de compilação condicional do pré-processador C que permite que ligações de teclas e configurações variáveis ​​sejam executadas como resultado de testes. Existem quatro diretivas do analisador usadas.

$ seA construção $ if permite que as ligações sejam feitas com base no modo de edição, no terminal que está sendo usado ou no aplicativo usando a linha de leitura. O texto do teste se estende até o final da linha; nenhum caractere é necessário para isolá-lo.

modo

modo = forma da diretiva $ if é usado para testar se o readline está no modo emacs ou vi . Isso pode ser usado em conjunto com o comando set keymap, por exemplo, para definir ligações nos mapas de teclas emacs-standard e emacs-ctlx somente se o readline estiver iniciando no modo emacs.

prazo

termo = form pode ser usado para incluir ligações de teclas específicas do terminal, talvez para vincular as seqüências de teclas produzidas pelas teclas de função do terminal. A palavra no lado direito do = é testada com relação ao nome completo do terminal e à parte do nome do terminal antes do primeiro  . Isso permite que o sol corresponda ao sol e ao cmd do sol , por exemplo.

inscrição

A construção do aplicativo é usada para incluir configurações específicas do aplicativo. Cada programa que usa a biblioteca readline define o nome do aplicativo e um arquivo de inicialização pode testar um valor específico. Isso pode ser usado para vincular seqüências de teclas a funções úteis para um programa específico. Por exemplo, o comando a seguir adiciona uma sequência de teclas que cita a palavra atual ou anterior no bash:

  $ if Bash # Cite a palavra atual ou anterior "\ C-xq": "\ eb \" \ ef \ "" $ endif
$ endifEste comando, como visto no exemplo anterior, finaliza um comando $ if .
$ elseOs comandos nesta ramificação da diretiva $ if são executados se o teste falhar.
$ includeEssa diretiva usa um único nome de arquivo como argumento e lê comandos e ligações desse arquivo. Por exemplo, a seguinte diretiva seria / etc / inputrc:

  $ include / etc / inputrc

Procurando

O Readline fornece comandos para pesquisar no histórico de comandos (consulte a seção ” Histórico ” abaixo) as linhas que contêm uma sequência especificada. Existem dois modos de pesquisa: incremental e não incremental.

As pesquisas incrementais começam antes que o usuário termine de digitar a string de pesquisa. À medida que cada caractere da sequência de pesquisa é digitado, o readline exibe a próxima entrada do histórico correspondente à sequência digitada até o momento. Uma pesquisa incremental requer apenas o número de caracteres necessário para encontrar a entrada do histórico desejada. Os caracteres presentes no valor da variável isearch-terminators são usados ​​para finalizar uma pesquisa incremental. Se essa variável não tiver sido atribuída a um valor, os caracteres Escape e Control-J encerrarão uma pesquisa incremental. Control-G interromperá uma pesquisa incremental e restaurará a linha original. Quando a pesquisa é encerrada, a entrada do histórico que contém a sequência de pesquisa se torna a linha atual.

Para localizar outras entradas correspondentes na lista de histórico, digite Control-S ou Control-R conforme apropriado. Isso pesquisará para trás ou para frente no histórico a próxima entrada correspondente à sequência de pesquisa digitada até o momento. Qualquer outra sequência de teclas vinculada a um comando readline encerrará a pesquisa e executará esse comando. Por exemplo, uma nova linha encerrará a pesquisa e aceitará a linha, executando o comando da lista de histórico.

O Readline lembra a última cadeia de caracteres de pesquisa incremental. Se dois Control-Rs forem digitados sem nenhum caractere intermediário que defina uma nova sequência de caracteres de pesquisa, qualquer sequência de pesquisa lembrada será usada.

Pesquisas não incrementais leem toda a cadeia de pesquisa antes de começar a procurar linhas de histórico correspondentes. A sequência de pesquisa pode ser digitada pelo usuário ou fazer parte do conteúdo da linha atual.

Nomes de comando da linha de leitura

A seguir, é apresentada uma lista dos nomes dos comandos e das seqüências de teclas padrão às quais eles estão vinculados. Os nomes de comando sem uma sequência de teclas associada são ilimitados por padrão. Nas descrições a seguir, point refere-se à posição atual do cursor e mark refere-se a uma posição do cursor salva pelo comando set-mark . O texto entre o ponto e a marca é chamado de região .

Comandos para mover

início de linhaCaMover para o início da linha atual.
fim da linhaCeMover para o final da linha.
forward-charCfAvançar um personagem.
char para trásCbVoltar um personagem.
palavra para a frenteMfAvance para o final da próxima palavra. As palavras são compostas por caracteres alfanuméricos (letras e dígitos).
palavra inversaMbVolte para o início da palavra atual ou anterior. As palavras são compostas por caracteres alfanuméricos (letras e dígitos).
shell-forward-wordAvance para o final da próxima palavra. As palavras são delimitadas por metacaracteres de shell não citados.
shell-backward-wordVolte para o início da palavra atual ou anterior. As palavras são delimitadas por metacaracteres de shell não citados.
limpar telaClLimpe a tela deixando a linha atual na parte superior da tela. Com um argumento, atualize a linha atual sem limpar a tela.
redesenhar-linha-atualAtualize a linha atual.

Comandos para manipular a história

linha de aceitaçãoNova linha, retornoAceite a linha independentemente de onde o cursor estiver. Se essa linha não estiver vazia, adicione-a à lista de histórico de acordo com o estado da variável HISTCONTROL . Se a linha for uma linha do histórico modificada, restaure a linha do histórico ao seu estado original.
história anteriorCpBusque o comando anterior na lista de histórico, retornando à lista.
próxima históriaCnBusque o próximo comando da lista de histórico, avançando na lista.
início da históriaM- <Vá para a primeira linha do histórico.
fim da históriaM->Mover para o final do histórico de entrada, ou seja, a linha que está sendo inserida atualmente.
pesquisa reversa-históriaCrPesquise para trás, começando na linha atual e movendo-se ‘para cima’ pelo histórico, conforme necessário. Esta é uma pesquisa incremental.
histórico de pesquisa diretaCsProcure em frente, começando na linha atual e movendo-se ‘para baixo’ pelo histórico, conforme necessário. Esta é uma pesquisa incremental.
histórico de pesquisa reversa não incrementalMPPesquise para trás no histórico, começando na linha atual, usando uma pesquisa não incremental de uma sequência fornecida pelo usuário.
histórico de pesquisa direta não incrementalMnPesquise o histórico usando uma pesquisa não incremental de uma sequência fornecida pelo usuário.
histórico-pesquisa-encaminharProcure no histórico a seqüência de caracteres entre o início da linha atual e o ponto. Esta é uma pesquisa não incremental.
histórico-pesquisa-para trásPesquise para trás no histórico a sequência de caracteres entre o início da linha atual e o ponto. Esta é uma pesquisa não incremental.
yank-nth-argMCyInsira o primeiro argumento no comando anterior (geralmente a segunda palavra na linha anterior) no ponto. Com um argumento n , insira a enésima palavra do comando anterior (as palavras no comando anterior começam com a palavra 0). Um argumento negativo insere a enésima palavra do final do comando anterior. Depois que o argumento n é calculado, o argumento é extraído como se a expansão do histórico ” ! N ” tivesse sido especificada.
yank-last-argMILÍMETROS-_Insira o último argumento no comando anterior (a última palavra da entrada do histórico anterior). Com um argumento numérico, comporte-se exatamente como yank-nth-arg . As chamadas sucessivas para yank-last-arg retornam pela lista do histórico, inserindo a última palavra (ou a palavra especificada pelo argumento da primeira chamada) de cada linha. Qualquer argumento numérico fornecido para essas chamadas sucessivas determina a direção a ser percorrida no histórico. Um argumento negativo alterna a direção no histórico (para trás ou para frente). As instalações de expansão do histórico são usadas para extrair o último argumento, como se a expansão do histórico ” ! $ ” Tivesse sido especificada.
shell-expand-lineMCeExpanda a linha como o shell faz. Isso executa expansão de alias e histórico, bem como todas as expansões de palavras shell. Consulte a seção ” Expansão do histórico ” abaixo para obter uma descrição da expansão do histórico.
history-expand-lineM- ^Execute a expansão do histórico na linha atual. Consulte a seção ” Expansão do histórico ” abaixo para obter uma descrição da expansão do histórico.
espaço mágicoExecute a expansão do histórico na linha atual e insira um espaço. Consulte a seção ” Expansão do histórico ” abaixo para obter uma descrição da expansão do histórico.
alias-expand-lineExecute a expansão do alias na linha atual. Consulte a seção ” Aliases ” acima para obter uma descrição da expansão do alias.
history-and-alias-expand-lineRealize expansão de histórico e alias na linha atual.
inserir o último argumentoMILÍMETROS-_Um sinônimo para yank-last-arg .
operar e obter o próximoCoAceite a linha atual para execução e busque a próxima linha relativa à linha atual no histórico para edição. Qualquer argumento é ignorado.
comando editar-e-executarC-xC-eChame um editor na linha de comando atual e execute o resultado como comandos do shell. O Bash tenta chamar $ VISUAL , $ EDITOR e emacs como editor, nessa ordem.

Comandos para alterar texto

delete-charCDExclua o caractere no ponto . Se o ponto estiver no início da linha, não há caracteres na linha e o último caractere digitado não foi vinculado ao delete-char , em seguida, retorne o EOF.
backward-delete-charRuboutExclua o caractere atrás do cursor. Quando receber um argumento numérico, salve o texto excluído no anel de interrupção.
frente-para trás-excluir-charExclua o caractere sob o cursor, a menos que o cursor esteja no final da linha; nesse caso, o caractere atrás do cursor será excluído.
inserção entre aspasCq, CvAdicione o próximo caractere digitado na linha literalmente. É assim que se insere caracteres como Cq, por exemplo.
inserção de tabulaçãoCv TABInsere um caractere de tabulação.
auto-inserçãoa, b, A, 1,!, …Insira o caractere digitado.
transpose-charsCtArraste o caractere antes do ponto para a frente sobre o personagem no ponto , movendo o ponto para a frente também. Se o ponto estiver no final da linha, isso transpõe os dois caracteres antes do ponto . Argumentos negativos não têm efeito.
palavras de transposiçãoMtArraste a palavra antes do ponto após a palavra após o ponto , movendo o ponto sobre a palavra também. Se o ponto estiver no final da linha, isso transpõe as duas últimas palavras da linha.
palavra em maiúsculaMuColoque em maiúscula a palavra atual (ou a seguir). Com um argumento negativo, coloque a palavra anterior em maiúscula, mas não mova o ponto .
palavra minúsculaMlMinúscula a palavra atual (ou a seguir). Com um argumento negativo, minúscula a palavra anterior, mas não mova o ponto .
maiúsculaMcColoque em maiúscula a palavra atual (ou a seguir). Com um argumento negativo, coloque em maiúscula a palavra anterior, mas não mova o ponto .
modo de substituiçãoAlterne para o modo de substituição. Com um argumento numérico positivo explícito, alterna para o modo de substituição. Com um argumento numérico não positivo explícito, alterna para o modo de inserção. Este comando afeta apenas o modo emacs; O modo vi substitui de maneira diferente. Cada chamada para readline () inicia no modo de inserção. No modo de substituição, os caracteres vinculados à inserção automática substituem o texto no ponto em vez de empurrá-lo para a direita. Os caracteres vinculados a backward-delete-char substituem o caractere antes do ponto por um espaço. Por padrão, este comando é ilimitado.

Matar e puxar

linha da morteCkMate o texto do ponto ao final da linha.
retroceder-matar-linhaCx RuboutMate de volta para o início da linha.
descarte de linha unixCuMate para trás do ponto até o início da linha. O texto morto é salvo no anel de morte.
matar toda a linhaMate todos os personagens da linha atual, não importa onde esteja.
palavra de matarMdMate do ponto até o final da palavra atual, ou se estiver entre as palavras, até o final da próxima palavra. Os limites das palavras são os mesmos que os usados ​​pela palavra direta.
palavra para trásM-RuboutMate a palavra por trás do ponto . Os limites das palavras são os mesmos que os usados ​​pela palavra inversa.
palavra da cascaMdMate do ponto até o final da palavra atual, ou se estiver entre as palavras, até o final da próxima palavra. Os limites da palavra são os mesmos que os usados ​​pela shell-forward-word .
shell-backward-kill-wordM-RuboutMate a palavra por trás do ponto . Os limites das palavras são os mesmos que os usados ​​pela palavra com inversão de shell .
unix-word-ruboutCwMate a palavra por trás do ponto , usando o espaço em branco como limite da palavra. O texto morto é salvo no anel de morte.
unix-filename-ruboutMate a palavra por trás do ponto , usando espaço em branco e o caractere de barra como os limites da palavra. O texto morto é salvo no anel de morte.
delete-horizontal-spaceM- \Exclua todos os espaços e guias ao redor do ponto .
região da matançaMate o texto na região atual.
copiar região como matarCopie o texto na região para o buffer de interrupção.
copiar para trásCopie a palavra antes do ponto para o buffer de interrupção. Os limites da palavra são os mesmos da palavra inversa .
copiar para a frenteCopie a palavra seguinte para o buffer de interrupção. Os limites da palavra são os mesmos da palavra direta .
puxãoCyArranque o topo do anel de matança no buffer no ponto .
yank-popMinhasGire o anel de abate e puxe o novo topo. Funciona apenas após puxar ou puxar-pop .

Argumentos numéricos

dígito-argumentoM-0, M-1, …, M–Adicione esse dígito ao argumento já acumulando ou inicie um novo argumento. M– inicia um argumento negativo.
argumento universalEssa é outra maneira de especificar um argumento. Se este comando for seguido por um ou mais dígitos, opcionalmente com um sinal de menos, esses dígitos definirão o argumento. Se o comando for seguido por dígitos, a execução do argumento universal novamente encerrará o argumento numérico, mas será ignorado. Como um caso especial, se esse comando for imediatamente seguido por um caractere que não seja um dígito ou um sinal de menos, a contagem de argumentos para o próximo comando será multiplicada por quatro. A contagem de argumentos é inicialmente uma, portanto, executar esta função na primeira vez faz com que o argumento conte quatro, uma segunda vez faz com que o argumento conte dezesseis e assim por diante.

Concluindo

completoABATente executar a conclusão do texto antes do ponto . O Bash tenta concluir tratando o texto como uma variável (se o texto começar com $ ), nome de usuário (se o texto começar com ~ ), nome do host (se o texto começar com @ ) ou comando (incluindo aliases e funções). Se nada disso produzir uma correspondência, a conclusão do nome do arquivo será tentada.
possíveis conclusõesM-?Liste as possíveis conclusões do texto antes do ponto.
inserir-conclusõesM- *Inserir todas as conclusões do texto antes do ponto que teria sido gerado por possíveis conclusões.
menu completoÉ semelhante à conclusão , mas substitui a palavra a ser concluída por uma única correspondência da lista de possíveis conclusões. Execução repetida de etapas de conclusão do menu na lista de possíveis conclusões, inserindo cada correspondência por vez. No final da lista de conclusões, a campainha é tocada (sujeita à configuração do estilo de campainha) e o texto original é restaurado. Um argumento de n move n posições para a frente na lista de correspondências; um argumento negativo pode ser usado para retroceder na lista. Este comando deve ser vinculado ao TAB , mas é ilimitado por padrão.
menu-completo-para trásIdêntico ao menu completo , mas retrocede na lista de possíveis conclusões, como se o menu completo tivesse recebido um argumento negativo. Este comando é ilimitado por padrão.
delete-char-or-listExclui o caractere sob o cursor, se não estiver no início ou no final da linha (como delete-char ). Se no final da linha, se comportar de forma idêntica às possíveis conclusões . Este comando é ilimitado por padrão.
complete-filenameM- /Tente concluir o nome do arquivo no texto antes do ponto.
nome-do-arquivo-possíveis-conclusõesCx /Liste as possíveis conclusões do texto antes do ponto , tratando-o como um nome de arquivo.
complete-usernameM- ~Tente concluir o texto antes do ponto , tratando-o como um nome de usuário.
possíveis-username-completationsCx ~Liste as possíveis conclusões do texto antes do ponto , tratando-o como um nome de usuário.
variável completaM- $Tente concluir o texto antes do ponto , tratando-o como uma variável de shell.
possíveis variáveis ​​variáveisCx $Liste as possíveis conclusões do texto antes do ponto, tratando-o como uma variável de shell.
complete-hostnameM-@Tente concluir o texto antes do ponto , tratando-o como um nome de host.
possíveis-nome-do-host-conclusõesCx @Liste as possíveis conclusões do texto antes do ponto , tratando-o como um nome de host.
comando completoM-!Tente concluir o texto antes do ponto , tratando-o como um nome de comando. A conclusão do comando tenta combinar o texto com aliases, palavras reservadas, funções do shell, recursos internos do shell e finalmente nomes de arquivos executáveis, nessa ordem.
conclusões possíveis de comandoCx!Liste as possíveis conclusões do texto antes do ponto , tratando-o como um nome de comando.
dinâmica-completa-históriaM-TABTente concluir o texto antes do ponto , comparando o texto com as linhas da lista de histórico para possíveis correspondências de conclusão.
dabbrev-expandTente concluir o menu no texto anterior ao ponto, comparando o texto com as linhas da lista de histórico para possíveis correspondências de conclusão.
aparelho completoM- {Execute a conclusão do nome do arquivo e insira a lista de possíveis conclusões entre chaves, para que a lista fique disponível para o shell (consulte a seção ” Expansão de chaves” acima).

Keyboard macros

start-kbd-macroCx (Begin saving the characters typed into the current keyboard macro.
end-kbd-macroCx )Stop saving the characters typed into the current keyboard macro and store the definition.
call-last-kbd-macroCx eRe-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard.

Diversos

re-read-init-fileCx CrRead in the contents of the inputrc file, and incorporate any bindings or variable assignments found there.
abortCgAbort the current editing command and ring the terminal’s bell (subject to the setting of bell-style).
do-uppercase-versionMa, Mb, Mx, …If the metafied character x is lowercase, run the command that is bound to the corresponding uppercase character.
prefix-metaESCMetafy the next character typed. ESC f is equivalent to Meta-f .
desfazerC-_, Cx CuIncremental undo, separately remembered for each line.
revert-lineSrUndo all changes made to this line. This is like executing the undo command enough times to return the line to its initial state.
tilde-expandM-&Perform tilde expansion on the current word.
set-markC-@ , M-<space>Set the mark to the point. If a numeric argument is supplied, the mark is set to that position.
exchange-point-and-markCx CxSwap the point with the mark. The current cursor position is set to the saved position, and the old cursor position is saved as the mark.
character-search(C-]A character is read and point is moved to the next occurrence of that character. A negative count searches for previous occurrences.
character-search-backwardMC-]A character is read and point is moved to the previous occurrence of that character. A negative count searches for subsequent occurrences.
skip-csi-sequenceRead enough characters to consume a multi-key sequence such as those defined for keys like Home and End . Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[ . If this sequence is bound to ” \[ “, keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[ .
insert-commentM-#Without a numeric argument, the value of the readline comment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value of comment-begin , the value is inserted, otherwise the characters in comment-begin are deleted from the beginning of the line. In either case, the line is accepted as if a newline had been typed. The default value of comment-begin causes this command to make the current line a shell comment. If a numeric argument causes the comment character to be removed, the line will be executed by the shell.
glob-complete-wordMgThe word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to generate a list of matching file names for possible completions.
glob-expand-wordCx *The word before point is treated as a pattern for pathname expansion, and the list of matching file names is inserted, replacing the word. If a numeric argument is supplied, an asterisk is appended before pathname expansion.
glob-list-expansionsCx gThe list of expansions that would have been generated by glob-expand-word is displayed, and the line is redrawn. If a numeric argument is supplied, an asterisk is appended before pathname expansion.
dump-functionsPrint all of the functions and their key bindings to the readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an inputrc file.
dump-variablesPrint all of the set -able readline variables and their values to the readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an inputrc file.
dump-macrosPrint all of the readline key sequences bound to macros and the strings they output. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an inputrc file.
display-shell-versionCx CvDisplay version information about the current instance of bash.

Programmable completion

When word completion is attempted for an argument to a command for which a completion specification (a compspec ) has been defined using the complete builtin (see the section ” Shell Builtin Commands ” below), the programmable completion facilities are invoked.

First, the command name is identified. If the command word is the empty string (completion attempted at the beginning of an empty line), any compspec defined with the -E option to complete is used. If a compspec has been defined for that command, the compspec is used to generate the list of possible completions for the word. If the command word is a full pathname, a compspec for the full pathname is searched for first. If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec , any compspec defined with the -D option to complete is used as the default.

Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default bash completion as described above under Completing is performed.

First, the actions specified by the compspec are used. Only matches which are prefixed by the word being completed are returned. When the -f or -d option is used for filename or directory name completion, the shell variable FIGNORE is used to filter the matches.

Any completions specified by a pathname expansion pattern to the -G option are generated next. The words generated by the pattern need not match the word being completed. The GLOBIGNORE shell variable is not used to filter the matches, but the FIGNORE variable is used.

Next, the string specified as the argument to the -W option is considered. The string is first split using the characters in the IFS special variable as delimiters. Shell quoting is honored. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, as described above under the section ” Expansion .” The results are split using the rules described above under the section ” Word Splitting .” The results of the expansion are prefix-matched against the word being completed, and the matching words become the possible completions.

After these matches have been generated, any shell function or command specified with the -F and -C options is invoked. When the command or function is invoked, the COMP_LINE , COMP_POINT , COMP_KEY , and COMP_TYPE variables are assigned values as described above under the section ” Shell Variables .” If a shell function is being invoked, the COMP_WORDS and COMP_CWORD variables are also set. When the function or command is invoked, the first argument is the name of the command whose arguments are being completed, the second argument is the word being completed, and the third argument is the word preceding the word being completed on the current command line. No filtering of the generated completions against the word being completed is performed; the function or command has complete freedom in generating the matches.

Any function specified with -F is invoked first. The function may use any of the shell facilities, including the compgen builtin described below, to generate the matches. It must put the possible completions in the COMPREPLY array variable.

Next, any command specified with the -C option is invoked in an environment equivalent to command substitution. It should print a list of completions, one per line, to the standard output. Backslash may be used to escape a newline, if necessary.

After all of the possible completions are generated, any filter specified with the -X option is applied to the list. The filter is a pattern as used for pathname expansion; a & in the pattern is replaced with the text of the word being completed. A literal & may be escaped with a backslash; the backslash is removed before attempting a match. Any completion that matches the pattern will be removed from the list. A leading ! negates the pattern; in this case any completion not matching the pattern will be removed.

Finally, any prefix and suffix specified with the -P and -S options are added to each member of the completion list, and the result is returned to the readline completion code as the list of possible completions.

If the previously-applied actions do not generate any matches, and the -o dirnames option was supplied to complete when the compspec was defined, directory name completion is attempted.

If the -o plusdirs option was supplied to complete when the compspec was defined, directory name completion is attempted and any matches are added to the results of the other actions.

By default, if a compspec is found, whatever it generates is returned to the completion code as the full set of possible completions. The default bash completions are not attempted, and the readline default of filename completion is disabled. If the -o bashdefault option was supplied to complete when the compspec was defined, the bash default completions are attempted if the compspec generates no matches. If the -o default option was supplied to complete when the compspec was defined, readline’s default completion will be performed if the compspec (and, if attempted, the default bash completions) generate no matches.

When a compspec indicates that directory name completion is desired, the programmable completion functions force readline to append a slash to completed names which are symbolic links to directories, subject to the value of the mark-directories readline variable, regardless of the setting of the mark-symlinked-directories readline variable.

There is some support for dynamically modifying completions. This is most useful when used in combination with a default completion specified with complete -D . It’s possible for shell functions executed as completion handlers to indicate that completion should be retried by returning an exit status of 124. If a shell function returns 124, and changes the compspec associated with the command on which completion is being attempted (supplied as the first argument when the function is executed), programmable completion restarts from the beginning, with an attempt to find a new compspec for that command. This allows a set of completions to be built dynamically as completion is attempted, rather than being loaded all at once.

For instance, assuming that there is a library of compspecs , each kept in a file corresponding to the name of the command, the following default completion function would load completions dynamically:

 _completion_loader()
 {
      . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
 }
complete -D -F _completion_loader

História

When the -o history option to the set builtin is enabled, the shell provides access to the command history, the list of commands previously typed. The value of the HISTSIZE variable is used as the number of commands to save in a history list. The text of the last HISTSIZE commands (default 500) is saved. The shell stores each command in the history list prior to parameter and variable expansion (see the section ” Expansion ” above) but after history expansion is performed, subject to the values of the shell variables HISTIGNORE and HISTCONTROL .

On startup, the history is initialized from the file named by the variable HISTFILE (default ~/.bash_history ). The file named by the value of HISTFILE is truncated, if necessary, to contain no more than the number of lines specified by the value of HISTFILESIZE . When the history file is read, lines beginning with the history comment character followed immediately by a digit are interpreted as timestamps for the preceding history line. These timestamps are optionally displayed depending on the value of the HISTTIMEFORMAT variable. When an interactive shell exits, the last $HISTSIZE lines are copied from the history list to $HISTFILE . If the histappend shell option is enabled (see the description of shopt under the section ” Shell Builtin Commands ” below), the lines are appended to the history file, otherwise the history file is overwritten. If HISTFILE is unset, or if the history file is unwritable, the history is not saved. If the HISTTIMEFORMAT variable is set, time stamps are written to the history file, marked with the history comment character, so they may be preserved across shell sessions. This uses the history comment character to distinguish timestamps from other history lines. After saving the history, the history file is truncated to contain no more than HISTFILESIZE lines. If HISTFILESIZE is not set, no truncation is performed.

The builtin command fc (see the ” Shell Builtin Commands ” section below) may be used to list or edit and re-execute a portion of the history list. The history builtin may be used to display or modify the history list and manipulate the history file. When using command-line editing, search commands are available in each editing mode that provide access to the history list.

The shell allows control over which commands are saved on the history list. The HISTCONTROL and HISTIGNORE variables may be set to cause the shell to save only a subset of the commands entered. The cmdhist shell option, if enabled, causes the shell to attempt to save each line of a multi-line command in the same history entry, adding semicolons where necessary to preserve syntactic correctness. The lithist shell option causes the shell to save the command with embedded newlines instead of semicolons. See the description of the shopt builtin below under the section ” Shell Builtin Commands ” for information on set ting and unset ting shell options.

History expansion

The shell supports a history expansion feature that is similar to the history expansion in csh . This section describes what syntax features are available. This feature is enabled by default for interactive shells, and can be disabled using the +H option to the set builtin command (see the section ” Shell Builtin Commands ” below). Non-interactive shells do not perform history expansion by default.

History expansions introduce words from the history list into the input stream, making it easy to repeat commands, insert the arguments to a previous command into the current input line, or fix errors in previous commands quickly.

History expansion is performed immediately after a complete line is read, before the shell breaks it into words. It takes place in two parts. The first is to determine which line from the history list to use during substitution. The second is to select portions of that line for inclusion into the current one. The line selected from the history is the event, and the portions of that line that are acted upon are words. Various modifiers are available to manipulate the selected words. The line is broken into words in the same fashion as when reading input, so that several metacharacter-separated words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the history expansion character, which is ! por padrão. Only backslash ( \ ) and single quotes can quote the history expansion character.

Several characters inhibit history expansion if found immediately following the history expansion character, even if it is unquoted: space , tab , newline , carriage return , and = . If the extglob shell option is enabled, ( will also inhibit expansion.

Several shell options settable with the shopt builtin may be used to tailor the behavior of history expansion. If the histverify shell option is enabled (see the description of the shopt builtin below), and readline is being used, history substitutions are not immediately passed to the shell parser. Instead, the expanded line is reloaded into the readline editing buffer for further modification. If readline is being used, and the histreedit shell option is enabled, a failed history substitution will be reloaded into the readline editing buffer for correction. The -p option to the history builtin command may be used to see what a history expansion will do before using it. The -s option to the history builtin may be used to add commands to the end of the history list without actually executing them, so that they are available for subsequent recall.

The shell allows control of the various characters used by the history expansion mechanism (see the description of histchars above under the section ” Shell Variables “). The shell uses the history comment character to mark history timestamps when writing the history file.

Event designators

An event designator is a reference to a command line entry in the history list. Unless the reference is absolute, events are relative to the current position in the history list.

!Start a history substitution, except when followed by a blank , newline , carriage return , = or ( (when the extglob shell option is enabled using the shopt builtin).
!nRefer to command line n .
!-nRefer to the current command minus n .
!!Refer to the previous command. This is a synonym for ‘ !-1 ‘.
!stringRefer to the most recent command preceding the current position in the history list starting with string.
!?string[?]Refer to the most recent command preceding the current position in the history list containing string. The trailing ? may be omitted if string is followed immediately by a newline.
^string1^string2^Quick substitution. Repeat the previous command, replacing string1 with string2 . Equivalent to ” !!:s/string1/string2/ ” (see Modifiers below).
!#The entire command line typed so far.

Word designators

Word designators are used to select desired words from the event. A : separates the event specification from the word designator. It may be omitted if the word designator begins with a ^ , $ , * ,  , or % . Words are numbered from the beginning of the line, with the first word being denoted by 0 (zero). Words are inserted into the current line separated by single spaces.

0 0The zeroth word. For the shell, this is the command word.
nThe n th word.
^The first argument. That is, word 1 .
$The last argument.
%The word matched by the most recent ‘ ?string? ‘ search.
xyA range of words; ‘ -y ‘ abbreviates ‘ 0-y ‘.
*All of the words but the zeroth. This is a synonym for ‘ 1-$ ‘. It is not an error to use * if there is just one word in the event; the empty string is returned in that case.
x*Abbreviates x-$ .
x-Abbreviates x-$ like x* , but omits the last word.

If a word designator is supplied without an event specification, the previous command is used as the event.

Modificadores

After the optional word designator, there may appear a sequence of one or more of the following modifiers , each preceded by a ‘ : ‘.

hRemove a trailing file name component, leaving only the head.
tRemove all leading file name components, leaving the tail.
rRemove a trailing suffix of the form .xxx , leaving the basename.
eRemove all but the trailing suffix.
pPrint the new command but do not execute it.
qQuote the substituted words, escaping further substitutions.
xQuote the substituted words as with q , but break into words at blanks and newlines.
s/old/new/Substitute new for the first occurrence of old in the event line. Any delimiter can be used in place of / . The final delimiter is optional if it is the last character of the event line. The delimiter may be quoted in old and new with a single backslash. If & appears in new , it is replaced by old . A single backslash will quote the & . If old is null, it is set to the last old substituted, or, if no previous history substitutions took place, the last string in a !?string[?] search.
&Repeat the previous substitution.
gCause changes to be applied over the entire event line. This is used in conjunction with ‘ :s ‘ (eg, ‘ :gs/old/new/ ‘) or ‘ :& ‘. If used with ‘ :s ‘, any delimiter can be used in place of / , and the final delimiter is optional if it is the last character of the event line. An a may be used as a synonym for g .
GApply the following ‘ s ‘ modifier once to each word in the event line.

Shell builtin commands

Unless otherwise noted, each builtin command documented in this section as accepting options preceded by  accepts  to signify the end of the options. The : , true , false , and test builtins do not accept options and do not treat  specially. The exit , logout , break , continue , let , and shift builtins accept and process arguments beginning with  without requiring  . Other builtins that accept arguments but are not specified as accepting options interpret arguments beginning with  as invalid options and require  to prevent this interpretation.

: [ arguments ]No effect; the command does nothing beyond expanding arguments and performing any specified redirections. A zero exit code is returned.
. filename [ arguments ]

source filename [ arguments ]

Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename . If filename does not contain a slash, file names in PATH are used to find the directory containing filename . The file searched for in PATH need not be executable. When bash is not in posix mode, the current directory is searched if no file is found in PATH . If the sourcepath option to the shopt builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename is not found or cannot be read.
alias [-p] [ name [= value ] …]Alias with no arguments or with the -p option prints the list of aliases in the form alias name=value on standard output. When arguments are supplied, an alias is defined for each name whose value is given. A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded. For each name in the argument list for which no value is supplied, the name and value of the alias is printed. Alias returns true unless a name is given for which no alias has been defined.
bg [ jobspec …]Resume each suspended job jobspec in the background, as if it had been started with & . If jobspec is not present, the shell’s notion of the current job is used. bg jobspec returns 0 unless run when job control is disabled or, when run with job control enabled, any specified jobspec was not found or was started without job control.
bind [ -m keymap ] [ -lpsvPSV ]

bind [ -m keymap ] [ -q function ] [ -u function ] [ -r keyseq ]

bind [ -m keymap ] -f filename

bind [ -m keymap ] -x keyseq : shell-command

bind [ -m keymap ] keyseq : function-name

bind readline-command

Display current readline key and function bindings, bind a key sequence to a readline function or macro, or set a readline variable. Each non-option argument is a command as it would appear in .inputrc , but each binding or command must be passed as a separate argument; eg, ‘ “\Cx\Cr”: re-read-init-file ‘. Options, if supplied, have the following meanings:

-m keymap

Use keymap as the keymap to be affected by the subsequent bindings. Acceptable keymap names are emacs , emacs-standard , emacs-meta , emacs-ctlx , vi , vi-move , vi-command , and vi-insert . vi is equivalent to vi-command ; emacs is equivalent to emacs-standard .

-eu

List the names of all readline functions.

-p

Display readline function names and bindings in such a way that they can be re-read.

-P

List current readline function names and bindings.

-s

Display readline key sequences bound to macros and the strings they output in such a way that they can be re-read.

-S

Display readline key sequences bound to macros and the strings they output.

-v

Display readline variable names and values in such a way that they can be re-read.

-V

List current readline variable names and values.

-f filename

Read key bindings from filename .

-q function

Query about which keys invoke the named function.

-u function

Unbind all keys bound to the named function.

-r keyseq

Remove any current binding for keyseq .

-x keyseq:shell-command

Cause shell-command to be executed whenever keyseq is entered. When shell-command is executed, the shell sets the READLINE_LINE variable to the contents of the readline line buffer and the READLINE_POINT variable to the current location of the insertion point. If the executed command changes the value of READLINE_LINE or READLINE_POINT , those new values will be reflected in the editing state.

The return value is 0 unless an unrecognized option is given or an error occurred.

break [ n ]Exit from within a for , while , until , or select loop. If n is specified, break n levels. n must be ≥ 1. If n is greater than the number of enclosing loops, all enclosing loops are exited. The return value is 0 unless n is not greater than or equal to 1.
builtin shell-builtin [ arguments ]Execute the specified shell builtin, passing it arguments, and return its exit status. This is useful when defining a function whose name is the same as a shell builtin, retaining the functionality of the builtin within the function. The cd builtin is commonly redefined this way. The return status is false if shell-builtin is not a shell builtin command.
caller [ expr ]Returns the context of any active subroutine call (a shell function or a script executed with the . or source builtins). Without expr , caller displays the line number and source filename of the current subroutine call. If a non-negative integer is supplied as expr , caller displays the line number, subroutine name, and source file corresponding to that position in the current execution call stack. This extra information may be used, for example, to print a stack trace. The current frame is frame 0. The return value is 0 unless the shell is not executing a subroutine call or expr does not correspond to a valid position in the call stack.
cd [ -L |[ -P [ -e ]]] [ dir ]Change the current directory to dir . The variable HOME is the default dir. The variable CDPATH defines the search path for the directory containing dir . Alternative directory names in CDPATH are separated by a colon ( : ). A null directory name in CDPATH is the same as the current directory, ie, ” . “. If dir begins with a slash ( / ), then CDPATH is not used. The -P option says to use the physical directory structure instead of following symbolic links (see also the -P option to the set builtin command); the -L option forces symbolic links to be followed. If the -e option is supplied with -P , and the current working directory cannot be successfully determined after a successful directory change, cd will return an unsuccessful status. An argument of  is equivalent to $OLDPWD . If a non-empty directory name from CDPATH is used, or if  is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output. The return value is true if the directory was successfully changed; false caso contrário.
command [ -pVv ]

command [ arg …]

Run command with args suppressing the normal shell function lookup. Only builtin commands or commands found in the PATH are executed. If the -p option is given, the search for command is performed using a default value for PATH that is guaranteed to find all of the standard utilities. If either the -V or -v option is supplied, a description of command is printed. The -v option causes a single word indicating the command or file name used to invoke command to be displayed; the -V option produces a more verbose description. If the -V or -v option is supplied, the exit status is 0 if command was found, and 1 if not. If neither option is supplied and an error occurred or command cannot be found, the exit status is 127. Otherwise, the exit status of the command builtin is the exit status of command.
compgen [ option ] [ word ]Generate possible completion matches for word according to the options, which may be any option accepted by the complete builtin with the exception of -p and -r , and write the matches to the standard output. When using the -F or -C options, the various shell variables set by the programmable completion facilities, while available, will not have useful values.

The matches will be generated in the same way as if the programmable completion code had generated them directly from a completion specification with the same flags. If word is specified, only those completions matching word will be displayed.

The return value is true unless an invalid option is supplied, or no matches were generated.

complete [ -abcdefgjksuv ] [ -o comp-option ] [ -DE ] [ -A action ] [ -G globpat ] [ -W wordlist ] [ -F function ] [ -C command ] [ -X filterpat ] [ -P prefix ] [ -S suffix ] name [ name …]

complete -pr [ -DE ] [ name …]

Specify how arguments to each name should be completed. If the -p option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to be reused as input. The -r option removes a completion specification for each name , or, if no name s are supplied, all completion specifications. The -D option indicates that the remaining options and actions should apply to the “default” command completion; that is, completion attempted on a command for which no completion has previously been defined. The -E option indicates that the remaining options and actions should apply to “empty” command completion; that is, completion attempted on a blank line.

The process of applying these completion specifications when word completion is attempted is described above under the section ” Programmable Completion .”

Other options, if specified, have the following meanings. The arguments to the -G , -W , and -X options (and, if necessary, the -P and -S options) should be quoted to protect them from expansion before the complete builtin is invoked.

-o comp-option

The comp-option controls several aspects of the compspec’s behavior beyond the simple generation of completions. The comp-option may be one of:

bashdefault : Perform the rest of the default bash completions if the compspec generates no matches.

default : Use readline’s default filename completion if the compspec generates no matches.

dirnames : Perform directory name completion if the compspec generates no matches.

filenames : Tell readline that the compspec generates filenames, so it can perform any filename-specific processing (like adding a slash to directory names, quoting special characters, or suppressing trailing spaces). Intended to be used with shell functions.

nospace : Tell readline not to append a space (the default) to words completed at the end of the line.

plusdirs : After any matches defined by the compspec are generated, directory name completion is attempted and any matches are added to the results of the other actions.

-A action

The action may be one of the following to generate a list of possible completions:

alias : Alias names. May also be specified as -a .
arrayvar : Array variable names.
binding : Readline key binding names.
builtin : Names of shell builtin commands. May also be specified as -b .
command : Command names. May also be specified as -c .
directory : Directory names. May also be specified as -d .
disabled : Names of disabled shell builtins.
enabled : Names of enabled shell builtins.
export : Names of exported shell variables. May also be specified as -e .
file : File names. May also be specified as -f .
function : Names of shell functions.
group : Group names. May also be specified as -g .
helptopic : Help topics as accepted by the help builtin.
hostname : Hostnames, as taken from the file specified by the HOSTFILE shell variable.
job : Job names, if job control is active. May also be specified as -j .
keyword : Shell reserved words. May also be specified as -k .
running : Names of running jobs, if job control is active.
service : Service names. May also be specified as -s .
setopt : Valid arguments for the -o option to the set builtin.
shopt : Shell option names as accepted by the shopt builtin.
signal : Signal names.
stopped : Names of stopped jobs, if job control is active.
user : User names. May also be specified as -u .
variable : Names of all shell variables. May also be specified as -v .

-C command

command is executed in a subshell environment, and its output is used as the possible completions.

-F function

The shell function function is executed in the current shell environment. When it finishes, the possible completions are retrieved from the value of the COMPREPLY array variable.

-G globpat

The pathname expansion pattern globpat is expanded to generate the possible completions.

-P prefix

prefix is added at the beginning of each possible completion after all other options have been applied.

-S suffix

suffix is appended to each possible completion after all other options have been applied.

-W wordlist

The wordlist is split using the characters in the IFS special variable as delimiters, and each resultant word is expanded. The possible completions are the members of the resultant list which match the word being completed.

-X filterpat

filterpat is a pattern as used for pathname expansion. It is applied to the list of possible completions generated by the preceding options and arguments, and each completion matching filterpat is removed from the list. A leading ! in filterpat negates the pattern; in this case, any completion not matching filterpat is removed.

The return value is true unless an invalid option is supplied, an option other than -p or -r is supplied without a name argument, an attempt is made to remove a completion specification for a name for which no specification exists, or an error occurs adding a completion specification.

compopt [ -o option ] [ -DE ] [ +o option ] [ name ]Modify completion options for each name according to the options , or for the currently-executing completion if no names are supplied. If no options are given, display the completion options for each name or the current completion. The possible values of option are those valid for the complete builtin described above. The -D option indicates that the remaining options should apply to the “default” command completion; that is, completion attempted on a command for which no completion has previously been defined. The -E option indicates that the remaining options should apply to “empty” command completion; that is, completion attempted on a blank line.

The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a name for which no completion specification exists, or an output error occurs.

continue [ n ]Resume the next iteration of the enclosing for , while , until , or select loop. If n is specified, resume at the n th enclosing loop. n must be ≥ 1. If n is greater than the number of enclosing loops, the last enclosing loop (the “top-level” loop) is resumed. The return value is 0 unless n is not greater than or equal to 1.
declare [ -aAfFgilrtux ] [ -p ] [ name [= value ] …]

typeset [ -aAfFgilrtux ] [ -p ] [ name [= value ] …]

Declare variables and/or give them attributes. If no names are given then display the values of variables. The -p option displays the attributes and values of each name . When -p is used with name arguments, additional options are ignored. When -p is supplied without name arguments, it displays the attributes and values of all variables having the attributes specified by the additional options. If no other options are supplied with -p , declare displays the attributes and values of all shell variables. The -f option will restrict the display to shell functions. The -F option inhibits the display of function definitions; only the function name and attributes are printed. If the extdebug shell option is enabled using shopt, the source file name and line number where the function is defined are displayed as well. The -F option implies -f . The -g option forces variables to be created or modified at the global scope, even when declare is executed in a shell function. It is ignored in all other cases. The following options can be used to restrict output to variables with the specified attribute or to give variables attributes:

-uma

Each name is an indexed array variable (see the section ” Arrays ” above).

-UMA

Each name is an associative array variable (see the section ” Arrays ” above).

-f

Use function names only.

-Eu

The variable is treated as an integer; arithmetic evaluation (see the section ” Arithmetic Evaluation ” above) is performed when the variable is assigned a value.

-eu

When the variable is assigned a value, all uppercase characters are converted to lowercase. The uppercase attribute is disabled.

-r

Make names readonly. These names cannot then be assigned values by subsequent assignment statements or unset.

-t

Give each name the trace attribute. Traced functions inherit the DEBUG and RETURN traps from the calling shell. The trace attribute has no special meaning for variables.

-u

When the variable is assigned a value, all lowercase characters are converted to uppercase. The lowercase attribute is disabled.

-x

Mark names for export to subsequent commands via the environment.

Using ‘+’ instead of ‘-‘ turns off the attribute instead, with the exceptions that +a may not be used to destroy an array variable and +r will not remove the readonly attribute. When used in a function, makes each name local, as with the local command, unless the -g option is supplied, If a variable name is followed by =value , the value of the variable is set to value . The return value is 0 unless an invalid option is encountered, an attempt is made to define a function using ” -f foo=bar “, an attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (see the section ” Arrays ” above), one of the names is not a valid shell variable name, an attempt is made to turn off readonly status for a readonly variable, an attempt is made to turn off array status for an array variable, or an attempt is made to display a non-existent function with -f .

dirs [ +n ] [ -n ] [ -clpv ]Without options, displays the list of currently remembered directories. The default display is on a single line with directory names separated by spaces. Directories are added to the list with the pushd command; the popd command removes entries from the list.

+n

Displays the nth entry counting from the left of the list shown by dirs when invoked without options, starting with zero.

-n

Displays the nth entry counting from the right of the list shown by dirs when invoked without options, starting with zero.

-c

Clears the directory stack by deleting all of the entries.

-eu

Produces a longer listing; the default listing format uses a tilde to denote the home directory.

-p

Print the directory stack with one entry per line.

-v

Print the directory stack with one entry per line, prefixing each entry with its index in the stack.

The return value is 0 unless an invalid option is supplied or n indexes beyond the end of the directory stack.

disown [ -ar ] [ -h ] [ jobspec …]Without options, each jobspec is removed from the table of active jobs. If jobspec is not present, and neither -a nor -r is supplied, the shell’s notion of the current job is used. If the -h option is given, each jobspec is not removed from the table, but is marked so that SIGHUP is not sent to the job if the shell receives a SIGHUP . If no jobspec is present, and neither the -a nor the -r option is supplied, the current job is used. If no jobspec is supplied, the -a option means to remove or mark all jobs; the -r option without a jobspec argument restricts operation to running jobs. The return value is 0 unless a jobspec does not specify a valid job.
echo [ -neE ] [ arg …]Output the args , separated by spaces, followed by a newline. The return status is always 0. If -n is specified, the trailing newline is suppressed. If the -e option is given, interpretation of the following backslash-escaped characters is enabled. The -E option disables the interpretation of these escape characters, even on systems where they are interpreted by default. The xpg_echo shell option may be used to dynamically determine whether or not echo expands these escape characters by default. echo does not interpret  to mean the end of options. echo interprets the following escape sequences:

\a : alert (bell)

\b : backspace

\c : suppress further output

\e , \E : an escape character

\f : form feed

\n : new line

\r : carriage return

\t : horizontal tab

\v : vertical tab

\\ : backslash

\0nnn : the eight-bit character whose value is the octal value nnn (zero to three octal digits)

\xHH : the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)

\uHHHH : the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)

\UHHHHHHHH : the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)

enable [ -a ] [ -dnps ] [ -f filename ] [ name …]Enable and disable builtin shell commands. Disabling a builtin allows a disk command which has the same name as a shell builtin to be executed without specifying a full pathname, even though the shell normally searches for builtins before disk commands. If -n is used, each name is disabled; otherwise, names are enabled. For example, to use the test binary found via the PATH instead of the shell builtin version, run “enable -n test”. The -f option means to load the new builtin command name from shared object filename, on systems that support dynamic loading. The -d option will delete a builtin previously loaded with -f . If no name arguments are given, or if the -p option is supplied, a list of shell builtins is printed. With no other option arguments, the list consists of all enabled shell builtins. If -n is supplied, only disabled builtins are printed. If -a is supplied, the list printed includes all builtins, with an indication of whether or not each is enabled. If -s is supplied, the output is restricted to the POSIX special builtins. The return value is 0 unless a name is not a shell builtin or there is an error loading a new builtin from a shared object.
eval [ arg …]The arg s are read and concatenated together into a single command. This command is then read and executed by the shell, and its exit status is returned as the value of eval . If there are no arg s, or only null arguments, eval returns 0.
exec [ -cl ] [ -a name ] [ command [ arguments ]]If command is specified, it replaces the shell. No new process is created. The arguments become the arguments to command . If the -l option is supplied, the shell places a dash at the beginning of the zeroth argument passed to command. This is what login does. The -c option causes command to be executed with an empty environment. If -a is supplied, the shell passes name as the zeroth argument to the executed command. If command cannot be executed for some reason, a non-interactive shell exits, unless the shell option execfail is enabled, in which case it returns failure. An interactive shell returns failure if the file cannot be executed. If command is not specified, any redirections take effect in the current shell, and the return status is 0. If there is a redirection error, the return status is 1.
exit [ n ]Cause the shell to exit with a status of n. If n is omitted, the exit status is that of the last command executed. A trap on EXIT is executed before the shell terminates.
export [ -fn ] [ name [= word ]] …

export -p

The supplied name s are marked for automatic export to the environment of subsequently executed commands. If the -f option is given, the names refer to functions. If no name s are given, or if the -p option is supplied, a list of all names that are exported in this shell is printed. The -n option causes the export property to be removed from each name. If a variable name is followed by =word , the value of the variable is set to word . export returns an exit status of 0 unless an invalid option is encountered, one of the name s is not a valid shell variable name, or -f is supplied with a name that is not a function.
fc [ -e ename ] [ -lnr ] [ first ] [ last ]

fc -s [ pat = rep ] [ cmd ]

Fix Command. In the first form, a range of commands from first to last is selected from the history list. The First and last may be specified as a string (to locate the last command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset from the current command number). If last is not specified it is set to the current command for listing (so that ” fc -l -10 ” prints the last 10 commands) and to first otherwise. If first is not specified it is set to the previous command for editing and -16 for listing.

The -n option suppresses the command numbers when listing. The -r option reverses the order of the commands. If the -l option is given, the commands are listed on standard output. Otherwise, the editor given by ename is invoked on a file containing those commands. If ename is not given, the value of the FCEDIT variable is used, and the value of EDITOR if FCEDIT is not set. If neither variable is set, vi is used. When editing is complete, the edited commands are echoed and executed.

In the second form, command is re-executed after each instance of pat is replaced by rep . A useful alias to use with this is ” r=’fc -s’ “, so that typing ” r cc ” runs the last command beginning with ” cc ” and typing ” r ” re-executes the last command.

If the first form is used, the return value is 0 unless an invalid option is encountered or first or last specify history lines out of range. If the -e option is supplied, the return value is the value of the last command executed or failure if an error occurs with the temporary file of commands. If the second form is used, the return status is that of the command re-executed, unless cmd does not specify a valid history line, in which case fc returns failure.

fg [ jobspec ]Resume jobspec in the foreground, and make it the current job. If jobspec is not present, the shell’s notion of the current job is used. The return value is that of the command placed into the foreground, or failure if run when job control is disabled or, when run with job control enabled, if jobspec does not specify a valid job or jobspec specifies a job that was started without job control.
getopts optstring name [ args ]getopts is used by shell procedures to parse positional parameters. The optstring contains the option characters to be recognized; if a character is followed by a colon, the option is expected to have an argument, which should be separated from it by white space. The colon and question mark characters may not be used as option characters. Each time it is invoked, getopts places the next option in the shell variable name, initializing name if it does not exist, and the index of the next argument to be processed into the variable OPTIND . OPTIND is initialized to 1 each time the shell or a shell script is invoked. When an option requires an argument, getopts places that argument into the variable OPTARG . The shell does not reset OPTIND automatically; it must be manually reset between multiple calls to getopts within the same shell invocation if a new set of parameters is to be used. When the end of options is encountered, getopts exits with a return value greater than zero. OPTIND is set to the index of the first non-option argument, and name is set to ? .

getopts normally parses the positional parameters, but if more arguments are given in args , getopts parses those instead.

getopts can report errors in two ways. If the first character of optstring is a colon, silent error reporting is used. In normal operation diagnostic messages are printed when invalid options or missing option arguments are encountered. If the variable OPTERR is set to 0, no error messages will be displayed, even if the first character of optstring is not a colon.

If an invalid option is seen, getopts places ? into name and, if not silent, prints an error message and unsets OPTARG . If getopts is silent, the option character found is placed in OPTARG and no diagnostic message is printed.

If a required argument is not found, and getopts is not silent, a question mark ( ? ) is placed in name , OPTARG is unset, and a diagnostic message is printed. If getopts is silent, then a colon ( : ) is placed in name and OPTARG is set to the option character found.

getopts returns true if an option, specified or unspecified, is found. It returns false if the end of options is encountered or an error occurs.

hash [ -lr ] [ -p filename ] [ -dt ] [ name ]Each time hash is invoked, the full pathname of the command name is determined by searching the directories in $PATH and remembered. Qualquer nome de caminho lembrado anteriormente é descartado. If the -p option is supplied, no path search is performed, and filename is used as the full file name of the command. The -r option causes the shell to forget all remembered locations. The -d option causes the shell to forget the remembered location of each name. If the -t option is supplied, the full pathname to which each name corresponds is printed. If multiple name arguments are supplied with -t , the name is printed before the hashed full pathname. The -l option causes output to be displayed in a format that may be reused as input. If no arguments are given, or if only -l is supplied, information about remembered commands is printed. The return status is true unless a name is not found or an invalid option is supplied.
help [ -dms ] [ pattern ]Display helpful information about builtin commands. If pattern is specified, help gives detailed help on all commands matching pattern ; otherwise help for all the builtins and shell control structures is printed. -d Display a short description of each pattern -m Display the description of each pattern in a manpage -like format -s Display only a short usage synopsis for each pattern

The return status is 0 unless no command matches pattern .

history [ n ]

history -c

history -d offset

history -anrw [ filename ]

history -p arg [ arg …]

history -s arg [ arg …]

With no options, display the command history list with line numbers. Lines listed with a * have been modified. An argument of n lists only the last n lines. If the shell variable HISTTIMEFORMAT is set and not null, it is used as a format string for strftime to display the time stamp associated with each displayed history entry. No intervening blank is printed between the formatted time stamp and the history line. If filename is supplied, it is used as the name of the history file; if not, the value of HISTFILE is used. Options, if supplied, have the following meanings:

-c : Clear the history list by deleting all the entries.

-d offset : Delete the history entry at position offset .

-a : Append the “new” history lines (history lines entered since the beginning of the current bash session) to the history file.

-n : Read the history lines not already read from the history file into the current history list. These are lines appended to the history file since the beginning of the current bash session.

-r : Read the contents of the history file and use them as the current history.

-w : Write the current history to the history file, overwriting the history file’s contents.

-p : Perform history substitution on the following arg s and display the result on the standard output. Does not store the results in the history list. Each arg must be quoted to disable normal history expansion.

-s : Store the arg s in the history list as a single entry. The last command in the history list is removed before the arg s are added.

If the HISTTIMEFORMAT variable is set, the time stamp information associated with each history entry is written to the history file, marked with the history comment character. When the history file is read, lines beginning with the history comment character followed immediately by a digit are interpreted as timestamps for the previous history line. The return value is 0 unless an invalid option is encountered, an error occurs while reading or writing the history file, an invalid offset is supplied as an argument to -d , or the history expansion supplied as an argument to -p fails.

jobs [ -lnprs ] [ jobspec … ]

jobs -x command [ args … ]

The first form lists the active jobs. The options have the following meanings:

-l : List process IDs in addition to the normal information.

-n : Display information only about jobs that have changed status since the user was last notified of their status.

-p : List only the process ID of the job’s process group leader.

-r : Restrict output to running jobs.

-s : Restrict output to stopped jobs.

If jobspec is given, output is restricted to information about that job. The return status is 0 unless an invalid option is encountered or an invalid jobspec is supplied.

If the -x option is supplied, jobs replaces any jobspec found in command or arg s with the corresponding process group ID, and executes command passing it arg s, returning its exit status.

kill [ -s sigspec | -n signum | – sigspec ] [ pid | jobspec ] …

kill -l [ sigspec | exit_status ]

Send the signal named by sigspec or signum to the processes named by pid or jobspec. The sigspec is either a case-insensitive signal name such as SIGKILL (with or without the SIG prefix) or a signal number; signum is a signal number. If sigspec is not present, then SIGTERM is assumed. An argument of -l lists the signal names. If any arguments are supplied when -l is given, the names of the signals corresponding to the arguments are listed, and the return status is 0. The exit_status argument to -l is a number specifying either a signal number or the exit status of a process terminated by a signal. The kill returns true if at least one signal was successfully sent, or false if an error occurs or an invalid option is encountered.
let arg [ arg …]Each arg is an arithmetic expression to be evaluated (see the section ” Arithmetic Evaluation ” above). If the last arg evaluates to 0 , let returns 1 ; 0 is returned otherwise.
local [ option ] [ name [= value ] …]Para cada argumento, uma variável local chamada name é criada e é atribuído um valor. opção pode ser qualquer uma das opções aceitas por declarar . Quando local é usado em uma função, faz com que o nome da variável tenha um escopo visível restrito a essa função e seus filhos. Sem operandos, local grava uma lista de variáveis ​​locais na saída padrão. É um erro usar local quando não estiver em uma função. O status de retorno é 0, a menos que local seja usado fora de uma função, um nome inválido seja fornecido ou nome seja uma variável somente leitura.
sairSaia de um shell de logon.
arquivo de mapa [ -n count ] [ -O origin ] [ -s count ] [ -t ] [ -u fd ] [ -C callback ] [ -c quantum ] [ array ]

readarray [ -n count ] [ -O origin ] [ -s count ] [ -t ] [ -u fd ] [ -C callback ] [ -c quantum ] [ array ]

Leia as linhas da entrada padrão na matriz variável da matriz indexada ou no descritor de arquivo fd se a opção -u for fornecida. A variável MAPFILE é a matriz padrão. As opções, se fornecidas, têm os seguintes significados:

-n : copia na maioria das linhas de contagem . Se contagem for 0, todas as linhas serão copiadas.

-O : começa a atribuir a matriz na origem do índice. O índice padrão é 0.

-s : descarta as primeiras linhas de contagem lidas.

-t : remova uma nova linha à direita de cada linha lida.

-u : lê linhas do descritor de arquivo fd em vez da entrada padrão.

-C : avalie o retorno de chamada sempre que as linhas quânticas forem lidas. A opção -c especifica quantum .

-c : especifique o número de linhas lidas entre cada chamada para retorno de chamada .

Se -C for especificado sem -c , o quantum padrão é 5000. Quando o retorno de chamada é avaliado, é fornecido o índice do próximo elemento da matriz a ser atribuído e a linha a ser atribuída a esse elemento como argumentos adicionais. retorno de chamada é avaliado após a linha ser lida, mas antes da atribuição do elemento da matriz .

Se não for fornecido com uma origem explícita, o mapfile limpará a matriz antes de atribuir a ela.

O mapfile retorna com êxito, a menos que uma opção ou argumento de opção inválido seja fornecido, a matriz seja inválida ou não atribuível ou se a matriz não for uma matriz indexada.

popd [ -n ] [ + n ] [  n ]Remove entradas da pilha de diretórios. Sem argumentos, remove o diretório superior da pilha e executa um CD no novo diretório superior. Os argumentos, se fornecidos, têm os seguintes significados:

-n : Suprime a alteração normal do diretório ao remover diretórios da pilha, para que apenas a pilha seja manipulada.

+ n Remove a enésima entrada da esquerda da lista mostrada por dirs , começando com zero. Por exemplo: ” popd +0 ” remove o primeiro diretório, ” popd +1 ” o segundo.

 n Remove a enésima entrada da direita da lista mostrada por dirs , começando com zero. Por exemplo: ” popd -0 ” remove o último diretório, ” popd -1 ” o penúltimo.

Se o comando popd for bem-sucedido, um dirs também será executado e o status de retorno será 0. popd retornará false se uma opção inválida for encontrada, a pilha de diretórios estiver vazia, uma entrada inexistente da pilha de diretórios for especificada ou o diretório mudança falha.

formato printf [ -v var ] [ argumentos ]Escreva os argumentos formatados na saída padrão sob o controle do formato . A opção -v faz com que a saída seja atribuída à variável var, em vez de ser impressa na saída padrão.

O formato é uma cadeia de caracteres que contém três tipos de objetos: caracteres simples, copiados para a saída padrão, seqüências de escape de caracteres, que são convertidos e copiados para a saída padrão, e especificações de formato, cada um dos quais causa a impressão da próxima sucessiva argumento. Além das especificações padrão do formato printf , printf interpreta as seguintes extensões:

% b faz com que printf expanda as seqüências de escape de barra invertida no argumento correspondente (exceto que \ c termina a saída, as barras invertidas em \ ‘ , \ “ e \? não são removidas e as fugas octais que começam com \ 0 podem conter até quatro dígitos) .

% q faz com que printf produza o argumento correspondente em um formato que pode ser reutilizado como entrada do shell.

% ( datefmt ) T faz com que printf produza a string de data e hora resultante do uso de datefmt como uma string de formato para strftime . O argumento correspondente é um número inteiro que representa o número de segundos desde a época . Dois valores de argumento especial podem ser usados: -1 representa o horário atual e -2 representa o horário em que o shell foi chamado.

Os argumentos para especificadores de formato não-string são tratados como constantes C, exceto que um sinal inicial de mais ou menos é permitido e, se o caractere principal for uma aspas simples ou dupla, o valor será o valor ASCII do caractere a seguir.

O formato é reutilizado conforme necessário para consumir todos os argumentos. Se o formato exigir mais argumentos do que os fornecidos, as especificações extras de formato se comportarão como se um valor zero ou uma seqüência nula, conforme apropriado, tivesse sido fornecida. O valor de retorno é zero em caso de sucesso, diferente de zero em caso de falha.

pushd [ -n ] [ + n ] [  n ]

pushd [ -n ] [ dir ]

Adiciona um diretório ao topo da pilha de diretórios ou gira a pilha, tornando a nova parte superior da pilha o diretório de trabalho atual. Sem argumentos, troca os dois principais diretórios e retorna 0, a menos que a pilha de diretórios esteja vazia. Os argumentos, se fornecidos, têm os seguintes significados:

-n : Suprime a alteração normal do diretório ao adicionar diretórios à pilha, para que apenas a pilha seja manipulada.

+ n : gira a pilha para que o enésimo diretório (contando à esquerda da lista mostrada por dirs , iniciando com zero) fique no topo.

 n : gira a pilha para que o enésimo diretório (contando à direita da lista mostrada por dirs , iniciando com zero) fique no topo.

dir : adiciona dir à pilha de diretórios na parte superior, tornando-o o novo diretório de trabalho atual.

Se o comando pushd for bem-sucedido, um dirs também será executado. Se o primeiro formulário for usado, pushd retornará 0, a menos que o cd para dir falhe. Com o segundo formulário, pushd retorna 0, a menos que a pilha de diretórios esteja vazia, um elemento inexistente da pilha de diretórios seja especificado ou a alteração do diretório para o novo diretório atual especificado falhe.

pwd [ -LP ]Imprima o nome do caminho absoluto do diretório de trabalho atual . O nome do caminho impresso não contém links simbólicos se a opção -P for fornecida ou a opção -o física para o comando set builtin estiver ativada. Se a opção -L for usada, o nome do caminho impresso poderá conter links simbólicos. O status de retorno é 0, a menos que ocorra um erro ao ler o nome do diretório atual ou uma opção inválida seja fornecida.
leia [ -ers ] [ -a aname ] [ -d delim ] [ -i text ] [ -n nchars ] [ -N nchars ] [ -p prompt ] [ -t timeout ] [ -u fd ] [ -u … ]Uma linha é lida a partir da entrada padrão ou do descritor de arquivo fd fornecido como argumento para a opção -u , e a primeira palavra é atribuída ao primeiro nome, a segunda palavra ao segundo nome e assim por diante, com as sobras palavras e seus separadores intermediários atribuídos ao sobrenome. Se houver menos palavras lidas no fluxo de entrada que nomes, os nomes restantes receberão valores vazios. Os caracteres no IFS são usados ​​para dividir a linha em palavras. O caractere de barra invertida ( \ ) pode ser usado para remover qualquer significado especial para o próximo caractere lido e para a continuação da linha. As opções, se fornecidas, têm os seguintes significados:

-a aname : as palavras são atribuídas aos índices seqüenciais da variável da matriz aname , iniciando em 0. O aname é desabilitado antes que novos valores sejam atribuídos. Outros argumentos de nome são ignorados.

-d delim : O primeiro caractere de delim é usado para finalizar a linha de entrada, em vez de nova linha.

-e : Se a entrada padrão é proveniente de um terminal, a linha de leitura (consulte ” Linha de leitura” acima) é usada para obter a linha. O Readline usa as configurações de edição atuais (ou padrão, se a edição da linha não estiver ativa anteriormente).

-i texto : se a linha de leitura estiver sendo usada para ler a linha, o texto será colocado no buffer de edição antes do início da edição.

-n nchars : read retorna depois de ler os caracteres nchars em vez de esperar por uma linha completa de entrada, mas respeite um delimitador se menos caracteres nchars forem lidos antes do delimitador.

-N nchars : read retorna depois de ler exatamente os caracteres nchars em vez de esperar por uma linha completa de entrada, a menos que o EOF seja encontrado ou o tempo limite da leitura seja excedido . Os caracteres delimitadores encontrados na entrada não são tratados especialmente e não fazem com que a leitura retorne até que os caracteres nchars sejam lidos.

-p prompt : exibe o prompt com erro padrão, sem uma nova linha à direita, antes de tentar ler qualquer entrada. O prompt será exibido apenas se a entrada vier de um terminal.

-r : a barra invertida não atua como um caractere de escape. A barra invertida é considerada parte da linha. Em particular, um par de barra invertida e nova linha não pode ser usado como uma continuação de linha.

-s : modo silencioso. Se a entrada vier de um terminal, os caracteres não serão ecoados.

-t timeout Faz com que a leitura atinja o tempo limite e retorne a falha se uma linha completa de entrada não for lida em segundos de tempo limite. O tempo limite pode ser um número decimal com uma parte fracionária após o ponto decimal. Esta opção só é efetiva se a leitura estiver lendo a entrada de um terminal, canal ou outro arquivo especial; não tem efeito ao ler arquivos regulares. Se o tempo limite for 0, a leitura retornará êxito se a entrada estiver disponível no descritor de arquivo especificado, caso contrário, falha. O status de saída é maior que 128 se o tempo limite for excedido.

-u fd : lê a entrada do descritor de arquivo fd . Se nenhum nome for fornecido, a linha lida será atribuída à variável REPLY. O código de retorno é zero, a menos que seja encontrado o final do arquivo, o tempo limite de leitura seja excedido (nesse caso, o código de retorno é maior que 128) ou um descritor de arquivo inválido é fornecido como argumento para -u .

readonly [ -aAf ] [ -p ] [ nome [= palavra ] …]nome dado s é marcado como somente leitura; os valores desses nomes não podem ser alterados por atribuição subsequente. Se a opção -f for fornecida, as funções correspondentes aos nomes serão marcadas. A opção -a restringe as variáveis ​​a matrizes indexadas; a opção -A restringe as variáveis ​​a matrizes associativas. Se as duas opções forem fornecidas, -A terá precedência. Se nenhum argumento de nome for fornecido, ou se a opção -p for fornecida, uma lista de todos os nomes somente leitura será impressa. As outras opções podem ser usadas para restringir a saída a um subconjunto do conjunto de nomes somente leitura. A opção -p faz com que a saída seja exibida em um formato que pode ser reutilizado como entrada. Se um nome de variável for seguido por = word , o valor da variável será definido como word . O status de retorno é 0, a menos que uma opção inválida seja encontrada, um dos nomes s não seja um nome de variável de shell válido ou -f seja fornecido com um nome que não seja uma função.
retornar [ n ]Faz com que uma função saia com o valor de retorno especificado por n . Se n for omitido, o status de retorno é o do último comando executado no corpo da função. Se usado fora de uma função, mas durante a execução de um script pelo . origem ), faz com que o shell pare de executar esse script e retorne n ou o status de saída do último comando executado dentro do script como o status de saída do script. Se usado fora de uma função e não durante a execução de um script por . , o status de retorno é falso. Qualquer comando associado à interceptação RETURN é executado antes da execução continuar após a função ou script.
set [ –abefhkmnptuvxBCEHPT ] [ -o nome-da-opção ] [ arg …]

defina [ + abefhkmnptuvxBCEHPT ] [ + o nome da opção ] [ arg …]

Sem opções, o nome e o valor de cada variável do shell são exibidos em um formato que pode ser reutilizado como entrada para definir ou redefinir as variáveis ​​definidas no momento. Variáveis ​​somente leitura não podem ser redefinidas. No modo posix, apenas as variáveis ​​do shell são listadas. A saída é classificada de acordo com o código do idioma atual. Quando as opções são especificadas, elas definem ou desativam os atributos do shell. Quaisquer argumentos restantes após o processamento da opção são tratados como valores para os parâmetros posicionais e são atribuídos, em ordem, a $ 1, $ 2, … $ n . As opções, se especificadas, têm os seguintes significados:

-a : marca automaticamente variáveis ​​e funções que são modificadas ou criadas para exportação para o ambiente de comandos subseqüentes.

-b : relate o status de trabalhos em segundo plano finalizados imediatamente, e não antes do próximo prompt primário. Isso é efetivo apenas quando o controle de trabalho está ativado.

-e Sai imediatamente se um pipeline (que pode consistir em um único comando simples), um comando subshell entre parênteses ou um dos comandos executados como parte de uma lista de comandos entre chaves (consulte ” Gramática do Shell ” acima)) com um status diferente de zero. O shell não sai se o comando que falhar faz parte da lista de comandos imediatamente após uma palavra-chave while ou while, parte do teste após as palavras reservadas if ou elif , parte de qualquer comando executado em um && ou || lista, exceto o comando após o final && ou || , qualquer comando em um pipeline, exceto o último, ou se o valor de retorno do comando estiver sendo invertido com ! . Uma interceptação no ERR, se definida, é executada antes da saída do shell. Esta opção se aplica ao ambiente do shell e a cada ambiente do subshell separadamente (consulte a seção ” Ambiente de execução de comando ” acima) e pode fazer com que os subshells sejam encerrados antes de executar todos os comandos no subshell.

-f : desativa a expansão do nome do caminho.

-h : Lembre-se da localização dos comandos conforme eles são procurados para execução. Isso é ativado por padrão.

-k : todos os argumentos na forma de instruções de atribuição são colocados no ambiente para um comando, não apenas aqueles que precedem o nome do comando.

-m : modo de monitor. O controle do trabalho está ativado. Esta opção está ativada por padrão para shells interativos em sistemas que a suportam (consulte ” Controle de tarefas ” acima). Os processos em segundo plano são executados em um grupo de processos separado e uma linha contendo seu status de saída é impressa após a conclusão.

-n : lê comandos, mas não os executa. Isso pode ser usado para verificar se há erros de sintaxe em um shell script. Isso é ignorado por shells interativos.

-o nome da opção : o nome da opção pode ser um dos seguintes:

allexport : O mesmo que -a .

braceexpand : o mesmo que -B .

emacs : use uma interface de edição de linha de comando no estilo emacs. Isso é ativado por padrão quando o shell é interativo, a menos que o shell seja iniciado com a opção –noediting . Isso também afeta a interface de edição usada para read -e .

errexit : O mesmo que -e .

errtrace : O mesmo que -E .

functrace : O mesmo que -T .

hashall : O mesmo que -h .

histexpand : O mesmo que -H .

history : ative o histórico de comandos, conforme descrito acima em HISTORY. Esta opção está ativada por padrão em shells interativos.

ignoreeof : O efeito é como se o comando do shell ” IGNOREEOF = 10 ” tivesse sido executado (consulte ” Variáveis ​​do shell ” acima).

palavra – chave : Igual a -k .

monitor : O mesmo que -m .

noclobber : O mesmo que -C .

noexec : O mesmo que -n .

noglob : O mesmo que -f .

nolog : atualmente ignorado.

notificar : o mesmo que -b .

substantivo : Igual a -u .

onecmd : o mesmo que -t .

físico : O mesmo que -P .

pipefail : se definido, o valor de retorno de um pipeline é o valor do último comando (mais à direita) para sair com um status diferente de zero ou zero se todos os comandos no pipeline forem encerrados com êxito. Esta opção está desativada por padrão. posix Altere o comportamento do bash onde a operação padrão difere do padrão POSIX para corresponder ao padrão (modo posix).

privilegiado : O mesmo que -p .

detalhado : O mesmo que -v .

vi : Use uma interface de edição de linha de comando no estilo vi. Isso também afeta a interface de edição usada para read -e .

xtrace : O mesmo que -x .

Se -o for fornecido sem o nome da opção , os valores das opções atuais serão impressos. Se + o for fornecido sem o nome da opção , uma série de comandos set para recriar as configurações atuais da opção será exibida na saída padrão.

-p : ativa o modo privilegiado. Nesse modo, os arquivos $ ENV e $ BASH_ENV não são processados, as funções de shell não são herdadas do ambiente e as variáveis ​​SHELLOPTS , BASHOPTS , CDPATH e GLOBIGNORE , se aparecerem no ambiente, são ignoradas. Se o shell for iniciado com o ID do usuário (grupo) efetivo diferente do ID do usuário real (grupo) e a opção -p não for fornecida, essas ações serão executadas e o ID do usuário efetivo será definido como o ID do usuário real. Se a opção -p for fornecida na inicialização, o ID do usuário efetivo não será redefinido. Desativar esta opção faz com que os IDs efetivos de usuário e grupo sejam definidos para os IDs reais de usuário e grupo.

-t : sai após ler e executar um comando.

-u : Trate variáveis ​​e parâmetros não definidos que não sejam os parâmetros especiais ” @ ” e ” * ” como um erro ao executar a expansão de parâmetros. Se tentar uma expansão em uma variável ou parâmetro não definido, o shell imprimirá uma mensagem de erro e, se não for interativo, sairá com um status diferente de zero.

-v : imprime linhas de entrada do shell à medida que são lidas.

-x : depois de expandir cada comando simples , para comando, comando caso , selecione comando ou aritmética para comando, exiba o valor expandido do PS4 , seguido pelo comando e seus argumentos expandidos ou lista de palavras associada.

-B : O shell realiza expansão de braçadeira (consulte “Expansão de braçadeira” acima). Isso está ativado por padrão.

-C : Se definido, o bash não substitui um arquivo existente pelos operadores de redirecionamento > , > & , e <> . Isso pode ser substituído ao criar arquivos de saída usando o operador de redirecionamento > | em vez de > .

-E : Se definido, qualquer interceptação no ERR é herdada pelas funções do shell, substituições de comandos e comandos executados em um ambiente de subshell. A interceptação de ERR normalmente não é herdada nesses casos.

-H : Ative ! substituição da história do estilo. Esta opção está ativada por padrão quando o shell é interativo.

-P : Se definido, o shell não segue links simbólicos ao executar comandos como o cd que alteram o diretório de trabalho atual. Ele usa a estrutura de diretórios físicos. Por padrão, o bash segue a cadeia lógica de diretórios ao executar comandos que alteram o diretório atual.

-T Se configurado, quaisquer traps no DEBUG e RETURN são herdados pelas funções do shell, substituições de comandos e comandos executados em um ambiente de subshell. Os traps DEBUG e RETURN normalmente não são herdados nesses casos.

 Se nenhum argumento seguir esta opção, os parâmetros posicionais não serão definidos. Caso contrário, os parâmetros posicionais são definidos como args , mesmo que alguns deles comecem com a  .

 Sinalize o final das opções, faça com que todos os argumentos restantes sejam atribuídos aos parâmetros posicionais. As opções -x e -v estão desativadas. Se não houver argumentos , os parâmetros posicionais permanecem inalterados.

As opções estão desativadas por padrão, a menos que indicado de outra forma. Usar + em vez de  faz com que essas opções sejam desativadas. As opções também podem ser especificadas como argumentos para uma chamada do shell. O conjunto atual de opções pode ser encontrado em $ – . O status de retorno é sempre verdadeiro, a menos que uma opção inválida seja encontrada.

turno [ n ]Os parâmetros posicionais de n +1 … são renomeados para $ 1 …. Os parâmetros representados pelos números $ # até $ # – n +1 não estão definidos. n deve ser um número não negativo menor ou igual a $ # . Se n for 0, nenhum parâmetro será alterado. Se n não for fornecido, assume-se que seja 1. Se n for maior que $ # , os parâmetros posicionais não serão alterados. O status de retorno é maior que zero se n for maior que $ # ou menor que zero; caso contrário, 0.
shopt [ -pqsu ] [ -o ] [ optname …]Alterne os valores das variáveis ​​que controlam o comportamento opcional do shell. Sem opções ou com a opção -p , uma lista de todas as opções configuráveis ​​é exibida, com uma indicação de se cada uma delas está ou não definida. A opção -p faz com que a saída seja exibida em um formulário que pode ser reutilizado como entrada. Outras opções têm os seguintes significados:

-s : ativa (define) cada nome da opção .

-u : desativa (desativa) cada nome de opção .

-q : Suprime a saída normal (modo silencioso); o status de retorno indica se o nome da opção está definido ou não. Se vários argumentos do optname forem fornecidos com -q , o status de retorno será zero se todos os optname s estiverem ativados; diferente de zero, caso contrário.

-o : Restringe os valores de optname para aqueles definidos para a opção -o no conjunto interno.

Se -s ou -u for usado sem argumentos optname , a exibição será limitada às opções definidas ou não, respectivamente. Salvo indicação em contrário, as opções de compra são desativadas (não definidas) por padrão.

O status de retorno ao listar opções é zero se todos os optname s estiverem ativados, diferente de zero caso contrário. Ao definir ou desmarcar opções, o status de retorno é zero, a menos que um optname não seja uma opção de shell válida.

A lista de opções de compras é:

autocd : se definido, um nome de comando que é o nome de um diretório é executado como se fosse o argumento para o comando cd . Esta opção é usada apenas por shells interativos.

cdable_vars : se definido, um argumento para o comando cd builtin que não é um diretório é assumido como o nome de uma variável cujo valor é o diretório para o qual mudar.

cdspell : se definido, pequenos erros na ortografia de um componente de diretório em um comando cd serão corrigidos. Os erros verificados são caracteres transpostos, um caractere ausente e um caractere a mais. Se uma correção for encontrada, o nome do arquivo corrigido será impresso e o comando prosseguirá. Esta opção é usada apenas por shells interativos.

checkhash : Se definido, o bash verifica se existe um comando encontrado na tabela de hash antes de tentar executá-lo. Se um comando hash não existir mais, uma pesquisa de caminho normal será executada.

checkjobs : se definido, o bash lista o status de qualquer trabalho parado e em execução antes de sair de um shell interativo. Se algum trabalho estiver em execução, isso fará com que a saída seja adiada até que uma segunda saída seja tentada sem um comando intermediário (consulte a seção ” Controle de trabalho “). O shell sempre adia a saída se algum trabalho for interrompido.

checkwinsize : Se definido, o bash verifica o tamanho da janela após cada comando e, se necessário, atualiza os valores de LINES e COLUMNS.

cmdhist : se definido, o bash tenta salvar todas as linhas de um comando de várias linhas na mesma entrada do histórico. Isso permite reeditar facilmente os comandos de várias linhas.

compat31 : Se definido, o bash altera seu comportamento para o da versão 3.1 com relação aos argumentos citados no operador [[ comando condicional = ~ .

compat32 : Se definido, o bash altera seu comportamento para o da versão 3.2 com relação à comparação de cadeias específicas do código do idioma ao usar os operadores < e > do comando [[ condicional < e > . As versões bash antes do bash-4.1 usam agrupamento ASCII e strcmp ; O bash-4.1 e posterior usam a sequência de intercalação e strcoll do código de idioma atual.

compat40 : Se definido, o bash altera seu comportamento para o da versão 4.0 em relação à comparação de cadeias específicas do código do idioma ao usar os operadores < e > do comando [[ condicional < e > (consulte o item anterior) e o efeito de interromper uma lista de comandos.

compat41 : Se definido, bash, no modo posix, trata uma aspas simples em uma expansão de parâmetro com aspas duplas como um caractere especial. As aspas simples devem corresponder (um número par) e os caracteres entre as aspas simples são considerados entre aspas. Este é o comportamento do modo posix através da versão 4.1. O comportamento padrão do bash permanece como nas versões anteriores.

direxpand : Se definido, o bash substitui os nomes de diretório pelos resultados da expansão de palavras ao executar a conclusão do nome do arquivo. Isso altera o conteúdo do buffer de edição da linha de leitura. Se não estiver definido, o bash tentará preservar o que o usuário digitou.

dirspell : Se definido, o bash tenta a correção ortográfica nos nomes de diretório durante a conclusão da palavra, se o nome do diretório fornecido inicialmente não existir.

dotglob : Se definido, o bash inclui nomes de arquivos que começam com ‘ . ‘nos resultados da expansão do nome do caminho.

execfail : Se definido, um shell não interativo não será encerrado se não puder executar o arquivo especificado como argumento para o comando exec builtin. Um shell interativo não sai se o exec falhar.

expand_aliases : se definido, os aliases serão expandidos conforme descrito acima em ALIASES. Esta opção está ativada por padrão para shells interativos.

extdebug : Se definido, o comportamento destinado ao uso por depuradores é ativado:

  1. A opção -F para o declarar interno exibe o nome do arquivo de origem e o número da linha correspondente a cada nome de função fornecido como argumento.
  2. Se o comando executado pelo trap DEBUG retornar um valor diferente de zero, o próximo comando será ignorado e não executado.
  3. Se o comando executado pela interceptação DEBUG retornar um valor 2, e o shell estiver executando em uma sub-rotina (uma função de shell ou um script de shell executado pelos . Ou fontes internas), uma chamada para retornar será simulada.
  4. BASH_ARGC e BASH_ARGV são atualizados conforme descrito nas descrições acima.
  5. O rastreamento de funções está ativado: substituição de comando, funções de shell e subshells chamados com (command) herdam os traps DEBUG e RETURN.
  6. O rastreamento de erros está ativado: substituição de comando, funções de shell e subshells chamados com (command) herdam a interceptação de ERR.

extglob : Se definido, os recursos de correspondência de padrão estendido descritos acima em Expansão do nome do caminho são ativados.

extquote : Se definido, as cotações $ ‘string’ e $ “string” serão executadas nas expansões $ {parameter} entre aspas duplas. Essa opção é ativada por padrão.

failglob : Se definido, os padrões que falham em corresponder aos nomes dos arquivos durante a expansão do nome do caminho resultam em um erro de expansão.

force_fignore : Se definido, os sufixos especificados pela variável de shell FIGNORE fazem com que as palavras sejam ignoradas ao executar a conclusão da palavra, mesmo que as palavras ignoradas sejam as únicas conclusões possíveis. Consulte ” Variáveis ​​do shell ” acima para obter uma descrição do FIGNORE . Essa opção é ativada por padrão.

globstar : Se definido, o padrão ** usado no contexto de expansão do nome do caminho corresponderá a todos os arquivos e zero ou mais diretórios e subdiretórios. Se o padrão for seguido por / , apenas diretórios e subdiretórios corresponderão.

gnu_errfmt : Se definido, as mensagens de erro do shell serão gravadas no formato padrão de mensagem de erro do GNU.

histappend : se definida, a lista do histórico será anexada ao arquivo nomeado pelo valor da variável HISTFILE quando o shell sair, em vez de sobrescrever o arquivo.

histreedit : se definido, e a linha de leitura estiver sendo usada, o usuário terá a oportunidade de reeditar uma substituição de histórico com falha.

histverify : Se definido, e a linha de leitura estiver sendo usada, os resultados da substituição do histórico não serão passados ​​imediatamente para o analisador de shell. Em vez disso, a linha resultante é carregada no buffer de edição da linha de leitura, permitindo modificações adicionais.

hostcomplete : Se definido, e a linha de leitura estiver sendo usada, o bash tentará executar a conclusão do nome do host quando uma palavra que contém um @ estiver sendo concluída (consulte ” Concluindo ” em ” Linha de leitura ” acima). Isso é ativado por padrão.

huponexit : se definido, o bash enviará SIGHUP para todos os trabalhos quando um shell de logon interativo sair.

Interactive_comments : Se definido, permita que uma palavra que comece com # faça com que essa palavra e todos os caracteres restantes nessa linha sejam ignorados em um shell interativo (consulte ” Comentários ” acima). Essa opção é ativada por padrão.

lastpipe : se definido, e o controle de tarefas não estiver ativo, o shell executará o último comando de um pipeline não executado em segundo plano no ambiente de shell atual.

lithist : se definido, e a opção cmdhist estiver ativada, os comandos de várias linhas serão salvos no histórico com novas linhas incorporadas, em vez de usar separadores de ponto e vírgula sempre que possível.

login_shell : O shell define esta opção se for iniciado como um shell de login (consulte ” Invocação ” acima). O valor não pode ser alterado.

mailwarn : Se definido, e um arquivo que o bash está procurando por e-mails foi acessado desde a última vez em que foi verificado, a mensagem “O e-mail no arquivo de e-mail foi lido” é exibida.

no_empty_cmd_completion : Se definido, e a linha de leitura estiver sendo usada, o bash não tentará procurar no PATH possíveis conclusões quando a conclusão for tentada em uma linha vazia.

nocaseglob : se definido, o bash corresponderá aos nomes dos arquivos de maneira que não diferenciam maiúsculas de minúsculas ao executar a expansão do nome do caminho (consulte ” Expansão do nome do caminho ” acima).

nocasematch : Se definido, o bash faz a correspondência de padrões de maneira que não diferencia maiúsculas de minúsculas ao executar a correspondência durante a execução de maiúsculas ou minúsculas [[ comandos condicionais.

nullglob : Se definido, o bash permite que padrões que não correspondam a nenhum arquivo (consulte ” Expansão do nome do caminho ” acima) sejam expandidos para uma cadeia nula, e não para eles próprios.

progcomp : Se definido, os recursos de conclusão programável (consulte ” Conclusão programável ” acima) estão ativados. Essa opção é ativada por padrão.

promptvars : se definido, as sequências de prompt passam por expansão de parâmetro, substituição de comando, expansão aritmética e remoção de cotação após serem expandidas, conforme descrito em ” Prompting ” acima. Essa opção é ativada por padrão.

strict_shell : o shell define essa opção se for iniciado no modo restrito (consulte ” Shell restrito ” abaixo). O valor não pode ser alterado. Isso não é redefinido quando os arquivos de inicialização são executados, permitindo que os arquivos de inicialização descubram se um shell está ou não restrito.

shift_verbose : se definido, o turno incorporado imprime uma mensagem de erro quando a contagem de turnos excede o número de parâmetros posicionais.

caminho de origem : se definido, o código – fonte interno ( . ) usa o valor de PATH para localizar o diretório que contém o arquivo fornecido como argumento. Essa opção é ativada por padrão.

xpg_echoSe definido, o eco interno expande as seqüências de escape de barra invertida por padrão.
suspender [ -f ]Suspenda a execução deste shell até receber um sinal SIGCONT . Um shell de login não pode ser suspenso; a opção -f pode ser usada para substituir isso e forçar a suspensão. O status de retorno é 0, a menos que o shell seja um shell de logon e -f não seja fornecido ou se o controle do trabalho não estiver ativado.
teste expr

[ expr ]

Retorne um status de 0 ou 1, dependendo da avaliação da expressão condicional expr . Cada operador e operando deve ser um argumento separado. As expressões são compostas das primárias descritas acima em ” Expressões condicionais “. test não aceita nenhuma opção, nem aceita e ignora um argumento de  como significando o fim das opções.

As expressões podem ser combinadas usando os seguintes operadores, listados em ordem decrescente de precedência. A avaliação depende do número de argumentos; ver abaixo. A precedência do operador é usada quando há cinco ou mais argumentos.

! expr : True se expr for false.

( expr ) : retorna o valor de expr . Isso pode ser usado para substituir a precedência normal dos operadores.

expr1 -a expr2 : True se expr1 e expr2 forem verdadeiros.

expr1 -o expr2 : True se expr1 ou expr2 for true.

testar e [ avaliar expressões condicionais usando um conjunto de regras com base no número de argumentos.

0 argumentos : a expressão é falsa.

1 argumento : a expressão é verdadeira se e somente se o argumento não for nulo.

2 argumentos : se o primeiro argumento for ! , a expressão será verdadeira se e somente se o segundo argumento for nulo. Se o primeiro argumento for um dos operadores condicionais unários listados acima em Expressões condicionais , a expressão será verdadeira se o teste unário for verdadeiro. Se o primeiro argumento não for um operador condicional unário válido, a expressão será falsa.

3 argumentos : As seguintes condições são aplicadas na ordem listada. Se o segundo argumento for um dos operadores condicionais binários listados acima em Expressões condicionais , o resultado da expressão será o resultado do teste binário usando o primeiro e o terceiro argumentos como operandos. Os operadores -a e -o são considerados operadores binários quando há três argumentos. Se o primeiro argumento for ! , o valor é a negação do teste de dois argumentos usando o segundo e o terceiro argumentos. If the first argument is exactly ( and the third argument is exactly ), the result is the one-argument test of the second argument. Otherwise, the expression is false.

4 arguments : If the first argument is ! , the result is the negation of the three-argument expression composed of the remaining arguments. Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above.

5 or more arguments : The expression is parsed and evaluated according to precedence using the rules listed above.

When used with test or [ , the < and > operators sort lexicographically using ASCII ordering.

vezesPrint the accumulated user and system times for the shell and for processes run from the shell. The return status is 0.
trap [ -lp ] [[ arg ] sigspec …]The command arg is to be read and executed when the shell receives signal(s) sigspec . If arg is absent (and there is a single sigspec ) or  , each specified signal is reset to its original disposition (the value it had upon entrance to the shell). If arg is the null string the signal specified by each sigspec is ignored by the shell and by the commands it invokes. If arg is not present and -p has been supplied, then the trap commands associated with each sigspec are displayed. If no arguments are supplied or if only -p is given, trap prints the list of commands associated with each signal. The -l option causes the shell to print a list of signal names and their corresponding numbers. Each sigspec is either a signal name defined in <signal.h> , or a signal number. Signal names are case insensitive and the SIG prefix is optional.

If a sigspec is EXIT (0) the command arg is executed on exit from the shell. If a sigspec is DEBUG, the command arg is executed before every simple command, for command, case command, select command, every arithmetic for command, and before the first command executes in a shell function (see ” Shell Grammar ,” above). Refer to the description of the extdebug option to the shopt builtin for details of its effect on the DEBUG trap. If a sigspec is RETURN, the command arg is executed each time a shell function or a script executed with the . or source builtins finishes executing.

If a sigspec is ERR, the command arg is executed whenever a simple command has a non-zero exit status, subject to the following conditions. The ERR trap is not executed if the failed command is part of the command list immediately following a while or until keyword, part of the test in an if statement, part of a command executed in a && or || list, or if the command’s return value is being inverted via ! . These are the same conditions obeyed by the errexit option.

Signals ignored upon entry to the shell cannot be trapped or reset. Trapped signals that are not being ignored are reset to their original values in a subshell or subshell environment when one is created. The return status is false if any sigspec is invalid; otherwise trap returns true.

type [ -aftpP ] name [ name …]With no options, indicate how each name would be interpreted if used as a command name. If the -t option is used, type prints a string that is one of alias, keyword, function, builtin, or file if name is an alias, shell reserved word, function, builtin, or disk file, respectively. If the name is not found, then nothing is printed, and an exit status of false is returned. If the -p option is used, type either returns the name of the disk file that would be executed if name were specified as a command name, or nothing if ” type -t name ” would not return file. The -P option forces a PATH search for each name , even if ” type -t name ” would not return file. If a command is hashed, -p and -P print the hashed value, not necessarily the file that appears first in PATH . If the -a option is used, type prints all of the places that contain an executable named name . This includes aliases and functions, if and only if the -p option is not also used. The table of hashed commands is not consulted when using -a . The -f option suppresses shell function lookup, as with the command builtin. type returns true if all of the arguments are found, false if any are not found.
ulimit [ -HSTabcdefilmnpqrstuvx [ limit ]]Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. The -H and -S options specify that the hard or soft limit is set for the given resource. A hard limit cannot be increased by a non-root user once it is set; a soft limit may be increased up to the value of the hard limit . If neither -H nor -S is specified, both the soft and hard limit s are set. The value of limit can be a number in the unit specified for the resource or one of the special values hard, soft, or unlimited, which stand for the current hard limit , the current soft limit , and no limit, respectively. If limit is omitted, the current value of the soft limit of the resource is printed, unless the -H option is given. When more than one resource is specified, the limit name and unit are printed before the value. Other options are interpreted as follows:

-a : All current limit s are reported.

-b : The maximum socket buffer size.

-c : The maximum size of core files created.

-d : The maximum size of a process’s data segment.

-e : The maximum scheduling priority (” nice “).

-f : The maximum size of files written by the shell and its children.

-i : The maximum number of pending signals.

-l : The maximum size that may be locked into memory.

-m : The maximum resident set size (many systems do not honor this limit ).

-n : The maximum number of open file descriptors (most systems do not allow this value to be set).

-p : The pipe size in 512-byte blocks (this may not be set).

-q : The maximum number of bytes in POSIX message queues.

-r : The maximum real-time scheduling priority.

-s : The maximum stack size.

-t : The maximum amount of cpu time in seconds.

-u : The maximum number of processes available to a single user.

-v : The maximum amount of virtual memory available to the shell and, on some systems, to its children.

-x : The maximum number of file locks.

-T : The maximum number of threads.

If limit is given, it is the new value of the specified resource (the -a option is display only). If no option is given, then -f is assumed. Values are in 1024-byte increments, except for -t , which is in seconds, -p , which is in units of 512-byte blocks, and -T , -b , -n , and -u , which are unscaled values. The return status is 0 unless an invalid option or argument is supplied, or an error occurs while setting a new limit .

umask [ -p ] [ -S ] [ mode ]The user file-creation mask is set to mode . If mode begins with a digit, it is interpreted as an octal number; otherwise it is interpreted as a symbolic mode mask similar to that accepted by chmod . If mode is omitted, the current value of the mask is printed. The -S option causes the mask to be printed in symbolic form; the default output is an octal number. If the -p option is supplied, and mode is omitted, the output is in a form that may be reused as input. The return status is 0 if the mode was successfully changed or if no mode argument was supplied, and false otherwise.
unalias [ -a ] [ name …]Remove each name from the list of defined aliases. If -a is supplied, all alias definitions are removed. The return value is true unless a supplied name is not a defined alias.
unset [ -fv ] [ name …]For each name , remove the corresponding variable or function. If no options are supplied, or the -v option is given, each name refers to a shell variable. Readonly variables may not be unset. If -f is specified, each name refers to a shell function, and the function definition is removed. Each unset variable or function is removed from the environment passed to subsequent commands. If any of COMP_WORDBREAKS , RANDOM , SECONDS , LINENO , HISTCMD , FUNCNAME , GROUPS , or DIRSTACK are unset, they lose their special properties, even if they are subsequently reset. The exit status is true unless a name is readonly.
wait [ n …]Wait for each specified process and return its termination status. Each n may be a process ID or a job specification; if a job spec is given, all processes in that job’s pipeline are waited for. If n is not given, all currently active child processes are waited for, and the return status is zero. If n specifies a non-existent process or job, the return status is 127. Otherwise, the return status is the exit status of the last process or job waited for.

Restricted shell

If bash is started with the name rbash , or the -r option is supplied at invocation, the shell becomes restricted . A restricted shell is used to set up an environment more controlled than the standard shell. It behaves identically to bash with the exception that the following are disallowed or not performed:

  • changing directories with cd
  • setting or unsetting the values of SHELL , PATH , ENV , or BASH_ENV
  • specifying command names containing /
  • specifying a file name containing a / as an argument to the . builtin command
  • specifying a filename containing a slash as an argument to the -p option to the hash builtin command
  • importing function definitions from the shell environment at startup
  • parsing the value of SHELLOPTS from the shell environment at startup
  • redirecting output using the > , >| , <> , >& , &> , and >> redirection operators
  • using the exec builtin command to replace the shell with another command
  • adding or deleting builtin commands with the -f and -d options to the enable builtin command
  • using the enable builtin command to enable disabled shell builtins
  • specifying the -p option to the command builtin command
  • turning off restricted mode with set +r or set +o restricted.

These restrictions are enforced after any startup files are read.

When a command that is found to be a shell script is executed (see the section ” Command Execution ” above), rbash turns off any restrictions in the shell spawned to execute the script.

arquivos

/ bin / bashThe bash executable.
/etc/profileThe systemwide initialization file, executed for login shells.
/etc/bash.bashrcThe systemwide per-interactive-shell startup file.
/etc/bash.bash.logoutThe systemwide login shell cleanup file, executed when a login shell exits.
~/.bash_profileThe personal initialization file, executed for login shells.
~/.bashrcThe individual per-interactive-shell startup file.
~/.bash_logoutThe individual login shell cleanup file, executed when a login shell exits.
~/.inputrcIndividual readline initialization file.

Exemplos

  bater

Launches the bash command interpreter. The remainder of the examples will assume that you are at a bash prompt.

 myvar="This is the value of my variable."

Sets the value of variable $myvar to “This is the value of my variable.”

 echo $myvar

Prints the value of $myvar .

 echo text$myvar

Prints ” textThis is the value of my variable. “

 echo text1${myvar}text2

Prints ” text1This is the value of my variable.text2 “.

 export MYVAR="This is my variable."

environment variable MYVAR to ” This is my variable. “

 echo $MYVAR

Prints the value of the environment variable MYVAR .

 export MYVAR=abracadabra;echo ${MYVAR#*ab}${MYVAR##*ab}

This one-line command prints ” racadabrara “. This command does a few things:

  1. sets the value of the environment variable MYVAR to ” abracadabra “;
  2. takes the value of MYVAR and removes the shortest possible (” # “) substring that matches the pattern *ab , which in this case is “ab”, which results in the string ” racadabra “;
  3. takes the value of MYVAR and removes the longest possible (” ## “) substring that matches the pattern *ab , which in this case is “abracadab”, which results in the strings ” ra “;
  4. prints the two results together, resulting in the concatenated string ” racadabrara “.
 myvar="12";echo $(( $myvar + 3 ))

Imprime ” 15 “.

 myvar = 0
enquanto [$ myvar -ne 10]
 Faz
  echo $ myvar
  myvar = $ (($ myvar + 1))
 feito

Imprime o seguinte:

 0 1 2 3 4 5 6 7 8 9

csh – O interpretador de comandos do shell C.
ksh – O interpretador de comandos do shell Korn.
sh – O interpretador de comandos do Bourne shell.

13 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.