Noções básicas de Shell
definição
O que é Shell
• Shell não é apenas uma linguagem de comando, mas também uma linguagem de programação.
• É um ambiente que fornece uma interface para o sistema linux (unix).
• Recebe a entrada do usuário, executa o programa com base na entrada e exibe o saída do programa.
• Você pode executar os comandos do usuário, programas e scripts de shell
Para os usuários, o shell é o utilitário mais importante. Conhecimento profundo e proficiência nas características do shell e como usá-lo são a chave para fazer um bom uso do sistema Unix / Linux
Classificação Shell
• Assim como existem diferentes tipos de sistemas, existem diferentes versões do shell, cada um com seu próprio conjunto de comandos e funções.
• O shell UNIX foi escrito em meados da década de 1970 por Stephen Byrne e AT&T Bell Labs em New Jersey
- Bourne shell prompt $
Bourne shell inclui três tipos: Bourne shell (sh), Korn shell (ksh) e Bourne Again Shell.
- C shell prompt %
O shell C inclui dois tipos: csh e tcsh
Intérprete de script shell
Ver o shell padrão do sistema
echo $ SHELL
[root@single conf]# echo $SHELL
/bin/bash
Como o bash é fácil de usar e gratuito, ele é amplamente usado no trabalho diário. Ao mesmo tempo, bash também é o interpretador de script de shell padrão para a maioria dos sistemas Linux.
Veja os shells suportados pelo sistema
cat / etc / shells
[root@single conf]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
Especificação Shell
- O nome do arquivo do script de shell tem uma extensão .sh, por exemplo: test.sh
- Os arquivos de script de shell devem receber permissão de execução (o arquivo recém-criado não tem permissão de execução)
chmod u + x test.sh - Um script Shell padrão indicará qual interpretador é usado para executar o conteúdo do script na primeira linha. A programação desta linha no Linux é geralmente: #! / Bin / bash
- Método de execução de script
shell./test.sh
comando
Entrada / saída do console
echo [-n] "..." 控制台输出
read VAR 控制台输入
caso:
#!/bin/bash
echo -n "please enter your name => "
read NAME
echo "your name is $NAME"
resultado:
[root@single shell]# ./test.sh
please enter your name => jun
your name is jun
Anotação
单行:#...
多行::<<!...!
caso:
#!/bin/bash
:<<!
echo -n "please enter your name => "
read NAME
echo "your name is $NAME"
!
echo "break"
#echo -n "hello shell"
resultado:
[root@single shell]# ./test.sh
break
variável
Formato da sintaxe: nome da variável = valor da variável
•数字、字母、下划线、一般字母大写
•值可以是一个数字、文本、文件名、设备或任何其他类型的数据,不可以是指针
•shell可以创建,分配和删除变量
Tipo de variável
Tipos de | significado |
---|---|
Variável local | Variáveis locais são definidas em scripts ou comandos e só são válidas na instância atual do shell.Os programas iniciados por outros shells não podem acessar variáveis locais. |
Variável de ambiente | Todos os programas, incluindo aqueles iniciados pelo shell, podem acessar variáveis de ambiente e alguns programas precisam de variáveis de ambiente para garantir sua operação normal. Você pode usar o comando set para ver as variáveis de ambiente atuais |
variáveis de shell | Variáveis especiais definidas pelo programa shell. Algumas das variáveis do shell são variáveis de ambiente e outras são variáveis locais. Essas variáveis garantem o funcionamento normal do shell. |
Uso de variável
- Variável local
创建
NAME="henry"
AGE=18
使用
echo "$NAME,$AGE"
echo $NAME
取消
unset NAME
常量
readonly NAME
caso:
[root@single shell]# NAME="JUN"
[root@single shell]# AGE=22
[root@single shell]# echo "$NAME,$AGE"
JUN,22
[root@single shell]# unset NAME
[root@single shell]# echo "$NAME,$AGE"
,22
[root@single shell]# NAME="jun"
[root@single shell]# readonly NAME
[root@single shell]# echo $NAME
jun
[root@single shell]# NAME="kun"
-bash: NAME: readonly variable
- Variável de ambiente
Variáveis de ambiente globais: acesso entre instâncias
Variáveis de ambiente temporárias: variáveis de ambiente temporárias que são válidas para o login atual
export -p #列出所有环境变量
export -n VAR #删除环境变量VAR
export VAR #添加环境变量VAR
[root@single shell]# export -p
declare -x CLASS_PATH=".:/opt/software/jdk180/lib/tools.jar:/opt/software/jdk180/lib/dt.jar"
declare -x HADOOP_HOME="/opt/software/hadoop/hadoop260"
declare -x HBASE_HOME="/opt/software/hadoop/hbase120"
···
[root@single shell]# export jun
[root@single shell]# export -p
···
declare -x jun
[root@single shell]# export -n jun
[root@single shell]# export -p
···
- variáveis de shell
símbolo | significado |
---|---|
$$ | Número do processo shell atual |
$ 0 | O nome do arquivo do script atual |
$ n | Parâmetros de script |
$ # | Número de parâmetros de script |
$ * | Conjunto completo de parâmetros de script |
$ @ | Coleção independente de parâmetros de script |
$? | O valor do status do resultado da execução do comando anterior ou o valor de retorno da função: 0 significa normal, 1 significa falhou |
$! | O número do processo do último comando de fundo |
$* 和 $@ 的区别
不加"两者相同
加上"则$*代表整体,而$@代表个体