目录
什么是shell?
shell:壳,命令解释器,负责解析用户输入的命令,命令分两类:
- 内置命令(shell内置),shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多
- 外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
type 命令查看命令是file、alias还是builtin
- type -a:列出当前命令可以如何执行
- type -t:仅列出命令按照那种方式执行
那shell如何知道命令的可执行文件在哪个路径下呢?系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在环境变量PATH中。
在众多环境变量里面有一个环境变量叫做PATH,当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到。
shell中的变量
变量简单说就是让某一个特定字符串代表不固定的内容,变量可分为两类:环境变量(全局变量)和普通变量(局部变量)
1、普通变量
曾通变量也可称为局部变量,只能在创建它们的Shel函数或Shell脚本中使用,普通变量一般由开发者在开发脚本程序时创建。
设置变量:
- 变量命名的规则:只能使用数字、字母和下划线,且不能用数字开头
- 变量名和变量值用“ = ”连接
- 等号两边不能有空格符⚠⚠【代码打多了容易犯这个错】
变量的赋值,一般有五种写法:
①name=value
②name1='value'
③name_2="value"
下面两个打印出来是工作目录
④_name_3=`pwd`【反引号Esc下边那颗,英文键盘】
⑤_na_me_3=$(pwd)
【变魔术】
[root@localhost mulu]# cat pwd.sh
name=`pwd`
echo $name
1,创建一个pwd.sh文件然后写入我显示上边那两行
[root@localhost mulu]# chmod +x pwd.sh
2,这句是给pwd.sh这个文件增加可执行的权限
可以看到这个文件变颜色了【俺也不知道绿色代表啥文件,后边会学】
3,
[root@localhost mulu]# ./pwd.sh
/root/mulu
2、环境变量
环境变量也可称为全局变量,可以在创建它们的Shell及其派生出来的任意子进程Shell中使用,环境变量又可分为自定义环境变量和bash内置的环境变量。
(1)bash内置的环境变量:用于定义Shell的运行环境,保证Shell命令的正确执行,Shell通过环境变量来确定登录用户名、命令路径、终端类型、登录目录等
(2)自定义环境变量:自定义环境变量可以在命令行中设置和创建,但用户退出命令时这些变量值就会丢失,如果希望水久保存环境变量,可在用户家目录下的 .bash_profile 或 .bashrc 文件中,或者全局配置/etc/bashrc或/etc/profile文件中定义,在将环境变量放入上述的文件中后,每次用户登录时这些变量都将被初始化,
按照系统规范,所有环境变量的名字均采用大写形式。
- 在命令行中设置环境变量
export 变量名=value
变量名=value ;export 变量名
declare -x 变量名=value
命令历史
history命令可以查阅命令历史记录,也可在命令行利用向上或向下光标键来进行查询
语法:history [选项] [参数]
选项:
number:显示最近number条命令历史
-c:清空当前历史命令
-a [file]:后面没跟文件时,默认将缓冲区中历史命令写入~/.bash_history中
-r [file]:将历史命令文件中的命令读入当前历史命令缓冲区中
-w:将当前历史命令缓冲区命令写入历史命令文件中
命令别名
别名是命令的快捷方式
语法:alias 别名='命令'
eg.alias cdt='cd /test'
想永久改的话去
vim编辑 ~/.bashrc,里面还有已经定义了的
在linux中提供alias永久化的方法:
(1)若要让某个用户使用该别名,则把别名加在~/.bash_profile或~/.bashrc中,然后source ~/.bashrc或者source ~/.bashprofile
(2)若要让每一位用户都使用该别名,则把别名加在/etc/bashrc或者/etc/profile中,然后source /etc/bashrc或者source /etc/profile
Linux中的特殊符号
特殊符号 | 功能 | 说明 |
; | 可使用分号分隔多条命令 | 在一行上输入和执行多条较短的命今,可使用分号来分隔命令 |
* | 匹配任意零个或者多个字符 | 不能用于创建文件 |
? | 匹配任意单个字符 | 不能用于创建文件 |
[] | 匹配方括号中的任意一个字符。表示范围可以用"-" | 不能用于创建文件 |
[^]或者[!] | 匹配方括号中的任意一个字符或数字后进行取反 | 用于查找和删除文件,不用于创建文件 |
{string,string} | 匹配括号中的任意一个字符串,表示一个范围时,字符串之间个".." | 可用于创建、查看、刷除文件 |
\ | 使\后面的特殊字符失效 | 例如:可以在命令行后面加一个\,再按回车键时并不表示执行该命令,而是表示换行,通过此方式将一个较长的命令分成多行表达,增强命令的可读性,换行后系统自动显示提示符> |
` | 反引号,一般用于引用命令,执行的时候反引号里面的命令会被执行,与$()作用相同 | 英文键盘下Esc下边那颗 |
' | 单引号,将单引号内的所有内容都原样输出 | 所有特殊字符在单引号里面都会失去特殊含义 |
" | 双引号,除了几个特殊字符外,将双引号内的几乎所有内容 都原样输出 | "$"和"\"以及"`"在双引号里面仍然保留着自己的特殊含义 |
命令行中的其他快捷键
快捷键 | 功能 |
ctrl+d | 输出已结束;也可当作exit |
ctrl+c | 键盘中断请求,终止当前的命令 |
ctrl+a | 移动到当前行的开头 |
ctrl+e | 移动到当前行的结尾 |
ctrl+l | 清屏==clear |
ctrl+u | 简介命令行中光标所在处之前的所有字符(不包括自身) |
ctrl+k | 剪切命令行中光标所在处之后的所有字符(包括自身) |
ctrl+←/→ | 光标在命令行中按照单词跳转 |
引用上一条命令的最后一个参数
方法一:!$
方法2:先按Alt再输入
方法3:先按Esc再输入