1. 概述
1.1. 概念
shell:壳,命令解释器,负责解析用户输入的命令

1.2. 分类:
内置命令 (shell内置),shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都 差不多
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
1.3. type 命令
1.3.1. 作用
查看命令是内置命令、外置命名、alias命令
1.3.2. 格式
type -参数 命令名
1.3.3. 参数
type -a列出当前命令可以如何执行
type -t仅列出命令按照哪种方式执行
[root@server ~]# type -a cd
cd 是 shell 内建
cd 是 /usr/bin/cd
[root@server ~]# type cd
cd 是 shell 内建
[root@server ~]# type -t cd
builtin # 内置命令
[root@server ~]# type tree
tree 是 /usr/bin/tree
[root@server ~]# type -t tree
file
[root@server ~]# type wget
wget 是 /usr/bin/wget
[root@server ~]# type ls
ls 是"ls --color=auto"的别名
[root@server ~]# type ping
ping 是 /usr/sbin/ping
[root@server ~]# alias ping='ping -c 5'
[root@server ~]# type ping
ping 是"ping -c 5"的别名
[root@server ~]# ping www.qq.com
PING ins-r23tsuuf.ias.tencent-cloud.net (101.91.22.57) 56(84) 比特的数据。
64 比特,来自 101.91.22.57 (101.91.22.57): icmp_seq=1 ttl=128 时间=31.0 毫秒
64 比特,来自 101.91.22.57 (101.91.22.57): icmp_seq=2 ttl=128 时间=29.2 毫秒
64 比特,来自 101.91.22.57 (101.91.22.57): icmp_seq=3 ttl=128 时间=29.1 毫秒
64 比特,来自 101.91.22.57 (101.91.22.57): icmp_seq=4 ttl=128 时间=30.8 毫秒
64 比特,来自 101.91.22.57 (101.91.22.57): icmp_seq=5 ttl=128 时间=30.6 毫秒--- ins-r23tsuuf.ias.tencent-cloud.net ping 统计 --
已发送 5 个包, 已接收 5 个包, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 29.122/30.150/31.043/0.825 ms
1.4. 执行原理
系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在环境变量PATH中,使得shell知 道命令的可执行文件位置
PATH环境变量:当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索和命令同名的二进制文 件,如果有则执行该二进制文件,如果没有则提示命令找不到。
[root@server ~]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
2. Linux 中的特殊符号
|-----------------|--------------------------------------------|----------------------------------------------------------------------------------------|
| 特殊符号 | 功能 | 说明 |
| ; | 可使用分号分隔多条命 令 | 在一行上输入和执行多条较短的命令,可使用分号来分隔 命令 |
| * | 匹配任意零个或者多个字符 | 不能用于创建文件 |
| ? | 匹配任意单个字符 | 不能用于创建文件 |
| [] | 匹配方括号中的任意一 个字符,表示范围可以 用"-" | 不能用于创建文件 |
| [^]或者[!] | 匹配方括号中的任意一 个字符或数字后进行取 反 | 用于查找和删除文件,不用于创建文件 |
| {string,string} | 匹配括号中的任意一个 字符串,表示一个范围 时,字符串之间个".." | 可用于创建、查看、删除文件 |
| \ | 使\后面的特殊字符失效 | 例如:可以在命令行后面加一个\,再按回车键时并不表示 执行该命令,而是表示换行,通过此方式将一个较长的命 令分成多行表达,增强命令的可读性。换行后系统自动显 示提示符> |
| ` | 反引号,一般用于引用 命令,执行的时候反引 号里面的命令会被执 行,与()作用相同 | |
| ' | 单引号,将单引号内的 所有内容都原样输出 | 所有特殊字符在单引号里面都会失去特殊含义 |
| " | 双引号,除了几个特殊 字符外,将双引号内的 几乎所有内容都原样输 出 | ""和"\"以及" ` "在双引号里面仍然保留自己的特殊含义 |
3. 命令别名
3.1. 作用
别名:是命令的快捷方式,对于需要经常执行,并需要很长时间输入的长命令创建快捷方式很有用。
3.2. 格式
alias 别名='原命令 -参数'
3.3. 查看设置的别名
[root@server ~]# 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 ping='ping -c 5'
# 上例新建的
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'
3.4. 常用的别名
3.4.1. untar
由于 tar 命令的参数太多不好记忆,所以将解压缩设为如下:
alias untar='tar -zxvf '
3.4.2. wget
下载大文件时的断点续连,防止网络异常中断:
alias wget='wget -c '
3.4.3. getpass
生成 20 个字符的随机数密码,使用 openssl 命令,但命令又很长不方便,可以设置别名:
alias getpass="openssl rand -base64 20"
3.4.4. ping
ping url时会无限次输出,但其实没多大意义,可以使用 -c 命令将其限制为 5 次输出:
alias ping='ping -c 5'
3.4.5. speed
测试网速命令speedtest-cli ,为了方便使用可以设置别名:
官网: https://www.speedtest.net/zh-Hans/apps/cli
安装
[root@server ~]# curl -s
https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh |
sudo bash
[root@server ~]# yum install speedtest -y
查看手册
[root@server ~]# speedtest --help
3.4.6. ipe
公网 IP别名设置:
alias ipe='curl ipinfo.io/ip'
[root@server ~]# alias ipe='curl ipinfo.io/ip'
[root@server ~]# ipe
113.132.176.202[root@server ~]#
3.4.7. c
清屏,一般使用 ctrl + l 快捷键,也可以将 clear 命令定义得更短,这样使用起来更直接,更粗暴.
alias c='clear'
3.5. 删除别名
3.5.1. 格式
unalias 别名
3.5.2. 例
[root@server ~]# alias
[root@server ~]# unalias ping
[root@server ~]# alias
3.6. 注意:
在命令行中使用alias命令设置的别名仅在该次登入有效,如果重新开启一个 Shell,或者重新登录系统,则 这些alias将无法使用。
在linux中提供alias永久化的方法:
将别名命令写入到~/.bashrc和/etc/bashrc文件中
执行 source ~/.bashrc 和 source ~/etc/bashrc 生效
[root@server ~]# alias ping='ping -c 5'
[root@server ~]# ping www.qq.com
# 关闭shell,重新打开
[root@server ~]# ping www.qq.com # 别名失效
[root@server ~]# vim ~/.bashrc
# 写入别名
[root@server ~]# source ~/.bashrc # 生效,注意切换仅对当前账户生效
[root@server ~]# vim /etc/bashrc
# 写入别名
[root@server ~]# source /etc/bashrc
# 切换到普通账户测试
4. 命令历史
4.1. 作用 history命令可以查阅命令历史记录
4.2. 格式
history -参数
4.3. 参数
number:显示最近number条命令历史
-c:清空当前历史命令
[root@server ~]# history 5
13 vim ~/.bashrc
14 ping www.baidu.com
15 source ~/.bashrc
16 ping www.baidu.com
17 history 5
[root@server ~]# !16 # 将第16命令在执行一遍
4.4. 设置history记录命令条数
[root@server ~]# vim /etc/profile
# 定位:HISTSIZE=1000
#退出后重启:reboot