type命令
bash中运行的命令分为内置在bash中的命令和来自于外部的命令两种,可以使用type命令来查看:
type [-tpa] name
当不加参数时,会显示name是内置命令还是外部命令
-t: 以下面的单词表示name的意义:
file:表示为外部命令
alias:表示该命令为命令别名所设置的命令
builtin:表示该命令为bash内置的命令
-p:如果后面接的为外部命令时,才会显示完整的文件名
-a:会有PATH 变量定义的路径中,将含有name的命令都列出来包含alias
命令的执行与快速编辑
当命令过长时,可以用反斜杠\
来完成换行:
cp /var/spool/mail/root /etc/crontab \
/etc/fstab /root
将三个文件复制到/root位置
当输入的命令过长且存在错误时,可以使用快捷键进行删除:
组合键 | 功能 |
---|---|
[ctrl]+u/[ctrl]+k | 从光标处向前([ctrl]+u)或向后([ctrl]+k)删除命令 |
[ctrl]+a/[ctrl]+e | 分别让光标移动到命令的最前面([ctrl]+a)或者最后面([ctrl]+e) |
变量
1. 普通变量
变量在bash环境中非常重要,以某个特定的字符串代表不固定的内容,变量前需要加上$
,可以使用echo命令来查看变量代表的内容:
echo $variable
echo $PATH
也可以在变量两边加上{}
echo ${PATH}
变量定义可以用=
直接定义:
myname=litack
定义了myname变量,值为litack,等号两边不能接空格
可以用unset
来取消变量:
unset myname
变量的设置规则:
- 变量与变量内容以一个
=
连接,而且等号两边不能直接接空格
2. 双引号内的特殊字符如$
等,可以保持原本的特性:
3. 单引号内的特殊字符仅为一般字符:
4. 可以使用转义字符\
将特殊字符转为一般字符
5. 当为某个变量扩增内容时,可以用"$变量名称"
或${变量名称}
累加内容:
2. 环境变量
可以使用env
命令和export
命令查看有多少默认的环境变量。set
命令不仅可以查看环境变量,还可以查看用户自定义的变量。父进程的环境变量可以被子进程继承,自定义变量不会被子进程继承。可以使用export
加变量名实现将自定义变量转变为环境变量。
3. 命令别名
有些命令过长不宜输入时,可以使用alias
命令来给命令起别名:
alias 别名='命令 选项...'
取消别名使用以下命令:
unalias 别名
4. 历史命令
我们可以使用history
命令来查询在终端输入的历史命令:
history [n]
注:n为数字,列出最近的n条历史命令,不加数字表示列出所有历史命令。
5. 多条命令执行方式
在某些情况下,我们想一次性执行多条命令,而不是一条一条去输入执行,可以使用;
、&&
、||
来连接多条命令:
命令 | 说明 |
---|---|
cmd1; cmd2 |
不考虑命令相关性的连续执行命令 |
cmd1&& cmd2 |
若cmd1执行完毕且正确执行,则开始执行cmd2,若cmd1执行完毕且错误,则不执行cmd2 |
cmd1|| cmd2 |
若cmd1执行完毕且正确执行,则不执行cmd2,若cmd1执行完毕且错误,则执行cmd2 |
管道命令
cut -d '分隔字符' -f 选取的段数
-d:按照分隔符将结果划分为数段
-f:选取哪些段
cut -c 字符区间
以字符为单位,取出固定字符区间
grep [-cinv] [--color=auto] '查找字符' filename
-c:计算找到'查找字符'的次数
-i:忽略大小写的不用
-n:输出行号
-v:反向选择,显示出没有'查找字符'的那一行
--color=auto:可以将找到的关键字部分加上颜色