Linux Bash学习笔记

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

变量的设置规则:

  1. 变量与变量内容以一个=连接,而且等号两边不能直接接空格

Linux Bash学习总结.md_环境变量
2. 双引号内的特殊字符如$等,可以保持原本的特性:

Linux Bash学习总结.md_自定义_02
3. 单引号内的特殊字符仅为一般字符:

Linux Bash学习总结.md_特殊字符_03
4. 可以使用转义字符\将特殊字符转为一般字符
5. 当为某个变量扩增内容时,可以用"$变量名称"${变量名称}累加内容:

Linux Bash学习总结.md_bash_04

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:选取哪些段

Linux Bash学习总结.md_自定义_05

cut -c 字符区间
以字符为单位,取出固定字符区间

Linux Bash学习总结.md_特殊字符_06
Linux Bash学习总结.md_自定义_07

grep [-cinv] [--color=auto] '查找字符' filename
-c:计算找到'查找字符'的次数
-i:忽略大小写的不用
-n:输出行号
-v:反向选择,显示出没有'查找字符'的那一行
--color=auto:可以将找到的关键字部分加上颜色

Linux Bash学习总结.md_环境变量_08