Comandos Linux - Comando sh - Linux Force Security - Cursos de Linux e Segurança da Informação
Comandos Linux - Comando sh
Comandos Linux – Comando sh
Comando Linux sh
Em sistemas operacionais do tipo Unix, sh é o nome do comando do shell Bourne , o intérprete de linguagem de comando padrão do Unix e muitos sistemas operacionais do tipo Unix , incluindo Linux .
sh [-acefhikmnprstuvx] [ arg ] ...
sh é um intérprete de linguagem de comando que executa comandos lidos a partir de uma sequência de linhas de comando , da entrada padrão ou de um arquivo especificado .
O shell Bourne foi desenvolvido em 1977 por Stephen Bourne no AT & T 's de Bell Labs em 1977. Foi o shell padrão do Unix Versão sistemas 7. A maioria Unix-like conter o arquivo / bin / sh que seja o shell Bourne, ou um link simbólico (ou link físico ) para um shell compatível.
O Bourne Shell foi originalmente desenvolvido como um substituto para o shell Thompson , cujo arquivo executável também foi chamado sh . Embora seja usado como intérprete de comando interativo , seu objetivo original era funcionar como uma linguagem de script .
Os recursos do Bourne Shell incluem:
Os scripts podem ser chamados como comandos usando o nome do arquivo .
O invólucro pode ser usado interativamente ou não interativamente.
Os comandos podem ser executados de forma síncrona ou assíncrona.
O shell suporta redirecionamento de entrada e saída e pipelines .
Um conjunto robusto de comandos internos.
Construções de controle de fluxo, facilidades de cotação e funções .
Variáveis sem tipo .
Escopos variáveis locais e globais .
Os scripts podem ser interpretados, ou seja, eles não precisam ser compilados para serem executados.
Substituição de comando usando volta aspas, por exemplo: ` comando ` .
"Aqui documentos": o uso de << para incorporar um bloco de texto de entrada em um script.
loops " for / do / done " , em particular o uso de $ * para fazer um loop sobre argumentos.
Mecanismo de seleção " case / in / esac ", destinado principalmente a auxiliar na análise de argumentos .
Suporte para variáveis ​​de ambiente usando parâmetros de palavras-chave e variáveis ​​exportáveis.
Fortes disposições para o controle de entradas e saídas e em suas instalações de correspondência de expressões .
O uso do Bourne Shell foi amplamente substituído pelo Bourne-Again Shell ( bash ), que suporta recursos interativos mais amigáveis, como controle de tarefas e histórico de comandos .
Um comando simples é uma sequência de palavras que não estão em branco separadas por espaços em branco (um espaço em branco é uma guia ou um espaço). A primeira palavra especifica o nome do comando a ser executado. Exceto conforme especificado abaixo, as palavras restantes são passadas como argumentos para o comando invocado. O nome do comando é passado como argumento 0 (consulte exec ). O valor de um comando simples é seu status de saída se terminar normalmente ou 200 + se terminar de forma anormal (consulte a visão geral de sinais do sistema operacional para obter uma lista dos valores de status).
Um pipeline é uma sequência de um ou mais comandos separados por uma barra vertical (" | "). A saída padrão de cada comando, mas o último, é conectado por um tubo à entrada padrão do próximo comando. Cada comando é executado como um processo separado; o shell aguarda o último comando terminar. O valor de um pipeline é o status de saída do seu último comando.
Uma lista é uma sequência de um ou mais pipelines separados por " ; ", " & ", " && " ou " || " e, opcionalmente, finalizados por " ; " ou " & ". " ; " e " & " têm precedência igual que é menor do que " && " e " || ", " && " e " || " também têm precedência igual. Um ponto e vírgula causa execução sequencial; um e comercial faz com que o pipeline anterior seja executado sem esperar que ele termine. O símbolo "") faz com que a lista a seguir seja executada apenas se o pipeline anterior retornar um valor zero (diferente de zero). Novas linhas podem aparecer em uma lista, em vez de ponto e vírgula, para delimitar comandos.
Um " # " no início de uma palavra inicia um comentário e faz com que o restante da linha seja ignorado.
Um comando é um comando simples ou um dos seguintes. O valor retornado por um comando é o do último comando simples executado no comando:
para o nome [ na palavra …] faça a lista concluída For loop . Cada vez que um de comando é executado, o nome está definido para a próxima palavra no para lista de palavras. Se ' in word …' for omitido, então ' in " $ @ " ' será assumido. A execução termina quando não houver mais palavras na lista.
palavra maiúscula em [ padrão [ | padrão ] …) lista ;; ] … esac Um comando case executa a lista associada ao primeiro padrão que corresponde à palavra . A forma dos padrões é a mesma usada para a geração do nome do arquivo.
if list então list [ elif list then list ] … [ else list ] fi A lista seguinte , se for executado, e se ele retorna zero, a lista seguinte , em seguida, é executado. Caso contrário, a lista seguinte elif ( "else if") é executado e se o seu valor for zero, a lista seguinte , em seguida, é executado. Falha na execução da lista else .
enquanto lista [ fazer lista ] feito A enquanto comando executa repetidamente a enquanto lista , e se seu valor é zero, executa a fazer lista ; caso contrário, o loop termina. O valor devolvido por um , enquanto comando é a do último comando executado no fazer lista . até pode ser usado no lugar de enquanto para negar o teste de finalização do loop.
( lista ) Executar lista em um subshell.
{ list ; } A lista é executada.
nome () { lista ; } Define o nome da função do shell . Cada vez que o nome é reconhecido como um comando, a lista é executada, com os parâmetros posicionais $ 1 , $ 2 … configurados para os argumentos do comando. Após o retorno da função, os parâmetros posicionais anteriores são restaurados.
As seguintes palavras são reconhecidas apenas como a primeira palavra de um comando e quando não estão entre aspas:
A saída padrão de um comando incluído em um par de acentos graves ( " ) pode ser usada como parte ou toda uma palavra; as novas linhas à direita são removidas. Por exemplo, se o script executável echotest.sh continha o comando:
echo "O nome deste script é 'basename $ 0`."
A execução do script exibirá a saída combinada de echo e basename :
O nome desse script é echotest.sh.
Substituição de Parâmetros
O caractere $ é usado para introduzir parâmetros substituíveis. Os parâmetros posicionais podem receber valores definidos por conjunto . As variáveis ​​podem ser definidas no formato " nome = valor [ nome = valor ] …".
$ { parameter } Um parâmetro é uma sequência de letras, dígitos ou sublinhados (um nome), um dígito ou qualquer um dos caracteres * @ #? – $! . O valor, se houver, do parâmetro é substituído. Os colchetes são necessários apenas quando o parâmetro é seguido por uma letra, dígito ou sublinhado que não deve ser interpretado como parte de seu nome. Se o parâmetro é um dígito, é um parâmetro posicional. Se o parâmetro for * ou @ , todos os parâmetros posicionais, começando com $ 1 , serão substituídos por espaços. $ 0 é definido a partir do argumento zero quando o shell é chamado.
$ { parâmetro : – palavra } Se o parâmetro estiver definido e não estiver vazio, substitua seu valor; caso contrário, substitua a palavra .
$ { parâmetro : = palavra } Se o parâmetro não estiver definido e não estiver vazio, defina-o como word ; o valor do parâmetro é então substituído. Os parâmetros posicionais não podem ser atribuídos dessa maneira.
$ { parâmetro 😕 palavra } Se o parâmetro estiver definido e não estiver vazio, substitua seu valor; caso contrário, imprima o word e saia do shell. Se a palavra for omitida, uma mensagem padrão será impressa.
$ { parâmetro : + palavra } Se o parâmetro estiver definido e não estiver vazio, substitua word ; caso contrário, não substitua nada.
Se o : é omitido, as substituições são executados somente se o parâmetro for definido, mesmo se ela estiver vazia.
Acima, a palavra não é avaliada, a menos que seja usada como a sequência substituída. Então, por exemplo, " echo $ {d-`pwd`}" só executará pwd se d estiver desabilitado.
# O número de parâmetros posicionais, em decimal.
– Opções fornecidas ao shell na chamada ou por conjunto .
? O valor retornado pelo último comando executado, em decimal.
! O número do processo do último comando em segundo plano chamado.
Os seguintes parâmetros são usados ​​pelo shell:
CDPATH O caminho de pesquisa para o comando cd .
CASA O argumento padrão ( diretório inicial ) para o comando cd .
OPTARG O valor do último argumento da opção processado pelo comando especial getopts .
OPTIND O índice da última opção processada pelo comando especial getopts .
CAMINHO O caminho de busca de comandos (consulte Execução ).
ENVIAR Se essa variável estiver definida como o nome de um arquivo de mensagens , o shell informará o usuário sobre a chegada de mensagens no arquivo especificado.
MAILCHECK Se essa variável estiver configurada, ela será interpretada como um valor em segundos para aguardar entre as verificações de novos emails. O padrão é 600 (10 minutos). Se o valor for zero, o email será verificado antes de cada prompt.
MAILPATH Uma lista de arquivos separados por dois pontos que são verificados quanto a novos emails. MAIL será ignorado se esta variável estiver configurada.
PS1 Sequência de caracteres do prompt primário, por padrão '$' .
PS2 Sequência de caracteres do prompt secundário, por padrão '>' .
IFS Separadores de campos internos, normalmente espaço, tabulação e nova linha.
LANG , LC_ALL Variáveis ​​de localidade.
LC_CTYPE Afeta o mapeamento de bytes para caracteres para geração de nome de arquivo, interpretação de ' \ ' e manipulação de $ IFS .
SHACCT Se essa variável for configurada no ambiente inicial passado para o shell e apontar para um arquivo gravável pelo usuário, as estatísticas contábeis serão gravadas nela.
TEMPO ESGOTADO O shell existe ao solicitar entrada se nenhum comando for inserido por mais do que o valor especificado em segundos. Um valor zero significa que não há tempo limite e é o padrão.
Interpretação em branco
Após a substituição de parâmetro e comando, todos os resultados da substituição são verificados quanto a caracteres separadores de campo interno (aqueles encontrados em $ IFS ) e divididos em argumentos distintos, onde esses caracteres são encontrados. Argumentos nulos explícitos ( "" ou " ) são mantidos. Os argumentos nulos implícitos (aqueles resultantes de parâmetros que não têm valores) são removidos.
cd /usf/lb
If the answer is 'y' or anything other than 'n', the shell will set the current directory to the one proposed.
read [-r] name … One line is read from the standard input; successive words of the input are assigned to the variables name in order, with leftover words to the last variable. The return code is 0 unless end-of-file is encountered. Normally, backslashes escape the following character; this is inhibited if the -r option is given.
set [–aefhknptuvx [arg …]]
— No effect; useful if the first arg begins with –.
-e If non-interactive, exit immediately if a command fails.
– Turn off the -x and -v options.
times Imprima as horas acumuladas do usuário e do sistema para os processos executados no shell.
teste [ expr ] teste avalia a expressão expr e, se seu valor for verdadeiro, ele retornará o status de saída zero; caso contrário, um status de saída diferente de zero será retornado. teste retorna uma saída diferente de zero se não houver argumentos.
As seguintes primitivas são usadas para construir expr :
arquivo -r Verdadeiro se o arquivo existir e for legível.
arquivo -w Verdadeiro se o arquivo existir e for gravável.
arquivo -u Verdadeiro se o arquivo existir e o bit setuid estiver definido.
arquivo -g Verdadeiro se o arquivo existir e tiver o bit setgid definido.
arquivo -k True if the file exists and has the sticky bit set.
n1 -eq n2 Verdadeiro se os números inteiros n1 e n2 forem algebricamente iguais. Qualquer das comparações -ne , -gt , -ge , -LT , ou -le pode ser usado em lugar de eq .
Essas primárias podem ser combinadas com os seguintes operadores:
! Operador de negação unário.
-uma Operador binário AND.
-o Operador OR binário.
( expr ) Parênteses para agrupamento.
-a tem precedência mais alta que -o . Observe que todos os operadores e sinalizadores são argumentos separados para testar . Observe também que os parênteses são significativos como separadores de comando e devem ser escapados .
armadilha [ arg ] [ n | nome ] … O arg é um comando a ser lido e executado quando o shell recebe sinal (es) n . Observe que arg é varrido uma vez quando a armadilha é definida e uma vez quando a armadilha é feita. Os comandos trap são executados na ordem do número do sinal. Se arg estiver ausente, todas as armadilhas n serão redefinidas para seus valores originais. Se arg for a cadeia nula, esse sinal será ignorado pelo shell e pelos comandos invocados. Se n for 0 , o comando arg será executado na saída do shell, caso contrário, após o recebimento do sinal nconforme numerado no sinal. Trap sem argumentos imprime uma lista de comandos associados a cada número de sinal. Um nome simbólico pode ser usado em vez do argumento n ; é formado pelo nome do sinal no idioma C menos o prefixo SIG , por exemplo, TERM para SIGTERM . EXIT é o mesmo que um argumento zero (' 0 ').
digite o nome … Para cada nome , imprime se seria executado como uma função shell, como um comando especial ou como um comando externo. No último caso, o nome completo do caminho para o comando também é impresso.
ulimit [ – [ HS ] [ a | cdfmnstuv ]]
ulimit [ – [ HS ] [ c | d | f | m | n | s | t | u | v ]] [ limite ] Manipula limites de recursos para o shell e processos criados por ele, conforme descrito em getrlimit . Sem um argumento de limite , as configurações atuais são impressas; caso contrário, um novo limite é definido. As seguintes opções são aceitas:
-H Define um limite rígido. Somente o superusuário pode aumentar um limite rígido.
-S Define um limite suave. Um limite flexível não deve exceder o limite rígido.
Se nem -H ou -S for fornecido, o limite flexível será impresso ou ambos os limites serão definidos, respectivamente.
-uma Escolhe todos os limites descritos.
-c O tamanho máximo de um dump principal em blocos de 512 bytes.
-d O tamanho máximo do segmento de dados em kbytes .
-f O tamanho máximo de um arquivo em blocos de 512 bytes. Esse é o padrão se nenhum limite for selecionado explicitamente.
-eu O tamanho máximo da memória bloqueada em kbytes.
-m O tamanho máximo do conjunto de residentes em kbytes.
-n O número máximo de descritores de arquivos abertos.
-s O tamanho máximo do segmento de pilha em kbytes.
-t O tempo máximo do processador em segundos.
-você O número máximo de processos filhos .
-v O tamanho máximo do espaço de endereço em kbytes.
umask [ -S ] [ nnn ] A máscara de criação de arquivo do usuário é configurada para o valor octal nnn (consulte umask ). Os modos simbólicos, conforme descrito no chmod, também são aceitos. Se nnn for omitido, o valor atual da máscara será impresso. Com a opção -S , a máscara atual é impressa como uma sequência simbólica.
variável não definida … Desativa cada variável nomeada.
espera [ n ] Aguarde o processo especificado e relate seu status de encerramento. Se n não for fornecido, ocorrerá uma espera para todos os processos filhos ativos no momento. O código de retorno deste comando é do processo esperado. Se n não se referir a um processo filho do shell, aguarde retorna imediatamente com o código 0 .
Se o primeiro caractere do argumento zero for – , os comandos serão lidos em / etc / profile e $ HOME / .profile , se o arquivo respectivo existir. Os comandos são lidos como descrito abaixo. Os seguintes sinalizadores são interpretados pelo shell quando ele é chamado:
-c string Se o sinalizador -c estiver presente, os comandos serão lidos da string .
-s Se o sinalizador -s estiver presente ou se nenhum argumento permanecer, os comandos serão lidos a partir da entrada padrão . A saída do shell é gravada no descritor de arquivo 2.
-Eu Se o sinalizador -i estiver presente ou se a entrada e saída do shell estiverem conectadas a um terminal (conforme informado pela função isatty () ), esse shell será interativo. Nesse caso, o sinal de terminação SIGTERM é ignorado (para que ' kill 0 ' não mate um shell interativo) e o sinal de interrupção SIGINT seja capturado e ignorado (para que a espera seja interrompida). Em todos os casos, o SIGQUIT é ignorado pelo shell.
Os demais sinalizadores e argumentos são descritos sob o comando set .
jobs [-p|-l] [jobid …] | [-x command [arguments …]] Prints information about each jobid, or executes command:
-x command [arguments …] Executes command with arguments; each argument that forms a job id is replaced by the process group id of the respective job. It is an error if a given job does not exist.
As atribuições de parâmetros que precedem um comando especial afetam o próprio shell; as atribuições de parâmetro que precedem a chamada de uma função são ignoradas.