fbpx

Comandos Linux – Comando tcsh

Comando Linux tcsh

comando tcsh

Em sistemas operacionais do tipo Unix, o tcsh (pronunciado “tee-see-shell” ou “tee-see-ess-aysh”) é um shell de linha de comando baseado no C Shell . Seus principais recursos são a conclusão de comandos programáveis ​​e a edição da linha de comandos.

Descrição

O tcsh é uma versão aprimorada, mas completamente compatível, do shell Berkeley UNIX C, csh . É um intérprete de linguagem de comando utilizável como um shell de logon interativo e um processador de comandos de script de shell. Inclui um editor de linha de comando (consulte O Editor de Linha de Comando ), conclusão programável de palavras (consulte Conclusão e Listagem ), correção ortográfica (consulte Correção Ortográfica ), um mecanismo de histórico (consulte Substituição de Histórico ), controle de trabalho (consulte Trabalhos ) e uma sintaxe semelhante à linguagem de programação C.

História

O tcsh foi desenvolvido por Ken Greer a partir do final dos anos 1970 na Universidade Carnegie Mellon. O ” t ” no tcsh refere-se ao TENEX, um sistema operacional DEC com conclusão de comando, que inspirou Greer a criar um shell com um recurso semelhante. O trabalho no tcsh continuou com a colaboração de Mike Ellis no Fairchild AI Labs, e o código fonte do tsch foi publicado em um grupo de notícias de programação de sistemas em outubro de 1983.

Sintaxe

  tcsh [-bcdefFimnqstvVxX] [-D name [= value ]] [ arg ...]
  tcsh -l

Opções

Se o primeiro argumento (argumento 0 ) do shell for ‘  ‘, será um shell de login. Um shell de login também pode ser especificado invocando o shell com o sinalizador -l como o único argumento.

O restante dos argumentos do sinalizador são interpretados da seguinte maneira:

  -b
Força uma “interrupção” do processamento da opção, fazendo com que quaisquer outros argumentos do shell sejam tratados como argumentos não opcionais. Os argumentos restantes não serão interpretados como opções de shell. Isso pode ser usado para passar opções para um script de shell sem confusão ou possível subterfúgio. O shell não executará um script de identificação de usuário definido sem essa opção.
  -c
Os comandos são lidos a partir do seguinte argumento (que deve estar presente e deve ser um único argumento), armazenados na variável do shell de comando para referência e executados. Quaisquer argumentos restantes são colocados na variável de shell argv .
  -d
O shell carrega a pilha de diretórios de ~ / .cshdirs, conforme descrito em Inicialização e desligamento, independentemente de ser um shell de logon.
  -D nome [ = valor ]
Define o nome da variável de ambiente como valor . (Apenas domínio / SO)
  -e
O shell é encerrado se algum comando invocado terminar de maneira anormal ou gerar um status de saída diferente de zero.
  -f
O shell não carrega nenhum recurso ou arquivos de inicialização, nem executa nenhum hash de comando e, portanto, é iniciado mais rapidamente.
  -F
O shell usa fork em vez de vfork para gerar processos.
  -Eu
O shell é interativo e solicita sua entrada de nível superior, mesmo que pareça não ser um terminal . Os shells são interativos sem essa opção se suas entradas e saídas forem terminais.
  -eu
O shell é um shell de logon. Aplicável apenas se -l for o único sinalizador especificado.
  -m
O shell carrega ~ / .tcshrc, mesmo que não pertença ao usuário efetivo. Versões mais recentes do su podem passar -m para o shell.
  -n
O shell analisa comandos, mas não os executa . Isso ajuda na depuração de scripts de shell.
  -q
O shell aceita o sinal SIGQUIT (consulte Manipulação de sinal ) e se comporta quando é usado em um depurador. O controle do trabalho está desativado.
  -s
A entrada do comando é obtida da entrada padrão .
  -t
O shell lê e executa uma única linha de entrada. Um ` \ ‘pode ser usado para escapar da nova linha no final desta linha e continuar em outra linha.
  -v
Define a variável detalhada do shell, para que a entrada do comando seja repetida após a substituição do histórico.
  -x
Define a variável de shell echo, para que os comandos sejam repetidos imediatamente antes da execução.
  -V
Define a variável detalhada do shell antes mesmo de executar ~ / .tcshrc .
  -X
É -x como -V é -v .
  --Socorro
Imprima uma mensagem de ajuda na saída padrão e saia.
  --versão
Imprima as opções de versão / plataforma / compilação na saída e saída padrão. Esta informação também está contida na variável shell da versão.

Após o processamento dos argumentos do sinalizador, se os argumentos permanecerem, mas nenhuma das opções -c , -i , -s ou -t for fornecida, o primeiro argumento será considerado como o nome de um arquivo de comandos (script) a ser executado. O shell abre esse arquivo e salva seu nome para possível re-substituição por ” $ 0 “. Como muitos sistemas usam os shells padrão da versão 6 ou 7 cujos scripts de shell não são compatíveis com esse shell, o shell usa um shell “padrão” para executar um script cujo primeiro caractere não é um ” # “, ou seja, não comece com um comentário .

Os argumentos restantes são colocados na variável de shell argv .

Inicialização e desligamento

Um shell de login começa executando comandos dos arquivos de sistema /etc/csh.cshrc e /etc/csh.login . Em seguida, ele executa comandos de arquivos no diretório inicial do usuário: primeiro ~ / .tcshrc ou, se ~ / .tcshrc não for encontrado, ~ / .cshrc , depois ~ / .history (ou o valor da variável do shell do arquivo de histórico ) ~ / .login e, finalmente, ~ / .cshdirs (ou o valor da variável do shell dirsfile ). O shell pode ler /etc/csh.login antes em vez de /etc/csh.cshrc e ~ / .login antes em vez de ~ / .tcshrc ou ~ / .cshrc e ~ / .history , se assim compilado; veja a variável shell da versão .

Os shells sem logon lêem apenas /etc/csh.cshrc e ~ / .tcshrc ou ~ / .cshrc na inicialização.

Para exemplos de arquivos de inicialização, você pode conferir https://sourceforge.net/projects/tcshrc/ .

Comandos como stty e tset , que precisam ser executados apenas uma vez por login, geralmente entram no arquivo ~ / .login . Os usuários que precisam usar o mesmo conjunto de arquivos com csh e tcsh podem ter apenas um ~ / .cshrc que verifica a existência da variável de shell tcsh (qv) antes de usar os comandos específicos do tcsh ou pode ter os dois ~ / .cshrc e um ~ / .tcshrc cuja origem s (consulte o comando embutido) ~ / .cshrc . O restante deste manual usa ” ~ / .tcshrc ” para significar ” ~ / .tcshrc ” ou, se ~ / .tcshrc não for encontrado, ~ / .cshrc .

No caso normal, o shell começa a ler comandos do terminal, solicitando ” > “. O processamento de argumentos e o uso do shell para processar arquivos contendo scripts de comando são descritos mais adiante. O shell lê repetidamente uma linha de entrada de comando, divide-a em palavras, coloca-a na lista do histórico de comandos, analisa -a e executa cada comando na linha.

Pode-se fazer logout digitando ” ^ D ” em uma linha vazia, ” logout ” ou ” login ” ou através do mecanismo de autologout do shell (consulte a variável do shell de autologout ). Quando um shell de login é finalizado, ele define a variável do shell de logout como ” normal ” ou ” automático “, conforme apropriado, e executa comandos dos arquivos /etc/csh.logout e ~ / .logout . O shell pode descartar o DTR no logout, se assim for compilado; veja a variável shell da versão .

Os nomes dos arquivos de logon e logout do sistema variam de sistema para sistema para compatibilidade com diferentes variantes do csh ; consulte a seção Arquivos .

Edição

Atualizado: 16/06/2017 por Computer Hope

O editor de linha de comando

A entrada da linha de comando pode ser editada usando seqüências de teclas, como as usadas no GNU Emacs ou vi . O editor está ativo apenas quando a variável de shell de edição é configurada, que é por padrão em shells interativos. bindkey interno pode exibir e alterar as ligações de teclas. As ligações de teclas no estilo Emacs são usadas por padrão (a menos que o shell tenha sido compilado de outra forma; consulte a variável shell da versão), mas o bindkey pode alterar as ligações de teclas para as ligações do estilo vi em massa.

O shell sempre liga as teclas de seta (conforme definidas na variável de ambiente TERMCAP ) a:

baixahistórico
acimahistórico
esquerdachar para trás
direitaforward-char

… a menos que isso altere outra ligação de caractere único. Pode-se definir as seqüências de escape da tecla de seta para a sequência vazia com settc para impedir essas ligações. As seqüências ANSI / VT100 para teclas de seta estão sempre ligadas.

Outras associações de teclas são, na maioria das vezes, o que os usuários do Emacs e vi esperariam e podem ser facilmente exibidas por bindkey , portanto, não há necessidade de listá-las aqui. Da mesma forma, bindkey pode listar os comandos do editor com uma breve descrição de cada um.

Observe que os comandos do editor não possuem a mesma noção de “palavra” que o shell. O editor delimita as palavras com caracteres não alfanuméricos que não estão nos wordchars de variáveis ​​do shell, enquanto o shell reconhece apenas espaços em branco e alguns caracteres com significados especiais, listados em Estrutura Lexical .

Conclusão e listagem

O shell geralmente é capaz de completar palavras quando recebe uma abreviação exclusiva. Digite parte de uma palavra (por exemplo ” ls / usr / lost “) e pressione a tecla Tab para executar o comando do editor de palavras completas. O shell completa o nome do arquivo ” / usr / lost ” para ” / usr / lost + found / “, substituindo a palavra incompleta pela palavra completa no buffer de entrada. Observe o ” / ” no final; A conclusão adiciona um ” / ” ao final dos diretórios concluídos e um espaço ao final de outras palavras concluídas, para acelerar a digitação e fornecer um indicador visual da conclusão bem-sucedida. A variável shell do adduffix pode ser desabilitada para evitar isso. Se nenhuma correspondência for encontrada (talvez ” / usr / lost + found ” não exista), a campainha do terminal tocará. Se a palavra já estiver completa (talvez exista um ” / usr / lost ” em seu sistema, ou talvez você esteja pensando muito à frente e digitou a coisa toda), um ” / ” ou espaço será adicionado ao final, se não for ‘ já está lá.

  definir lista automática
  nm / usr / lib / libt 

  libtermcap.a@ libtermlib.a@
  nm / usr / lib / libterm

Se a lista automática estiver definida como “ambígua”, as opções serão listadas apenas quando a conclusão falhar e não adicionará novos caracteres à palavra que está sendo concluída.

Um nome de arquivo a ser preenchido pode conter variáveis, seus diretórios pessoais ou os de outros usuários abreviados com ” ~ ” (consulte Substituição de nome de arquivo ) e as entradas da pilha de diretórios abreviadas com ” = ” (consulte Substituição da pilha de diretórios ). Por exemplo,

  ls ~ k [^ D]
  kahn kas kellogg
  ls ~ ke 

  ls ~ kellogg /

… ou por outro exemplo:

  definir local = / usr / local
  ls $ lo 

  $ local / [^ D]
  bin / etc / lib / man / src /
  ls $ local /

Observe que as variáveis ​​também podem ser expandidas explicitamente com o comando do editor de expansão de variáveis .

delete-char-or-list-or -of listas apenas no final da linha; no meio de uma linha, ele exclui o caractere sob o cursor e, em uma linha vazia, desconecta um ou, se ignoreeof estiver definido, não fará nada. ” M- ^ D “, vinculado às opções de lista de comando do editor, lista possibilidades de conclusão em qualquer lugar em uma linha e opções de lista (ou qualquer um dos comandos do editor relacionados que excluem ou não excluem, listam e / ou registram out, listados em delete-char-or-list-or -of ) podem ser vinculados a ” ^ D ” com o comando bindkey builtin, se desejado.

Os comandos do editor complete-word-fwd e complete-word-back (não vinculados a nenhuma tecla por padrão) podem ser usados ​​para percorrer a lista de possíveis conclusões, substituindo a palavra atual pela palavra seguinte ou anterior no Lista.

A variável do shell fignore pode ser configurada para uma lista de sufixos a serem ignorados pela conclusão. Considere o seguinte:

  ls
  Makefile condiments.h ~ main.o side.c
 README main.c lado da refeição.o
 condimentos.h main.c ~
  set fignore = (.o \ ~)
  emacs ma [^ D]
  main.c main.c ~ main.o
  emacs ma 

  emacs main.c

” main.c ~ ” e ” main.o ” são ignorados pela conclusão (mas não pela listagem), porque terminam com sufixos no fignore . Observe que era necessário um ” \ ” na frente de ” ~ ” para impedir que ele fosse expandido para casa, conforme descrito em Substituição de nome de arquivo. fignore será ignorado se apenas uma conclusão for possível.

Se a variável shell completa estiver definida como ” aprimorada “, a conclusão ignorará maiúsculas e minúsculas e considerará períodos, hífens e sublinhados (” . “, ”  ” e ” _ “) como separadores de palavras e hífens e sublinhados como equivalentes. Se você tivesse os seguintes arquivos

  comp.lang.c comp.lang.perl comp.std.c ++
            comp.lang.c ++ comp.std.c

e digitado ” mail -f clc 

“, ele seria concluído como ” mail -f comp.lang.c ” e ^ D listaria ” comp.lang.c ” e ” comp.lang.c ++ “. ” mail -f c..c ++ [^ D]” listaria ” comp.lang.c ++ ” e ” comp.std.c ++ “. Digitando ” rm a – file [^ D]” no seguinte diretório

  A_silly_file um arquivo hifenizado another_silly_file

listaria todos os três arquivos, porque maiúsculas e minúsculas são ignorados e hífens e sublinhados são equivalentes. Períodos, no entanto, não são equivalentes a hífens ou sublinhados.

Se a variável shell completa estiver definida como ” Aprimorar “, a conclusão ignorará maiúsculas e minúsculas e diferenças entre um hífen e um separador de palavras sublinhadas apenas quando o usuário digitar um caractere minúsculo ou um hífen. A inserção de um caractere maiúsculo ou de sublinhado não corresponderá ao caractere minúsculo ou ao hífen da palavra correspondente. Digitar ” rm a – file [^ D]” no diretório do exemplo anterior ainda listaria todos os três arquivos, mas digitar ” rm A – file ” corresponderia apenas a ” A_silly_file ” e digitar ” rm a__file [^ D] “corresponderia apenas a” A_silly_file “e” another_silly_file “porque o usuário usou explicitamente um caractere maiúsculo ou sublinhado.

A conclusão e a listagem são afetadas por outras variáveis ​​do shell: recexact pode ser configurado para ser concluído com a menor correspondência possível possível, mesmo que mais digitação possa resultar em uma correspondência mais longa:

  ls
  forragem foo alimentos foonly
  definir recexact
  rm fo 

apenas emite um sinal sonoro, porque ” fo ” pode se expandir para ” fod ” ou ” foo “, mas se digitarmos outro ” o “,

  rm foo 

  rm foo

a conclusão é concluída em ” foo “, mesmo que ” food ” e ” foonly ” também correspondam. autoexpand pode ser configurado para executar o comando do editor de histórico de expansão antes de cada tentativa de conclusão, a correção automática pode ser configurada para corrigir a ortografia – corrija a palavra a ser concluída (consulte Correção Ortográfica ) antes que cada tentativa de conclusão e correta possa ser configurada para concluir comandos automaticamente após bate “retorno”. O matchbeep pode ser configurado para emitir um bipe de conclusão ou não em uma variedade de situações, e o nobeep pode ser configurado para nunca emitir um bipe. O nostat pode ser configurado para uma lista de diretórios e / ou padrões que correspondem aos diretórios para impedir que o mecanismo de conclusão exponha esses diretórios. listmax e listmaxrows podem ser configuradas para limitar o número de itens e linhas (respectivamente) listados sem perguntar primeiro. O reconheça_only_executables pode ser configurado para tornar a lista do shell apenas executável ao listar comandos, mas é bastante lento.

Finalmente, o comando interno completo pode ser usado para dizer ao shell como concluir outras palavras que não sejam nomes de arquivos, comandos e variáveis. A conclusão e a listagem não funcionam nos padrões glob (consulte Substituição de nome de arquivo ), mas os comandos do editor list-glob e expand-glob executam funções equivalentes aos padrões glob.

Correção ortográfica

Às vezes, o shell pode corrigir a ortografia dos nomes de arquivos, comandos e nomes de variáveis, além de completá-los e listá-los.

Palavras individuais podem ser corrigidas de ortografia com o comando do editor de palavras ortográficas (geralmente vinculado a Ms e MS ) e todo o buffer de entrada com a linha ortográfica (geralmente vinculada a M- $ ). A variável de shell correta pode ser configurada como ” cmd ” para corrigir o nome do comando ou ” all ” para corrigir a linha inteira toda vez que o retorno for digitado e a correção automática pode ser configurada para corrigir a palavra a ser concluída antes de cada tentativa de conclusão.

Quando a correção ortográfica é invocada de qualquer uma dessas maneiras e o shell pensa que qualquer parte da linha de comando está incorreta, ele solicita a linha corrigida:

  definido como correto = cmd
  lz / usr / bin
  CORRETO> ls / usr / bin (y | n | e | a)?

Pode-se responder ” y ” ou espaço para executar a linha corrigida, ” e ” para deixar o comando não corrigido no buffer de entrada, ” a ” para abortar o comando como se ” ^ C ” tivesse sido atingido e qualquer outra coisa para executar o comando linha original inalterada.

A correção ortográfica reconhece conclusões definidas pelo usuário (consulte o comando interno completo ). Se uma palavra de entrada em uma posição para a qual uma conclusão é definida se assemelha a uma palavra na lista de conclusão, a correção ortográfica registra um erro de ortografia e sugere a última palavra como uma correção. No entanto, se a palavra de entrada não corresponder a nenhuma das conclusões possíveis para essa posição, a correção ortográfica não registrará um erro de ortografia.

Assim como a conclusão, a correção ortográfica funciona em qualquer lugar da linha, empurrando o restante da linha para a direita e possivelmente deixando caracteres extras à direita do cursor.

Atençãonão é garantido que a correção ortográfica funcione da maneira que se pretende e é fornecida principalmente como um recurso experimental.

Comandos do editor

” bindkey ” lista as ligações de teclas e ” bindkey -l ” e descreve brevemente os comandos do editor. Somente comandos novos ou especialmente interessantes de editor são descritos aqui. Veja emacs e vi para descrições das combinações de teclas de cada editor.

O caractere ou caracteres aos quais cada comando está vinculado por padrão é dado entre parênteses. ” Caractere ^ ” significa um caractere de controle e ” M – caractere “, um meta caractere, digitado como caractere de escape nos terminais sem uma chave de meta. O caso conta, mas os comandos vinculados às letras por padrão são vinculados às letras maiúsculas e minúsculas por conveniência.

Nome do ComandoVinculação de teclasDescrição
palavra completaabaConclui uma palavra conforme descrito em Conclusão e listagem .
palavra completa de volta(não vinculado)Como complete-word-fwd , mas avança a partir do final da lista.
palavra completa-fwd(não vinculado)Substitui a palavra atual pela primeira na lista de possíveis conclusões. Pode ser repetido para avançar pela lista. No final da lista, emite um sinal sonoro e reverte para a palavra incompleta.
palavra completa em bruto^ X – guiaComo palavra completa , mas ignora conclusões definidas pelo usuário.
copy-prev-wordM – ^ _Copia a palavra anterior na linha atual no buffer de entrada. Veja também insert-last-word .
dabbrev-expandM – /Expande a palavra atual para a mais recente anterior, para a qual a atual é uma subcadeia inicial, agrupando a lista do histórico (uma vez), se necessário. Repetir dabbrev-expand sem nenhuma alteração na digitação muda para a próxima palavra anterior, etc., ignorando correspondências idênticas, como faz a pesquisa de histórico para trás .
delete-charvinculado a ” Del ” se estiver usando o /etc/csh.cshrc padrãoExclui o caractere abaixo do cursor. Veja também delete-char-or-list-or -of .
delete-char-or-eof(não vinculado)Exclui -char se houver um caractere sob o cursor ou no final do arquivo em uma linha vazia. Veja também delete-char-or-list-or -of .
delete-char-or-list(não vinculado)Delete-char se houver um caractere sob o cursor ou listar opções no final da linha. Veja também delete-char-or-list-or -of .
delete-char-or-list-or -of^ DDelete-char se houver um caractere sob o cursor, listar opções no final da linha ou no final do arquivo em uma linha vazia. Veja também esses três comandos, cada um dos quais executa apenas uma única ação, e delete-char-or-eof , delete-char-or-list e list-or -of , cada um dos quais executa dois diferentes dos três.
históricodescendente , ^ NComo o histórico , mas desce, parando na linha de entrada original.
fim do arquivo(não vinculado)Sinaliza um final de arquivo, fazendo com que o shell saia, a menos que a variável ignoreeof do shell esteja configurada para evitar isso. Veja também delete-char-or-list-or -of .
história de expansãoM – espaçoExpande as substituições do histórico na palavra atual. Consulte Substituição de histórico. Veja também magic-space , toggle-literal-history e a variável shell autoexpand .
expand-glob^ X – *Expande o padrão glob à esquerda do cursor. Consulte Substituição de nome de arquivo .
linha de expansãonão vinculadoComo expandir o histórico , mas expande as substituições do histórico em cada palavra no buffer de entrada.
variáveis ​​de expansão^ X – $Expande a variável para a esquerda do cursor. Consulte Substituição variável .
histórico-pesquisa-para trásM – p , M – PProcura na lista de histórico um comando que começa com o conteúdo atual do buffer de entrada até o cursor e o copia no buffer de entrada. A cadeia de pesquisa pode ser um padrão global (consulte Substituição de nome de arquivo) contendo ” * “, ” ? “, ” [] ” Ou ” {} “. up-history e down-history prosseguirão a partir do ponto apropriado na lista de histórico. Apenas modo Emacs. Consulte também histórico-pesquisa-para a frente e i-pesquisa-para trás .
histórico-pesquisa-encaminharM – n , M – NComo histórico-pesquisa-para trás , mas pesquisas para a frente.
i-search-back(não vinculado)Pesquisa para trás como history-search-backward , copia a primeira correspondência no buffer de entrada com o cursor posicionado no final do padrão e solicita ” bck: ” e a primeira correspondência. Caracteres adicionais podem ser digitados para estender a pesquisa, i-search-back pode ser digitado para continuar pesquisando com o mesmo padrão, contornando a lista do histórico, se necessário, ( i-search-back deve estar vinculado a um único caractere para que isso trabalho) ou um dos seguintes caracteres especiais pode ser digitado:

^ WAnexa o restante da palavra sob o cursor ao padrão de pesquisa.
delete (ou qualquer caractere vinculado a backward-delete-char )Desfaz o efeito do último caractere digitado e exclui um caractere do padrão de pesquisa, se apropriado.
^ GSe a pesquisa anterior tiver sido bem-sucedida, anula a pesquisa inteira. Caso contrário, volta para a última pesquisa bem-sucedida.
escaparFinaliza a pesquisa, deixando a linha atual no buffer de entrada.

Qualquer outro caractere não vinculado ao comando de inserção automática encerra a pesquisa, deixando a linha atual no buffer de entrada e é interpretado como entrada normal. Em particular, um retorno de carro faz com que a linha atual seja executada. Apenas modo Emacs. Veja também i-search-fwd e history-search-backward .

i-search-fwd(não vinculado)Como i-search-back , mas pesquisas para a frente.
inserir a última palavraM – _Insere a última palavra da linha de entrada anterior (” ! $ “) No buffer de entrada. Veja também copy-prev-word .
lista de opçõesM – ^ DLista as possibilidades de conclusão, conforme descrito em Conclusão e Listagem . Consulte também delete-char-or-list-or -of e list-options-raw .
lista-escolhas-primas^ X – ^ DComo as opções de lista , mas ignora as conclusões definidas pelo usuário.
lista-glob^ X – g , ^ X – GAs listas (via built-in ls-F ) correspondem ao padrão glob (consulte Substituição do nome do arquivo ) à esquerda do cursor.
lista-ou-eof(não vinculado)Faz escolhas de lista ou final de arquivo em uma linha vazia. Veja também delete-char-or-list-or -of .
espaço mágico(não vinculado)Expande as substituições do histórico na linha atual, como expandir o histórico , e insere um espaço. O espaço mágico foi projetado para ser vinculado à barra de espaço , mas não é vinculado por padrão.
comando normalizar^ X – ?Procura a palavra atual em PATH e, se for encontrada, a substitui pelo caminho completo do executável. Caracteres especiais são citados. Os aliases são expandidos e citados, mas os comandos nos aliases não. Este comando é útil com comandos que aceitam comandos como argumentos, por exemplo, ” dbx ” e ” sh -x “.
caminho normalizado^ X – n , ^ X – NExpande a palavra atual, conforme descrito na configuração ” expand ” da variável de shell dos links simbólicos .
modo de substituição(não vinculado)Alterna entre os modos de entrada e substituição.
editor run-fgM – ^ ZSalva a linha de entrada atual e procura um trabalho parado com um nome igual ao último componente da parte do nome do arquivo das variáveis ​​de ambiente EDITOR ou VISUAL ou, se nenhum estiver definido, ” ed ” ou ” vi “. Se um trabalho desse tipo for encontrado, ele será reiniciado como se ” fg% job ” tivesse sido digitado. Isso é usado para alternar facilmente entre um editor e o shell. Algumas pessoas vinculam esse comando a ” ^ Z ” para que possam fazer isso ainda mais facilmente.
ajuda de execuçãoM – h , M – HProcura documentação no comando atual, usando a mesma noção de “comando atual” que as rotinas de conclusão e imprime. Não há como usar um pager; O run-help foi desenvolvido para arquivos curtos de ajuda. Se o comando de ajuda do alias especial for definido, ele será executado com o nome do comando como argumento único. Senão, a documentação deve estar em um arquivo chamado command.help , command.1 , command.6 , command.8 ou command, que deve estar em um dos diretórios listados na variável de ambiente HPATH . Se houver mais de um arquivo de ajuda, apenas o primeiro será impresso.
comando de inserção automática(caracteres de texto)No modo de inserção (o padrão), insere o caractere digitado na linha de entrada após o caractere sob o cursor. No modo de substituição, substitui o caractere sob o cursor pelo caractere digitado. O modo de entrada normalmente é preservado entre as linhas, mas a variável do shell inputmode pode ser configurada como ” insert ” ou ” overwrite ” para colocar o editor nesse modo no início de cada linha. Consulte também modo de substituição .
sequência de entradaprefixo de seta, meta prefixo, ^ XIndica que os seguintes caracteres fazem parte de uma sequência de várias teclas. A ligação de um comando a uma sequência de várias teclas realmente cria duas ligações: o primeiro caractere para sequenciar a entrada e a sequência inteira para o comando. Todas as seqüências que começam com um caractere vinculado à sequência de entrada são efetivamente vinculadas à chave indefinida, a menos que vinculadas a outro comando.
linha de feitiçoM – $Tenta corrigir a ortografia de cada palavra no buffer de entrada, como a palavra ortográfica , mas ignora palavras cujo primeiro caractere seja ”  “, ” ! “, ” ^ ” Ou ” % ” ou que contenha ” \ “, ” * ” ou ” ? “, para evitar problemas com interruptores, substituições e similares. Consulte Correção ortográfica.
soletrar palavraM – s , M – STenta corrigir a ortografia da palavra atual, conforme descrito em Correção ortográfica. Verifica cada componente de uma palavra que parece ser um nome de caminho.
alternar-história-literalM – r , M – RExpande ou “expande” as substituições do histórico no buffer de entrada. Consulte também expand-history e a variável shell autoexpand .
chave indefinida(qualquer chave não acoplada)Bips.
históricoseta para cima, ^ PCopia a entrada anterior na lista do histórico no buffer de entrada. Se histlit estiver definido, use a forma literal da entrada. Pode ser repetido para avançar na lista do histórico, parando no topo.
vi-search-back?Solicita com ” ? ” Uma sequência de pesquisa (que pode ser um padrão global, como ocorre no histórico de pesquisa para trás ), a pesquisa e a copia no buffer de entrada. A campainha toca se nenhuma correspondência for encontrada. Bater em retornar encerra a pesquisa e deixa a última correspondência no buffer de entrada. Pressionar escape termina a pesquisa e executa a correspondência. apenas no modo vi .
vi-search-fwd/Como vi-search-back , mas pesquisas para a frente.
qual comandoM – ?Faz um qual (consulte a descrição do comando interno ) na primeira palavra do buffer de entrada.
yank-popM – yQuando executado imediatamente após um puxão ou outro puxão , substitui a corda puxada pela próxima corda anterior da eliminação. Isso também tem o efeito de girar a eliminação, de modo que essa sequência seja considerada a mais recentemente eliminada por um comando posterior. Repetir o ianque -pop percorrerá a matança várias vezes.

Estrutura lexical

O shell divide as linhas de entrada em palavras nos espaços em branco e nas guias. Os caracteres especiais ” & “, ” | “, ” ; “, ” < “, ” > “, ” ( ” e ” ) ” e os caracteres duplicados ” && “, ” || “, ” << ” e ” >> “são sempre palavras separadas, estejam ou não cercadas por espaços em branco .

Quando a entrada do shell não é um terminal , o caractere ” # ” é usado para iniciar um comentário . Cada ” # ” e o restante da linha de entrada em que aparece são descartados antes de serem analisados.

Um caractere especial (incluindo um espaço em branco ou tabulação) pode ser impedido de ter seu significado especial e possivelmente fazer parte de outra palavra, precedendo-o com uma barra invertida (” \ “) ou colocando-o entre simples (  ), duplo (  ) ou backtick ( ` ). Quando não citada de outra forma, uma nova linha precedida por um” \ “é equivalente a um espaço em branco, mas entre aspas essa sequência resulta em uma nova linha.

Além disso, todas as substituições, exceto a substituição do histórico, podem ser evitadas colocando-se as strings (ou partes de strings) nas quais aparecem entre aspas simples ou citando os caracteres cruciais (por exemplo, ” $ ” ou ” ` “para substituição variável ou Substituição de Comando, respectivamente) com ” \ “. Substituição de alias não é exceção: citar de qualquer forma qualquer caractere de uma palavra para a qual um alias foi definido impede a substituição do alias. A maneira usual de citar um alias é precedê-lo com uma barra invertida. A substituição do histórico é impedida por barras invertidas, mas não por aspas simples. Seqüências de caracteres entre aspas duplas ou anteriores sofrem substituição variável e substituição de comando, mas outras substituições são impedidas.

O texto entre aspas simples ou duplas se torna uma única palavra (ou parte de uma). Os metacaracteres nessas cadeias, incluindo espaços em branco e guias, não formam palavras separadas. Somente em um caso especial (consulte Substituição de Comandos abaixo) uma string com aspas duplas produz partes de mais de uma palavra; cadeias de citação simples nunca o fazem. As aspas anteriores (backticks) são especiais: elas sinalizam a substituição de comandos, o que pode resultar em mais de uma palavra.

A citação de cadeias complexas, particularmente as que contêm caracteres de citação, pode ser confusa. Lembre-se de que as aspas não precisam ser usadas como estão na escrita humana. Pode ser mais fácil citar não uma sequência inteira, mas apenas as partes da sequência que precisam de citação, usando diferentes tipos de citação para fazer isso, se apropriado.

A variável de shell backslash_quote pode ser configurada para fazer com que as barras invertidas sempre citam ” \ “, ”  ” e ”  “. Isso pode facilitar tarefas de cotação complexas, mas pode causar erros de sintaxe nos scripts csh .

Substituições

Atualizado: 16/06/2017 por Computer Hope

Substituição de histórico

Cada comando, ou “evento”, entrada do terminal é salvo na lista de histórico. O comando anterior é sempre salvo e a variável do shell do histórico pode ser definida como um número para salvar muitos comandos. A variável do shell histdup pode ser configurada para não salvar eventos duplicados ou eventos duplicados consecutivos.

Os comandos salvos são numerados seqüencialmente de 1 e carimbados com o tempo. Geralmente, não é necessário usar números de eventos, mas o número do evento atual pode fazer parte do prompt, colocando um ” ! ” Na variável do prompt do shell.

O shell realmente salva o histórico em formas expandidas e literais (não expandidas). Se a variável do shell histlit estiver configurada, os comandos que exibem e armazenam o histórico usam o formato literal.

O comando interno do histórico pode imprimir, armazenar em um arquivo, restaurar e limpar a lista do histórico a qualquer momento, e as variáveis ​​do shell savehist e histfile podem ser configuradas para armazenar a lista do histórico automaticamente no logout e restaurá-la no login.

As substituições do histórico introduzem palavras da lista do histórico no fluxo de entrada, facilitando a repetição de comandos, a repetição de argumentos de um comando anterior no comando atual ou a correção de erros de ortografia no comando anterior com pouca digitação e um alto grau de confiança.

As substituições do histórico começam com o caractere ” ! “. Eles podem começar em qualquer lugar do fluxo de entrada, mas não aninham. O ” ! ” Pode ser precedido por um ” \ ” para impedir seu significado especial; por conveniência, um ” ! ” é passado inalterado quando é seguido por um espaço em branco, tab, nova linha, ” = ” ou ” ( “. As substituições do histórico também ocorrem quando uma linha de entrada começa com ” ^ “. Essa abreviação especial será descrita Os caracteres usados ​​para sinalizar a substituição do histórico (” ! ” e ^ ) podem ser alterados configurando a variável do shell histchars . Qualquer linha de entrada que contenha uma substituição do histórico é impressa antes de ser executada.

Uma substituição de histórico pode ter uma “especificação de evento”, que indica o evento do qual as palavras devem ser obtidas, um “designador de palavras”, que seleciona palavras específicas do evento escolhido, e / ou um “modificador”, que manipula o selecionado palavras.

Uma especificação de evento pode ser:

nUm número, referente a um evento específico
 nUm deslocamento, referente ao evento n antes do evento atual
#O evento atual. Isso deve ser usado com cuidado no csh , onde não há verificação de recursão . O tcsh permite 10 níveis de recursão.
!O evento anterior (equivalente a ” -1 “)
sO evento mais recente cuja primeira palavra começa com a sequência s
? s ?O evento mais recente que contém a sequência s . O segundo ? pode ser omitido se for imediatamente seguido por uma nova linha.

Por exemplo, considere este pedaço da lista de histórico de alguém:

  9 8:30 nroff -man wumpus.man
 10 8:31 cp wumpus.man wumpus.man.old
 11 8:36 vi wumpus.man
 12 8:37 diff wumpus.man.old wumpus.man

Os comandos são mostrados com seus números de evento e carimbos de hora . O evento atual, que ainda não digitamos, é o evento 13. ” ! 11 ” e ” ! -2 ” referem-se ao evento 11. ” !! ” refere-se ao evento anterior, 12. ” !! ” pode ser abreviado ” ! ” se for seguido por ” : ” (” : ” é descrito abaixo). ” ! n ” refere-se ao evento 9, que começa com ” n “. ” !? old? ” também se refere ao evento 12, que contém ” old “. Sem designadores de palavras ou modificadores, as referências do histórico se expandem para o evento inteiro; portanto, podemos digitar ” ! Cp ” para refazer o comando copy ou ” !! | more ” se a saída ” diff ” aparecer na parte superior da tela.

As referências do histórico podem ser isoladas do texto ao redor com chaves, se necessário. Por exemplo, ” ! Vdoc ” procuraria um comando começando com ” vdoc ” e, neste exemplo, não encontraria um, mas ” ! {V} doc ” seria expandido sem ambiguidade para ” vi wumpus.mandoc “. Mesmo entre chaves, as substituições do histórico não se aninham.

Enquanto o csh se expande, por exemplo ,! 3d para o evento 3 com a letra d anexada, o tcsh o expande para o último evento começando com 3d ; apenas argumentos completamente numéricos são tratados como números de eventos. Isso torna possível recuperar eventos que começam com números. Para expandir ! 3d como no csh, diga ! {3} d .

Para selecionar palavras de um evento, podemos seguir a especificação do evento com um ” : ” e um designador para as palavras desejadas. As palavras de uma linha de entrada são numeradas de 0, a primeira (geralmente comando) é 0, a segunda (primeiro argumento) é 1, etc. Os designadores básicos de palavras são:

0 0A primeira palavra (comando)
nO enésimo argumento
^O primeiro argumento, equivalente a ” 1 “
$O último argumento
%A palavra correspondida por um ? s ? procurar
x  yUma variedade de palavras
 yEquivalente a ” 0- y “
*Equivale a ” ^ – $ “, mas não retorna nada se o evento contiver apenas 1 palavra
x *Equivalente a ” x- $ “
x-Equivalente a ” x * “, mas omitindo a última palavra (” $ “)

As palavras selecionadas são inseridas na linha de comando, separadas por espaços em branco únicos. Por exemplo, o comando ” diff ” no exemplo anterior pode ter sido digitado como ” diff !!: 1.old !!: 1 ” (usando ” : 1 ” para selecionar o primeiro argumento do evento anterior) ou ” diff! -2: 2! -2: 1 “para selecionar e trocar os argumentos do comando” cp “. Se não nos importássemos com a ordem do ” diff “, poderíamos ter dito ” diff! -2: 1-2 ” ou ” diff! -2: * “. O comando ” cp ” pode ter sido escrito ” cp wumpus.man! #: 1.old “, usando ” # ” para se referir ao evento atual. ” ! n: – hurkle.man ” reutilizaria as duas primeiras palavras do comando ” nroff ” para dizer ” nroff -man hurkle.man “.

O ” : ” que separa a especificação do evento do designador de palavras pode ser omitido se o seletor de argumentos começar com ” ^ “, ” $ “, ” * “, ” % ” ou ”  “. Por exemplo, nosso comando ” diff ” pode ter sido ” diff !! ^. Old !! ^ ” ou, equivalente, ” diff !! $. Old !! $ “. No entanto, se ” !! ” for abreviado ” ! “, Um seletor de argumentos começando com ”  ” será interpretado como uma especificação de evento.

Uma referência de histórico pode ter um designador de palavras, mas nenhuma especificação de evento. Em seguida, faz referência ao comando anterior. Continuando nosso exemplo ” diff “, poderíamos ter dito ” diff! ^. Old! ^ ” Ou, para obter os argumentos na ordem oposta, apenas ” diff! * “.

A palavra ou palavras em uma referência de histórico podem ser editadas ou “modificadas”, seguindo-a com um ou mais modificadores, cada um precedido por um ” : “:

hRemova um componente de nome de caminho à direita, deixando a cabeça.
tRemova todos os principais componentes do nome do caminho, deixando a cauda.
rRemova uma extensão de nome de arquivo ” .xxx “, deixando o nome raiz.
eRemova todos, exceto a extensão.
vocêMaiúscula a primeira letra minúscula.
euMinúscula a primeira letra maiúscula.
s / l / rSubstitua l por r . l é uma string como r , não uma expressão regular, como no comando ed de mesmo nome. Qualquer caractere pode ser usado como delimitador no lugar de ” / “; um ” \ ” pode ser usado para citar o delimitador dentro de l e r . O caractere ” & ” no r é substituído por l ; ” \ ” também cita ” & “. Se l estiver vazio ( “” ), será utilizado l de uma substituição anterior ou s de uma pesquisa anterior ou número de evento na especificação de evento. O delimitador à direita pode ser omitido se for imediatamente seguido por uma nova linha.
&Repita a substituição anterior.
gAplique o seguinte modificador uma vez a cada palavra.
umaAplique o modificador a seguir tantas vezes quanto possível em uma única palavra. ” a ” e ” g ” podem ser usados ​​juntos para aplicar um modificador globalmente. Com o modificador `s ‘, somente os padrões contidos na palavra original são substituídos, não os padrões que contêm qualquer resultado de substituição.
pImprima a nova linha de comando, mas não a execute.
qCite as palavras substituídas, impedindo novas substituições.
xComo q , mas divida em palavras em espaços em branco, guias e novas linhas.

Os modificadores são aplicados apenas à primeira palavra modificável (a menos que ” g ” seja usado). É um erro que nenhuma palavra seja modificável.

Por exemplo, o comando ” diff ” pode ter sido escrito como ” diff wumpus.man.old! # ^: R “, usando ” : r ” para remover ” .old ” do primeiro argumento na mesma linha (” ! # ^ “). Poderíamos dizer ” eco olá por aí “, depois ” eco! *: U ” para colocar em maiúscula ” olá “, ” eco! *: Au ” para dizer em voz alta, ou ” eco! *: Agu ” para realmente gritar. Podemos seguir ” mail -s ‘. Esqueci minha senha’ rot ‘com” !: S / rot / root “para corrigir a ortografia de” root “(mas consulte Correção ortográfica para uma abordagem diferente).

Existe uma abreviação especial para substituições. ” ^ “, quando é o primeiro caractere em uma linha de entrada, é equivalente a ” !: s ^ “. Assim, poderíamos ter dito ” ^ rot ^ root ” para fazer a correção ortográfica no exemplo anterior. Esta é a única substituição do histórico que não começa explicitamente com ” ! “.

No csh, como tal, apenas um modificador pode ser aplicado a cada histórico ou expansão variável. No tcsh , mais de um pode ser usado, por exemplo

  % mv wumpus.man /usr/man/man1/wumpus.1
  % man! $: t: r
  homem wumpus

No csh , o resultado seria ” wumpus.1: r “. Uma substituição seguida por dois pontos pode precisar ser isolada com chaves:

  > mv a.out / usr / games / wumpus
  > setenv PATH! $: h: $ PATH
  Ruim !  modificador: $.
  > setenv PATH! {- 2 $: h}: $ PATH
  setenv PATH / usr / jogos: / bin: / usr / bin :.

A primeira tentativa seria bem-sucedida no csh, mas falhará no tcsh , porque o tcsh espera outro modificador após o segundo dois pontos em vez de ” $ “.

Por fim, o histórico pode ser acessado através do editor e também das substituições descritas. Os comandos para cima e para baixo , histórico-pesquisa-para-trás- e -para-frente , i-pesquisa-para-trás e -fwd , vi-search-back e -fwd , cópia-prev-palavra e inserção da última palavra – comandos do editor pesquisam eventos na lista do histórico e copie-os para o buffer de entrada. O comando do editor de alternância-literal-histórico alterna entre as formas expandida e literal das linhas do histórico no buffer de entrada. substitua o histórico de expansão e substitui o histórico de expansão de linha de expansão na palavra atual e no buffer de entrada inteiro, respectivamente.

Substituição de alias

O shell mantém uma lista de aliases que podem ser definidos, desmarcados e impressos pelos comandos alias e unalias . Depois que uma linha de comando é analisada em comandos simples (consulte Comandos ), a primeira palavra de cada comando, da esquerda para a direita, é verificada para ver se possui um alias. Nesse caso, a primeira palavra é substituída pelo alias. Se o alias contiver uma referência de histórico, ele passará pela substituição do Histórico como se o comando original fosse a linha de entrada anterior. Se o alias não contiver uma referência de histórico, a lista de argumentos permanecerá intocada.

Portanto, se o alias para ” ls ” fosse ” ls -l “, o comando ” ls / usr ” se tornaria ” ls -l / usr “, a lista de argumentos aqui não será perturbada. Se o alias de ” pesquisa ” fosse ” grep! ^ / Etc / passwd “, ” fatura de pesquisa ” se tornaria ” fatura de grep / etc / passwd “. Aliases podem ser usados ​​para introduzir a metassintaxe do analisador. Por exemplo, ” alias print ‘pr \! * | Lpr’ ” define um “comando” (” print “) que apresenta seus argumentos para a impressora de linha.

A substituição do alias é repetida até a primeira palavra do comando não ter alias. Se uma substituição de alias não alterar a primeira palavra (como no exemplo anterior), ela será sinalizada para impedir um loop. Outros loops são detectados e causam um erro.

Alguns aliases são referidos pelo shell; consulte Aliases especiais .

Substituição variável

O shell mantém uma lista de variáveis, cada uma das quais tem como valor uma lista de zero ou mais palavras. Os valores das variáveis ​​do shell podem ser exibidos e alterados com os comandos set e unsetet . O sistema mantém sua própria lista de variáveis de ambiente . Eles podem ser exibidos e alterados com printenv , setenv e unsetenv .

As variáveis ​​podem ser feitas somente leitura com ” set -r “. Variáveis ​​somente leitura não podem ser modificadas ou desabilitadas; tentar fazer isso causará um erro. Uma vez tornada somente leitura, uma variável não pode ser tornada gravável; portanto, ” set -r ” deve ser usado com cuidado. As variáveis ​​de ambiente não podem ser feitas somente leitura.

Algumas variáveis ​​são definidas pelo shell ou referidas por ele. Por exemplo, a variável argv é uma imagem da lista de argumentos do shell, e as palavras do valor dessa variável são mencionadas de maneiras especiais. Algumas das variáveis ​​referidas pelo shell são alternâncias; o shell não se importa com o seu valor, apenas se eles estão definidos ou não. Por exemplo, a variável detalhada é uma alternância que faz com que a entrada do comando seja ecoada. A opção de linha de comando -v define essa variável. Variáveis ​​especiais do shell lista todas as variáveis ​​mencionadas pelo shell.

Outras operações tratam variáveis ​​numericamente. O comando ” @ ” permite que cálculos numéricos sejam executados e o resultado atribuído a uma variável. Os valores variáveis ​​são, no entanto, sempre representados como (zero ou mais) cadeias . Para fins de operações numéricas, a cadeia nula é considerada zero e a segunda e as palavras subsequentes dos valores de várias palavras são ignoradas.

Depois que a linha de entrada é alterada e analisada, e antes de cada comando ser executado, a substituição de variável é realizada digitada por caracteres ” $ “. Essa expansão pode ser evitada precedendo o ” $ ” com um ” \ “, exceto dentro de  s  onde sempre ocorre e dentro de onde nunca ocorre. As strings citadas por ` são interpretadas mais tarde (consulte Substituição de comando abaixo) para” $ “a substituição não ocorre até mais tarde, se houver. Um” $ “é passado inalterado se seguido por um espaço em branco, tabulação ou fim de linha.

Os redirecionamentos de entrada / saída são reconhecidos antes da expansão variável e são expandidos separadamente. Caso contrário, o nome do comando e a lista de argumentos inteira serão expandidos juntos. Portanto, é possível que a primeira palavra (comando) (até este ponto) gere mais de uma palavra, a primeira se tornando o nome do comando e o restante se tornando argumentos.

A menos que entre  ou com o modificador : q, os resultados da substituição de variável possam eventualmente ser substituídos por comando e nome de arquivo. Dentro de  , uma variável cujo valor consiste em várias palavras se expande para uma (parte de uma) palavra única, com as palavras da valor da variável separado por espaços em branco. Quando o modificador : q é aplicado a uma substituição, a variável será expandida para várias palavras, com cada palavra separada por um espaço em branco e entre aspas para impedir a substituição posterior de comandos ou nomes de arquivos.

As seguintes metasequências são fornecidas para a introdução de valores variáveis ​​na entrada do shell. Exceto como observado, é um erro referenciar uma variável que não está definida.

  $ name
 $ { name }
Substitui as palavras do valor do nome da variável, cada uma separada por um espaço em branco. As chaves isolam o nome e dos seguintes caracteres que de outra forma seriam parte dele. As variáveis ​​do shell têm nomes que consistem em letras e dígitos começando com uma letra. O caractere sublinhado é considerado uma letra. Se nome não for uma variável do shell, mas estiver definido no ambiente, esse valor será retornado (mas algumas das outras formas fornecidas abaixo não estarão disponíveis neste caso).
  $ name [ seletor ]
 $ { nome [ seletor ]}
Substitui apenas as palavras selecionadas do valor do nome . O seletor está sujeito à substituição ” $ ” e pode consistir em um único número ou dois números separados por um ”  “. A primeira palavra do valor de uma variável é numerada ” 1 “. Se o primeiro número de um intervalo for omitido, o padrão será ” 1 “. Se o último membro de um intervalo for omitido, o padrão será ” $ # name “. O seletor ” * ” seleciona todas as palavras. Não é um erro que um intervalo fique vazio se o segundo argumento for omitido ou estiver dentro do intervalo.
  $ 0
Substitui o nome do arquivo a partir do qual a entrada do comando está sendo lida. Ocorre um erro se o nome não for conhecido.
  número $
 $ { number }
Equivalente a ` $ argv [ number ] ‘.
  $ *
Equivalente a ” $ argv “, que é equivalente a ” $ argv [ * ]”.

Os modificadores ” : ” descritos em Substituição do histórico , exceto ” : p “, podem ser aplicados às substituições acima. Mais de um pode ser usado. Aparelhos podem ser necessários para isolar uma substituição variável de um cólon literal, assim como a substituição do Histórico; quaisquer modificadores devem aparecer dentro dos chavetas.

As seguintes substituições não podem ser modificadas com os modificadores ” : “.

  $?  nome
 $ { ?  nome }
Substitui a string ” 1 ” se o nome estiver definido, ” 0 ” se não estiver.
  $? 0
Substitui ” 1 ” se o nome do arquivo de entrada atual for conhecido, ” 0 ” se não for. Sempre ” 0 ” em shells interativos.
  $ # name
 $ {# name }
Substitui o número de palavras no nome .
  $ #
Equivalente a ” $ # argv “.
  $% name
 $ {% name }
Substitui o número de caracteres no nome .
  número $%
 $ {% number }
Substitui o número de caracteres em $ argv [ number ] .
  $?
Equivalente a ” $ status “.
  $$
Substitui o número do processo (decimal) do shell (pai).
  $!
Substitui o número do processo (decimal) do último processo em segundo plano iniciado por este shell.
  $ _
Substitui a linha de comando do último comando executado.
  $ \ <
Substitui uma linha da entrada padrão , sem mais interpretações posteriores. Pode ser usado para ler o teclado em um script de shell. Enquanto csh sempre cita $ < , como se fosse equivalente a ” $ <: q “, tcsh não. Além disso, quando o tcsh está aguardando a digitação de uma linha, o usuário pode digitar uma interrupção para interromper a sequência na qual a linha deve ser substituída, mas o csh não permite isso.

O comando do editor expand-variable , normalmente vinculado a ” ^ X- $ “, pode ser usado para expandir interativamente variáveis ​​individuais.

Substituição de comando

A substituição de comando é indicada por um comando entre aspas (  ). A saída desse comando é dividida em palavras separadas em espaços em branco, guias e novas linhas, e as palavras nulas são descartadas. A saída é variável e o comando é substituído e colocado no lugar da string original.

As substituições de comando entre aspas duplas (  ) retêm espaços em branco e tabulações; somente as novas linhas forçam novas palavras. A nova linha final única não força uma nova palavra em nenhum caso. Portanto, é possível que uma substituição de comando produza apenas parte de uma palavra, mesmo se o comando emitir uma linha completa.

Por padrão, o shell substitui todos os caracteres de nova linha e retorno de carro no comando por espaços. Se isso for desativado, desconfigurando csubstnonl , as novas linhas separarão os comandos como de costume.

Substituição de nome de arquivo

Se uma palavra contiver algum dos caracteres ” * “, ” ? “, ” [ ” Ou ” { ” ou começar com o caractere ” ~ “, ela será candidata à substituição de nome de arquivo, também conhecida como “globbing”. Essa palavra é então considerada como um padrão (“padrão glob”) e substituída por uma lista alfabética de nomes de arquivos que correspondem ao padrão.

Nos nomes de arquivos correspondentes, o caractere ” . ” No início de um nome de arquivo ou imediatamente após um ” / “, bem como o caractere ” / ” devem ser correspondidos explicitamente (a menos que globdot ou globstar ou ambos estejam definidos). O caractere ” * ” corresponde a qualquer sequência de caracteres, incluindo a sequência nula. O caractere ” ? ” Corresponde a qualquer caractere único. A sequência ” [ … ] ” corresponde a qualquer um dos caracteres incluídos. Dentro de ” [ … ] “, um par de caracteres separados por ”  “corresponde a qualquer caractere lexicamente entre os dois.

Alguns padrões glob podem ser negados: A sequência ” [^ …] ” corresponde a qualquer caractere não especificado pelos caracteres e / ou intervalos de caracteres entre chaves.

Um padrão glob inteiro também pode ser negado com ” ^ “:

 eco *
 bang crash crunch ai
 > eco ^ cr *
 bang ai

Os padrões de globos que não usam ” ? “, ” * ” Ou ” [] ” ou que usam ” {} ” ou ” ~ ” (abaixo) não são negados corretamente.

A metanotação ” a {b, c, d} e ” é uma abreviação de ” abe ace ade “. A ordem da esquerda para a direita é preservada: ” /usr/source/s1/{oldls,ls}.c ” se expande para ” /usr/source/s1/oldls.c /usr/source/s1/ls.c “. Os resultados das correspondências são classificados separadamente em um nível baixo para preservar essa ordem: ” ../{memo,*box} ” pode ser expandido para ” ../memo ../box ../mbox “. Observe que ” memorando ” não foi classificado com os resultados da correspondência ” * box “. Não é um erro quando essa construção se expande para arquivos que não existem, mas é possível obter um erro de um comando para o qual a lista expandida é passada.Essa construção pode ser aninhada. Como um caso especial, as palavras “{ “,” } “e” {} “são passados ​​imperturbáveis.

O caractere ” ~ ” no início de um nome de arquivo refere-se a diretórios pessoais. Sozinho, ou seja, ” ~ “, ele se expande para o diretório inicial do chamador, conforme refletido no valor da variável do shell inicial. Quando seguido por um nome que consiste em letras, dígitos e caracteres ”  “, o shell procura um usuário com esse nome e substitui o diretório inicial; portanto, ” ~ ken ” pode se expandir para ” / usr / ken ” e ” ~ ken / chmach ” para ” / usr / ken / chmach “. Se o caractere ” ~ ” for seguido por um caractere que não seja uma letra ou ” /“ou aparece em outro lugar que não seja o início de uma palavra, ela é deixada imperturbável. Um comando como” setenv MANPATH / usr / man: / usr / local / man: ~ / lib / man “não substitui, portanto, o diretório inicial como se poderia esperar.

É um erro que um padrão global contendo ” * “, ” ? “, ” [ ” Ou ” ~ “, com ou sem ” ^ “, não corresponda a nenhum arquivo. No entanto, apenas um padrão em uma lista de padrões glob deve corresponder a um arquivo (para que, por exemplo, ” rm * .a * .c * .o ” falhe apenas se não houver arquivos no diretório atual terminando em ” . a “,” .c “ou” .o “) e se a variável de shell que não seja um conjunto de toques for definida como um padrão (ou lista de padrões) que corresponda a nada é deixado inalterado em vez de causar um erro.

A variável shell globstar pode ser configurada para permitir ” ** ” ou ” *** ” como um padrão global de arquivo que corresponde a qualquer sequência de caracteres, incluindo ” / “, percorrendo recursivamente quaisquer subdiretórios existentes. Por exemplo, ” ls **. C ” listará todos os arquivos .c na árvore de diretórios atual. Se usado por si só, ele corresponderá a zero ou mais subdiretórios (por exemplo, ” ls /usr/include/**/time.h ” listará qualquer arquivo chamado ” time.h ” na árvore de diretórios / usr / include ; ” ls /usr/include/**time.h “corresponderá a qualquer arquivo na árvore de diretórios / usr / include que termine em “time.h “; e” ls /usr/include/**time**.h “corresponderá a qualquer arquivo .h com” time “em um nome de subdiretório ou no próprio nome do arquivo). Para evitar problemas de recursão, o O padrão glob ” ** ” não descerá para um link simbólico que contém um diretório. Para substituir isso, use ” *** “

A variável shell noglob pode ser configurada para impedir a substituição do nome do arquivo, e o comando do editor expand-glob , normalmente vinculado a ” ^ X- * “, pode ser usado para expandir interativamente as substituições individuais do nome do arquivo.

Substituição da pilha de diretórios

A pilha de diretórios é uma lista de diretórios, numerada de zero, usada pelos comandos internos pushd , popd e dirs . dirs pode imprimir, armazenar em um arquivo, restaurar e limpar a pilha de diretórios, a qualquer momento, e os savedirs e dirsfile variáveis do shell pode ser configurado para armazenar a pilha de diretórios automaticamente ao sair e restaurá-lo no login. A variável do shell dirstack pode ser examinada para ver a pilha de diretórios e configurada para colocar diretórios arbitrários na pilha de diretórios.

O caractere ” = ” seguido de um ou mais dígitos se expande para uma entrada na pilha de diretórios. O caso especial ” = – ” se expande para o último diretório da pilha. Por exemplo,

 dirs -v
 0 / usr / bin
1 / usr / spool / uucp
2 / usr / accts / sys
 eco = 1
 / usr / spool / uucp
 eco = 0 / calendário
 / usr / bin / calendar
 eco = -
 / usr / accts / sys

Os noglob e nonomatch variáveis do shell e a expandir-glob comando editor aplicam-se a pilha de diretórios, bem como substituições de nome de arquivo.

Outras substituições

Existem várias outras transformações envolvendo nomes de arquivos, não estritamente relacionados ao acima, mas mencionados aqui para fins de integridade. Qualquer nome de arquivo pode ser expandido para um caminho completo quando a variável de links simbólicos estiver definida como “expandir”. A citação evita essa expansão, e o comando normalize-path editor faz isso sob demanda. O comando normalize-command editor expande os comandos no PATH para caminhos completos sob demanda. Finalmente, cd e pushd interpretam ”  ” como o diretório de trabalho antigo (equivalente à variável de shell owd ). Isso não é uma substituição, mas uma abreviação reconhecida apenas por esses comandos. No entanto, também pode ser evitado citando.

Comandos

Atualizado: 16/06/2017 por Computer Hope

As próximas três seções descrevem como o shell executa comandos e lida com suas entradas e saídas.

Comandos, pipelines e sequências simples

Um comando simples é uma sequência de palavras, a primeira especifica o comando a ser executado. Uma série de comandos simples unidos por caracteres ” | ” forma um pipeline . A saída de cada comando em um pipeline é conectada à entrada do próximo.

Comandos e pipelines simples podem ser unidos em seqüências com ” ; ” e serão executados sequencialmente. Comandos e pipelines também podem ser unidos em seqüências com ” || ” ou ” && “, indicando, como no idioma C , que o segundo deve ser executado apenas se o primeiro falhar ou for bem-sucedido, respectivamente.

Um comando simples, pipeline ou sequência pode ser colocado entre parênteses, ” () “, para formar um comando simples, que por sua vez pode ser um componente de um pipeline ou sequência. Um comando, pipeline ou sequência pode ser executado sem aguardar o término seguindo-o com um ” & “.

Execução de comando interno e não interno

Comandos internos são executados dentro do shell. Se qualquer componente de um pipeline, exceto o último, for um comando interno, o pipeline será executado em um subshell.

Comandos entre parênteses são sempre executados em um subshell.

 (cd; pwd);  pwd

Este comando imprime o diretório inicial, deixando você onde estava (imprimindo após o diretório inicial), enquanto

  CD;  pwd

deixa você no diretório inicial. Os comandos entre parênteses são usados ​​com mais freqüência para impedir que o CD afete o shell atual.

Quando um comando a ser executado não é um comando interno, o shell tenta executar o comando por meio do comando execve system. Cada palavra no caminho da variável nomeia um diretório no qual o shell procurará o comando. Se o shell não receber a opção -f , o shell fará o hash dos nomes nesses diretórios em uma tabela interna, para que ele tente executar um executve apenas em um diretório onde existe a possibilidade de o comando residir lá. Isso acelera bastante o local do comando quando um grande número de diretórios está presente no caminho de pesquisa. Este mecanismo de hash não é usado:

  1. Se o hash for desativado explicitamente via unhash .
  2. Se o shell recebeu um argumento -f .
  3. Para cada componente de diretório do caminho que não começa com um ” / “.
  4. Se o comando contiver um ” / “.

Nos quatro casos acima, o shell concatena cada componente do vetor de caminho com o nome de comando fornecido para formar um nome de caminho de um arquivo que, em seguida, tenta executá-lo. Se a execução for bem-sucedida, a pesquisa será interrompida.

Se o arquivo tiver permissões de execução, mas não for um executável para o sistema (ou seja, não for um binário executável nem um script que especifique seu intérprete), será considerado um arquivo contendo comandos de shell e um novo shell será gerado para Leia-o. O alias especial do shell pode ser configurado para especificar um intérprete que não seja o próprio shell.

Em sistemas que não compreendem a convenção de interpretador de script ” #! “, O shell pode ser compilado para emular; veja a variável shell da versão . Nesse caso, o shell verifica a primeira linha do arquivo para ver se está no formato ” #! Interpreteter arg …”. Se for, o shell inicia o intérprete com os argumentos fornecidos e alimenta o arquivo na entrada padrão .

Entrada / saída

A entrada padrão e a saída padrão de um comando podem ser redirecionadas com a seguinte sintaxe:

 <  nome
Abra o nome do arquivo (que é a primeira variável, comando e nome do arquivo expandido) como entrada padrão.
 <<  palavra
Leia a entrada do shell até uma linha idêntica à palavra . word não está sujeito a substituição de variável, nome de arquivo ou comando e cada linha de entrada é comparada com a palavra antes que qualquer substituição seja feita nessa linha de entrada. A menos que uma citando \ ,  ,  ou ` aparece em palavra variável e substituição de comando é realizada nas linhas seguintes, permitindo \ citar $ , \ e `. Os comandos substituídos têm todos os espaços em branco, guias e novas linhas preservados, exceto a nova linha final que é eliminada. O texto resultante é colocado em um arquivo temporário anônimo que é fornecido ao comando como entrada padrão.
 >  nome 
>!  nome
> &  nome 
> &!  nome
O nome do arquivo é usado como saída padrão. Se o arquivo não existir, ele será criado; se o arquivo existir, ele será truncado , seu conteúdo anterior será perdido.

Se a variável shell noclobber estiver configurada, o arquivo não deverá existir ou ser um arquivo especial de caractere (por exemplo, um terminal ou ” / dev / null “) ou ocorrerá um erro. Isso ajuda a evitar a destruição acidental de arquivos. Nesse caso, os formulários ” ! ” Podem ser usados ​​para suprimir essa verificação.

Os formulários que envolvem ” & ” direcionam a saída de diagnóstico para o arquivo especificado, bem como a saída padrão. O nome é expandido da mesma maneira que os nomes de arquivos de entrada ” < “.

 >>  nome 
>> e  nome 
>>!  nome
>> &!  nome
Como ” > “, mas anexa a saída ao final do nome . Se a variável shell noclobber estiver configurada, será um erro o arquivo não existir, a menos que um dos formulários ” ! ” Seja fornecido.

Um comando recebe o ambiente no qual o shell foi chamado conforme modificado pelos parâmetros de entrada e saída e a presença do comando em um pipeline. Assim, diferentemente de alguns shells anteriores, os comandos executados a partir de um arquivo de comandos shell não têm acesso ao texto dos comandos por padrão; ao contrário, eles recebem a entrada padrão original do shell. O mecanismo ” << ” deve ser usado para apresentar dados embutidos. Isso permite que os scripts de comando do shell funcionem como componentes de pipelines e permite que o shell bloqueie a leitura de sua entrada. Observe que a entrada padrão padrão para uma execução de comando desanexada não é o arquivo vazio / dev / null, mas a entrada padrão original do shell. Se este for um terminal e se o processo tentar ler no terminal, o processo será bloqueado e o usuário será notificado (consulte Trabalhos ).

A saída de diagnóstico pode ser direcionada através de um tubo com a saída padrão. Use o formulário ” | & ” em vez de apenas ” | “.

Atualmente, o shell não pode redirecionar a saída de diagnóstico sem também redirecionar a saída padrão, mas ” (comando> arquivo de saída)> & arquivo de erro ” geralmente é uma solução aceitável. O arquivo de saída ou o arquivo de erro pode ser ” / dev / tty ” para enviar a saída para o terminal.

Recursos

Atualizado: 06/07/2017 por Computer Hope

Controle de fluxo

O shell contém vários comandos que podem ser usados ​​para regular o fluxo de controle nos arquivos de comando (scripts de shell) e (de maneiras limitadas, mas úteis) da entrada do terminal. Todos esses comandos operam forçando o shell a reler ou ignorar sua entrada e, devido à implementação, restringir o posicionamento de alguns dos comandos.

As instruções foreach , switch e while , bem como a forma if-then-else da instrução if , exigem que as principais palavras-chave apareçam em um único comando simples em uma linha de entrada, como mostrado abaixo.

Se a entrada do shell não for procurável, o shell armazena em buffer a entrada sempre que um loop está sendo lido e realiza buscas nesse buffer interno para realizar a releitura implícita no loop. Na medida em que isso permite que, para trás Goto s terá sucesso em entradas não-pesquisável.

Expressões

Os comandos internos if , while e exit usam expressões com uma sintaxe comum. As expressões podem incluir qualquer um dos operadores descritos nas próximas três seções. Observe que o comando @ builtin possui sua própria sintaxe separada.

Operadores lógicos, aritméticos e de comparação

Esses operadores são semelhantes aos de C e têm a mesma precedência. Eles incluem:

  ||
&&
 |
 ^
 &
 ==
 ! =
= ~
! ~
 <=
 > =
 <
 >
 <<
 >>
 +
 -
 *
 /
 %
 !
 ~
 (
 )

Aqui a precedência aumenta na lista: ” == ” ” ! = ” ” = ~ ” E ” ! ~ “, ” <= ” ” > = ” ” < ” E ” > “, ” << ” e ” >> “,” + “e”  “,” * “” / “e” % “pertencem, em grupos, ao mesmo nível. O ” == ” ” ! = ” “Operadores = ~ “e” ! ~ “comparam seus argumentos como strings; todos os outros operam em números. Os operadores ” = ~ ” e ” ! ~ ” São como ” ! = ” E ” == “, exceto que o lado direito é um padrão global (consulte Substituição de nome de arquivo ) com o qual o operando esquerdo é correspondido. Isso reduz a necessidade de uso do comando switch builtin em scripts de shell quando tudo o que é realmente necessário é a correspondência de padrões.

Argumentos nulos ou ausentes são considerados ” 0 “. Os resultados de todas as expressões são cadeias, que representam números decimais. É importante observar que nenhum componente de uma expressão pode aparecer na mesma palavra; exceto quando adjacentes a componentes de expressões que são sintaticamente significantes para o analisador (” & ” ” | ” ” < ” ” > ” ” ( ” ” ) “), eles devem estar cercados por espaços.

Status de saída do comando

Os comandos podem ser executados em expressões e seu status de saída retornado colocando-os entre chaves (” {} “). Lembre-se de que as chaves devem ser separadas das palavras do comando por espaços. As execuções de comando são bem-sucedidas, retornando true, ou seja, ” 1 “, se o comando sair com o status 0 , caso contrário, elas falham, retornando false, ou seja, ” 0 “. Se informações de status mais detalhadas forem necessárias, o comando deverá ser executado fora de uma expressão e a variável do shell de status examinada.

Operadores de consulta de arquivos

Alguns desses operadores executam testes de verdadeiro / falso em arquivos e objetos relacionados. Eles são do arquivo form – op , em que op é um dos seguintes:

rAcesso de leitura
WAcesso de gravação
xExecutar acesso
XExecutável no caminho ou shell interno, por exemplo, ” -X ls ” e ” -X ls-F ” geralmente são verdadeiros, mas ” -X / bin / ls ” não é
eExistência
oPropriedade
zTamanho zero
sTamanho diferente de zero
fArquivo simples
dDiretório
euLink simbólico *
bBloquear arquivo especial
cArquivo especial de caractere
pCanal nomeado (fifo) *
SArquivo especial do soquete *
vocêO bit set-user-ID está definido
gO bit Set-group-ID está definido
kBit pegajoso está definido
tfile (que deve ser um dígito) é um descritor de arquivo aberto para um dispositivo de terminal
RFoi migrado (apenas convexo)
euAplica operadores subseqüentes em um teste de vários operadores a um link simbólico, e não ao arquivo ao qual o link aponta *

O arquivo é expandido por comando e nome de arquivo e, em seguida, testado para verificar se ele possui o relacionamento especificado com o usuário real. Se o arquivo não existir ou estiver inacessível ou, para os operadores indicados por ” * “, se o tipo de arquivo especificado não existir no sistema atual, todas as consultas retornarão false, ou seja, ” 0 “.

Esses operadores podem ser combinados por concisão: ” arquivo -xy ” é equivalente a ” arquivo -x e arquivo -& “. Por exemplo, ” -fx ” é verdadeiro (retorna ” 1 “) para arquivos executáveis ​​simples, mas não para diretórios.

L pode ser usado em um teste de múltiplos operadores para aplicar operadores subsequentes a um link simbólico, e não ao arquivo para o qual o link aponta. Por exemplo, ” -lLo ” é verdadeiro para links pertencentes ao usuário que está chamando. Lr , Lw e Lx são sempre verdadeiros para links e falsos para não-links. L tem um significado diferente quando é o último operador em um teste de múltiplos operadores; ver abaixo.

É possível, mas não útil, e às vezes enganoso, combinar operadores que esperam que o arquivo seja um arquivo com operadores que não o fazem (por exemplo, X e t ). Seguir L com um operador que não é de arquivo pode levar a resultados particularmente estranhos.

Outros operadores retornam outras informações, ou seja, não apenas ” 0 ” ou ” 1 “. Eles têm o mesmo formato de antes; op pode ser um dos

UMATempo de acesso ao último arquivo, como o número de segundos desde a época
UMA:Como A , mas no formato de carimbo de data e hora, por exemplo, ” Sex 14 de maio 16:36:10 1993 “
MHora da última modificação do arquivo
M:Como M , mas no formato de carimbo de data e hora
CHora da última modificação do inode
C:Como C , mas no formato de carimbo de data e hora
DNúmero do dispositivo
EuNúmero do inode
FIdentificador de arquivo composto, no formato dispositivo inode
euO nome do arquivo apontado por um link simbólico
NNúmero de links (físicos)
PPermissões, em octal, sem zero à esquerda
P:Como P , com zero à esquerda
PmodeEquivalente a ” -P arquivo e modo “, por exemplo, ” -P22 arquivo ” retorna ” 22 ” se o arquivo for gravável por grupo e outro, ” 20 ” se for apenas por grupo e ” 0 ” se por nenhum
Pmode:Como Pmode , com zero à esquerda
vocêID do usuário numérico
VOCÊ:Nome de usuário ou o ID do usuário numérico, se o nome de usuário for desconhecido
GID do grupo numérico
G:Groupname ou o groupid numérico, se o nome do grupo for desconhecido
ZTamanho, em bytes

Somente um desses operadores pode aparecer em um teste de vários operadores e deve ser o último. Observe que L tem um significado diferente no final e em outro lugar em um teste de múltiplos operadores. Como ” 0 ” é um valor de retorno válido para muitos desses operadores, eles não retornam ” 0 ” quando falham: a maioria retorna ” -1 ” e F retorna ” : “.

Se o shell for compilado com o POSIX definido (consulte a variável do shell da versão), o resultado de uma consulta de arquivo será baseado nos bits de permissão do arquivo e não no resultado da chamada do sistema de acesso. Por exemplo, se alguém testar um arquivo com -w cujas permissões normalmente permitiriam a gravação, mas que esteja em um sistema de arquivos montado como somente leitura, o teste será bem-sucedido em um shell POSIX, mas falhará em um shell não POSIX.

Os operadores de consulta de arquivos também podem ser avaliados com o comando incorporado filetest .

Empregos

O shell associa um trabalho a cada pipeline. Ele mantém uma tabela de trabalhos atuais, impressa pelo comando de trabalhos , e atribui a eles pequenos números inteiros. Quando um trabalho é iniciado de forma assíncrona com ” & “, o shell imprime uma linha que se parece com

 [1] 1234

indicando que o trabalho iniciado de forma assíncrona era o número 1 e possuía um processo (de nível superior), cuja identificação de processo era 1234 .

Se você estiver executando um trabalho e desejar fazer outra coisa, pressione a tecla Suspender (geralmente ^ Z ), que envia um sinal de PARADA para o trabalho atual. O shell normalmente indica que o trabalho foi “Suspenso” e imprime outro prompt. Se os listjobs escudo variável é definida, todos os trabalhos serão listados como os postos de trabalho embutidas comando; se estiver definido como ” longo “, a listagem ficará em formato longo, como ” trabalhos -l “. Você pode manipular o estado do trabalho suspenso. Você pode colocá-lo em “segundo plano” com o comando bg ou executar outros comandos e, eventualmente, trazer o trabalho de volta ao “primeiro plano” com fg .(Veja também o editor run-fg-editorUm comando ” ^ Z ” entra em vigor imediatamente e é como uma interrupção na saída pendente e na entrada não lida que são descartadas quando digitadas. O comando wait builtin faz com que o shell aguarde a conclusão de todos os trabalhos em segundo plano.

A tecla ” ^] ” envia um sinal de suspensão atrasado, que não gera um sinal de PARADA até que um programa tente lê- lo, para o trabalho atual. Isso pode ser útil quando você prepara alguns comandos para um trabalho que deseja interromper após a leitura. A tecla ” ^ Y ” executa esta função no csh ; no tcsh , ” ^ Y ” é um comando de edição.

Um trabalho sendo executado em segundo plano será interrompido se tentar ler no terminal. Normalmente, os trabalhos em segundo plano podem produzir saída, mas isso pode ser desativado, dando o comando ” stty tostop “. Se você definir esta opção tty, os trabalhos em segundo plano serão interrompidos quando tentarem produzir saída, como fazem ao tentar ler a entrada.

Existem várias maneiras de se referir a trabalhos no shell. O caractere ” % ” introduz um nome de trabalho. Se você deseja se referir ao trabalho número 1 , pode nomeá-lo como ” % 1 “. Apenas nomear um trabalho o coloca em primeiro plano; portanto ” % 1 ” é sinônimo de ” fg% 1 “, trazendo o trabalho 1 de volta ao primeiro plano. Da mesma forma, dizer ” % 1 & ” retoma a tarefa 1 em segundo plano, assim como ” bg% 1 “. Um trabalho também pode ser nomeado por um prefixo inequívoco da sequência digitada para iniciá-lo: ” % ex ” normalmente reiniciaria um trabalho ex suspenso ,se houvesse apenas um trabalho suspenso cujo nome começasse com a string ” ex“. Também é possível dizer” %? corda “para especificar um trabalho cujo texto contém seqüência , se houver apenas um tal trabalho.

O shell mantém uma noção dos trabalhos atuais e anteriores. Na saída referente aos trabalhos, o trabalho atual é marcado com um ” + ” e o trabalho anterior com um ”  “. As abreviações ” % + “, ” % ” e (por analogia com a sintaxe do mecanismo do histórico) ” %% ” referem-se ao trabalho atual e ” % – ” refere-se ao trabalho anterior.

O mecanismo de controle de tarefas exige que a opção stty ” new ” seja definida em alguns sistemas. É um artefato de uma ” nova ” implementação do driver tty que permite a geração de caracteres de interrupção no teclado para dizer aos trabalhos que parem. Consulte stty e o comando setty builtin para obter detalhes sobre as opções de configuração no novo driver tty.

Relatório de status

O shell aprende imediatamente sempre que um processo muda de estado. Normalmente, ele informa sempre que um trabalho é bloqueado, para que nenhum progresso adicional seja possível, mas apenas antes de imprimir um prompt. Isso é feito para não atrapalhar o seu trabalho. Se, no entanto, você definir a variável de notificação de shell , o shell notificará você imediatamente sobre alterações de status nos trabalhos em segundo plano. Há também um comando shell de notificação que marca um único processo para que suas alterações de status sejam imediatamente relatadas. Por padrão, notificar marca o processo atual; diga ” notificar ” depois de iniciar um trabalho em segundo plano para marcá-lo.

Ao tentar sair do shell enquanto os trabalhos estão parados, você será avisado de que “Existem trabalhos suspensos”. Você pode usar o comando jobs para ver o que são. Se você fizer isso ou imediatamente tentar sair novamente, o shell não avisará uma segunda vez e os trabalhos suspensos serão encerrados.

Eventos automáticos, periódicos e cronometrados

Existem várias maneiras de executar comandos e executar outras ações automaticamente em vários momentos no “ciclo de vida” do shell. Eles são resumidos aqui e descritos em detalhes sob os comandos internos apropriados , variáveis ​​especiais do shell e aliases especiais .

O comando sched builtin coloca comandos em uma lista de eventos agendados, a serem executados pelo shell em um determinado momento.

Os aliases especiais beepcmd , cwdcmd , periodic , precmd , postcmd e jobcmd podem ser definidos, respectivamente, para executar comandos quando o shell deseja tocar a campainha, quando o diretório de trabalho muda, a cada intervalo de tempo, antes de cada prompt, antes de cada comando é executado, depois que cada comando é executado e quando um trabalho é iniciado ou trazido para o primeiro plano.

A variável do shell de saída automática pode ser configurada para sair ou bloquear o shell após um determinado número de minutos de inatividade.

A variável de shell de email pode ser configurada para verificar novos emails periodicamente.

A variável do shell printexitvalue pode ser configurada para imprimir o status de saída dos comandos que saem com um status diferente de zero.

A variável shell rmstar pode ser configurada para perguntar ao usuário, quando ” rm * ” é digitado, se é isso que realmente significava.

A variável do shell do tempo pode ser configurada para executar o comando de tempo incorporado após a conclusão de qualquer processo que leva mais de um determinado número de segundos da CPU.

As variáveis watch e who shell podem ser configuradas para relatar quando usuários selecionados fazem logon ou logoff, e o comando log builtin informa esses usuários a qualquer momento.

Suporte ao sistema de idioma nativo

O shell está limpo de oito bits (se assim for compilado ; veja a variável shell do versão ) e, portanto, suporta conjuntos de caracteres que precisam desse recurso. O suporte ao NLS difere dependendo da compilação ou não do shell para usar o NLS do sistema (novamente, consulte a versão ). Em qualquer um dos casos, ASCII de 7 bits é o código de caractere padrão (por exemplo, a classificação de quais caracteres são imprimíveis) e a classificação e a alteração das variáveis ​​de ambiente LANG ou LC_CTYPE causa uma verificação de possíveis alterações nesses aspectos.

Ao usar o NLS do sistema, a função setlocale é chamada para determinar o código / classificação e classificação de caracteres apropriados (por exemplo, um ” en_CA.UTF-8 ” produziria ” UTF-8 ” como um código de caractere). Essa função normalmente examina as variáveis ​​de ambiente LANG e LC_CTYPE ; consulte a documentação do sistema para obter mais detalhes. Quando não está usando o NLS do sistema, o shell o simula assumindo que o conjunto de caracteres ISO 8859-1 é usado sempre que uma das variáveis LANG e LC_CTYPE estiver definida, independentemente de seus valores. A classificação não é afetada para o NLS simulado.

Além disso, com o NLS real e simulado, todos os caracteres imprimíveis no intervalo \ 200 – \ 377 , ou seja, aqueles que possuem ligações M-char, são automaticamente recuperados para o comando self-insert . A ligação correspondente para a sequência de escape-char, se houver, é deixada em paz. Esses caracteres não serão recuperados se a variável de ambiente NOREBIND estiver configurada. Isso pode ser útil para o NLS simulado ou um NLS real primitivo que assume a ISO 8859-1 completa. Caso contrário, todas as ligações M-char no intervalo \ 240 – \ 377 serão efetivamente desfeitas. É óbvio que ainda é possível religar explicitamente as chaves relevantes com a chave de ligação.

Caracteres desconhecidos (ou seja, aqueles que não são imprimíveis nem caracteres de controle) são impressos no formato \ nnn . Se o tty não estiver no modo de 8 bits, outros caracteres de 8 bits serão impressos convertendo-os em ASCII e usando o modo de destaque. O shell nunca altera o modo de 7/8 bits do tty e rastreia as alterações iniciadas pelo usuário do modo de 7/8 bits. Usuários de NLS (ou, nesse caso, aqueles que desejam usar uma meta-chave) podem precisar definir explicitamente o tty no modo de 8 bits por meio do comando stty apropriado , por exemplo, no arquivo ~ / .login .

Suporte a variante do SO

Vários novos comandos internos são fornecidos para oferecer suporte a recursos em sistemas operacionais específicos. Todos são descritos em detalhes na seção Comandos internos .

Em sistemas que suportam TCF (aix-ibm370, aix-ps2), getspath e setspath obtêm e configuram o caminho de execução do sistema, getxvers e setxvers obtêm e configuram o prefixo da versão experimental e migram processos de migração entre sites. Os trabalhos incorporados imprimem o site em que cada trabalho está sendo executado.

No BS2000, o bs2cmd executa comandos do sistema operacional BS2000 / OSD subjacente.

Em Domínio / SO, o inlib adiciona bibliotecas compartilhadas ao ambiente atual, o rootnode altera o rootnode e ver altera o systype.

Em Mach, setpath é equivalente ao setpath de Mach .

Sob Masscomp / RTU e Harris CX / UX, o universo define o universo .

Sob Harris CX / UX, ucb ou att executa um comando no universo especificado.

Em Convex / OS, warp imprime ou define o universo.

Os VENDEDOR , ostype e MACHTYPE variáveis de ambiente indicam, respectivamente, o fornecedor, o sistema operacional e tipo de máquina (classe microprocessador ou modelo de máquina) do sistema no qual o shell pensa que está sendo executado. Isso é particularmente útil ao compartilhar o diretório pessoal de alguém entre vários tipos de máquinas; pode-se, por exemplo,

 definir caminho = (~ / bin. $ MACHTYPE / usr / ucb / bin / usr / bin.)

no arquivo ~ / .login e coloque os executáveis ​​compilados para cada máquina no diretório apropriado.

A variável shell da versão indica quais opções foram escolhidas quando o shell foi compilado.

Note-se também o newgrp embutido, o afsuser e echo_style variáveis do shell e os locais dependentes do sistema de arquivos de entrada do shell (ver arquivos ).

Manuseio de sinal

Os shells de login ignoram as interrupções ao ler o arquivo ~ / .logout . O shell ignora os sinais de saída , a menos que seja iniciado com -q . Os shells de logon capturam o sinal de encerramento, mas os shells que não são de login herdam o comportamento de encerramento de seus pais. Outros sinais têm os valores que o shell herdou de seu pai.

Nos scripts de shell, o manuseio do shell de sinais de interrupção e término pode ser controlado com onintr , e o manuseio de hangups pode ser controlado com hup e nohup .

O shell sai em um desligamento (consulte também a variável do shell de logout ). Por padrão, os filhos do shell também o fazem, mas o shell não envia a eles uma interrupção quando sai. O hup organiza para que o shell envie um desligamento para uma criança quando ele sai, e o nohup configura uma criança para ignorar os desligamentos.

Gerenciamento de terminal

O shell usa três conjuntos diferentes de modos de terminal (“tty”): “edit”, usado ao editar, “quote”, usado ao citar caracteres literais e “execute”, usado ao executar comandos. O shell mantém constantes algumas configurações em cada modo; portanto, os comandos que deixam o tty em um estado confuso não interferem no shell. O shell também corresponde às alterações na velocidade e no preenchimento do tty. A lista de modos tty mantidos constantes pode ser examinada e modificada com o setty embutido. Observe que, embora o editor use o modo CBREAK (ou equivalente), ele aceita caracteres digitados com antecedência.

Os comandos echotc , settc e telltc podem ser usados ​​para manipular e depurar recursos do terminal na linha de comando.

Em sistemas que suportam SIGWINCH ou SIGWINDOW , o shell se adapta ao redimensionamento de janela automaticamente e ajusta as variáveis ​​de ambiente LINES e COLUMNS, se configuradas. Se a variável de ambiente TERMCAP contiver campos li # e co # , o shell os ajustará para refletir o novo tamanho da janela.

Comandos internos

 % i  trabalho
Um sinônimo para o comando fg builtin.
 %  trabalho  e
Um sinônimo para o comando bg builtin.
  :
Não faz nada, com sucesso.
  @
@  nome  =  expr 
@  nome [ index ] =  expr 
@  nome  ++ | -
@  nome [ index ] ++ | -
O primeiro formulário imprime os valores de todas as variáveis ​​do shell.

O segundo formulário atribui o valor de expr ao nome . O terceiro formulário atribui o valor de expr ao componente do nome do índice ; o nome e o componente do seu índice já devem existir. expr pode conter os operadores ” * “, ” + “, etc, como em C . Se expr contiver ” < “, ” > “, ” & ” ou ” ` “então pelo menos essa parte do expr

deve ser colocado dentro de ” () “. Observe que a sintaxe de expr não tem nada a ver com o descrito em Expressões.

O quarto e o quinto formas incrementam (” ++ “) ou diminuem (”  “) o nome ou seu índice ‘componente.

O espaço entre ” @ ” e o nome é obrigatório. Os espaços entre o nome e ” = ” e entre ” = ” e expr são opcionais. Os componentes do expr devem ser separados por espaços.

 alias [ nome [lista de palavras ]]
Sem argumentos, imprime todos os aliases. Com o nome , imprime o alias do nome . Com nome e lista de palavras , atribui lista de palavras como o alias do nome . wordlist é substituído por comando e nome de arquivo. O nome não pode ser “alias” ou “unalias”. Veja também o comando unalias builtin.
 alocar
Mostra a quantidade de memória dinâmica adquirida, dividida em memória usada e livre. Com um argumento mostra o número de blocos gratuitos e usados ​​em cada categoria de tamanho. As categorias começam no tamanho 8 e dobram em cada etapa. A saída desse comando pode variar entre os tipos de sistema, porque sistemas diferentes do VAX podem usar um alocador de memória diferente.
 bg [ %  trabalho ...]
Coloca o trabalho especificado s (ou, sem argumentos, o trabalho atual) em segundo plano, continuando cada um se estiver parado. trabalho pode ser um número, uma string, ` , % , + ou  como descrito em Trabalhos .
 bindkey [ -l | -d | -e | -v | -u ]
 tecla de ligação [ -a ] [ -b ] [ -k ] [ -r ]
        [ - ] chave 
bindkey [ -a ] [ -b ] [ k ] [ -c | -s ]comando da tecla 
        [ - ] 
Sem opções, o primeiro formulário lista todas as chaves associadas e o comando do editor ao qual cada uma está vinculada, o segundo formulário lista o comando do editor ao qual a chave está vinculada e o terceiro formulário vincula o comando do comando do editor à chave. As opções incluem:

-euLista todos os comandos do editor e uma breve descrição de cada um.
-dLiga todas as chaves às ligações padrão para o editor padrão.
-eLiga todas as chaves às ligações padrão do GNU Emacs.
-vVincula todas as chaves às ligações padrão do tipo vi .
-umaLista ou altera as combinações de teclas no mapa de teclas alternativo. Este é o mapa de teclas usado no modo de comando vi .
-btecla é interpretada como um carácter de controlo escrito caractere (por exemplo, ” ^ A “) ou C – caractere (por exemplo,” C – A “), um carácter meta escrito M – caractere (por exemplo,” M – A “), um tecla de função escrita com F – string (por exemplo, ” F – string “) ou uma tecla de prefixo estendida escrita com X – caractere (por exemplo, ” X – A “).
-kkey é interpretado como um nome simbólico de chave de seta, que pode ser um de ” para baixo “, “para cima “, “para a esquerda ” ou “para a direita “.
-rRemove a ligação da chave. Cuidado: ” bindkey -r ” não liga a chave ao comando de inserção automática , ele desata a chave completamente.
-cO comando é interpretado como um comando interno ou externo em vez de um comando do editor.
-sO comando é tomado como uma string literal e tratado como entrada do terminal quando a chave é digitada. As próprias chaves no comando são reinterpretadas, e isso continua por dez níveis de interpretação.
Força uma interrupção no processamento de opções, portanto, a próxima palavra é considerada chave, mesmo que comece com ”  “.
-você(ou qualquer opção inválida) Imprime uma mensagem de uso.

chave pode ser um único caractere ou uma sequência. Se um comando estiver vinculado a uma sequência, o primeiro caractere será vinculado à sequência de entrada e a sequência inteira será vinculada ao comando.

Os caracteres de controle na chave podem ser literais (eles podem ser digitados precedendo-os com o comando editor entre aspas-inserção , normalmente vinculado a ” ^ V “) ou no estilo de caractere de caractere de intercalação por escrito , por exemplo, ” ^ A “. Excluir está escrito ” ^? ” (Ponto de interrogação). key e command podem conter seqüências de escape com barra invertida (no estilo do eco do System V ) da seguinte maneira:

\umaSino
\ bBackspace
\ eEscapar
\ fAlimentação de formulário
\ nNova linha
\ rRetorno de carro
\ tGuia Horizontal
\ vGuia Vertical
nnnO caractere ASCII correspondente ao número octal nnn

” \ ” anula o significado especial do caractere a seguir, se houver algum, principalmente ” \ ” e ” ^ “.

 Comando  bs2cmd bs2000
Passa BS2000-comando à BS2000 interpretador de comandos para execução. Somente comandos não interativos podem ser executados e não é possível executar nenhum comando que sobreponha a imagem do processo atual, como / EXECUTE ou / CALL-PROCEDURE . (Apenas BS2000)
  quebrar
Faz com que a execução seja retomada após o final do foreach mais próximo ou durante o encerramento . Os comandos restantes na linha atual são executados. As interrupções de vários níveis são possíveis, escrevendo-as todas em uma linha.
 intervalos
Causa uma interrupção em um switch , retomando após o término .
 builtins
Imprime os nomes de todos os comandos internos.
  tchau
Um sinônimo para o comando logout builtin. Disponível apenas se o shell foi compilado; veja a variável shell da versão .
  etiqueta do  caso :
Um rótulo em uma instrução switch, conforme discutido abaixo.
 cd [ -p ] [ -l ] [ -n | -v ] [ I-- ] [ nome ]
Se um nome de diretório for fornecido, altere o diretório de trabalho do shell para name . Caso contrário, muda para casa . Se o nome for ”  “, ele será interpretado como o diretório de trabalho anterior (consulte Outras substituições ). Se o nome não for um subdiretório do diretório atual (e não começar com ” / “, ” ./ ” ou ” ../ “), cada componente da variável cdpath será verificado para ver se possui um nome de subdiretório. Por fim, se tudo mais falhar, mas name é uma variável do shell cujo valor começa com ” / “, é tentado verificar se é um diretório.

Com-p , imprime a pilha de diretórios final, assim como dirs . Os sinalizadores -l , -n e -v têm o mesmo efeito no cd que nos diretórios e implicam -p . Usar  força uma interrupção no processamento de opções, de modo que a próxima palavra seja usada como o nome do diretório, mesmo que comece com ”  “.

Veja também a variável implicitcd shell.

 chdir
Um sinônimo para o comando cd builtin.
 complete [ command 
         [ word  /  pattern  /  list 
         [ :  selecione ] / 
         [[ sufixo ] / ] ...]]
Sem argumentos, lista todas as conclusões. Com o comando , lista as conclusões para o comando . Com comando e palavra etc., define conclusões.

O comando pode ser um nome completo ou um padrão global (consulte Substituição de nome de arquivo). Pode começar com ”  ” para indicar que a conclusão deve ser usada apenas quando o comando for ambíguo.

word especifica qual palavra relativa à palavra atual deve ser concluída e pode ser uma das seguintes:

cConclusão da palavra atual. padrão é um padrão glob que deve corresponder ao início da palavra atual na linha de comando. o padrão é ignorado ao concluir a palavra atual.
CComo c , mas inclui padrão ao concluir a palavra atual.
nConclusão da próxima palavra. padrão é um padrão glob que deve corresponder ao início da palavra anterior na linha de comando.
NComo n , mas deve corresponder ao início da palavra dois antes da palavra atual.
pConclusão dependente da posição. O padrão é um intervalo numérico, com a mesma sintaxe usada para indexar variáveis ​​de shell, que deve incluir a palavra atual.

list , a lista de possíveis conclusões, pode ser uma das seguintes:

umaAliases
bLigações (comandos do editor)
cComandos (comandos internos ou externos)
CComandos externos que começam com o prefixo do caminho fornecido
dDiretórios
DDiretórios que começam com o prefixo do caminho fornecido
eVariáveis ​​ambientais
fNomes de arquivos
FNomes de arquivos que começam com o prefixo do caminho fornecido
gNomes de grupo
jEmpregos
euLimites
nNada
sVariáveis ​​do shell
SSignals
tArquivos simples (“texto”)
TArquivos simples (“texto”) que começam com o prefixo do caminho fornecido
vQualquer variável
vocêNomes de usuário
xComo n , mas as impressões selecionam quando as opções de lista são usadas.
XConclusões
varPalavras da variável var
( … )Palavras da lista fornecida
` … `Palavras da saída do comando

select é um padrão glob opcional. Se fornecidas, as palavras da lista que correspondem à seleção são consideradas e a variável do shell fignore é ignorada. Os três últimos tipos de conclusão podem não ter um padrão de seleção e x usa select como uma mensagem explicativa quando o comando do editor de opções de lista é usado.

O sufixo é um único caractere a ser anexado a uma conclusão bem-sucedida. Se nulo, nenhum caractere é acrescentado. Se omitido (nesse caso, o quarto delimitador também pode ser omitido), uma barra é anexada aos diretórios e um espaço para outras palavras.

comando invocado de ` …` version possui um conjunto adicional de variáveis ​​de ambiente, o nome da variável é COMMAND_LINE e contém (como o nome indica) o conteúdo da linha de comando atual (já digitada). Pode-se examinar e usar o conteúdo da variável COMMAND_LINE em seu script personalizado para criar conclusões mais sofisticadas (consulte a conclusão para svn incluído neste pacote).

Agora, para alguns exemplos. Alguns comandos usam apenas diretórios como argumentos, portanto, não faz sentido concluir arquivos simples.

 CD completo 'p / 1 / d /'

completa apenas a primeira palavra após ” cd ” (” p / 1 “) com um diretório. A conclusão do tipo p também pode ser usada para restringir a conclusão do comando:

 > co [^ D]
 compressa completa
 complete -co * 'p / 0 / (compactação) /'
 co [^ D]
  comprimir

Essa conclusão completa os comandos (palavras na posição 0, ” p / 0 “) que começam com ” co ” (correspondendo, portanto, ” co * “) a ” compactar ” (a única palavra na lista). O ”  ” inicial indica que esta conclusão deve ser usada apenas com comandos ambíguos.

 localização completa 'n / -user / u /'

é um exemplo de conclusão do tipo n . Qualquer palavra após ” localizar ” e imediatamente após ” -usuário ” é concluída na lista de usuários.

 cc completo 'c / -I / d /'

demonstra conclusão do tipo c . Qualquer palavra que segue ” cc ” e começa com ” -I ” é concluída como um diretório. ” -I ” não é considerado parte do diretório porque usamos letras minúsculas c .

Listas diferentes são úteis com diferentes comandos.

 alias completo 'p / 1 / a /'
 homem completo 'p / * / c /'
 conjunto completo 'p / 1 / s /'
 complete true 'p / 1 / x: A verdade não tem opções./'

Essas palavras completas seguem ” alias ” com alias, ” man ” com comandos e ” set ” com variáveis ​​de shell. ” true ” não possui opções, portanto x não faz nada quando se tenta concluir e imprime “Verdade não tem opções”. quando as opções de conclusão estão listadas.

Observe que o exemplo man , e vários outros exemplos abaixo, poderiam muito bem ter usado ” c / * ” ou ” n / * ” como ” p / * “.

As palavras podem ser concluídas a partir de uma variável avaliada no momento da conclusão,

 ftp completo 'p / 1 / $ hostnames /'
 definir nomes de host = (rtfm.mit.edu tesla.ee.cornell.edu)
 ftp [^ D]
 rtfm.mit.edu tesla.ee.cornell.edu
 ftp [^ C]
 definir nomes de host = (rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net)
 ftp [^ D]
 rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net

ou de um comando executado no momento da conclusão:

matança completa 'p / * / `ps | awk \ {print \ \ $ 1 \} `/ '
 matar -9 [^ D]
 23113 23377 23380 23406 23429 23529 23530 PID

Observe que o comando completo não cita seus argumentos; portanto, os colchetes, o espaço e ” $ ” em ” {print $ 1} ” devem ser citados explicitamente.

Um comando pode ter várias conclusões:

 dbx completo 'p / 2 / (núcleo) /' 'p / * / c /'

conclui o segundo argumento para ” dbx ” com a palavra ” core ” e todos os outros argumentos com comandos. Observe que a conclusão posicional é especificada antes da conclusão da próxima palavra . Como as conclusões são avaliadas da esquerda para a direita, se a conclusão da próxima palavra fosse especificada primeiro, ela sempre corresponderia e a conclusão posicional nunca seria executada. Este é um erro comum ao definir uma conclusão.

O padrão de seleção é útil quando um comando usa arquivos com apenas formulários específicos como argumentos. Por exemplo,

 cc completo 'p / * / f: *. [cao] /'

conclui argumentos ” cc ” para arquivos que terminam apenas em ” .c “, ” .a ” ou ” .o “. O select também pode excluir arquivos, usando a negação de um padrão global, conforme descrito em Substituição de nome de arquivo. Pode-se usar

 complete rm 'p / * / f: ^ *. {c, h, cc, C, tex, 1, man, l, y} /'

excluir precioso código fonte da conclusão da rm . Obviamente, ainda é possível digitar nomes excluídos manualmente ou substituir o mecanismo de conclusão usando os comandos do editor complete-word-raw ou list-escolhas-raw .

As listas ” C “, ” D “, ” F ” e ” T ” são como ” c “, ” d “, ” f ” e ” t ” respectivamente, mas usam o argumento select de uma maneira diferente: para restringir a conclusão para arquivos começando com um prefixo de caminho específico. Por exemplo, o programa Elm mail usa “= “como uma abreviação de um diretório de correio. Pode-se usar

olmo completo c @  = @ F : $ HOME / Mail / @

para completar ” elm -f = ‘como se fosse` elm -f ~ / Mail / “. Observe que usamos ” @ ” em vez de ” / ” para evitar confusão com o argumento select e usamos ” $ HOME ” em vez de ” ~ ” porque a substituição do diretório inicial funciona apenas no início de uma palavra.

O sufixo é usado para adicionar um sufixo não padrão (não espaço ou ” / ” para diretórios) às palavras concluídas.

 dedo completo 'c / * @ / $ hostnames /' 'p / 1 / u / @'

conclui argumentos para ” finger ” da lista de usuários, acrescenta um ” @ ” e depois conclui após o ” @ ” da variável ” hostnames “. Observe novamente a ordem em que as conclusões são especificadas.

Finalmente, aqui está um exemplo complexo de inspiração:

 localização completa \
  'n / -name / f /' 'n / -newer / f /' 'n / - {, n} cpio / f /' \
  ´n / -exec / c / '' n / -ok / c / '' n / -user / u / '\
  'n / -group / g /' 'n / -fstype / (nfs 4.2) /' \
  'n / -type / (bcdflps) /' \
  ´c / - / (nome mais recente cpio ncpio exec ok user \
  grupo fstype tipo atime ctime profundidade inum \
  O nouser do mtime nogroup permite a remoção da remoção \
  tamanho xdev) / '\
  'p / * / d /'

Isso completa as palavras que seguem os nomes ” -name “, ” -newer “, ” -cpio ” ou ” ncpio ” (observe o padrão que corresponde a ambos) aos arquivos, as palavras que seguem ” -exec ” ou ” -ok ” aos comandos, as seguintes palavras ” usuário “e” grupo “para usuários e grupos respectivamente e palavras após” -fstype “ou” -type “para membros das listas fornecidas. Ele também conclui as opções da lista fornecida (observe o uso da conclusão do tipo c ) e conclui qualquer coisa que não fosse concluída em um diretório.

Lembre-se de que as conclusões programadas serão ignoradas se a palavra que está sendo concluída for uma substituição de til (começando com ” ~ “) ou uma variável (começando com ” $ “). complete é um recurso experimental e a sintaxe pode mudar em versões futuras do shell. Veja também o comando interno incompleto .

  continuar
Continua a execução do mais próximo enquanto fechado ou foreach . O restante dos comandos na linha atual é executado.
 padrão:
Rotula o caso padrão em uma instrução switch. Ele deve vir depois de todos os rótulos de casos.
 dirs [ -l ] [ -n | -v ]
 dirs  -S | -L [ nome do arquivo ]
 dirs -c
O primeiro formulário imprime a pilha de diretórios. A parte superior da pilha está à esquerda e o primeiro diretório da pilha é o diretório atual. Com -l , ” ~ ” ou ” name ” na saída é expandido explicitamente para home ou o nome do caminho do diretório home do nome de usuário. Com -n , as entradas são quebradas antes de atingirem a borda da tela. Com -v , as entradas são impressas uma por linha, precedidas por suas posições de pilha. Se mais de um de -n ou -v for fornecido, -v terá precedência. -p é aceito, mas não faz nada.

Com -S, o segundo formulário salva a pilha de diretórios no nome do arquivo como uma série de comandos cd e pushd . Com -L , o nome do arquivo de origem do shell , que é presumivelmente um arquivo de pilha de diretórios salvo pela opção -S ou pelo mecanismo savedirs . Nos dois casos, dirsfile será usado se o nome do arquivo não for fornecido e ~ / .cshdirs será usado se o dirsfile não estiver definido .

Observe que os shells de login fazem o equivalente a ” dirs -L ” na inicialização e, se saveirs estiver definido, ” dirs -S ” antes de sair. Porque apenas ~ / .tcshrcnormalmente é fornecido antes de ~ / .cshdirs , o dirsfile deve ser definido em ~ / .tcshrc, em vez de ~ / .login . O último formulário limpa a pilha de diretórios.

 eco [ -n ] palavra ...
Grava cada palavra na saída padrão do shell, separada por espaços e finalizada com uma nova linha. A variável de shell echo_style pode ser configurada para emular (ou não) os sinalizadores e seqüências de escape das versões BSD e / ou System V do echo .
 echotc [ -sv ] arg ...
Exercita os recursos do terminal (consulte termcap ) em args . Por exemplo, ” echotc home ” envia o cursor para a posição inicial, ” echotc cm 3 10 ” envia para a coluna 3 e linha 10 e ” echotc ts 0; echo ‘Este é um teste.’; Echotc fs ” imprime ” Este é um teste. “Na linha de status.

Se arg for ” baud “, ” cols “, ” lines “, ” meta ” ou ” tabs “, imprimirá o valor desse recurso (” yes ” ou ” no “ “indicando que o terminal possui ou não essa capacidade). Pode-se usar isso para tornar a saída de um script shell menos detalhada em terminais lentos ou limitar a saída do comando ao número de linhas na tela:

 set history = `linhas echotc`
 @ history--

As seqüências de caracteres Termcap podem conter caracteres curinga que não ecoarão corretamente. Deve-se usar aspas duplas ao definir uma variável de shell como uma cadeia de capacidade do terminal, como no exemplo a seguir que coloca a data na linha de status:

 set tosl = "` echotc ts 0` "
 set frsl = "` echotc fs` "
echo -n "$ tosl"; data; eco -n "$ frsl"

Com -s , os recursos inexistentes retornam a cadeia vazia em vez de causar um erro. Com -v , as mensagens são detalhadas.

  outro
 fim
 fim se
endsw
Veja a descrição das instruções foreach , if , switch e while abaixo.
 eval  arg ...
Trata os argumentos como entrada para o shell e executa o (s) comando (s) resultante (s) no contexto do shell atual. Isso geralmente é usado para executar comandos gerados como resultado de substituição de comando ou variável, porque a análise ocorre antes dessas substituições. Veja tset para uma amostra do uso de eval .
  comando exec
Executa o comando especificado no lugar do shell atual.
 sair [ expr ]
O shell sai com o valor do expr especificado (uma expressão, como descrito em Expressões) ou, sem expr , com o valor 0 .
 fg [ %  trabalho ...]
Coloca o trabalho especificado s (ou, sem argumentos, o trabalho atual) em primeiro plano, continuando cada um se estiver parado. o trabalho pode ser um número, uma sequência, % , + ou  conforme descrito em Trabalhos. Veja também o comando run-fg-editor editor.
 filetest  -  arquivo op  ...
Aplica op (que é um operador de consulta de arquivo, conforme descrito em Operadores de consulta de arquivo) a cada arquivo e retorna os resultados como uma lista separada por espaço.
  nome do foreach (lista de palavras )
 ...
 fim
Define sucessivamente o nome da variável para cada membro da lista de palavras e executa a sequência de comandos entre esse comando e o final correspondente . Ambos foreach e final deve aparecer sozinho em linhas separadas. O comando builtin continue pode ser usado para continuar prematuramente o loop e o comando builtin é interrompido para finalizá-lo prematuramente. Quando esse comando é lido no terminal, o loop é lido uma vez solicitando ” foreach? ” (Ou prompt2 ) antes que quaisquer instruções no loop sejam executadas. Se você cometer um erro ao digitar um loop no terminal, poderá apagá-lo.
 getspath
Imprime o caminho de execução do sistema. (Apenas TCF)
 getxvers
Imprime o prefixo da versão experimental. (Apenas TCF)
 lista de  palavras glob
Como o eco , mas o parâmetro ” -n ” não é reconhecido e as palavras são delimitadas por caracteres nulos na saída. Útil para programas que desejam usar o shell para nome do arquivo – expandir uma lista de palavras.
 pular  palavra
word é nomeado nome do arquivo e substituído por comando para gerar uma sequência no formato ” label “. O shell rebobina sua entrada o máximo possível, procura por uma linha no formato ” label: “, possivelmente precedida por espaços em branco ou guias e continua a execução após essa linha.
 hashstat
Imprime uma linha de estatística indicando a eficácia da tabela hash interna na localização de comandos (e na execução de exec ). Um exec é tentado para cada componente do caminho em que a função hash indica uma possível ocorrência e em cada componente que não começa com um ” / “.

Em máquinas sem vfork , imprime apenas o número e o tamanho dos baldes de hash.

 história [ -hTr ] [ n ]
 história -S | -L | -M [ nome do arquivo ]
 histórico -c
O primeiro formulário imprime a lista de eventos do histórico. Se n for fornecido, apenas os n eventos mais recentes serão impressos ou salvos. Com -h , a lista do histórico é impressa sem números iniciais. Se -T for especificado, os carimbos de data e hora também serão impressos no formato de comentário. Isso pode ser usado para produzir arquivos adequados para carregamento com ” history -L ” ou ” source -h “. Com -r , a ordem de impressão é a mais recente primeiro, e não a mais antiga primeiro.

Com -S , o segundo formulário salva a lista de histórico no nome do arquivo . Se a primeira palavra do savehistA variável shell é definida como um número, no máximo em que muitas linhas são salvas. Se a segunda palavra de savehist estiver definida como ” mesclar “, a lista do histórico será mesclada com o arquivo de histórico existente em vez de substituí-lo (se houver) e classificado por carimbo de data / hora. A mesclagem é destinada a um ambiente como o X Window System, com várias conchas em uso simultâneo. Atualmente, só é bem-sucedido quando as conchas são fechadas uma após a outra.

Com -L , o shell anexa o nome do arquivo , que é presumivelmente uma lista de histórico salva pela opção -S ou pelo mecanismo savehist , à lista de histórico. -M é como -L, mas o conteúdo do nome do arquivo é mesclado na lista de histórico e classificado por carimbo de data / hora. Nos dois casos, histfile é usado se o nome do arquivo não for fornecido e ~ / .history é usado se histfile não estiver definido . ” history -L ” é exatamente como ” source -h “, exceto que não requer um nome de arquivo.

Observe que os shells de login fazem o equivalente a ” history -L ” na inicialização e, se savehist estiver definido, ” history -S ” antes de sair. Como somente ~ / .tcshrc é normalmente fornecido antes de ~ / .history , histfiledeve ser definido em ~ / .tcshrc em vez de ~ / .login .

Se histlit estiver definido, o primeiro e o segundo formulários serão impressos e salvos no formato literal (não expandido) da lista de históricos.

O último formulário limpa a lista do histórico.

 hup [ comando ]
Com o comando , executa o comando de forma que ele saia em um sinal de interrupção e organiza o shell para enviar um sinal de interrupção quando a shell sair. Observe que os comandos podem definir sua própria resposta para desligamentos, substituindo o hup . Sem argumento, faz com que o shell não interativo saia apenas em um desligamento pelo restante do script. Consulte também Manipulação de sinal e o comando nohup builtin.
  comando if ( expr )
Se expr (uma expressão, como descrito em Expressões ) avalia true, o comando é executado. A substituição variável no comando acontece mais cedo, ao mesmo tempo que ocorre no restante do comando if . O comando deve ser um comando simples, não um alias, um pipeline, uma lista de comandos ou uma lista de comandos entre parênteses, mas pode ter argumentos. O redirecionamento de entrada / saída ocorre mesmo se expr for false e o comando não for executado; isso é um bug.
  se ( expr ) então
 ...
 caso contrário, se ( expr2 ) então
 ...
 outro
 ...
 fim se
Se o expr especificado for verdadeiro, os comandos para o primeiro item serão executados; caso contrário, se expr2 for true, os comandos para o segundo else são executados, etc. Qualquer número de pares else-if é possível; apenas um endif é necessário. outra parte é igualmente opcional. As palavras else e endif devem aparecer no início das linhas de entrada; if deve aparecer sozinho em sua linha de entrada ou depois de um outro .
  biblioteca compartilhada inlib ...
Adiciona cada biblioteca compartilhada ao ambiente atual. Não há como remover uma biblioteca compartilhada. (Apenas domínio / SO)
  empregos [ -l ]
Lista os trabalhos ativos. Com -l , lista os IDs de processo, além das informações normais. Nos sistemas TCF, imprime o site em que cada trabalho está sendo executado.
  kill [ -s signal ] % job |  pid ...
 kill -l
O primeiro e o segundo formulários enviam o sinal especificado (ou, se nenhum for fornecido, o sinal TERM (finalizar)) para os trabalhos ou processos especificados. o trabalho pode ser um número, uma sequência, % , + ou  conforme descrito em Trabalhos. Os sinais são dados por número ou por nome (conforme fornecido em /usr/include/signal.h , sem o prefixo ” SIG “). Não há trabalho padrão; dizer apenas ” matar ” não envia um sinal para o trabalho atual. Se o sinal enviado for TERM (término) ou HUP (hangup), o trabalho ou processo também receberá um sinal CONT (continuação). A terceira forma lista os nomes dos sinais.
  limite [ -h ] [ recurso [ uso máximo ]]
Limita o consumo pelo processo atual e cada processo criado para não exceder individualmente o uso máximo no recurso especificado. Se nenhum uso máximo for fornecido, o limite atual será impresso; se nenhum recurso for fornecido, todas as limitações serão fornecidas. Se o sinalizador -h for fornecido, os limites físicos serão usados ​​em vez dos limites atuais. Os limites rígidos impõem um teto aos valores dos limites atuais. Somente o superusuário pode aumentar os limites físicos, mas um usuário pode diminuir ou aumentar os limites atuais dentro do intervalo legal.

Os recursos controláveis ​​atualmente incluem (se suportados pelo sistema operacional):

cputimeo número máximo de segundos de CPU a ser usado por cada processo
tamanho do arquivoo maior arquivo único que pode ser criado
tamanho de dadoso crescimento máximo da região de dados + pilha via sbrk além do final do texto do programa
Tamanho da pilhao tamanho máximo da região de pilha estendida automaticamente
coredumpsizeo tamanho do maior dump principal que será criado
memoryusea quantidade máxima de memória física que um processo pode ter alocado a ele em um determinado momento
vmemoryusea quantidade máxima de memória virtual que um processo pode ter alocado para ele em um determinado momento (espaço de endereço)
vmemoryusea quantidade máxima de memória virtual que um processo pode ter alocado para ele em um determinado momento
tamanho da pilhaa quantidade máxima de memória que um processo pode alocar por chamada de sistema brk ()
descritores ou arquivos abertoso número máximo de arquivos abertos para esse processo
simultaneidadeo número máximo de threads para este processo
memorylockedo tamanho máximo que um processo pode bloquear na memória usando mlock
maxproco número máximo de processos simultâneos para esse ID do usuário
sbsizeo tamanho máximo de uso do buffer de soquete para este usuário
tamanho de swapa quantidade máxima de espaço de troca reservado ou usado para este usuário
maxlockso número máximo de bloqueios para este usuário
maxsignalo número máximo de sinais pendentes para este usuário
maxmessageo número máximo de bytes em enfileiramentos POSIX para este usuário
maxnicea prioridade máxima agradável que o usuário pode aumentar mapeado de [ 19 … -20 ] para [ 0 … 39 ] para esse usuário

o uso máximo pode ser dado como um número ( ponto flutuante ou inteiro ) seguido por um fator de escala. Para todos os limites que não sejam cputime, a escala padrão é ” k ” ou ” kilobytes ” (1024 bytes); um fator de escala de ” m ” ou ” megabytes ” ou ” g ” ou ” gigabytes ” também pode ser usado. Para cputime, a escala padrão é ” segundos “, enquanto ” m ” por minutos ou ” h ” por horas, ou um tempo no formato ” mm : ss ” que fornece minutos e segundos.

Se o uso máximo for ” ilimitado “, a limitação no recurso especificado será removida (isso é equivalente ao comando interno ilimitado ).

Para nomes de recursos e fatores de escala, prefixos inequívocos dos nomes são suficientes.

  registro
Imprime a variável do shell de monitoramento e relata sobre cada usuário indicado no relógio que está conectado, independentemente de quando eles fizeram o último login. Consulte também watchlog .
  entrar
Encerra um shell de login, substituindo-o por uma instância de / bin / login . Esta é uma maneira de fazer logoff, incluída para compatibilidade com sh .
  sair
Encerra um shell de login. Especialmente útil se ignoreeof estiver definido.
  ls-F [ - alternar ...] [ arquivo ...]
Lista arquivos como ” ls -F “, mas muito mais rápido. Ele identifica cada tipo de arquivo especial na lista com um caractere especial:

/Diretório.
*Executável.
#Bloquear dispositivo.
%Dispositivo de caracteres.
|Canal nomeado (sistemas apenas com canais nomeados).
=Soquete (sistemas apenas com soquetes).
@Link simbólico (sistemas apenas com links simbólicos).
+Diretório oculto (somente AIX) ou dependente do contexto (somente HP / UX).
:Rede especial (somente HP / UX).

Se a variável de shell listlinks estiver configurada, os links simbólicos serão identificados com mais detalhes (apenas nos sistemas que os possuem, é claro):

@Link simbólico para um não diretório.
>Link simbólico para um diretório.
&Link simbólico para lugar nenhum.

O listlinks também reduz a velocidade do ls-F e faz com que as partições que contêm arquivos apontados por links simbólicos sejam montadas .

Se a variável de shell listflags estiver definida como ” x “, ” a ” ou ” A ” ou qualquer combinação das mesmas (por exemplo, ” xA “), elas serão usadas como sinalizadores para ls-F , fazendo com que funcione como ” ls -xF “,” ls -Fa “,” ls -FA “ou uma combinação (por exemplo,” ls -FxA “). Em máquinas em que ” ls -C ” não é o padrão, ls-F atua como ” ls -CF “, a menos que listflags contenha um ” x “; nesse caso, ele atua como ” ls -xF “. ls-F passa seus argumentos para ls se houver alguma opção, então ” alias ls ls-F ” geralmente faz a coisa certa.

ls-F interno pode listar arquivos usando cores diferentes, dependendo do tipo de arquivo ou extensão. Veja a variável shell de cores e a variável de ambiente LS_COLORS .

  migrar [ - site ] pid |  % jobid ...
 migrar - site
O primeiro formulário migra o processo ou trabalho para o site especificado ou o site padrão determinado pelo caminho do sistema. O segundo formulário é equivalente a ” migrar-site $$ “: migra o processo atual para o site especificado. Migrar o próprio shell pode causar comportamento inesperado, porque o shell não gosta de perder o seu tty. (Apenas TCF)
  newgrp [ - ] [ grupo ]
Equivalente a ” exec newgrp “; veja newgrp . Disponível apenas se o shell foi compilado; veja a variável shell da versão .
  bom [ + número ] [ comando ]
Define a prioridade de agendamento para o shell para número , ou, sem número , para 4 . Com o comando , executa o comando na prioridade apropriada. Quanto maior o número, menos CPU o processo fica. O superusuário pode especificar prioridade negativa usando ” nice -number … “. O comando é sempre executado em um sub-shell, e as restrições impostas aos comandos são simples se as instruções se aplicam.
  nohup [ comando ]
Com o comando , executa o comando de forma que ignore os sinais de interrupção. Observe que os comandos podem definir sua própria resposta para hangups, substituindo nohup . Sem um argumento, faz com que o shell não interativo apenas ignore as interrupções do restante do script. Consulte também Manipulação de sinal e o comando hup builtin.
  notificar [ % trabalho ...]
Faz com que o shell notifique o usuário de forma assíncrona quando o status de qualquer um dos trabalhos especificados (ou, sem % trabalho , o trabalho atual) for alterado, em vez de esperar até o próximo prompt, como de costume. o trabalho pode ser um número, uma sequência, % , + ou  conforme descrito em Trabalhos . Veja também a variável de notificação do shell.
  onintr [ - |  etiqueta ]
Controla a ação do shell em interrupções . Sem argumentos, restaura a ação padrão do shell em interrupções, que é finalizar scripts do shell ou retornar ao nível de entrada do comando do terminal. Com ”  “, todas as interrupções são ignoradas. Com rótulo, faz com que o shell execute um ” rótulo goto ” quando uma interrupção é recebida ou um processo filho termina porque foi interrompido.

O onintr é ignorado se o shell estiver em execução desanexado e nos arquivos de inicialização do sistema (consulte Arquivos ), onde as interrupções são desativadas de qualquer maneira.

  popd [ -p ] [ -l ] [ -n |  -v ] [ + n ]
Sem argumentos, aparece a pilha de diretórios e retorna ao novo diretório superior. Com um número ” + n “, descarta a enésima entrada na pilha.

Finalmente, todas as formas de popd imprimem a pilha de diretórios final, assim como dirs . A variável do shell pushdsilent pode ser configurada para evitar isso e o sinalizador -p pode ser fornecido para substituir o pushdsilent. Os sinalizadores -l , -n e -v têm o mesmo efeito no popd que nos dirs .

  printenv [ nome ]
Imprime os nomes e valores de todas as variáveis ​​de ambiente ou, com o nome , o valor do nome da variável de ambiente.
  pushd [ -p ] [ -l ] [ -n |  -v ] [ nome |  + n ]
Sem argumentos, troca os dois principais elementos da pilha de diretórios. Se pushdtohome estiver definido, pushd sem argumentos ” pushd ~ “, como cd . Com o nome , envia o diretório de trabalho atual para a pilha de diretórios e muda para nome . Se o nome for ”  “, ele será interpretado como o diretório de trabalho anterior (consulte Substituição do nome do arquivo ). Se dunique estiver definido, pushd remove todas as instâncias de nome da pilha antes de colocá-lo na pilha. Com um número ” + n “, gira o enésimo elemento da pilha de diretórios para ser o elemento superior e muda para ele. Se dextract estiver definido, no entanto, ” pushd + n ” extrai o enésimo diretório, empurra-o para o topo da pilha e muda para ele.

Finalmente, todas as formas de pushd imprimem a pilha de diretórios final, assim como dirs . A variável do shell pushdsilent pode ser configurada para evitar isso e o sinalizador -p pode ser fornecido para substituir o pushdsilent . Os sinalizadores -l , -n e -v têm o mesmo efeito em pushd que em dirs .

  refazer
Faz com que a tabela de hash interna do conteúdo dos diretórios na variável de caminho seja recalculada. Isso é necessário se a variável do shell autorehash não estiver configurada e novos comandos forem adicionados aos diretórios no caminho enquanto você estiver conectado. Com autorehash , um novo comando será encontrado automaticamente, exceto no caso especial em que outro comando com o mesmo nome que já está localizado em um diretório diferente na tabela de hash. Também libera o cache dos diretórios pessoais criados pela expansão til.
  repetir comando de contagem
comando especificado, que está sujeito às mesmas restrições que o comando na instrução if de uma linha acima, é executado vezes de contagem . Os redirecionamentos de E / S ocorrem exatamente uma vez, mesmo que a contagem seja 0 .
  rootnode // nodename
Altera o  raiz para // nome do  , para que ” / ” seja interpretado como ” // nome do  “. (Apenas domínio / SO)
  agendar
 comando sched [ + ] hh : mm
 sched -n
O primeiro formulário imprime a lista de eventos agendados. A variável do shell de agendamento pode ser definida para definir o formato no qual a lista de eventos agendados é impressa. O segundo formulário adiciona comando à lista de eventos agendados . Por exemplo,

  Agendar 11:00 eco São onze horas.

faz com que a concha faça eco ” São onze horas ” às 11 horas. A hora pode estar no formato AM / PM de 12 horas:

  sched 17:00 set prompt = '[% h] Passa das 5;  ir para casa'

ou pode ser relativo ao horário atual:

  sched +2: 15 / usr / lib / uucp / uucico -r1 -sother

Uma especificação de tempo relativo pode não usar o formato AM / PM. O terceiro formulário remove o item n da lista de eventos:

  agendar
  1 Wed Apr 4 15:42 / usr / lib / uucp / uucico -r1 -sother
 2 qua 04/04 17:00 definir prompt = [% h] Passa das 5;  ir para casa
  sched -2
  agendar
  1 Wed Apr 4 15:42 / usr / lib / uucp / uucico -r1 -sother

Um comando na lista de eventos agendados é executado imediatamente antes da impressão do primeiro prompt após o horário em que o comando está agendado. É possível perder a hora exata em que o comando deve ser executado, mas um comando em atraso será executado no próximo prompt. Um comando que vence enquanto o shell aguarda a entrada do usuário é executado imediatamente. No entanto, a operação normal de um comando já em execução não será interrompida para que um elemento da lista de eventos agendados possa ser executado.

Esse mecanismo é semelhante, mas não é o mesmo, ao comando at em alguns sistemas Unix. Sua principal desvantagem é que ele pode não executar um comando exatamente no horário especificado. Sua principal vantagem é que, como o sched é executado diretamente no shell, ele tem acesso a variáveis ​​do shell e outras estruturas. Isso fornece um mecanismo para alterar o ambiente de trabalho com base na hora do dia.

  conjunto
 definir nome ...
 definir nome = palavra ...
 defina [ -r ] [ -f |  -l ] nome = (lista de palavras ) ...
 definir nome [ index ] = palavra ...
 set -r
 definir -r nome ...
 definir -r nome = palavra ...
A primeira forma do comando imprime o valor de todas as variáveis ​​do shell. Variáveis ​​que contêm mais de uma única palavra são impressas como uma lista de palavras entre parênteses. O segundo formulário define o nome para a cadeia nula. O terceiro formulário define o nome para a única palavra. O quarto formulário define o nome para a lista de palavras na lista de palavras. Em todos os casos, o valor é expandido por comando e nome de arquivo. Se -r for especificado, o valor será definido como somente leitura. Se -f ou -l forem especificados, configure apenas palavras únicas mantendo sua ordem. -f prefere a primeira ocorrência de uma palavra e -l a última. A quinta forma define o componente do índice como nome ; esse componente já deve existir. O sexto formulário lista apenas os nomes de todas as variáveis ​​de shell que são somente leitura. A sétima forma torna o nome somente leitura, com ou sem valor. A oitava forma é igual à terceira, mas torna o nome somente leitura ao mesmo tempo.

Esses argumentos podem ser repetidos para definir e / ou criar várias variáveis ​​somente leitura em um único comando set. Observe, no entanto, que a expansão variável ocorre para todos os argumentos antes que ocorra qualquer configuração. Observe também que ” = ” pode ser adjacente ao nome e à palavra ou separado dos dois pelo espaço em branco, mas não pode ser adjacente a apenas um ou outro. Veja também o comando interno não definido.

  setenv [ nome [ valor ]]
Sem argumentos, imprime os nomes e os valores de todas as variáveis ​​de ambiente. Nome próprio , define o nome da variável de ambiente como valor ou, sem valor , para a cadeia nula.
  caminho do caminho
Equivalente a setpath . (Apenas Mach)
  setspath LOCAL |  site |  cpu ...
Define o caminho de execução do sistema. (Apenas TCF)
  valor do limite de ajuste
Diz ao shell para acreditar que o limite de capacidade do terminal (conforme definido em termcap ) tem o valor do valor . Nenhuma verificação de sanidade é feita. Os usuários do terminal conceitual podem ter que ” configurar xn no ” para obter o empacotamento adequado na coluna mais à direita.
  setty [ -d |  -q  -x ] [ -a ] [[ + |  - ] mode ]
Controla quais modos tty (consulte Gerenciamento de terminal) o shell não permite alterar. -d , -q ou -x informa ao setty para atuar no conjunto de modos ” editar “, ” cotar ” ou ” executar “, respectivamente; sem -d , -q ou -x , ” execute ” é usado.

Sem outros argumentos, o setty lista os modos no conjunto escolhido que estão fixos em (” modo + “) ou desativados (” modo  “). Os modos disponíveis e, portanto, a tela variam de sistema para sistema. Com -a , lista todos os modos tty no conjunto escolhido, sejam eles corrigidos ou não. Com o modo + ,  ou modo , fixa ou desativa o modo ou remove o controle do modo no conjunto escolhido. Por exemplo, ” setty + echok echoe ” ativa o modo ” echok ” e permite que os comandos ativem ou desativem o modo ” echoe “, tanto quando o shell estiver executando comandos.

  setxvers [ string ]
Defina o prefixo da versão experimental como string ou o remova se a string for omitida. (Apenas TCF)
  shift [ variável ]
Sem argumentos, descarta o argv [1] e desloca os membros do argv para a esquerda. É um erro o argumento não ser definido ou ter menos de uma palavra como valor. Com variável, executa a mesma função na variável.
  fonte [ -h ] nome [ args ...]
O shell lê e executa comandos a partir do nome . Os comandos não são colocados na lista do histórico. Se algum argumento for dado, ele será colocado em argumento . comandos de origem podem ser aninhados; se estiverem aninhados muito profundamente, o shell poderá ficar sem descritores de arquivo. Um erro em uma fonte em qualquer nível finaliza todos os comandos de origem aninhados. Com -h , os comandos são colocados na lista do histórico em vez de serem executados, como ” history -L “.
  parar % trabalho |  pid ...
Interrompe os trabalhos ou processos especificados em execução em segundo plano. o trabalho pode ser um número, uma sequência, % , + ou  conforme descrito em Trabalhos. Não há trabalho padrão; dizer apenas ” parar ” não interrompe o trabalho atual.
  suspender
Faz com que o shell pare, como se tivesse recebido um sinal de parada com ^ Z. Isso é usado com mais frequência para interromper shells iniciados por su .
  switch ( string )
 case str1 :
     ...
  intervalos
 ...
 padrão:
     ...
  intervalos
 endsw
Cada rótulo de caso é correspondido sucessivamente, contra a cadeia especificada que é o primeiro comando e o nome do arquivo expandidos. Os metacaracteres de arquivo ” * “, ” ? ” E ” [ … ] ” podem ser usados ​​nos rótulos de maiúsculas, que são variáveis ​​expandidas. Se nenhum dos rótulos corresponder antes que um rótulo “padrão” seja encontrado, a execução será iniciada após o rótulo padrão. Cada etiqueta de caso e a etiqueta padrão devem aparecer no início de uma linha. O comando breaksw faz com que a execução continue após o término . Caso contrário, o controle poderá passar pelos rótulos de maiúsculas e minúsculas, como em C. Se nenhum rótulo corresponder e não houver padrão, a execução continuará após o final .
  telltc
Lista os valores de todos os recursos do terminal.
  termname [ tipo de terminal ]
Testa se o tipo de terminal (ou o valor atual de TERM se nenhum tipo de terminal for fornecido) possui uma entrada no banco de dados hosts termcap ou terminfo . Imprime o tipo de terminal em stdout e retorna 0 se houver uma entrada, caso contrário, retorna 1.
  time [ command ]
Executa o comando (que deve ser um comando simples, não um alias, um pipeline, uma lista de comandos ou uma lista de comandos entre parênteses) e imprime um resumo de tempo, conforme descrito na variável time . Se necessário, um shell extra é criado para imprimir a estatística de tempo quando o comando é concluído. Sem comando , imprime um resumo de tempo para o shell atual e seus filhos.
  umask [ valor ]
Define a máscara de criação de arquivo como valor , que é fornecido em octal . Os valores comuns para a máscara são 002 , fornecendo acesso total ao grupo e acesso de leitura e execução a outras pessoas, e 022 , fornecendo acesso de leitura e execução ao grupo e outras pessoas. Sem valor, imprime a máscara de criação de arquivo atual.
  padrão de unalias
Remove todos os aliases cujos nomes correspondem ao padrão . ” unalias * ” remove todos os aliases. Não é um erro que nada seja imparcial.
  padrão incompleto
Remove todas as conclusões cujos nomes correspondem ao padrão. ” incompleto * ” remove todas as conclusões. Não é um erro que nada fique incompleto.
  unhash
Desativa o uso da tabela de hash interna para acelerar a localização dos programas executados.
  universo universo
Define o universo como universo . (Apenas Masscomp / RTU)
  unlimit [ -hf ] [ recurso ]
Remove a limitação no recurso ou, se nenhum recurso for especificado, todas as limitações do recurso. Com -h , os limites rígidos correspondentes são removidos. Somente o superusuário pode fazer isso. Observe que o unlimit pode não sair com êxito, pois a maioria dos sistemas não permite que os descritores sejam ilimitados. Os erros com -f são ignorados.
  padrão não definido
Remove todas as variáveis ​​cujos nomes correspondem ao padrão , a menos que sejam somente leitura. ” unset * ” remove todas as variáveis, a menos que sejam somente leitura; isso é uma péssima ideia. Não é um erro que nada seja desabilitado.
  padrão unsetenv
Remove todas as variáveis ​​de ambiente cujos nomes correspondem ao padrão. ” unsetenv * ” remove todas as variáveis ​​de ambiente; isso é uma péssima ideia. Não é um erro que nada seja cancelado .
  ver [ systype [ comando ]]
Sem argumentos, imprime SYSTYPE . Com systype , define SYSTYPE como systype . Com systype e comando , executa o comando em systype . O systype pode ser ” bsd4.3 ” ou ” sys5.3 “. (Apenas domínio / SO)
  esperar
O shell aguarda todos os trabalhos em segundo plano. Se o shell for interativo, uma interrupção interromperá a espera e fará com que o shell imprima os nomes e os números de todos os trabalhos pendentes.
  universo de dobra
Define o universo como universo . (Apenas Convex / OS)
  watchlog
Um nome alternativo para o comando log embutido. Disponível apenas se o shell foi compilado; veja a variável shell da versão .
  comando onde
Informa todas as instâncias de comando conhecidas, incluindo aliases, componentes internos e executáveis ​​no caminho .
  qual comando
Exibe o comando que será executado pelo shell após substituições, pesquisa de caminho etc. O comando embutido é exatamente como esse , mas ele relata corretamente os aliases e os embutidos do tcsh e é 10 a 100 vezes mais rápido. Consulte também o comando do editor what-command.
  while ( expr )
 ...
 fim
Executa os comandos entre o tempo e o final correspondente enquanto expr (uma expressão, conforme descrito em Expressões) avalia diferente de zero. while e end devem aparecer sozinhos em suas linhas de entrada. break e continue pode ser usado para finalizar ou continuar o loop prematuramente. Se a entrada for um terminal, o usuário será solicitado pela primeira vez no loop, como no foreach .

Aliases especiais

Se definido, cada um desses aliases é executado automaticamente no horário indicado. Todos eles são inicialmente indefinidos.

beepcmdÉ executado quando o shell deseja tocar a campainha do terminal.
cwdcmdÉ executado após cada alteração do diretório de trabalho. Por exemplo, se o usuário estiver trabalhando em um sistema de janelas X usando o xterm e um gerenciador de janelas com nova parentalidade que suporte barras de título como twm e não

  alias cwdcmd 'echo -n "^ [] 2; $ {HOST}: $ cwd ^ G"'

o shell alterará o título do xterm em execução para ser o nome do host , dois pontos e o diretório de trabalho atual completo. Uma maneira mais extravagante de fazer isso é

  alias cwdcmd 'echo -n "^ [] 2; $ {HOST}: $ cwd ^ G ^ [] 1; $ {HOST} ^ G"'

Isso colocará o nome do host e o diretório de trabalho na barra de título, mas apenas o nome do host no menu do gerenciador de ícones.

Observe que colocar um cd , pushd ou popd em cwdcmd pode causar um loop infinito . Quem fizer isso receberá o que merece.

jobcmdÉ executado antes de cada comando ser executado ou quando o comando muda de estado. É semelhante ao postcmd , mas não imprime os componentes internos.

  alias jobcmd 'echo -n "^ [] 2 \; \! #: q ^ G"'

depois de executar o vi foo.c , a string de comando será colocada na barra de título do xterm .

helpcommandChamado pelo comando run-help editor. O nome do comando para o qual a ajuda é solicitada é passado como único argumento. Por exemplo, se alguém fizer

  alias helpcommand '\ !: 1 --help'

então a exibição de ajuda do próprio comando será chamada, usando a convenção de chamada de ajuda do GNU. Atualmente, não há uma maneira fácil de explicar várias convenções de chamada (por exemplo, o habitual Unix ” -h “), exceto usando uma tabela de muitos comandos.

periódicoExecuta todos os minutos do período. Isso fornece um meio conveniente para verificar alterações comuns, porém pouco frequentes, como novas mensagens. Por exemplo, se alguém fizer

  definir tperiod = 30
  alias verificações periódicas

o programa checknews é executado a cada 30 minutos. Se o periódico estiver definido, mas o período estiver desabilitado ou definido como 0 , o periódico se comportará como precmd .

precmdÉ executado antes de cada prompt ser impresso. Por exemplo, se alguém fizer

  alias data precmd

a data é executada imediatamente antes do shell solicitar cada comando. Não há limites para o que precmd pode ser definido, mas deve-se usar discrição.

postcmdÉ executado antes de cada comando ser executado. Se você correr

  alias postcmd 'echo -n "^ [] 2 \; \! #: q ^ G"'

depois de executar o vi foo.c , a string de comando será colocada na barra de título do xterm .

ConchaEspecifica o intérprete para scripts executáveis ​​que não especificam um intérprete. A primeira palavra deve ser o nome completo do caminho para o intérprete desejado (por exemplo, ” / bin / csh ” ou ” / usr / local / bin / tcsh “).

Variáveis ​​de shell especiais

As variáveis ​​descritas nesta seção têm um significado especial para o shell. O shell define adduffix , argv , autologout , csubstnonl , comando , echo_style , editar , gid , group , home , loginsh , oid , path , prompt , prompt2 , prompt3 , shell , shlvl , tcsh , termty , tty , uid , user and version na inicialização; eles não são alterados a menos que sejam alterados pelo usuário. O shell atualiza cwd , dirstack , owd e status quando necessário e define o logout no logout .

O shell sincroniza grupo , casa , caminho , shlvl , termo e usuário com as variáveis ​​de ambiente com os mesmos nomes: sempre que a variável de ambiente muda, o shell altera a variável do shell correspondente para corresponder (a menos que a variável do shell seja somente leitura) e vice-versa . Observe que, embora cwd e PWD tenham significados idênticos, eles não são sincronizados dessa maneira e o shell interconverte automaticamente os diferentes formatos de caminho e PATH .

adduffixSe definido, a conclusão do nome do arquivo adicionará ” / ” ao final dos diretórios e um espaço ao final dos arquivos normais quando forem correspondidos exatamente. Definido por padrão.
afsuserSe definido, o recurso de bloqueio automático do logoff automático usa seu valor em vez do nome de usuário local para autenticação do kerberos .
manhã tardeSe definido, todos os horários são mostrados no formato AM / PM de 12 horas.
argvOs argumentos para o shell. Parâmetros posicionais são obtidos de argv , ou seja, ” $ 1 ” é substituído por ” $ argv [1] “, etc. Definido por padrão, mas geralmente vazio em shells interativos.
auto correçãoSe definido, o comando do editor de ortografia é chamado automaticamente antes de cada tentativa de conclusão.
autoexpandSe definido, o comando do editor de expansão de histórico é chamado automaticamente antes de cada tentativa de conclusão. Se isso estiver definido como onlyhistory , somente o histórico será expandido e uma segunda conclusão expandirá os nomes de arquivos.
autolistSe definido, as possibilidades são listadas após uma conclusão ambígua. Se definido como ” ambíguo “, as possibilidades serão listadas apenas quando nenhum novo caractere for adicionado por conclusão.
autologoutA primeira palavra é o número de minutos de inatividade antes do logout automático. A segunda palavra opcional é o número de minutos de inatividade antes do bloqueio automático. Quando o shell efetua logout automaticamente, ele imprime “logoff automático”, define a variável logout como ” automático ” e sai. Quando o shell é bloqueado automaticamente, o usuário precisa digitar sua senha para continuar trabalhando. Cinco tentativas incorretas resultam no logout automático. Definido como ” 60 ” (logoff automático após 60 minutos e sem bloqueio) por padrão nas shells de login e superusuário, mas não se o shell achar que está sendo executado em um sistema de janelas (por exemplo, a variável de ambiente DISPLAY está definida), o tty é um pseudo-tty (pty) ou o shell não foi tão compilado (consulte a variável shell do versão ). Consulte também as variáveis ​​do shell afsuser e logout .
autorehashSe definido, a tabela de hash interna do conteúdo dos diretórios na variável de caminho será recalculada se um comando não for encontrado na tabela de hash. Além disso, a lista de comandos disponíveis será reconstruída para cada conclusão de comando ou tentativa de correção ortográfica, se definida como ” concluída ” ou ” correta “, respectivamente; se definido como ” sempre “, isso será feito nos dois casos.
backslash_quoteSe definido, as barras invertidas (” \ “) sempre citam \ ,  e  . Isso pode facilitar tarefas complexas de cotação, mas pode causar erros de sintaxe nos scripts csh .
CatálogoO nome do arquivo do catálogo de mensagens. Se definido, o tcsh usa ” tcsh. $ {Catalog} ” como um catálogo de mensagens em vez do padrão ” tcsh “.
cdpathUma lista de diretórios nos quais o cd deve procurar subdiretórios se não forem encontrados no diretório atual.
corSe definido, habilita a exibição em cores para o ls-F interno e passa –color = auto para ls . Como alternativa, ele pode ser definido como apenas ls-F ou apenas ls para ativar a cor em apenas um comando. Configurá-lo para nada é equivalente a configurá-lo para (ls-F ls) .
colorcatSe definido, ele habilita a seqüência de escape de cores para arquivos de mensagens NLS. E exiba mensagens NLS coloridas.
comandoSe definido, o comando que foi passado para o shell com o sinalizador -c .
compat_exprSe definido, o shell avaliará as expressões da direita para a esquerda, como o csh original.
completoSe definido como ” ignorar “, a conclusão não diferencia maiúsculas de minúsculas. Se definido como ” melhorar “, a conclusão ignora maiúsculas e minúsculas e considera hífens e sublinhados como equivalentes; também tratará pontos, hífens e sublinhados (” . “, ”  ” e ” _ “) como separadores de palavras. Se definido como ” Aprimorar “, a conclusão corresponderá a caracteres maiúsculos e sublinhados explicitamente e a maiúsculas e hífens de maneira que não diferencia maiúsculas de minúsculas; tratará pontos, hífens e sublinhados como separadores de palavras.
continuarSe definido como uma lista de comandos, o shell continuará os comandos listados, em vez de iniciar um novo.
continue_argsO mesmo que continue , mas o shell executará:

  echo `pwd` $ argv> ~ /. <cmd> _pause;  % <cmd>
corrigirSe definido como ” cmd “, os comandos serão corrigidos automaticamente na ortografia. Se definido como ” complete “, os comandos serão automaticamente concluídos. Se definido como ” todos “, a linha de comando inteira será corrigida.
csubstnonlSe definido, novas linhas e retornos de carro na substituição de comandos são substituídos por espaços. Definido por padrão.
cwdO nome do caminho completo do diretório atual. Veja também as variáveis ​​dirstack e owd shell.
destroçarSe definido, ” pushd + n ” extrai o enésimo diretório da pilha de diretórios em vez de girá-lo para o topo.
dirsfileO local padrão no qual ” dirs -S ” e ” dirs -L ” procuram um arquivo de histórico. Se não estiver definido , ~ / .cshdirs é usado. Como somente ~ / .tcshrc é normalmente fornecido antes de ~ / .cshdirs , o dirsfile deve ser definido em ~ / .tcshrc, em vez de ~ / .login .
pilha de lixoUma matriz de todos os diretórios na pilha de diretórios. ” $ dirstack [1] ” é o diretório de trabalho atual, ” $ dirstack [2] ” o primeiro diretório da pilha, etc. Observe que o diretório de trabalho atual é ” $ dirstack [1] ” mas ” = 0 ” no diretório substituições de pilha, etc. É possível alterar a pilha arbitrariamente, definindo dirstack , mas o primeiro elemento (o diretório de trabalho atual) está sempre correto. Veja também as variáveis cwd e owd shell.
dspmbyteTem efeito se ” dspm ” estiver listado como parte da variável de shell da versão. Se definido como ” euc “, ele permite exibir e editar o código EUC-kanji (japonês). Se definido como ” sjis “, ele permite exibir e editar o código Shift-JIS (japonês). Se definido como ” big5 “, ele permite exibir e editar o código Big5 (chinês). Se definido como ” utf8 “, ele permite exibir e editar o código Utf8 (Unicode). Se definido com o seguinte formato, ele permitirá a exibição e edição do formato original do código de vários bytes:

  definir dspmbyte = 0000 .... (256 bytes) .... 0000

A tabela requer apenas 256 bytes. Cada caractere de 256 caracteres corresponde (da esquerda para a direita) aos códigos ASCII 0x00 , 0x01 , … 0xff . Cada caractere é definido para o número 0 , 1 , 2 e 3 . Cada número tem o seguinte significado:

0 …não usado para caracteres de vários bytes.
1 …usado para o primeiro byte de um caractere de vários bytes.
2 …usado para o segundo byte de um caractere de vários bytes.
3 …usado para o primeiro e o segundo bytes de um caractere de vários bytes.

Exemplo:

Se definido como ” 001322 “, o primeiro caractere (significa 0x00 do código ASCII ) e o segundo caractere (significa 0x01 do código ASCII) são definidos como ” 0 “. Então, não é usado para caracteres de vários bytes. O terceiro caractere ( 0x02 ) é definido como ” 1 “, indicando que é usado para o primeiro byte de um caractere de vários bytes. O quarto caractere ( 0x03 ) é definido como ” 3 “. É usado para o primeiro byte e o segundo byte de um caractere de vários bytes. Os caracteres 5 e 6 (0x04,0x05) são definidos como ” 2 “, indicando que são usados ​​para o segundo byte de um caractere de vários bytes.

A versão GNU fileutils do ls não pode exibir nomes de arquivos de vários bytes sem a opção -N ( –literal ). Se você estiver usando esta versão, defina a segunda palavra de dspmbyte como ” ls “. Caso contrário, ” ls-F -l ” não pode exibir nomes de arquivos com vários bytes.

Nota:

Essa variável pode ser usada apenas se KANJI e DSPMBYTE tiverem sido definidos em tempo de compilação.

duniqueSe definido, pushd remove todas as instâncias de nome da pilha antes de colocá-lo na pilha.
ecoSe definido, cada comando com seus argumentos será repetido imediatamente antes de ser executado. Para comandos não integrados, todas as expansões ocorrem antes de ecoar. Os comandos internos são repetidos antes da substituição do comando e do nome do arquivo, porque essas substituições são feitas seletivamente. Definido pela opção de linha de comando -x .
echo_styleO estilo do eco incorporado. Pode ser definido como

bsdNão faça eco de uma nova linha se o primeiro argumento for ” -n “.
sysvReconhecer seqüências de escape com barra invertida em seqüências de eco.
ambosReconheça as seqüências de escape “flag” e barra invertida; o padrão.
NenhumTambém não reconhece.

Defina por padrão o padrão do sistema local. As opções BSD e System V são descritas nas páginas de manual do eco nos sistemas apropriados.

editarSe definido, o editor de linha de comandos é usado. Definido por padrão em shells interativos.
elipseSe configurada, as sequências de prompt ” % c ‘/`%. “E” % C “(consulte a variável shell do prompt ) indicam diretórios ignorados com reticências (”  “) em vez de` / <skipped> ‘.
euidO ID do usuário efetivo do usuário.
euserO primeiro nome de entrada de senha correspondente correspondente ao ID do usuário efetivo.
fignoreLista os sufixos do nome do arquivo a serem ignorados pela conclusão.
filecNo tcsh , a conclusão é sempre usada e essa variável é ignorada por padrão. Se a edição estiver desabilitada, a conclusão tradicional do csh será usada. Se definido no csh , a conclusão do nome do arquivo é usada.
gidO ID do grupo real do usuário.
globdotSe definido, os padrões de curingas glob corresponderão a arquivos e diretórios começando com ” . “, Exceto por ” . ” E ” .. “
globstarSe definido, os padrões glob do arquivo ” ** ” e ” *** ” corresponderão a qualquer sequência de caracteres, incluindo ” / ” que atravessa os subdiretórios existentes. (por exemplo, ” ls **. c ” listará todos os arquivos .c na árvore de diretórios atual). Se usado por si só, ele corresponderá a zero ou mais subdiretórios (por exemplo, ” ls /usr/include/**/time.h ” listará qualquer arquivo chamado ” time.h ” na árvore de diretórios / usr / include ; enquanto ” ls /usr/include/**time.h ” corresponderá a qualquer arquivo na árvore de diretórios / usr / include que termine em ” time.h “). Para evitar problemas de recursão, o padrão glob ” ** ” não descerá para um link simbólico que contém um diretório. Para substituir isso, use ” *** “
grupoO nome do grupo do usuário.
realçarSe definido, a correspondência de pesquisa incremental (em i-search-back e i-search-fwd ) e a região entre a marca e o cursor são destacadas no vídeo reverso.

O destaque requer gravações mais frequentes no terminal, o que introduz uma sobrecarga extra. Se você se preocupa com o desempenho do terminal, deixe-o desabilitado.

histcharsUm valor de sequência que determina os caracteres usados ​​na substituição do Histórico. O primeiro caractere de seu valor é usado como o caractere de substituição do histórico, substituindo o caractere padrão ” ! “. O segundo caractere de seu valor substitui o caractere ” ^ ” em substituições rápidas.
histdupControla a manipulação de entradas duplicadas na lista do histórico. Se definido como ” todos “, apenas eventos históricos exclusivos serão inseridos na lista de histórico. Se definido como ” anterior ” e o último evento do histórico for o mesmo que o comando atual, o comando atual não será inserido no histórico. Se definido como ” apagar ” e o mesmo evento for encontrado na lista de histórico, esse evento antigo será apagado e o atual será inserido. Observe que as opções ” anterior ” e ” todas ” renumeram os eventos do histórico para que não haja lacunas.
histfileO local padrão no qual ” history -S ” e ” history -L ” procuram um arquivo de histórico. Se não estiver definido, ~ / .history é usado. histfile é útil ao compartilhar o mesmo diretório inicial entre máquinas diferentes ou ao salvar históricos separados em diferentes terminais.Como somente ~ / .tcshrc é normalmente fornecido antes de ~ / .history , o arquivo de hist deve ser definido em ~ / .tcshrc, em vez de ~ / .login .
histlitSe definido, os comandos internos e do editor e o mecanismo savehist usam a forma literal (não expandida) de linhas na lista do histórico. Consulte também o comando do editor de alternância-literal-histórico .
históriaA primeira palavra indica o número de eventos do histórico para salvar. A segunda palavra opcional indica o formato em que o histórico é impresso; se não for fornecido, ” % h \ t% T \ t% R \ n ” é usado. As seqüências de formato são descritas abaixo sob prompt; observe o significado variável de ” % R “. Defina como ” 100 ” por padrão.
casaInicializado no diretório inicial do invocador. A expansão do nome de arquivo de ” ~ ” refere-se a essa variável.
ignoreeofSe definido como a string vazia ou ” 0 ” e o dispositivo de entrada for um terminal, o comando final do arquivo (geralmente gerado pelo usuário digitando ” ^ D ” em uma linha vazia) faz com que o shell imprima “Use” exit ‘para sair do tcsh. ” em vez de sair. Isso evita que o shell seja morto acidentalmente. Historicamente, essa configuração saiu após 26 EOFs sucessivos para evitar loops infinitos. Se for definido para um número n , as ignora shell n – 1 arquivos fim-de-consecutivos e saídas no n º. Se não definido, ” 1 ” é usado, ou seja, o shell sai em um único ” ^ D “.
implicitcdSe definido, o shell trata um nome de diretório digitado como um comando como se fosse uma solicitação para mudar para esse diretório. Se definido como detalhado , a alteração do diretório será repetida na saída padrão. Esse comportamento é inibido em scripts de shell não interativos ou em cadeias de comando com mais de uma palavra. A mudança de diretório tem precedência sobre a execução de um comando com o mesmo nome, mas é feito após substituições de alias. O til e as expansões variáveis ​​funcionam conforme o esperado.
modo de entradaSe definido como ” inserir ” ou ” substituir “, coloca o editor nesse modo de entrada no início de cada linha.
killdupControla o manuseio de entradas duplicadas no anel de morte. Se definido como ” todos “, apenas cadeias únicas serão inseridas no anel de morte. Se definido como ” prev ” e a última sequência eliminada for a mesma que a sequência eliminada atual, a sequência atual não será inserida no anel. Se definido como ” apagar ” e a mesma string for encontrada no anel de interrupção, a string antiga será apagada e a atual será inserida.
matadorIndica o número de seqüências de caracteres eliminadas para manter na memória. Defina como ” 30 ” por padrão. Se não estiver definido ou definido como menor que ” 2 “, o shell manterá apenas a string eliminada mais recentemente. As strings são colocadas no comando kill pelo comando que exclui (kill) as seqüências de texto, por exemplo, backward-delete-word , kill-line , etc, assim como o comando copy-region-as-kill . O comando yank editor irá puxar a string morta mais recentemente na linha de comando, enquanto o yank-pop (consulte Comandos do editor ) pode ser usado para puxar as cordas mortas anteriores.
listflagsSe definido como ” x “, ” a ” ou ” A ” ou qualquer combinação dos mesmos (por exemplo, ” xA “), eles serão usados ​​como sinalizadores para ls-F , fazendo com que ele funcione como ” ls -xF “, ” ls – Fa “,” ls -FA “ou uma combinação (por exemplo,” ls -FxA “):” a “mostra todos os arquivos (mesmo se eles começam com um” . “),” A “mostra todos os arquivos, exceto” . “E ” .. ” e ” x ” são classificados em vez de em baixo.Se a segunda palavra de listflags for configurada, ela será usada como o caminho para ” ls “
listjobsSe definido, todos os trabalhos são listados quando um trabalho é suspenso. Se definida como “longa”, a listagem estará em formato longo.
listlinksSe definido, o comando ls-F builtin mostra o tipo de arquivo para o qual cada link simbólico aponta.
listmaxO número máximo de itens que o comando do editor de opções de lista listará sem perguntar primeiro.
listmaxrowsO número máximo de linhas de itens que o comando do editor de opções de lista listará sem perguntar primeiro.
loginshDefinido pelo shell se for um shell de logon. Definir ou desarmar dentro de um shell não tem efeito. Veja também shlvl .
sairDefina pelo shell como ” normal ” antes de um logout normal, ” automático ” antes de um logout automático e ” hangup ” se o shell foi morto por um sinal de hangup (consulte Manipulação de sinal ). Veja também a variável shell autologout .
enviarUma lista de arquivos e diretórios para verificar a correspondência recebida, opcionalmente precedida por uma palavra numérica. Antes de cada prompt, se já passaram 10 minutos desde a última verificação, o shell verifica cada arquivo e diz “Você tem novos emails”. (ou, se o email contiver vários arquivos, “Você tem novos emails no nome “.) se o tamanho do arquivo for maior que zero e tiver um tempo de modificação maior que o tempo de acesso.

Se você estiver em um shell de logon, nenhum arquivo de mensagens será relatado, a menos que tenha sido modificado após a inicialização do shell, para evitar notificações redundantes. A maioria dos programas de login informará se você possui ou não e-mail quando efetuar login.

Se um arquivo especificado em e-mail for um diretório, o shell contará cada arquivo desse diretório como uma mensagem separada e informará “Você temn mails “ou” Você tem n e- mails no nome “, conforme apropriado. Essa funcionalidade é fornecida principalmente para os sistemas que armazenam e-mails dessa maneira, como o Andrew Mail System.

Se a primeira palavra do e-mail for numérica, ela será usada. como um intervalo de verificação de correio diferente, em segundos.

Em circunstâncias muito raras, o shell pode informar ‘Você tem correio’. em vez de “Você tem novas mensagens”.

matchbeepSe definido como ” nunca “, a conclusão nunca emite um sinal sonoro. Se definido como ” nomatch “, emite um sinal sonoro apenas quando não há correspondência. Se definido como ” ambíguo “, emite um sinal sonoro quando há várias correspondências. Se definido como “não exclusivo “, emite um sinal sonoro quando há uma correspondência exata e outra mais longa. Se não estiver definido, ” ambíguo ” é usado.
nobeepSe definido, o sinal sonoro é completamente desativado. Veja também visiblebell .
noclobberSe definido, restrições são impostas ao redirecionamento de saída para garantir que os arquivos não sejam acidentalmente destruídos e que os redirecionamentos ” >> ” se refiram aos arquivos existentes, conforme descrito na seção Entrada / saída.
assentindoSe definido, desative a impressão de ” DING! ” Nos especificadores de horário imediato, na mudança de hora.
noglobSe definido, a Substituição de nome de arquivo e Substituição de pilha de diretório são inibidas. Isso é mais útil em scripts de shell que não lidam com nomes de arquivos ou após a obtenção de uma lista de nomes de arquivos e expansões adicionais não são desejáveis.
nokanjiSe definido e o shell suportar Kanji (consulte a variável shell da versão), ele será desativado para que a meta-chave possa ser usada.
nonomatchSe definida, uma Substituição de nome de arquivo e Substituição de pilha de diretório que não corresponde a nenhum arquivo existente é deixada intocada, em vez de causar um erro. Ainda é um erro que a substituição seja malformada, por exemplo, ” echo [ ” ainda gera um erro.
nostatUma lista de diretórios (ou padrões globais que correspondem aos diretórios; consulte Substituição de nome de arquivo ) que não devem ser declarados durante uma operação de conclusão. Isso geralmente é usado para excluir diretórios que levam muito tempo para stat , por exemplo / afs .
notificarSe definido, o shell anuncia as conclusões do trabalho de forma assíncrona. O padrão é apresentar as conclusões do trabalho imediatamente antes de imprimir um prompt.
oidO ID real da organização do usuário. (Apenas domínio / SO)
owdO diretório de trabalho antigo, equivalente ao ”  ” usado pelo cd e pushd . Veja também as variáveis ​​de shell cwd e dirstack .
PadhourSe definido, ative a impressão do preenchimento ” 0 ” por horas, nos formatos de 24 e 12 horas. EG: 07:45:42 vs. 7:45:42 .
parseoctalPara manter a compatibilidade com versões anteriores, as variáveis ​​numéricas iniciadas com 0 não são interpretadas como octais. Definir essa variável permite a análise octal adequada.
caminhoUma lista de diretórios nos quais procurar comandos executáveis. Uma palavra nula especifica o diretório atual. Se não houver variável de caminho, apenas os nomes de caminho completo serão executados. path é definido pelo shell na inicialização a partir da variável de ambiente PATH ou, se PATH não existir, para um padrão dependente do sistema, algo como ” (/ usr / local / bin / usr / bsd / bin / usr / bin.) ” . O shell pode colocar ” . ” Primeiro ou último no caminho ou omiti-lo totalmente, dependendo de como foi compilado; veja a variável shell da versão . Um shell que não recebe as opções -c e -t faz o hash do conteúdo dos diretórios no caminho após a leitura de ~ / .tcshrce cada vez que o caminho é redefinido. Se alguém adicionar um novo comando a um diretório no caminho enquanto o shell estiver ativo, poderá ser necessário refazer a busca para encontrá-lo.
printexitvalueSe definido e um programa interativo sair com um status diferente de zero, o shell exibirá “Status de saída”.
prontoA sequência impressa antes de ler cada comando do terminal. O prompt pode incluir qualquer uma das seguintes seqüências de formatação, substituídas pelas informações fornecidas:

% /O diretório de trabalho atual.
% ~O diretório de trabalho atual, mas com o diretório inicial de alguém representado por ” ~ ” e os diretórios pessoais de outros usuários representados por ” ~ user ” conforme substituição do nome do arquivo . A substituição ” ~ user ” ocorre apenas se o shell já tiver usado ” ~ user ” em um nome de caminho na sessão atual.
% c [[0] ] , %. [[0] ]O componente final do diretório de trabalho atual, ou n componentes finais, se um dígito n for fornecido. Se n começa com ” 0 “, o número de componentes ignorados precede o (s) componente (s) à direita no formato ” / <à esquerda> à direita “. Se a variável do shell de reticências estiver configurada, os componentes ignorados serão representados por uma reticência, para que o todo se torne ” … à direita “. A substituição ” ~ ” é feita como em ” % ~ ” acima, mas o componente ” ~ ” é ignorado ao contar os componentes finais.
% CComo % c , mas sem substituição ” ~ “.
% h , %! !O número do evento do histórico atual.
% MO nome completo do host .
% mO nome do host até o primeiro ” . “.
% S ( % s )Iniciar (parar) o modo de destaque.
% B ( % b )Inicie (pare) o modo negrito.
% U ( % u )Iniciar (parar) o modo sublinhado.
% t , % @A hora do dia no formato AM / PM de 12 horas.
% TComo ” % t “, mas no formato de 24 horas (mas veja a variável shell ampm ).
% pA hora “precisa” do dia no formato de 12 horas AM / PM, com segundos.
% PComo ” % p “, mas no formato de 24 horas (mas veja a variável shell ampm ).
\ cc é analisado como em bindkey .
^ cc é analisado como em bindkey .
%%Um único ” % “.
% nO nome de usuário.
% NO nome do usuário efetivo.
% jO número de trabalhos.
% dO dia da semana no formato ” Dia “.
% DO dia no formato ” dd “.
%WO mês no formato ” Seg “.
%WO mês no formato ” mm “.
% yO ano no formato ” aa “.
% YO ano no formato ” aaaa “.
%euA concha é tty.
%EULimpa do final do prompt para o final da exibição ou para o final da linha.
% $Expande o nome da variável de ambiente ou shell imediatamente após o ” $ “.
% #” > ” (ou o primeiro caractere da variável de shell promptchars ) para usuários normais, ” # ” (ou o segundo caractere de promptchars ) para o superusuário.
% { string %}Inclui string como uma sequência de escape literal. Deve ser usado apenas para alterar os atributos do terminal e não deve mover a localização do cursor. Esta não pode ser a última sequência no prompt .
%?O código de retorno do comando executado imediatamente antes do prompt.
% RNo prompt2 , o status do analisador. No prompt3 , a sequência corrigida. Na história , a sequência do histórico.

” % B “, ” % S “, ” % U ” e ” % { string %} ” estão disponíveis apenas em shells limpos de oito bits; veja a variável shell da versão .

As seqüências em negrito, destaque e sublinhado são frequentemente usadas para distinguir um shell de superusuário. Por exemplo,

 > definir prompt = "% m [% h]% B [% @]% b [% /] você tocou?"
 tut [37] [14:54 pm] [/ usr / accts / sys] você ligou?  _

Se ” % t “, ” % @ “, ” % T “, ” % p ” ou ” % P ” for usado e o aceno de cabeça não estiver definido, imprima ” DING! ” Na mudança de hora (ou seja, ” : 00 “minutos) em vez da hora real.

A configuração padrão é ” % # ” em shells interativos.

prompt2A sequência com a qual solicitar os loops while e foreach e as linhas posteriores que terminam em ” \ “. As mesmas seqüências de formato podem ser usadas como no prompt ; observe o significado variável de ” % R “. Defina por padrão como ” % R? ” Em shells interativos.
prompt3A sequência com a qual solicitar ao confirmar a correção ortográfica automática. As mesmas seqüências de formato podem ser usadas como no prompt ; observe o significado variável de ” % R “. Defina por padrão como ” CORRETO>% R (y | n | e | a)? ” Em shells interativos.
promptcharsSe definida (para uma cadeia de dois caracteres), a sequência de formatação ” % # ” na variável de prompt do shell é substituída pelo primeiro caractere para usuários normais e o segundo caractere pelo superusuário.
pushdtohomeSe definido, pushd sem argumentos ” pushd ~ “, como cd .
impulsivoSe definido, pushd e popd não imprimem a pilha de diretórios.
recexactSe definido, a conclusão é concluída em uma correspondência exata, mesmo que seja possível uma correspondência mais longa.
accept_only_executablesSe definida, a listagem de comandos exibe apenas arquivos no caminho que são executáveis. Lento.
rmstarSe definido, o usuário será solicitado antes que ” rm * ” seja executado.
rpromptA sequência a ser impressa no lado direito da tela (após a entrada do comando) quando o prompt estiver sendo exibido à esquerda. Ele reconhece os mesmos caracteres de formatação que o prompt. Ele desaparecerá automaticamente e reaparecerá conforme necessário, para garantir que a entrada do comando não seja obscurecida e aparecerá apenas se o prompt, a entrada do comando e ela mesma se encaixarem na primeira linha. Se a edição não estiver definida, o rprompt será impresso após o prompt e antes da entrada do comando.
SavedirsSe definido, o shell ” dirs -S ” antes de sair. Se a primeira palavra estiver definida como um número, no máximo muitas entradas da pilha de diretórios serão salvas.
savehistSe definido, o shell faz ” histórico -S ” antes de sair. Se a primeira palavra estiver definida como um número, no máximo muitas linhas serão salvas. (O número deve ser menor ou igual ao histórico .) Se a segunda palavra estiver definida como ” mesclar “, a lista do histórico será mesclada com o arquivo de histórico existente em vez de substituí-lo (se houver) e classificado por carimbo de hora e os eventos mais recentes são mantidos.
agendarO formato em que o comando schedin interno imprime eventos agendados; se não for fornecido, ” % h \ t% T \ t% R \ n ” é usado. As seqüências de formato são descritas acima sob prompt; observe o significado variável de ” % R “.
ConchaO arquivo no qual o shell reside. Isso é usado na criação de shells para interpretar arquivos que executam bits definidos, mas que não são executáveis ​​pelo sistema. Consulte a descrição da execução de comandos internos e não internos . Inicializado na casa (dependente do sistema) do shell.
shlvlO número de shells aninhados. Redefina para 1 nos shells de login. Veja também loginsh .
statusO status retornado pelo último comando, a menos que a variável anyerror esteja configurada e qualquer erro em um pipeline ou expansão de aspas será propagado (esse é o comportamento padrão do csh e o padrão atual do tcsh ). Se ele terminou de forma anormal, 0200 é adicionado ao status. Os comandos internos que falham retornam o status de saída ” 1 “, todos os outros comandos internos retornam o status ” 0 “.
links simbólicosPode ser definido com valores diferentes para controlar a resolução do link simbólico (“link simbólico”):

se definido como ” perseguir “, sempre que o diretório atual for alterado para um diretório que contém um link simbólico, ele será expandido para o nome real do diretório ao qual o diretório pontos de ligação. Isso não funciona para o diretório inicial do usuário; isso é um bug.

Se definido como ” ignorar “, o shell tentará construir um diretório atual em relação ao diretório atual antes do cruzamento do link. Isso significa que o cd através de um link simbólico e, em seguida, ” cd .. ” ing retorna um para o diretório original. Isso afeta apenas os comandos internos e a conclusão do nome do arquivo.

Se definido como “expandir“, o shell tenta corrigir links simbólicos, na verdade expandindo argumentos que se parecem com nomes de caminho. Isso afeta qualquer comando, não apenas os internos. Infelizmente, isso não funciona para nomes de arquivos difíceis de reconhecer, como aqueles incorporados nas opções de comando. A expansão pode ser evitada por aspas. Embora essa configuração seja geralmente mais conveniente, algumas vezes é enganosa e, às vezes, confusa quando falha em reconhecer um argumento que deve ser expandido.Um compromisso é usar ” ignorar ” e usar o comando do editor normalize- path (ligado por padrão a ^ Xn ) quando necessário.

Alguns exemplos estão em ordem. Primeiro, vamos configurar alguns diretórios de reprodução:

  cd / tmp
 mkdir de / src para
 ln -s de / src para / dst

Aqui está o comportamento com links simbólicos não definidos :

cd / tmp / para / dst; echo $ cwd
 / tmp / para / dst
  cd ..; echo $ cwd
 / tmp / from

aqui está o comportamento com links simbólicos configurados para ” perseguir “:

cd / tmp / para / dst; echo $ cwd
 / tmp / de / src
  cd ..; echo $ cwd
 / tmp / from

aqui está o comportamento com links simbólicos definidos para ” ignorar “:

cd / tmp / para / dst; echo $ cwd
 / tmp / para / dst
  cd ..; echo $ cwd
 / tmp / para

e aqui está o comportamento com links simbólicos definidos para ” expandir “.

cd / tmp / para / dst; echo $ cwd
 / tmp / para / dst
  cd ..; echo $ cwd
 / tmp / para
cd / tmp / para / dst; echo $ cwd
 / tmp / para / dst
cd ".."; echo $ cwd
 / tmp / from
 / bin / eco ..
 / tmp / para
 / bin / eco ".."
  ..

Observe que a expansão ” expand ” funciona exatamente como ” ignorar ” para componentes internos como cd , é evitada por aspas e ocorre antes que os nomes de arquivos sejam passados ​​para comandos não internos.

tcshO número da versão do shell no formato ” VV PP “, onde ” R ” é o maior número de versão, ” VV ” a versão atual e ” PP ” a patchlevel.
prazoO tipo de terminal. Geralmente definido em ~ / .login, conforme descrito em Inicialização e desligamento.
TempoSe definido como um número, o tempo incorporado é executado automaticamente após cada comando, o que leva mais do que muitos segundos na CPU. Se houver uma segunda palavra, ela será usada como uma sequência de formato para a saída da hora incorporada.

As seguintes sequências podem ser usadas na cadeia de formato:

%VOCÊO tempo que o processo passou no modo de usuário em segundos da CPU.
% SO tempo que o processo passou no modo kernel em segundos da CPU.
% EO tempo decorrido (relógio de parede) em segundos.
% PA percentagem da CPU calculado como ( % L + % S ) / % E .
%WNúmero de vezes que o processo foi trocado.
% XA quantidade média em espaço de texto (compartilhado) usado em Kbytes.
% DA quantidade média em dados (não compartilhados) / espaço de pilha usado em Kbytes.
% KO espaço total usado ( % X + % D ) em Kbytes.
% MA memória máxima que o processo tinha em uso a qualquer momento em Kbytes.
% FO número de falhas principais da página (a página precisava ser trazida do disco).
% RO número de falhas menores da página.
%EUO número de operações de entrada.
% OO número de operações de saída.
% rO número de mensagens de soquete recebidas.
% sO número de mensagens de soquete enviadas.
% kO número de sinais recebidos.
%WO número de alternâncias voluntárias de contexto (aguarda).
% cO número de opções de contexto involuntárias.

Somente as quatro primeiras seqüências são suportadas em sistemas sem funções de limite de recursos BSD . O formato de hora padrão é ” % Uu% Ss% E% P% X +% Dk% I +% Oio% Fpf +% Ww ” para sistemas que suportam relatórios de uso de recursos e ” % Uu% Ss% E% P ” para sistemas que não suportam .

Sob DYNIX de sequentes / PTX, % X , % D , % K , R% e % s não estão disponíveis, mas as seguintes sequências adicionais são:

% YO número de chamadas do sistema realizadas.
% ZO número de páginas preenchidas com zero por demanda.
%EuO número de vezes que o tamanho do conjunto residente de um processo foi aumentado pelo kernel.
% dO número de vezes que o tamanho do conjunto residente de um processo foi diminuído pelo kernel.
%euO número de chamadas do sistema de leitura realizadas.
% mO número de chamadas do sistema de gravação executadas.
% pO número de leituras de dispositivos de disco bruto.
% qO número de gravações em dispositivos de disco bruto.

e o formato de hora padrão é ” % Uu% Ss% E% P% I +% Oio% Fpf +% Ww “. Observe que a porcentagem da CPU pode ser superior a 100% em multiprocessadores .

períodoO período, em minutos, entre as execuções do alias especial periódico .
ttyO nome do tty ou vazio, se não estiver anexado a um.
uidO ID do usuário real do usuário.
do utilizadorO nome de login do usuário.
verbosoSe definido, faz com que as palavras de cada comando sejam impressas, após a substituição do histórico (se houver). Definido pela opção de linha de comando -v .
versãoO carimbo de identificação da versão. Ele contém o número da versão do shell (ver tcsh ), origem, data de lançamento, o fornecedor, o sistema operacional e máquina (veja FORNECEDOR , OSTYPE e MACHTYPE ) e uma lista separada por vírgulas de opções que foram criados em tempo de compilação. As opções definidas por padrão na distribuição são anotadas.

8bA concha está oito bits limpa; padrão
7bO shell não está limpo de oito bits
LargoO shell possui codificação multibyte limpa (como UTF-8)
nlsO NLS do sistema é usado; padrão para sistemas com NLS
seOs shells de logon executam /etc/csh.login antes em vez de /etc/csh.cshrc e ~ / .login antes, em vez de depois de ~ / .tcshrc e ~ / .history .
dl” . ” é colocado por último no caminho da segurança; padrão
nd” . ” é omitido do caminho para segurança
viedição no estilo vi é o padrão, e não o emacs
dtrOs shells de login eliminam o DTR ao sair
tchaubye é sinônimo de logout e log é um nome alternativo para watchlog
ala saída automática está ativada; padrão
kanKanji é usado, se apropriado, de acordo com as configurações de localidade, a menos que a variável shell nokanji esteja definida
smmalloc do sistema é usado
hbA convenção ” #! <program> <args> ” é emulada ao executar scripts de shell
ngnewgrp embutido está disponível
rhO shell tenta definir a variável de ambiente REMOTEHOST
afsO shell verifica sua senha com o servidor kerberos se a autenticação local falhar. A variável de shell afsuser ou a variável de ambiente AFSUSER substitui o seu nome de usuário local, se definido.

Um administrador pode inserir seqüências adicionais para indicar diferenças na versão local.

visiblebellSe definido, um flash na tela é usado em vez da campainha audível. Veja também nobeep .
verUma lista de pares de usuário / terminal a serem observados para logins e logout. Se o usuário for ” qualquer “, todos os terminais serão monitorados para esse usuário e vice-versa. Ajustar o relógio para ” (qualquer) ” vigia todos os usuários e terminais. Por exemplo,

 set watch = (george ttyd1 qualquer console $ usuário qualquer)

relata a atividade do usuário ” george ” no ttyd1, de qualquer usuário no console e de si mesmo (ou de um invasor) em qualquer terminal.

Logins e logouts são verificados a cada 10 minutos por padrão, mas a primeira palavra de observação pode ser definida como um número para verificar a cada tantos minutos. Por exemplo,

 definir relógio = (1 qualquer)

relata qualquer login / logout uma vez a cada minuto. Para os impacientes, o comando log embutido aciona um relatório de inspeção a qualquer momento. Todos os logins atuais são relatados (como no log embutido) quando o relógio é definido pela primeira vez.

A variável who shell controla o formato dos relatórios de inspeção.

quemA sequência de formato para as mensagens de observação . As seguintes sequências são substituídas pelas informações fornecidas:

% nO nome do usuário que efetuou login / logout.
%umaA ação observada, ou seja, “conectado”, “desconectado” ou “substituiu o usuário antigo”.
%euO terminal (tty) no qual o usuário efetuou login / logout.
% MO nome completo do host remoto ou “local” se o logon / logout for do host local.
% mO nome do host do host remoto até o primeiro ” . “. O nome completo é impresso se for um endereço IP ou um monitor do sistema X Window .

% M e % m estão disponíveis apenas em sistemas que armazenam o nome do host remoto em / etc / utmp . Se desativado, ” % n tem% a% l de% m. ” É usado ou ” % n tem% a% l. ” Em sistemas que não armazenam o nome do host remoto.

wordcharsUma lista de caracteres não alfanuméricos a serem considerados parte de uma palavra pelos comandos do editor de palavra direta, palavra anterior etc. Se não estiver definido, ” *? _-. [] ~ = ” É usado.

Meio Ambiente

AFSUSEREquivalente à variável do shell afsuser .
COLUNASO número de colunas no terminal. Consulte Gerenciamento de terminal .
EXIBIÇÃOUsado pelo sistema X Window . Se definido, o shell não definirá a saída automática .
EDITORO nome do caminho para um editor padrão. Consulte também a variável de ambiente VISUAL e o comando run-fg-editor editor.
GRUPOEquivalente à variável de shell do grupo .
CASAEquivalente à variável de shell inicial .
HOSPEDEIROInicializado com o nome da máquina na qual o shell está sendo executado, conforme determinado pela chamada do sistema gethostname .
HOSTTYPEInicializado para o tipo de máquina na qual o shell está sendo executado, conforme determinado no tempo de compilação. Essa variável é obsoleta e será removida em uma versão futura.
HPATHUma lista de diretórios separados por dois pontos nos quais o comando run-help editor procura a documentação do comando.
LANGDá o ambiente de caractere preferido. Consulte Suporte ao sistema de idiomas nativos .
LC_CTYPESe definido, apenas o tratamento de caracteres ctype é alterado. Consulte Suporte ao sistema de idiomas nativos.
LINHASO número de linhas no terminal. Consulte Gerenciamento de terminal .
LS_COLORSO formato dessa variável lembra o formato do arquivo termcap ; uma lista separada por dois pontos de expressões do formato ” xx string “, em que ” xx ” é um nome de variável com dois caracteres. As variáveis ​​com seus padrões associados são:

não0 0Texto normal (sem nome de arquivo)
fi0 0Arquivo regular
di01; 34Diretório
em01; 36Link simbólico
pi33Canal nomeado ( FIFO )
então01; 35Soquete
Faz01; 35Porta
bd01; 33Bloquear dispositivo
CD01; 32Dispositivo de caracteres
ex01; 32Arquivo executável
mi(Nenhum)Arquivo ausente (o padrão é fi)
ou(Nenhum)Link simbólico órfão (o padrão é ln )
lc^ [[Código esquerdo
rcmCódigo certo
ec(Nenhum)Código final (substitui lc + no + rc )

Você precisa incluir apenas as variáveis ​​que deseja alterar do padrão.

Os nomes dos arquivos também podem ser coloridos com base na extensão do nome do arquivo. Isso é especificado na variável LS_COLORS usando a sintaxe ” * ext = string “. Por exemplo, usando códigos ISO 6429, para colorir todos os arquivos de origem no idioma C em azul, você deve especificar ” * .c = 34 “. Isso coloriria todos os arquivos terminados em .c na cor azul (34).

Caracteres de controlo podem ser escritos em C notação escapou-estilo de, ou em stty -like ^ notação Q. A notação no estilo C adiciona ^ [ para Escape, _para um caractere de espaço normal e ? para Excluir. Além disso, o ^ [ caractere de escape pode ser usado para substituir a interpretação padrão de ^ [ , ^ , : e = .

Cada arquivo será gravado como <lc> <código de cor> <rc> <nome do arquivo> <ec> . Se o código <ec> não estiver definido, a sequência <lc> <no> <rc> será usada. Isso geralmente é mais conveniente de usar, mas menos geral. A esquerda , direita e finalcódigos são fornecidos para que você não precise digitar partes comuns repetidamente e para suportar terminais estranhos; você geralmente não precisará alterá-las, a menos que o seu terminal não use sequências de cores ISO 6429, mas um sistema diferente.

Se o seu terminal usa códigos de cores ISO 6429, você pode compor os códigos de tipo (ou seja, todos, exceto os códigos lc , rc e ec ) a partir de comandos numéricos separados por ponto e vírgula. Os comandos mais comuns são:

0 0restaurar a cor padrão
1para cores mais brilhantes
4para texto sublinhado
5para texto intermitente
30para primeiro plano preto
31para primeiro plano vermelho
32.para primeiro plano verde
33para primeiro plano amarelo (ou marrom)
34para primeiro plano azul
35para primeiro plano roxo
36.para primeiro plano ciano
37.para o primeiro plano branco (ou cinza)
40.para fundo preto
41para fundo vermelho
42.para fundo verde
43para fundo amarelo (ou marrom)
44para fundo azul
45para fundo roxo
46.para fundo ciano
47para fundo branco (ou cinza)

Nem todos os comandos funcionarão em todos os sistemas ou dispositivos de exibição.

Alguns programas de terminal não reconhecem o código final padrão corretamente. Se todo o texto for colorido após a listagem de um diretório, tente alterar os códigos não e fi de 0 para códigos numéricos para as cores padrão de frente e de fundo.

MACHTYPEO tipo de máquina (classe de microprocessador ou modelo de máquina), conforme determinado em tempo de compilação.
NOREBINDSe definido, os caracteres imprimíveis não serão recuperados para o comando de inserção automática . Consulte Suporte ao sistema de idiomas nativos.
OSTYPEO sistema operacional, conforme determinado em tempo de compilação.
CAMINHOUma lista de diretórios separados por dois pontos nos quais procurar executáveis. Equivalente à variável de shell do caminho, mas em um formato diferente.
PWDEquivalente à variável shell cwd , mas não sincronizada com ela; atualizado somente após uma alteração real do diretório.
HOSPEDEIRO REMOTOO host do qual o usuário efetuou login remotamente, se esse for o caso, e o shell pode determiná-lo. Defina apenas se o shell tiver sido compilado; veja a variável shell da versão .
SHLVLEquivalente à variável shlvl shell.
SYSTYPEO tipo de sistema atual. (Apenas domínio / SO)
PRAZOEquivalente ao termo variável do shell.
TERMCAPA cadeia de capacidade do terminal. Consulte Gerenciamento de terminal .
DO UTILIZADOREquivalente à variável do shell do usuário.
FORNECEDORO fornecedor, conforme determinado no momento da compilação.
VISUALO nome do caminho para um editor de tela cheia padrão. Consulte também a variável de ambiente EDITOR e o comando run-fg-editor editor.

arquivos

/etc/csh.cshrcLeia primeiro por cada shell. ConvexOS, Stellix e Intel usam / etc / cshrc e computadores NeXT usam /etc/cshrc.std . A / UX, AMIX, Cray e IRIX não têm equivalente no csh , mas leia esse arquivo no tcsh de qualquer maneira. O Solaris 2.x também não o possui, mas o tcsh lê /etc/.cshrc .
/etc/csh.loginLeia os shells de login após /etc/csh.cshrc . ConvexOS, Stellix e Intel usam / etc / login , NeXTs usam /etc/login.std , Solaris 2.x usa /etc/.login e A / UX, AMIX, Cray e IRIX usam / etc / cshrc .
~ / .tcshrcLeia todos os shell após /etc/csh.cshrc ou equivalente.
~ / .cshrcLido por todo shell, se ~ / .tcshrc não existir, depois de /etc/csh.cshrc ou equivalente. Este manual usa ” ~ / .tcshrc ” para significar ” ~ / .tcshrc ou, se ~ / .tcshrc não for encontrado, ~ / .cshrc ‘.
~ / .historyLeia os shells de login após ~ / .tcshrc se savehist estiver definido, mas consulte também histfile .
~ / .loginLeia por shells de login após ~ / .tcshrc ou ~ / .history . O shell pode ser compilado para ler ~ / .login antes, em vez de depois de ~ / .tcshrc e ~ / .history ; veja a variável shell da versão .
~ / .cshdirsLeia por shells de login após ~ / .login se saveirs estiver definido, mas consulte também dirsfile .
/etc/csh.logoutLeia por shells de logon no logout. ConvexOS, Stellix e Intel usam / etc / logout e NeXTs usam /etc/logout.std . A / UX, AMIX, Cray e IRIX não têm equivalente no csh , mas leia esse arquivo no tcsh de qualquer maneira. O Solaris 2.x também não o possui, mas o tcsh lê /etc/.logout .
~ / .logoutLeia os shells de logon no logout após /etc/csh.logout ou equivalente.
/ bin / shUsado para interpretar scripts de shell que não começam com ” # “.
/ tmp / sh *Arquivo temporário para ” << “.
/ etc / passwdOrigem dos diretórios pessoais para substituições ” ~ name “.

Exemplos

Para iniciar o tcsh de outro shell, execute o comando:

  tcsh

Agora vamos escrever um script tcsh simples e executá-lo.

Vamos começar criando um novo arquivo com o editor vi . Vamos chamá-lo de ” fileinfo “:

 vi fileinfo

Isso iniciará o editor vi e o colocará em um novo arquivo chamado fileinfo . (Para mais informações sobre o vi , consulte nossa documentação do vi ). Pressione i para entrar no modo de inserção e digite o seguinte script:

 #! / bin / tcsh
# Uso: fileinfo name
# Se não houver argumentos, imprima uma mensagem de ajuda.
if ($ # argv == 0) então
   eco "Uso: nome da informação do arquivo"
    Saída
 fim se
# Se o primeiro argumento não for um arquivo existente, saia.
se (! -e $ 1) então
   eco "Erro: o arquivo $ 1 não existe"
    Saída
 fim se
# Listar informações do arquivo ls:
eco ""
eco "Informações da lista de arquivos:"
Informações do arquivo de lista ls -l $ 1 #
# Mostre quantas linhas no arquivo:
eco ""
eco "Numerador de linhas:"
wc -l $ 1 # conta palavras neste arquivo
# E que tipo de arquivo é:
eco ""
eco "Tipo de arquivo:"
arquivo $ 1

Quando terminar, pressione Esc para sair do modo de inserção e digite o comando : w para salvar o arquivo. Você pode digitar : q para sair do vi .

O script acima pega um nome de arquivo como argumento e imprime informações sobre esse arquivo, incluindo quantas linhas no arquivo (usando o comando wc ) e que tipo de arquivo é (usando o comando file ).

Vamos tornar o script executável com o comando chmod :

 chmod + x fileinfo

… e agora vamos testá-lo, obtendo informações sobre o próprio arquivo de script. Como sempre, como o script que queremos executar não está em nossa variável de ambiente PATH , executaremos o arquivo prefixando-o com o nome do diretório: nesse caso, o diretório atual ” ./ “. Como nosso argumento, especificaremos o nome do script (que não precisa do prefixo do diretório).

 ./fileinfo fileinfo

E aqui está a saída:

 Informações da lista de arquivos:
-rwxr-xr-x 1 nome de usuário nome de usuário 315 21 de maio às 09:42 fileinfo
Número de linhas:
19 fileinfo
 Tipo de arquivo:
fileinfo: Script de shell Tenex C, executável de texto ASCII

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

25 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.