文章目录
shell简介
shell
:壳,命令解释器,负责解析用户输入的命令。
命令分两类:
- 内置命令 (
shell
内置),shell
为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多 - 外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
type
命令查看命令是file、alias还是builtin
type -a
列出当前命令可以如何执行type -t
仅列出命令按照哪种方式执行
那shell如何知道命令的可执行文件在哪个路径下呢?系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在环境变量PATH中。
在众多环境变量里面有一个环境变量叫做PATH,当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到。
shell中的变量
普通变量
普通变量也可称为局部变量,只能在创建它们的
Shell
函数或Shell
脚本中使用,普通变量一般由开发者在开发脚本程序时创建。
设置变量:
- 变量命名的规则:只能使用数字、字母和下划线,且不能用数字开头
- 变量名和变量值用“=”连接
- 等号两边不能有空格符
变量的赋值,一般有五种写法:
name=value
name1='value'
name_2="value"
_name_3=`cmd`
_na_me_4=$(cmd)
案例
创建普通变量local_data=1并访问
环境变量
环境变量也可称为全局变量,可以在创建它们的
Shell
及其派生出来的任意子进程Shell
中使用,环境变量又可分为自定义环境变量和bash
内置的环境变量。
(1)bash内置的环境变量:用于定义 Shell 的运行环境,保证 Shell 命令的正确执行,Shell 通过环境
变量来确定登录用户名、命令路径、终端类型、登录目录等
(2)自定义环境变量:自定义环境变量可以在命令行中设置和创建,但用户退出命令时这些变量值就会丢失。如果希望永久保存环境变量,可在用户家目录下的 .bash_profile
或 .bashrc
文件中,或者全局配置 /etc/bashrc
或 /etc/profile
文件中定义,在将环境变量放入上述的文件中后,每次用户登录时这些变量都将被初始化。
按照系统规范,所有环境变量的名字均采用大写形式。
在命令行中设置环境
export 变量名=value
变量名=value ; export 变量名
declare -x 变量名=value
在文件中设置环境变量(永久生效)
root用户的环境变量配置文件:
创建环境变量ROOT_DATA=1
, 只有root
用户可以访问到
创建环境变量USER_DATA=user, 只有普通用户可以访问到
创建环境变量DATA=all, root用户和普通用户都可以访问到
显示与取消变量
通过 echo 或 printf 打印变量
显示默认的环境变量
终端输入一下命令:
[root@server ~]# env
[root@server ~]# set
[root@server ~]# declare | head
用 unset 消除本地变量和环境变量
Linux中的特殊符号
特殊符号 | 功能 | 说明 |
---|---|---|
; | 可使用分号分隔多条命令 | 在一行上输入和执行多条较短的命令,可使用分号来分隔命令 |
* | 匹配任意零个或者多个字符 | 不能用于创建文件 |
? | 匹配任意单个字符 | 不能用于创建文件 |
[ ] | 匹配方括号中的任意一个字符,表示范围可以用"-” | 不能用于创建文件 |
^ 或者 ! | 匹配方括号中的任意一个字符或数字后进行取反 | 用于查找和删除文件,不用于创建文件 |
{string,string} | 匹配括号中的任意一个字符串,表示一个范围时,字符串之间个"…" | 可用于创建、查看、删除文件 |
\ | 使\后面的特殊字符失效 | 例如:可以在命令行后面加一个\,再按回车键时并不表示执行该命令,而是表示换行,通过此方式将一个较长的命令分成多行表达,增强命令的可读性。换行后系统自动显示提示符 > |
` | 反引号,一般用于引用命令,执行的时候反引号里面的命令会被执行,与$()作用相同 | |
’ | 单引号,将单引号内的所有内容都原样输出 | 所有特殊字符在单引号里面都会失去特殊含义 |
" | 双引号,除了几个特殊字符外,将双引号内的几乎所有内容都原样输出 | ”$“和“\”以及“ ` ”在双引号里面仍然保留自己的特殊含义 |
案例
引号的使用举例: 无引号,单引号,双引号,反引号,$()
在一行上执行两个命令,打印123和从root切换到普通用户
命令别名
作用:别名是命令的快捷方式。对于需要经常执行,并需要很长时间输入的长命令创建快捷方式很有用。
命令格式: alias 别名 =’原命令 [选项]…… [参数]…
案例
创建3个文件test1.txt, test2.txt, test3.txt
使用find
查找test1.txt,test2.txt, test3.txt
使用别名: 将上边命令命名为myfind
取消别名
命令历史
功能:history
命令可以查阅命令历史记录 ,也可在命令行利用向上或向下光标键来进行查询
语法:history [选项] [参数]
选项:
number
:显示最近number
条命令历史
-c
:清空当前历史命令-a [file]
:后面没跟文件时,默认将缓冲区中历史命令写入~/.bash_history
中-r [file]
:将历史命令文件中的命令读入当前历史命令缓冲区中-w
:将当前历史命令缓冲区命令写入历史命令文件中;
查看最近使用的10条历史命令