1.1 执行命令

1.1.1 执行命令过程

输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分
配资源将其运行起来

1.1.2 shell中可执行的两类命令

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

区别指定的命令是内部或外部命令

type COMMAND

范例: 查看是否存在对应内部和外部命令

[root@localhost ~]# type -a echo
echo is a shell builtin  内部命令
echo is /usr/bin/echo    外部命令

外部命令执行路径

[root@localhost bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

1.1.2.1 内部命令相关

help 内部命令列表
enable 管理内部命令

  • enable cmd 启用内部命令
  • enable -n cmd 禁用内部命令
  • enable -n 查看所有禁用的内部命令

1.1.2.2 执行外部命令

查看外部命令路径

which -a |--skip-alias
whereis

Hash缓存表

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

hash 命令常见用法

  • hash 显示hash缓存
  • hash -l 显示hash缓存,可作为输入使用
  • hash -p path name 将命令全路径path起别名为name
  • hash -t name 打印缓存中name的路径
  • hash -d name 清除name缓存
  • hash -r 清除缓存

1.1.3 命令别名

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

显示当前shell进程所有可用的命令别名

alias

定义别名NAME, 其相当于执行命令 VALUE

alias NAME='VALUE'

范例:

[root@centos8 ~]#echo "alias free='free -h'" >> .bashrc

撤消别名:unalias

unalias [-a] name [name ...]
unalias -a #取消所有别名

注意: 在命令行中定义的别名,仅对当前shell进程有效

如果想永久有效,要定义在配置文件中

  • 仅对当前用户:~/.bashrc
  • 对所有用户有效:/etc/bashrc

编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件

source /path/to/config_file
. /path/to/config_file

如果别名同原命令同名,如果要执行原命令,可使用

\ALIASNAME
“ALIASNAME”
‘ALIASNAME’
command ALIASNAME
/path/commmand #只适用于外部命令

1.1.4 命令格式

COMMAND [OPTIONS...] [ARGUMENTS...]

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

  • 短选项:UNIX 风格选项,-c 例如:-l,-h
  • 长选项:GUN风格选项,–word 例如:–all,–human
  • BSD风格选项:一个字母,例如:a,使用相对较少

参数:命令的作用对象,比如:文件名,用户名等

范例:

[root@centos8 ~]#id -u wang
1000
[root@centos8 ~]#ls -a
[root@centos8 ~]#ls --all
[root@centos8 ~]#free -h
[root@centos8 ~]#free --human
[root@centos8 ~]#ps a

注意:

  • 多个选项以及多参数和命令之间使用空白字符分隔
  • 取消和结束命令执行:Ctrl+c,Ctrl+d
  • 多个命令可以用 “;” 符号分开
  • 一个命令可以用\分成多行

1.2 常见命令

1.2.1 查看硬件信息

1.2.1.1 查看cpu

lscpu命令可以查看cpu信息
cat /proc/cpuinfo 也可查看到

范例:

[root@centos8 ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 1 #每个core 有几个线程
Core(s) per socket: 4 #每个槽位有4个core
Socket(s): 2 #服务器面板上有2个cpu 槽位
NUMA node(s): 2 #nodes的数量
Vendor ID: GenuineIntel
CPU family: 6
Model: 44
Stepping: 2
CPU MHz: 2128.025
BogoMIPS: 4256.03
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0,2,4,6 #对应的core
NUMA node1 CPU(s): 1,3,5,7

1.2.1.2 查看内存大小

[root@centos8 ~]#free
total used free shared buff/cache available
Mem: 816188 156888 412660 5792 246640 527024
Swap: 2097148 0 2097148[root@centos8 ~]#cat /proc/meminfo
MemTotal: 816188 kB
MemFree: 412780 kB
MemAvailable: 527144 kB
Buffers: 5304 kB
Cached: 208252 kB
SwapCached: 0 kB
Active: 138976 kB
Inactive: 127508 kB
Active(anon): 53348 kB
Inactive(anon): 5368 kB
Active(file): 85628 kB
Inactive(file): 122140 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 52964 kB
Mapped: 78456 kB
Shmem: 5792 kB
KReclaimable: 33084 kB
Slab: 69144 kB
SReclaimable: 33084 kB
SUnreclaim: 36060 kB
KernelStack: 4428 kB
PageTables: 5888 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2505240 kB
Committed_AS: 250040 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 6144 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 108416 kB
DirectMap2M: 940032 kB
DirectMap1G: 0 kB

1.2.1.3 查看硬盘和分区情况

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part├─centos-root 253:0    0   44G  0 lvm  /└─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sr0              11:0    1  973M  0 rom[root@localhost ~]#  cat /proc/partitions
major minor  #blocks  name8        0   52428800 sda8        1    1048576 sda18        2   51379200 sda211        0     996352 sr0253        0   46133248 dm-0253        1    5242880 dm-1

1.2.2 查看系统版本信息

1.2.2.1 查看内核版本

[root@localhost ~]# uname -r
3.10.0-1160.31.1.el7.x86_64

1.2.2.2 查看操作系统发行版本

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

1.2.3 日期和时间

Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板

相关命令

  • date 显示和设置系统时间
    范例:
[root@localhost ~]# date +%s
1625754758
[root@localhost ~]# date -d @`date +%s`
Thu Jul  8 22:33:19 CST 2021
[root@localhost ~]# date -d @1625754758
Thu Jul  8 22:32:38 CST 2021
  • clock,hwclock: 显示硬件时钟
  • s, --hctosys 以硬件时钟为准,校正系统时钟
  • w, --systohc 以系统时钟为准,校正硬件时钟

时区:

/etc/localtime

范例:

[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
[root@localhost ~]# timedatectl list-timezones #列出所有时区
[root@localhost ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Jul  3 17:44 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai

显示日历:

 cal -y

范例:

[root@localhost ~]# cal -y2021January               February                 March
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa1  2       1  2  3  4  5  6       1  2  3  4  5  63  4  5  6  7  8  9    7  8  9 10 11 12 13    7  8  9 10 11 12 13
10 11 12 13 14 15 16   14 15 16 17 18 19 20   14 15 16 17 18 19 20
17 18 19 20 21 22 23   21 22 23 24 25 26 27   21 22 23 24 25 26 27
24 25 26 27 28 29 30   28                     28 29 30 31
31April                   May                   June
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa1  2  3                      1          1  2  3  4  54  5  6  7  8  9 10    2  3  4  5  6  7  8    6  7  8  9 10 11 12
11 12 13 14 15 16 17    9 10 11 12 13 14 15   13 14 15 16 17 18 19
18 19 20 21 22 23 24   16 17 18 19 20 21 22   20 21 22 23 24 25 26
25 26 27 28 29 30      23 24 25 26 27 28 29   27 28 29 3030 31July                  August                September
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa1  2  3    1  2  3  4  5  6  7             1  2  3  44  5  6  7  8  9 10    8  9 10 11 12 13 14    5  6  7  8  9 10 11
11 12 13 14 15 16 17   15 16 17 18 19 20 21   12 13 14 15 16 17 18
18 19 20 21 22 23 24   22 23 24 25 26 27 28   19 20 21 22 23 24 25
25 26 27 28 29 30 31   29 30 31               26 27 28 29 30October               November               December
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa1  2       1  2  3  4  5  6             1  2  3  43  4  5  6  7  8  9    7  8  9 10 11 12 13    5  6  7  8  9 10 11
10 11 12 13 14 15 16   14 15 16 17 18 19 20   12 13 14 15 16 17 18
17 18 19 20 21 22 23   21 22 23 24 25 26 27   19 20 21 22 23 24 25
24 25 26 27 28 29 30   28 29 30               26 27 28 29 30 31

1.2.4 关机和重启

关机:

  • halt
  • poweroff

重启:

reboot

-f :强制,不调用shutdown

-p:切断电源

关机或重启:shutdown

shutdown [OPTION]... [TIME] [MESSAGE]

-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+#: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间

1.2.5 用户登录信息查看命令

  • whoami: 显示当前登录有效用户
  • who: 系统当前所有的登录会话
  • w: 系统当前所有的登录会话及所做的操作

1.2.6 文本编辑

  • nano 工具可以实现文本的编辑,上手容易,适合初学者
  • gedit 工具是图形工具

1.2.7 会话管理

命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命
令。用户与计算机的这种临时的交互,称为一次"会话"(session)
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话
结束,会话内部的进程也会随之终止,不管有没有运行完
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次
登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消
失了。为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到
以后需要的时候,再让会话"绑定"其他窗口
终端复用器软件就是会话与窗口的"解绑"工具,将它们彻底分离。
(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
(2) 它可以让新窗口"接入"已经存在的会话。
(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
(4)它还支持窗口任意的垂直和水平拆分。
类似的终端复用器还有Screen,Tmux

1.2.7.1 screen

利用screen 可以实现会话管理,如:新建会话,共享会话等
注意:CentOS7 来自于base源,CentOS8 来自于epel源

范例:安装screen

[root@centos7 ~]#yum -y install screen

screen命令常见用法:

  • 创建新screen会话
    screen –S [SESSION]
  • 加入screen会话
    screen –x [SESSION]
  • 退出并关闭screen会话
    exit
  • 剥离当前screen会话
    Ctrl+a,d
  • 显示所有已经打开的screen会话
    screen -ls
  • 恢复某screen会话
    screen -r [SESSION]

1.2.8 输出信息echo

echo 命令可以将后面跟的字符进行输出
功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加
上换行号

语法:

 echo [-neE][字符串]

选项:

  • -n 不自动换行

  • -e 启用\ 字符的解释器

  • -E(默认) 不支持\解释功能

1.3 字符集和编码

许多场合下,字符集与编码这两个概念常被混为一谈,但两者是有差别的。字符集与字符集编码是两个
不同层面的概念
charset是character set的简写,即字符集,即二进制和字符的对应关系,不关注最终的存储形式
encoding是charset encoding的简写,即字符集编码,简称编码,实现如何将字符转化为实际的二进制
进行存储或相反,编码决定了空间的使用的大小

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0wMY07Mx-1626537763247)(/Users/petrus/Desktop/WX20210710-121419@2x.png)]

1.3.1 ASCII码

计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字
符与二进制位之间的关系,做了统一规定,即ASCII(American Standard Code for Information
Interchange) 码

ASCII 码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为 0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c3sw87hA-1626537763248)(/Users/petrus/Desktop/R-C.jpeg)]

范例:查看 ascii 表

[root@localhost ~]# yum install man-pages
[root@localhost ~]# man ascii

1.3.2 GBK

由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,即ASCII编码,但是要处理
中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了
GB2312编码,用来把中文编进去

1.3.3 Unicode

全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就
会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码
为了表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode 是一个
很大的集合,现在的规模可以容纳100多万个符号。Unicode 仅仅只是一个字符集,规定了每个字符对
应的二进制代码,至于这个二进制代码如何存储则没有规定

Unicode编码方案:

  • UTF-8:变长,1到4个字节
  • UTF-16:变长,2或4个字节
  • UTF-32:固定长度,4个字节

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuLEJVJr-1626537763250)(/Users/petrus/Desktop/WX20210710-123401@2x.png)]

UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式,可变长存储。使用 1 - 4 个字节表示一个
字符,根据字符的不同变换长度。编码规则如下:
对于单个字节的字符,第一位设为 0,后面的 7 位对应这个字符的 Unicode 码。因此,对于英文中的 0

-127 号字符,与 ASCII 码完全相同。这意味着 ASCII 码的文档可用 UTF-8 编码打开
对于需要使用 N 个字节来表示的字符(N > 1),第一个字节的前 N 位都设为 1,第 N + 1 位设为0,剩
余的 N - 1 个字节的前两位都设位 10,剩下的二进制位则使用这个字符的 Unicode 码来填充

1.4 命令行扩展和被括起来的集合

1.4.1 命令行扩展:

把一个命令的输出打印给另一个命令的参数

$(COMMAND) 或`COMMAND`

范例: 比较" ",’ ',三者区别

[root@localhost ~]# echo "echo $HOSTNAME"
echo localhost.localdomain
[root@localhost ~]# echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@localhost ~]# echo `echo $HOSTNAME`
localhost.localdomain结论:
单引号:变量和命令都不识别,都当成了普通的字符串
反向单引号:变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的
命令继续
双引号:不能识别命令,可以识别变量

范例:

[root@localhost data]# echo "This system's name is $HOSTNAME'"
This system's name is localhost.localdomain'
[root@localhost data]# echo "I am `whoami` "
I am root
[root@localhost data]# touch $(date +%F).log
[root@localhost data]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 14 09:51 2021-07-14.log
[root@localhost data]# touch `date +%F`.txt
[root@localhost data]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 14 09:51 2021-07-14.log
-rw-r--r-- 1 root root 0 Jul 14 09:51 2021-07-14.txt
[root@localhost data]# touch `hostname`-`date +%F`.log
[root@localhost data]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 14 09:53 2021-07-14.log
-rw-r--r-- 1 root root 0 Jul 14 09:51 2021-07-14.txt
-rw-r--r-- 1 root root 0 Jul 14 09:53 localhost.localdomain-2021-07-14.log
[root@localhost data]# touch `date +%F_%H-%M-%S`.log
[root@localhost data]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 14 09:55 2021-07-14_09-55-13.log
-rw-r--r-- 1 root root 0 Jul 14 09:53 2021-07-14.log
-rw-r--r-- 1 root root 0 Jul 14 09:51 2021-07-14.txt
-rw-r--r-- 1 root root 0 Jul 14 09:53 localhost.localdomain-2021-07-14.log

1.4.2 括号扩展:{ }

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

范例:

[root@localhost data]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@localhost data]# echo {a..z}
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
[root@localhost data]# echo {0..10..2}
0 2 4 6 8 10
[root@localhost data]# echo {A..z}
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 [  ] ^ _ ` 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.5 命令行历史

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

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

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

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

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

命令:history

history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
  • -c: 清空命令历史
  • -d: offset:删除历史中指定的第offset个命令
  • -n: 显示最近的n条历史
  • -a:追加本次会话新执行的命令历史列表至历史文件
  • -r:读历史文件附加到历史文件
  • -w:保存历史列表到指定的历史文件
  • -n : 读历史文件中未读过的行到历史列表
  • -p:展开历史参数成多行,但不存在历史列表中
  • -s:展开历史参数成一行, 附加在历史列表后

命令历史相关环境变量

  • HISTSIZE:命令历史记录的条数
  • HISTFILE:指定历史文件,默认为~/.bash_history
  • HISTFILESIZE: 命令历史文件记录历史的条数
  • HISTTIMEFORMAT= "%F %T whoami" 显示时间和用户
  • HISTIGNORE= “str1:str2*…” 忽略str1 命令,str2开头的历史
  • HISTCONTROL: 控制命令历史的记录方式

​ ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”

​ ignorespace 忽略所有以空白开头的命令

​ ignoreboth 相当于ignoredups, ignorespace的组合

​ erasedups 删除重复命令

持久保存变量

  • 以上变量可以export变量名= “值” 形式存放在 /etc/profile 或 ~/.bash_profile

范例:

[root@localhost ~]# cat .bash_profile
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATH
export HISTCONTROL=ignoreboth
export HISTTIMEFORMAT="%F %T `whoami` "
[root@localhost ~]# history1  2021-07-15 09:54:28 root cat2  2021-07-15 09:54:34 root ll3  2021-07-15 09:54:44 root ls -la4  2021-07-15 09:54:53 root vim .bash_history5  2021-07-15 10:16:07 root history

1.6 调用命令历史记录

#重复前一个命令方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
输入 !-1 并回车执行
按 Ctrl+p 并回车执行
!:0 执行前一条命令(去除参数)
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!string 重复前一个以“string”开头的命令1.13 bash的快捷键
!?string 重复前一个包含string的命令
!string:p 仅打印命令历史,而不执行
!$:p 打印输出 !$ (上一条命令的最后一个参数)的内容
!*:p 打印输出 !*(上一条命令的所有参数)的内容
^string 删除上一条命令中的第一个string
^string1^string2 将上一条命令中的第一个string1替换为string2
!:gs/string1/string2 将上一条命令中所有的string1都替换为 string2
使用up(向上)和down(向下)键来上下浏览从前输入的命令
ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’:
Ctrl+g:从历史搜索模式退出
#要重新调用前一个命令中最后一个参数
!$ 表示
Esc, . 点击Esc键后松开,然后点击 . 键
Alt+ . 按住Alt键的同时点击 . 键
command !^ 利用上一个命令的第一个参数做command的参数
command !$ 利用上一个命令的最后一个参数做command的参数
command !* 利用上一个命令的全部参数做command的参数
command !:n 利用上一个命令的第n个参数做command的参数
command !n:^ 调用第n条命令的第一个参数
command !n:$ 调用第n条命令的最后一个参数
command !n:m 调用第n条命令的第m个参数
command !n:* 调用第n条命令的所有参数
command !string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数
command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数
command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
command !string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有参数

1.6.1 bash的快捷键

Ctrl+l 清屏,相当于clear命令 Ctrl+o 执行当前命令,并重新显示本命令 Ctrl+s 阻止屏幕输出,锁定
Ctrl+q 允许屏幕输出,解锁
Ctrl+c 终止命令
Ctrl+z 挂起命令
Ctrl+a 光标移到命令行首,相当于Home
Ctrl+e 光标移到命令行尾,相当于End
Ctrl+f 光标向右移动一个字符
Ctrl+b 光标向左移动一个字符 Alt + f 光标向右移动一个单词尾 Alt + b 光标向左移动一个单词首
光标在命令行首和光标之间移动
从光标处删除至命令行首
从光标处删除至命令行尾
Ctrl + xx
Ctrl+u
Ctrl+k
Alt + r
Ctrl+w
Alt + d 从光标处向右删除至单词尾
Ctrl+d 删除光标处的一个字符
Ctrl+h 删除光标前的一个字符
Ctrl+y 将删除的字符粘贴至光标后
Alt + c 从光标处开始向右更改为首字母大写的单词 Alt + u 从光标处开始,将右边一个单词更改为大写 Alt + l 从光标处开始,将右边一个单词更改为小写 Ctrl + t 交换光标处和之前的字符位置
Alt + t 交换光标处和之前的单词位置
Alt + # 提示输入指定字符后,重复显示该字符#次

1.7 获得帮助

获取帮助的能力决定了技术的能力

多层次的帮助

  • whatis
  • command --help
  • man and info
  • /usr/share/doc/
  • Red Hat documentation ,Ubuntu documentation
  • 其它网站
  • 搜索

1.7.1 whatis

whatis 使用数据库来显示命令的简短描述 刚安装后不可立即使用,需要制作数据库

#CentOS 7 版本以后
mandb
#CentOS 6 版本之前
makewhatis

范例:

[root@node3 ~]# whatis cal
cal (1)              - display a calendar

范例:

[root@node3 ~]#whatis ls
ls: nothing appropriate.
#生成man相关数据库
[root@node3 ~]#mandb
Processing manual pages under /usr/share/man...
Updating index cache for path `/usr/share/man/mann'. Wait...done. Checking for stray cats under /usr/share/man...
...省略...
0 old database entries were purged.
[root@node3 ~]#whatis ls
ls (1) - list directory contents

1.7.2 查看命令的帮助

内部命令:

  • help COMMAND
  • Man bash

范例:

[root@node3 ~]# type history
history is a shell builtin
[root@node3 ~]# help history
history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]Display or manipulate the history list.Display the history list with line numbers, prefixing each modifiedentry with a `*'.  An argument of N lists only the last N entries.Options:-c   clear the history list by deleting all of the entries-d offset  delete the history entry at offset OFFSET.-a    append history lines from this session to the history file-n    read all history lines not already read from the history file-r read the history file and append the contents to the historylist-w  write the current history to the history fileand append them to the history list-p  perform history expansion on each ARG and display the resultwithout storing it in the history list-s    append the ARGs to the history list as a single entryIf FILENAME is given, it is used as the history file.  Otherwise,if $HISTFILE has a value, that is used, else ~/.bash_history.If the $HISTTIMEFORMAT variable is set and not null, its value is usedas a format string for strftime(3) to print the time stamp associatedwith each displayed history entry.  No time stamps are printed otherwise.Exit Status:Returns success unless an invalid option is given or an error occurs.

外部命令和软件:

  • COMMAND --help.或COMMAND -h

  • 使用手册(manual)

    ​ man COMMAND

  • 信息页

    info COMMAND

  • 程序自身的帮助文档

    README

    INSTALL

    ChangeLog

  • 程序官方文档

    官方站点:Documentation

  • 发新版的官方文档

  • Google

1.7.3 --help 或 -h 选项

显示用法总结和参数列表,大多数命令使用,但并非所有的

范例:

[root@node3 ~]# date --help
Usage: date [OPTION]... [+FORMAT]or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.
[root@node3 ~]# cal --helpUsage:cal [options] [[[day] month] year]Options:-1, --one        show only current month (default)-3, --three      show previous, current and next month-s, --sunday     Sunday as first day of week-m, --monday     Monday as first day of week-j, --julian     output Julian dates-y, --year       show whole current year-V, --version    display version information and exit-h, --help       display this help text and exit
[root@node3 ~]# openssl -h
openssl:Error: '-h' is an invalid command.
[root@node3 ~]# date -h
date: invalid option -- 'h'
Try 'date --help' for more information.
[root@node3 ~]#
Broadcast message from root@node3 (Sat 2021-07-17 23:40:05 CST):The system is going down for power-off at Sat 2021-07-17 23:41:05 CST!

格式说明:

  • []表示可选项
  • CAPS 或 <>表示变化的数据
  • …表示一个列表
  • x|y|z 的意思是"x"或"y" 或"z"
  • -abc 的意思是-a -b -c
  • {} 表示分组

1.7.4 man 命令

man 提供命令帮助的文件,手册页存放在/usr/share/man

几乎每个命令都有man的"页面"

中文man需要安装包

  • man-pages
  • man-pages-zh-CN

man页面分组为不同的“章节”,man 1 man

  • 1:用户命令
  • 2: 系统调用
  • 3: C库调用
  • 4: 设备文件及特殊文件
  • 5: 配置文件格式
  • 6: 游戏
  • 7: 杂项
  • 8: 管理类的命令
  • 9: Linux 内核API

man命令的配置文件:

#CentOS 6 之前版 man 的配置文件
/etc/man.config
#CentOS 7 之后版 man 的配置文件
/etc/man_db.conf
#ubuntu man 的配置文件
/etc/manpath.config

格式:

MANPATH /PATH/TO/SOMEWHERE #指明man文件搜索位置

也可以指定位置下搜索COMMAND命令的手册页并显示

man -M /PATH/TO/SOMEWHERE COMMAND

查看man手册页

man [章节] keyword

man 帮助段落说明

  • NAME 名称及简要说明
  • SYNOPSIS 用法格式说明
  • [] 可选内容
  • <> 必选内容
  • a|b 二选一
  • { } 分组
  • … 同一内容可出现多次
  • DESCRIPTION 详细说明
  • OPTIONS 选项说明
  • EXAMPLES 示例
  • FILES 相关文件
  • AUTHOR 作者
  • COPYRIGHT 版本信息
  • REPORTING BUGS bug信息
  • SEE ALSO 其它帮助参考

列出所有帮助

man -a keyword

搜索man手册

#列出所有匹配的页面,使用 whatis 数据库
man -k keyword

相当于 whatis

man -f keyword

打印man帮助文件的路径

man -w [章节] keyword

范例:

[root@node3 ~]#man -w 1 passwd
/usr/share/man/man1/passwd.1.gz
[root@node3 ~]#whatis passwd
openssl-passwd (1ssl) - compute password hashes
passwd (1)           - update user's authentication tokens
[root@node3 ~]#man 1ssl openssl-passwd
[root@node3 ~]#dnf install man-pages
[root@node3 ~]#man 7 ascii
[root@node3 ~]#man 7 utf8

1.7.5 info

man常用于命令参考 ,GNU工具 info 适合通用文档参考
没有参数,列出所有的页面
info 页面的结构就像一个网站
每一页分为“节点”
链接节点之前 *
info 命令格式

nfo [ 命令 ]

导航info页

  • 方向键,PgUp,PgDn 导航
  • Tab键 移动到下一个链接
  • d 显示主题目录
  • Home 显示主题首部
  • Enter进入 选定链接
  • n/p/u/l 进入下/前/上一层/最后一个链接
  • s 文字 文本搜索
  • q 退出 info

Linux基础入门和帮助相关推荐

  1. 腾讯云实验之Linux 基础入门

    image.png Linux 基础入门 目录操作 任务时间:5min ~ 10min 创建目录 使用 mkdir 命令创建目录 mkdir $HOME/testFolder 切换目录 使用 cd 命 ...

  2. Linux 基础入门

    Linux 基础入门 本课程教你如何熟练地使用 Linux,本实验中通过在线动手实验的方式学习 Linux 常用命令,用户与权限管理,目录结构与文件操作,环境变量,计划任务,管道与数据流重定向等基本知 ...

  3. Linux基础入门--驱动开发--USB

    Linux基础入门--驱动开发--USB 1.基本概念 2.组成结构 2.1 设备描述符 2.2 配置描述符 2.3 接口描述符 2.4 端点描述符 2.5 字符串描述符 3.管道 4.端点分类 4. ...

  4. Linux基础入门之内外命令讲解篇

    Linux基础入门篇--之内外命令讲解 1.基础命令 命令 使用方法 cat /etc/motd 设置用户成功登录系统后显示的提示信息.比如欢迎语! cat /etc/issue 设置用户成功登录系统 ...

  5. Linux基础入门教程

    Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux: Linux初级,也就是入门linux 前提是需要有一些计算机硬件相关的知识或是有 ...

  6. Linux 基础入门 02

    Linux 基础入门 02 一.用户&组管理 1.1 usermod 用来修改用户账号的各项设定 -c<备注> #修改用户帐号的备注文字. -d登入目录> #修改用户登入时的 ...

  7. Linux基础入门--进程间通信--共享内存

    Linux基础入门--进程间通信--共享内存 1.共享内存IPC原理 2.共享内存管理 1.共享内存IPC原理 共享内存进程间通信机制主要用于实现进程间大量的数据传输,共享内存是在内存单独开辟的一段内 ...

  8. Linux基础入门--网络工具--usb_modeswitch

    Linux基础入门--网络工具--usb_modeswitch 1.概述 2.语法 3.选项 1.概述 控制"多状态"USB设备的模式.一些新的USB设备有他们的专有Windows ...

  9. SRE运维工程师笔记-Linux基础入门

    SRE运维工程师笔记-Linux基础入门 1. Linux基础 1.1 用户类型 1.2 终端terminal 1.2.1 终端类型 1.2.2 查看当前的终端设备 1.3 交互式接口 1.3.1 交 ...

  10. Linux服务器c++开发之路,从Linux基础入门到服务器开发高级架构

    Linux服务器c++开发之路 正式开始学习Linux高并发服务器c++开发相关的技术. 学习路线:  基础数据结构   gcc, make, gdb   Qt编程 Tcp/IP协议 c/c++语言 ...

最新文章

  1. Java项目:CRM客户关系管理系统(java+Springboot+maven+mysql)
  2. 由于目标机器积极拒绝,无法联接。microsoft sql server,错误:10061
  3. HDU2066(SPFA算法)
  4. sersync 文件同步系统(一) 服务初步搭建
  5. QTreeWidget 读取windows注册表
  6. 容器编排技术 -- Kubernetes Pod 生命周期
  7. Spring-boot 项目中使用 jackson 遇到的一个问题
  8. php集成环境、基础标记符
  9. Android NDK学习记录(一)
  10. 基于Arduino的智能环境监测与反馈系统
  11. 麦腾股份正式挂牌新三板,创业孵化市场或将深度洗牌
  12. 计算机游戏act指的是什么游戏,忍龙2领衔!5款史上最佳的ACT游戏推荐,值得一玩!...
  13. PCL官网学习OpenNI Grabber 调用奥比中光Astra s 遇到问题openni2_grabber.cpp @ 325 : No devices connected.
  14. javaScript-力扣-题库-11. 盛最多水的容器
  15. 1646 获取生成数组中的最大值(模拟)
  16. 2021年十大数据分析和商业智能趋势
  17. interrupt()中断对LockSupport.park()的影响
  18. 国际巨星Ricky Martin抒情MTV
  19. C++ opencv批量修改图片大小
  20. 科技云报道:元宇宙如何切入办公场景?云桌面或是必经之路

热门文章

  1. 北美贾跃亭判了!靠一台道具车狂奔上市,340亿美元巅峰市值一度超越福特
  2. Linux 命令:e2fsck; superblock
  3. Linux之sed与awk
  4. SpringBoot集成腾讯云对象储存
  5. 2023最新驾考精简500题+技巧
  6. c语言struct要点
  7. shodan基础用法
  8. ROS的turtle--控制小乌龟转圈
  9. mysql查询多个平均值_MySQL查询连续计算平均值?
  10. VBA_话费明细单_格式调整