第二章 Linux基础入门

1 Linux基础

1.1 用户类型

  • root用户:超级管理员,root拥有完整的系统控制权限,但是用得不好,对系统损害也是最大的。
  • 普通用户:除了root用户之外,其他都可以称之为普通用户。权限有限,并且造成损害的能力也比较有限

1.2 终端

设备终端包括:键盘、鼠标、显示器

1.2.1 终端类型

  • 控制台终端:/dev/console
  • 串行终端:/dev/ttyS#
  • 虚拟终端:/dev/tty# tty可以有N个
  • 图形终端:xwindows,startx
  • 伪终端:/dev/pts#。如:SSH远程连接

1.2.2 查看当前的终端设备

  1. tty命令可以查看当前所在终端
  2. [root@nginx-18 ~]# tty
  3. /dev/pts/1

1.3 交互式接口shell

Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接受用户输入的命令并把它送入内核去执行。

Shell也被称为Linux的命令解释器,Shell本身是一个程序。将用户输入的命令行拆解为”命令名”和”参数”。接着,根据命令名找到对应要执行的程序,对被执行的程序进行初始化,然后将刚才解析出来的参数传给该程序并执行。

Shell是一种高级程序语言,提供了变量、函数、条件判断、循环等常见的开发功能。

1.3.1 各种shell

  • sh:bash的软链接
  • bash:Centos默认使用的shell
  • csh:C shell,一种C语言风格的shell
  • ksh:Korn Shell,AIX默认shell

我们这里主要讲解bash shell

  1. 显示当前使用的shell
  2. [root@nginx-18 ~]# echo $SHELL
  3. /bin/bash
  4. 显示当前系统使用的所有shell
  5. [root@nginx-18 ~]# cat /etc/shells
  6. /bin/sh
  7. /bin/bash
  8. /sbin/nologin
  9. /usr/bin/sh
  10. /usr/bin/bash
  11. /usr/sbin/nologin

1.4 设置主机名

  1. #临时生效
  2. [root@nginx-18 ~]# hostname nginx-18
  3. #永久生效
  4. [root@nginx-18 ~]# hostnamectl set-hostname nginx-18

注意:

  • 主机名不支持使用下划线,但支持横线,可使用字母、横线或数字组合
  • 有些软件对主机名有特殊要求

1.5 命令提示符

登录Linux后,默认的系统提示符是毫无个性的,我们可以通过修改PS1变量实现个性的提示符格式。

1.5.1 默认提示符

  1. #默认的提示符
  2. [root@nginx-18 ~]#
  3. PS
  4. # 表示是管理员
  5. $ 表示是普通用户

1.5.2 显示提示符

  1. [root@nginx-18 ~]# echo $PS1
  2. [\u@\h \W]\$

1.5.3 提示符格式说明

  1. \d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"
  2. \H :#完整的主机名称。
  3. \h :#仅取主机的第一个名字。
  4. \t :#显示时间为24小时格式,如:HHMMSS
  5. \T :#显示时间为12小时格式
  6. \A :#显示时间为24小时格式:HHMM
  7. \u :#当前用户的账号名称
  8. \v :#BASH的版本信息
  9. \w :#完整的工作目录名称。家目录会以 ~代替
  10. \W :#利用basename取得工作目录名称,所以只会列出最后一个目录
  11. \# :#下达的第几个命令
  12. \$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$
  13. \e :#控制符 这里面可以写入颜色

1.5.4 修改提示符

  1. #临时生效,重启系统失效
  2. [root@nginx-18 ~]# PS1="[\t \e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
  3. [17:58:24 root@nginx-18 ~]#
  4. #永久生效
  5. [root@nginx-18 ~]# vim /etc/bashrc
  6. PS1="[\t \e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
  7. [root@nginx-18 ~]# . /etc/bashrc

1.6 Shell中的命令

Shell中可执行的命令有两类

  • 内部命令:由Shell自带的,而且通过某命令形式提供
  • 外部命令:在文件系统路径下有对应的可执行文件

1.6.1 区别命令是否是外部或内部

  1. [18:37:59 root@nginx-18 ~]# type cd
  2. cd shell 内嵌
  3. [18:38:01 root@nginx-18 ~]# type find
  4. find /usr/bin/find

1.6.2 查看外部命令路径

  1. which 详细查看命令的路径
  2. 主要选项:--skip-alias 不显示别名
  3. [18:38:04 root@nginx-18 ~]# which find
  4. /usr/bin/find

1.6.3 Hash缓存表

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shel解释器首先会查看hash表, 存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率。

  1. hash命令常见用法:
  2. -d name #清除name缓存
  3. -l #显示hash缓存
  4. -p path name #将命令全路径path起别名为name
  5. -r #清除缓存
  6. -t #打印缓存中name的路径

1.6.4 命令别名

对于经常执行的较长命令,可以将其定义成较短的别名,以方便执行

  1. 1alias 查看和设置别名
  2. #查看别名,直接输入alias。
  3. #设置别名:alias cp='cp -i'
  4. alias rm='echo "this command does not allow to ues"'
  5. 别名的配置文件:/etc/profile或者/etc/bashrc 全局生效
  6. ~/.bashrc #当前用户生效
  7. 天坑:设置alias rm='echo "this command does not allow to ues"',并且在/etc/profile下配置了,但是在下次登录的时候,还是有问题。问题原因在于/root/.bashrc配置文件中,也有alias rm='rm -i',需要把这一行给注释掉
  8. 2、取消别名
  9. unalias 取消别名
  10. unalias rm

1.6.5 命令格式

  1. COMMAND [OPTIONS...] [ARGUMENTS...]
  2. COMMAND [COMMAND] [COMMAND] ....

选项:用于启用或关闭命令的某个或某些功能

  • 短选项:UNIX风格选项,-c 列如:-l,-h
  • 长选项:GNU风格选项,—word 列如:—all —human
  • BSD风格选项:一个字母,列如:a,使用相对较少
  1. [18:58:53 root@nginx-18 ~]# id -u root
  2. [19:02:23 root@nginx-18 ~]# ls -a
  3. [19:02:26 root@nginx-18 ~]# ls --all
  4. [19:02:30 root@nginx-18 ~]# free -h
  5. [19:02:35 root@nginx-18 ~]# free --human
  6. [19:02:40 root@nginx-18 ~]# ps a
  7. PS:
  8. 1、多个选项以及多参数和命令之间使用空白字符分割
  9. 2、取消和结束命令执行:ctrl+cctrl+d
  10. 3、多个命令可以使用";"符号分开
  11. 4、一个命令可以用\分成多行

1.7 常见命令和变量

1.7.1 查看硬件信息

1.7.1.1 查看CPU

lscpu命令可以查看cpu信息

cat /proc/cpuinfo也可以查看

  1. [19:02:42 root@nginx-18 ~]# lscpu
  2. Architecture: x86_64
  3. CPU op-mode(s): 32-bit, 64-bit
  4. Byte Order: Little Endian
  5. CPU(s): 2
  6. On-line CPU(s) list: 0,1
  7. Thread(s) per core: 1
  8. Core(s) per socket: 1
  9. 座: 2
  10. NUMA 节点: 1
  11. 厂商 ID GenuineIntel
  12. CPU 系列: 6
  13. 型号: 60
  14. 型号名称: Intel(R) Core(TM) i5-4460 CPU @ 3.20GHz
  15. 步进: 3
  16. CPU MHz 3192.045
  17. BogoMIPS 6385.32
  18. 超管理器厂商: VMware
  19. 虚拟化类型: 完全
  20. L1d 缓存: 32K
  21. L1i 缓存: 32K
  22. L2 缓存: 256K
  23. L3 缓存: 6144K
  24. NUMA 节点0 CPU 0,1
  25. Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm epb fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt dtherm ida arat pln pts
  26. [19:06:30 root@nginx-18 ~]# cat /proc/cpuinfo

1.7.1.2 查看内存
  1. free 可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区
  2. 主要选项:
  3. -m MB为单位显示
  4. -h 已人类可读的方式显示
  5. [root@web01 ~]# free -m
  6. total used free shared buffers cached
  7. Mem: 981 476 505 0 62 298
  8. -/+ buffers/cache: 114 866 (工作看内存大小,主要看这里)
  9. Swap: 1023 0 1023
  10. 提示: 1linux系统的特性是将系统不用的物理内存做为缓存或缓冲使用,因此,505不是系统真实的内存
  11. 2)系统真正系统可用内存是866M
  12. 3buffers为写入缓冲区,sync将缓冲区数据写入磁盘
  13. 4cache为读取数据的缓存区
  14. 5)硬盘是机械的,无论是写入还是读取都太慢了,所以读取和写入都是用了缓存技术
  15. 6)门户网站架构都会用缓存技术,来让用户写入读取尽可能不接触硬盘

1.7.1.3 查看硬盘情况
  1. df 列出linux下所有的磁盘容量
  2. 主要选项:
  3. -h 已人类可读的方式(MB,GB,KB)显示出来
  4. -i 列出inode剩余的总量和使用量
  5. -T 查看当前挂载的文件系统
  6. -l 仅显示本地文件的相关信息
  7. [19:06:34 root@nginx-18 ~]# df -h
  8. 文件系统 容量 已用 可用 已用% 挂载点
  9. /dev/sda3 17G 1.5G 16G 9% /
  10. devtmpfs 903M 0 903M 0% /dev
  11. tmpfs 912M 0 912M 0% /dev/shm
  12. tmpfs 912M 8.6M 904M 1% /run
  13. tmpfs 912M 0 912M 0% /sys/fs/cgroup
  14. /dev/sda1 1014M 135M 880M 14% /boot
  15. tmpfs 183M 0 183M 0% /run/user/0

1.7.2 查看系统版本信息

1.7.2.1 查看内核版本
  1. uname 查看系统
  2. 主要选项:
  3. -m 查看系统是几位操作系统
  4. -r 查看系统的内核版本
  5. -a 查看详细的系统内核版本和系统的操作系统
  6. [19:10:56 root@nginx-18 ~]# uname -a
  7. Linux nginx-18 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

1.7.2.2 查看操作系统版本
  1. #centos7查看发行版本
  2. [20:35:23 root@nginx-18 ~]# cat /etc/redhat-release
  3. CentOS Linux release 7.4.1708 (Core)
  4. #Ubuntu18.04查看发行版本
  5. root@Ununtu-08:~# cat /etc/os-release
  6. NAME="Ubuntu"
  7. VERSION="18.04.3 LTS (Bionic Beaver)"
  8. ID=ubuntu
  9. ID_LIKE=debian
  10. PRETTY_NAME="Ubuntu 18.04.3 LTS"
  11. VERSION_ID="18.04"
  12. HOME_URL="https://www.ubuntu.com/"
  13. SUPPORT_URL="https://help.ubuntu.com/"
  14. BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
  15. PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
  16. VERSION_CODENAME=bionic
  17. UBUNTU_CODENAME=bionic

1.7.3 日期和时间

Linux的两种时钟

系统时钟:由Linux内核通过CPU的工作频率进行的

硬件时钟:主板

相关命令:

  1. date 设置和显示时间
  2. 主要选项:
  3. -s 修改并设置时间
  4. -d 可以显示以前和未来的时间
  5. %H 小时
  6. %M 分钟
  7. %S
  8. %X 相当于%H %M %S
  9. %F 显示当前所有时间属性
  10. %Y 完整年份
  11. %m
  12. %d
  13. %A 星期的全称
  14. date +%F
  15. date -s 2017-03-09 18:56:00
  16. echo `date +%F` 工作中会用到的
  17. echo $(date +%F) 工作中会用到的
  18. date +%F -d “-2day 2天以前的时间
  19. tar zcf etc.tar$(date +%F).gz /etc
  1. hwclock 显示硬件时钟
  2. 主要选项:
  3. -s 让系统时间同步硬件时间
  4. -w 让硬件时间同步系统时间
  5. root@Ununtu-08:~# hwclock
  6. 2022-04-30 22:05:46.369269+0800
  1. // =============》date设置的是系统时间,实际上时间分为硬件时钟与系统时钟两种
  2. #1、硬件时钟:硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟,硬件时间存放于CMOS中。
  3. #2、系统时钟:系统时钟则是指kernel中的时钟,当Linux启动时
  4. ps:硬件时间默认比系统时间慢8个小时
  5. // =============》硬件时钟与系统时钟的关系是:
  6. Linux操作系统将时间从CMOS中读到系统时间变量中,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
  7. linux系统设置硬件时钟时,提供两种时区选择,一种为本地时区,此时硬件时间与系统时间相同;另一种为UTC时区,此时硬件时间存的是UTC时间,系统初始化时会转换为本地时间后再设置为系统时钟的时间。
  8. 以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。
  9. 如果要确保修改生效可以执行如下命令。
  10. #hwclock –w
  11. 这个命令强制把系统时间写入CMOS
  12. // =============》hwclock命令
  13. hwclock命令,与clock命令是同一个命令,主要用来查询和设置硬件时钟(query and set the hardware clock (RTC))。RTC=Real Time Clock,也就是硬件时钟。在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。所有Linux相关指令与函数都是读取系统时钟的设定。因为存在两种不同的时钟,那么它们之间就会存在差异。根据不同参数设置,hwclock命令既可以将硬件时钟同步到系统时钟,也可以将系统时钟同步到硬件时钟。

1.7.4 设置/查看时区

  1. #查看时区
  2. root@Ununtu-08:~# timedatectl status
  3. Local time: Sat 2022-04-30 22:06:51 HKT
  4. Universal time: Sat 2022-04-30 14:06:51 UTC
  5. RTC time: Sat 2022-04-30 14:06:51
  6. Time zone: Asia/Hong_Kong (HKT, +0800)
  7. System clock synchronized: yes
  8. systemd-timesyncd.service active: yes
  9. RTC in local TZ: no
  10. #设置时区
  11. root@Ununtu-08:~# timedatectl set-timezone Asia/Shanghai
  12. root@Ununtu-08:~# timedatectl status
  13. Local time: Sat 2022-04-30 22:07:49 CST
  14. Universal time: Sat 2022-04-30 14:07:49 UTC
  15. RTC time: Sat 2022-04-30 14:07:49
  16. Time zone: Asia/Shanghai (CST, +0800)
  17. System clock synchronized: yes
  18. systemd-timesyncd.service active: yes
  19. RTC in local TZ: no
  20. #查看时区的另外一个方法
  21. root@Ununtu-08:~# cat /etc/timezone
  22. Asia/Shanghai

1.7.5 关机和重启

关机:

  1. halt
  2. poweroff
  3. 以上两个都是关机命令

重启:

  1. reboot
  2. -f:强制关机
  3. -p:切断电源

关机或重启:

  1. shutdown 关机或重启
  2. 主要选项:
  3. -h 关机
  4. -r 重启
  5. -c 终止关机或重启的动作
  6. now:立刻关机或重启
  7. shutdown -h now
  8. shutdown -r now

1.7.6 用户登录信息查看命令

  1. whoami:显示当前登录用户
  2. root@Ununtu-08:~# whoami
  3. root
  4. who:系统当前所有的登录会话
  5. root@Ununtu-08:~# who
  6. root pts/0 2022-04-30 21:12 (10.0.0.1)
  7. w:系统当前所有的登录会话及所做的操作
  8. root@Ununtu-08:~# w
  9. 22:22:46 up 1:15, 1 user, load average: 0.00, 0.00, 0.00
  10. #第一行从左至右显示的信息依次为:时间、系统运行时间、登陆用户数、平均负载:平均负载里面的数字表示,1分钟内,5分钟内,15分钟内,当数值超过当前系统内核数量的时候,表示系统已经有了压力
  11. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  12. root pts/0 10.0.0.1 21:12 1.00s 0.05s 0.00s w

1.7.7 输出信息echo

1.7.7.1 echo基本用法
  1. echo 打印文件内容或编辑文件内容
  2. 主要选项:
  3. -n 不换行输出
  4. -e 可以使用转义字符(\n回车,\t tab键)
  5. 主要案例:
  6. echo I am studying linux”>>xujun.txt 追加文件尾部内容
  7. echo $? 假如返回值为0的时候,表示上一次命令成功。假如是1255的话,则是失败
  8. echo -e wo\tshi\tshei”> xujun.txt

1.7.7.2 echo高级用法

使用高级用法时必须加上\033[或\e[,确认不使用特殊属性后及时清除设置的属性,切记!切记!切记!

  1. #属性
  2. \033[0m 关闭所有属性
  3. \033[1m 设置高亮度
  4. \033[4m 下划线
  5. \033[5m 闪烁
  6. \033[7m 反显
  7. \033[8m 消隐
  8. \033[nA 光标上移n
  9. \033[nB 光标下移n
  10. \033[nC 光标右移n
  11. \033[nD 光标左移n
  12. \033[y;xH 设置光标位置,y表示行数,x表示从第几个字符开始
  13. \033[2J 清屏
  14. \033[K 清除从光标到行尾的内容
  15. \033[s 保存光标位置
  16. \033[u 恢复光标位置
  17. \033[?25l 隐藏光标
  18. \033[?25h 显示光标
  19. #颜色
  20. ##字体颜色
  21. \033[30m (黑色)
  22. \033[31m (红色)
  23. \033[32m (绿色)
  24. \033[33m (黄色)
  25. \033[34m (蓝色)
  26. \033[35m (紫红色)
  27. \033[36m (青色)
  28. \033[37m (白色)
  29. ##背景颜色
  30. \033[40m (黑色)
  31. \033[41m (红色)
  32. \033[42m (绿色)
  33. \033[43m (黄色)
  34. \033[44m (蓝色)
  35. \033[45m (紫红色)
  36. \033[46m (青色)
  37. \033[47m (白色)
  1. #列子1:
  2. test添加下划线,\033[0m表示取消下划线,如果不使用\033[0m取消特殊属性,该终端输出的所有信息都会带下划线。

image-20220430223237725.png

  1. #列子2:
  2. 设置test字体颜色为红色、背景颜色为青色。

image-20220430223303450.png

1.7.8 查看当前字符集

  1. [20:35:33 root@nginx-18 ~]# echo $LANG
  2. zh_CN.UTF-8

1.8 括号扩展

{}可以实现打印重复字符串的简化形式

  1. [21:53:46 root@nginx-18 ~]# echo file{1,3,5}
  2. file1 file3 file5
  3. [21:58:29 root@nginx-18 ~]# echo {1..10}
  4. 1 2 3 4 5 6 7 8 9 10
  5. [21:58:39 root@nginx-18 ~]# echo {1..10..2}
  6. 1 3 5 7 9
  7. [21:58:41 root@nginx-18 ~]# echo {000..20..2}
  8. 000 002 004 006 008 010 012 014 016 018 020
  9. [21:58:49 root@nginx-18 ~]# echo {a..z}
  10. a b c d e f g h i j k l m n o p q r s t u v w x y z
  11. [21:59:14 root@nginx-18 ~]# echo {A..Z}
  12. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

1.9 tab键补全

tab键可以实现命令及路径等补全,提高输入效率,避免出错,命令的子命令补全,需要安装bash-complection

注意:用户给定的字符串只要一条唯一对应的命令或者路径,直接补全,否则,再次Tab会给出列表。

1.10 命令行历史

当执行命令后,系统默认会在内存记录执行过的命令。

当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是:~/.bash_history

登录shell时,会读取命令历史文件中记录下的命令加载到内存中

登录进shell后新执行的命令只会记录在内存的缓存区中。这些命令会在用户正常退出时”追加”至命令历史文件中

利用命令历史。可以用它来重复执行命令,提高输入效率

  1. history:查看命令历史记录
  2. 登陆shell时,会读取命令历史文件中记录下的命令(~.bash_history
  3. 登陆进shell后新执行的命令只会记录在缓存中,这些命令会用户退出时追加至~.bash_history
  4. #调用命令行历史
  5. !#:再一次执行历史列表中的第#条命令
  6. !!:再一次执行上一条命令
  7. !STRING:再一次执行已STRING开头的命令
  8. #命令历史相关环境变量
  9. HISTSIZEshell进程可保留的命令历史条数
  10. HISTFILE:保存命令历史文件所在的路径
  11. HISTFILESIZE:命令历史文件的大小
  12. 控制命令历史记录的方式:HISTCONTROL=ignoredups(忽略重复的命令),ignorespace(忽略已空格开头的命令),ignoreboth(以上两者同时生效)
  13. 主要选项:
  14. -a 追加本次会话新执行的命令历史列表至历史文件中
  15. -c 清空所有
  16. -d 删除指定历史内容
  17. -r 从文件读取命令历史至历史列表中
  18. -w 把历史列表中的命令追加至历史文件中
  19. 主要案例:
  20. 如何调用历史记录,使用!后面接命令的字符 比如:!Touch
  21. history -c
  22. History -d 5 删除指定历史内容

1.11 bash的快捷键

  1. 编辑命令
  2. Ctrl + a :光标移到命令行首
  3. Ctrl + e :光标移到命令行尾
  4. Ctrl + f :按字符前移(右向)
  5. Ctrl + b :按字符后移(左向)
  6. Alt + f :按单词前移(右向)
  7. Alt + b :按单词后移(左向)
  8. Ctrl + xx:在命令行首和光标之间移动
  9. Ctrl + u :从光标处删除至命令行首
  10. Ctrl + k :从光标处删除至命令行尾
  11. Ctrl + w :从光标处删除至字首
  12. Alt + d :从光标处删除至字尾
  13. Ctrl + d :删除光标处的字符
  14. Ctrl + h :删除光标前的字符
  15. Ctrl + y :粘贴至光标后
  16. Alt + c :从光标处更改为首字母大写的单词
  17. Alt + u :从光标处更改为全部大写的单词
  18. Alt + l :从光标处更改为全部小写的单词
  19. Ctrl + t :交换光标处和之前的字符
  20. Alt + t :交换光标处和之前的单词
  21. Alt + Backspace:与 Ctrl + w 相同类似,分隔符有些差别
  22. 重新执行命令
  23. Ctrl + r:逆向搜索命令历史
  24. Ctrl + g:从历史搜索模式退出
  25. Ctrl + p:历史中的上一条命令
  26. Ctrl + n:历史中的下一条命令
  27. Alt + .:使用上一条命令的最后一个参数
  28. 控制命令
  29. Ctrl + l:清屏,相当于clear命令
  30. Ctrl + o:执行当前命令,并选择上一条命令
  31. Ctrl + s:阻止屏幕输出
  32. Ctrl + q:允许屏幕输出
  33. Ctrl + c:终止命令
  34. Ctrl + z:挂起命令
  35. Bang (!) 命令
  36. !!:执行上一条命令
  37. !blah:执行最近的以 blah 开头的命令,如 !ls
  38. !blah:p:仅打印输出,而不执行
  39. !$:上一条命令的最后一个参数,与 Alt + . 相同
  40. !$:p:打印输出 !$ 的内容
  41. !*:上一条命令的所有参数
  42. !*:p:打印输出 !* 的内容
  43. ^blah:删除上一条命令中的 blah
  44. ^blah^foo:将上一条命令中的 blah 替换为 foo
  45. ^blah^foo^:将上一条命令中所有的 blah 都替换为 foo

注意:Alt组合快捷键经常和其他软件冲突

在xshell中启动alt键

image-20220430230324572.png

1.12 获得帮助

  1. help 内置命令
  2. 命令 --help
  3. man 命令
  4. info 命令
  5. 搜索引擎