命令解释符--shell
命令解释符–shell
一、概述
-
概念:
- shell:壳,命令解释器,负责解析用户输入的命令
- 图:
-
分类:
- 内置命令 (shell内置),shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多
- 外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
-
type命令:
-
作用:查看命令是内置命令、外置命名、alias命令
-
格式:
type -参数 命令名
-
参数:
参数 解释 -a 列出当前命令可以如何执行 -t 仅列出命令按照哪种方式执行 -
例:
[root@localhost Desktop]# type -a cat cat is /usr/bin/cat [root@localhost Desktop]# type -t cat file [root@localhost Desktop]# type -t ls alias [root@localhost Desktop]# type -a ls ls is aliased to `ls --color=auto' ls is /usr/bin/ls [root@localhost Desktop]# type -a type type is a shell builtin type is /usr/bin/type [root@localhost Desktop]# type -a echo echo is a shell builtin echo is /usr/bin/echo
-
-
执行原理:
-
系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在环境变量PATH中,使得shell知道命令的可执行文件位置.
-
PATH环境变量:当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到。
-
查询环境变量
[root@localhost Desktop]# echo $PATH /root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
-
修改环境变量
-
临时修改环境变量
# 将/mnt添加刀片环境变量中(临时修改) [root@localhost Desktop]# PATH=$PATH:/mnt [root@localhost Desktop]# echo $PATH /root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/mnt
-
永久修改环境变量:修改配置文件 ~/.bash_profile
# 1. 使用命令 vim 进入编辑模式 vim ~/.bash_profile # 2. 在编辑模式下,在末尾进行环境变量声明 export PATH=$PATH:/mnt # 3. 使用source命令执行~/.bash_profile # source:是一个 shell 内置命令,也可以用 . 来表示。它的作用是读取并执行指定文件中的命令,在当前 shell 进程中生效,而不是在子 shell 中执行。 # 在当前 shell 环境中执行 ~/.bash_profile 文件中的命令,以更新当前 shell 的环境变量和配置。 source ~/.bash_profile
-
-
二、Linux中的特殊符号
特殊符号 | 功能 | 说明 |
---|---|---|
; | 可以使用分号分隔多条命令 | 在一行输入和执行多条较短的命令,可使用分号来分隔命令 |
* | 匹配任意零个或多个字符 | 不能用于创建文件 |
? | 匹配任意单个字符 | 不能用于创建文件 |
[] | 匹配方括号中的任意一个字符,表示范围可以用"-" | 不能用于创建文件 |
[[:alpha:]] | 匹配字母(不分大小写) | 不能用于创建文件 |
[[:lower:]] | 匹配小写字母 | 不能用于创建文件 |
[[:upper:]] | 匹配大写字母 | 不能用于创建文件 |
[[:digit:]] | 匹配数字 | 不能用于创建文件 |
[[:punct:]] | 匹配符号 | 不能用于创建文件 |
[[:space:]] | 匹配空格 | 不能用于创建文件 |
[[:alnum:]] | 匹配字母和数字 | 不能用于创建文件 |
[^]或者[!] | 匹配方括号中的任意一个字符或数字后进行取反 | 用于查找和删除文件,不能用于创建文件 |
{string,string} | 匹配括号中的任意一个字符串,表示范围时,字符之间用"…" | 可用于创建、查看、删除文件 |
\ | 转义符号,使\后面的特殊字符失效 | 例如:可以在命令行后面加一个\,再按回车键时并不表示执行该命令,而是表示换行,通过此方式将一个较长的命令分成多行表达,增强命令的可读性。换行后系统自动显示提示符 > |
` | 反引号,一般用于引用命令,执行的时候反引号里的命令会被执行,与$()作用相反 | 例:touch redhat-`date +%m-%d`, |
’ ’ | 单引号,将单引号内的所有内容原样输出 | 所有特殊字符在单引号里面都会失去特殊含义 |
" " | 双引号,除了几个特殊字符外,将双引号内的几乎所有内容都原样输出 | “$”、“\”、“`”、“!” 等在双引号里面仍然保留自己的特殊含义 |
- [[:space:] [:punct:]]
- 匹配空格或符号
- 只能匹配一个字符,匹配范围是空格或者符号
- 第一组中括号[]是一个集合,匹配一个字符,中间的每一个[]表示集合中的一个元素, 是匹配的范围。
三、命令别名
-
作用:命令的快捷方式,对于需要经常执行,且要很长时间输入的长命令很有用
-
格式:
alias 别名='原命令 - 参数'
-
查看别名
[root@localhost Desktop]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias xzegrep='xzegrep --color=auto' alias xzfgrep='xzfgrep --color=auto' alias xzgrep='xzgrep --color=auto' alias zegrep='zegrep --color=auto' alias zfgrep='zfgrep --color=auto' alias zgrep='zgrep --color=auto'
-
设置命令别名(临时)
[root@localhost Desktop]# alias ping='ping -c1 -w1'
-
删除别名
[root@localhost Desktop]# unalias ping
-
永久设置命令别名
-
对所有用户生效,修改etc/bashrc文件,在etc/bashrc文件下添加别名
# 进入/etc/bashrc的编辑模式 vim /etc/bashrc # 在编辑模式下添加别名 alias ping='ping -c1 -w1' # 在当前shell环境中执行/etc/bashrc文件,以更新当前shell的环境变量和配置 source /etc/bashrc
-
对当前用户生效,修改 ~/.bashrc文件
# 进入 ~/.bashrc的编辑模式 vim ~/.bashrc # 在编辑模式下添加别名 alias ping='ping -c1 -w1' # 在当前shell环境中执行 ~/.bashrc文件,以更新当前shell的环境变量和配置 source ~/.bashrc
-
四、历史命令
-
作用:history命令可以查阅命令历史记录
-
格式:
history -参数
-
命令:
- history 查看历史命令
- echo $HISTSIZE 查看记录命令的最大条数1000
- history -c 清空当前进程的历史命令
- ! 历史id 调用当前id的历史命令
- ctrl + r 关键字 调用包含关键字的最近一次命令,按左右键进行修改,回车进行调用
-
参数:
- number:显示最近number条命令历史
- -c:清空当前shell历史命令
-
设置history记录命令条数
[root@server ~]# vim /etc/profile # 定位:HISTSIZE=1000 #退出后重启:reboot或者source /etc/profile
-
历史命令记录在 ~/.bash_history文件下
-
例:
[root@localhost Desktop]# history 1 touch hhj 2 stat hhj 3 touch hhj 4 stat hhj 5 mkdir HHJ 6 mkdir HHJ1 HHJ2 HHJ3 7 touch hhj ............. [root@localhost Desktop]# echo $HISTSIZE 1000 [root@localhost Desktop]# !231 echo $HISTSIZE 1000 #CTRL+r HIS (reverse-i-search)`HIS': echo $HISTSIZE
mkdir HHJ1 HHJ2 HHJ3
7 touch hhj
…
[root@localhost Desktop]# echo $HISTSIZE
1000
[root@localhost Desktop]# !231
echo $HISTSIZE
1000
#CTRL+r HIS
(reverse-i-search)`HIS’: echo $HISTSIZE