Linux 基础入门

1 Linux 基础

1.1 用户类型

  • root用户
    一个特殊的管理帐户
    也被称为超级用户
    root已接近完整的系统控制
    对系统损害几乎有无限的能力
    除非必要,不要登录为 root

    注:只有用户id为0的账户为超级用户。

范例:

[root@CentOS7 ~]# id    
uid=0(root) gid=0(root) groups=0(root)context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
  • 普通( 非特权 )用户
    权限有限
    造成损害的能力比较有限

1.2 终端 terminal

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

1.2.1 终端类型

  • 控制台终端:
    /dev/console
  • 串行终端:
    /dev/ttyS#
  • 虚拟终端:
    tty:teletypewriters, /dev/tty#,
    tty 可有n个,Ctrl+Alt+F#
  • 图形终端:
    startx, xwindows
    CentOS 6: Ctrl + Alt + F7
    CentOS 7: 在哪个终端启动,即位于哪个虚拟终端
  • 伪终端:
    pty:pseudo-tty , /dev/pts/# 如:SSH远程连

1.2.2 查看当前的终端设备

tty 命令可以查看当前所在终端

tty  

范例:

[root@CentOS7 ~]# tty
/dev/pts/3

1.3 交互式接口

交互式接口:启动终端后,在终端设备附加一个交互式应用程序

1.3.1 交互式接口类型

  • GUI: Graphic User Interface
    X protocol, window manager, desktop
    Desktop:
    GNOME (C, 图形库gtk),
    KDE (C++,图形库qt)
    XFCE (轻量级桌面)
  • CLI:Command Line Interface
    shell程序

1.3.2 什么是shell

Linux 基础入门_第1张图片

Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并 把它送入内核去执行
shell也被称为LINUX的命令解释器(command interpreter)
shell是一种高级程序设计语言

1.3.3 各种Shell

Linux 基础入门_第2张图片

  • sh:Steve Bourne
  • bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用
  • csh:c shell , C 语言风格
  • tcsh
  • ksh :Korn Shell, AIX 默认 shell
  • zsh: MacOS默认shell

1.3.4 bash shell

GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell,与 sh兼容
显示当前使用的shell

echo ${SHELL}   

显示当前系统使用的所有shell

cat /etc/shells

1.4设置主机名

hostname  NAME

范例:

[root@CentOS7 ~]# hostname
CentOS7.magedu.com
[root@CentOS7 ~]# hostname CentOS7.magedu.org
[root@CentOS7 ~]# hostname
CentOS7.magedu.org    

注意:主机名不要使用下划线

1.5 命令提示符

范例:
[root@CentOS7 ~]#
“ # ”管理员
“ $ ”普通用
显示提示符格式

[root@CentOS7 ~]# echo $PS1
[\u@\h \W]\$

修改提示符格式范例

PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"   
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\ [\e[0m\]\\$"

提示符格式说明:

  • \e 控制符\033
  • \u 当前用户
  • \h 主机名简称
  • \H 主机名
  • \w 当前工作目录
  • \W 当前工作目录基名
  • \t 24小时时间格式
  • \T 12小时时间格式
  • ! 命令历史数
  • “#” 开机后命令历史数
    范例:持久保存提示符格式相关变量 PS1
[root@CentOS7 ~]# echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\ [\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/env.sh
[root@CentOS7 ~]# cat /etc/profile.d/env.sh
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\ [\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"
[root@CentOS7 ~]# exit
logout

Connection closed by foreign host.

Disconnected from remote host(10.0.0.7:22) at 11:44:39.

Type `help' to learn how to use Xshell prompt.
[c:\~]$ ssh 10.0.0.7


[c:\~]$ Connecting to 10.0.0.7:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Sun Mar 22 11:40:04 2020 from 10.0.0.1
[11:44:54 root@CentOS7\ [ ~]#

1.6 执行命令

1.6.1 执行命令过程

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

1.6.2 shell中可执行的两类命令

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

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

type COMMAND    

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

[root@CentOS7 ~]#type -a echo
echo is a shell builtin
echo is /usr/bin/echo

1.6.2.1 内部命令相关

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

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

1.6.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.6.3 命令别名

对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行
显示当前shell进程所有可用的命令别名

alias   

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

alias NAME='VALUE'

范例:

[root@CentOS7 ~]#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.6.4 命令格式

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

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

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

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

[root@centos7 ~]#id -u wang   
1000

[root@centos7 ~]#ls -a   
[root@centos7 ~]#ls --all

[root@centos7 ~]#free -h   
[root@centos7 ~]#free --human

[root@centos7 ~]#ps a

注意:

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

1.7 常见命令

1.7.1 查看硬件信息

1.7.1.1 查看cpu

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

[root@CentOS7 ~]#lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             2
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 142
Model name:            Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
Stepping:              12
CPU MHz:               2304.004
BogoMIPS:              4608.00
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              8192K
NUMA node0 CPU(s):     0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc 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 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities



[root@centos8 ~]# cat /proc/cpuinfo
1.7.1.2 查看内存大小
[root@CentOS7 ~]#free
              total        used        free      shared  buff/cache   available
Mem:           1.4G        853M         81M         34M        541M        432M
Swap:          2.0G        6.2M        2.0G
[root@CentOS7 ~]#cat /proc/meminfo
MemTotal:        1511872 kB
MemFree:           83472 kB
MemAvailable:     443000 kB
Buffers:               0 kB
Cached:           495240 kB
SwapCached:          360 kB
Active:           577108 kB
Inactive:         561372 kB
Active(anon):     357888 kB
Inactive(anon):   320968 kB
Active(file):     219220 kB
Inactive(file):   240404 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2090748 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        642920 kB
Mapped:            63396 kB
Shmem:             35616 kB
Slab:             128120 kB
SReclaimable:      59244 kB
SUnreclaim:        68876 kB
KernelStack:       10288 kB
PageTables:        38560 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2853084 kB
Committed_AS:    4224920 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      215432 kB
VmallocChunk:   34359277564 kB
HardwareCorrupted:     0 kB
AnonHugePages:    104448 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      126848 kB
DirectMap2M:     1445888 kB
DirectMap1G:           0 kB
[root@CentOS7 ~]#
1.7.1.3 查看硬盘和分区情况
[root@CentOS7 ~]#lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0   50G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sr0     11:0    1 1024M  0 rom  
[root@CentOS7 ~]#cat /proc/partitions
major minor  #blocks  name

   8        0  209715200 sda
   8        1    1048576 sda1
   8        2  104857600 sda2
   8        3   52428800 sda3
   8        4          1 sda4
   8        5    2097152 sda5
  11        0    1048575 sr0

1.7.2 查看系统版本信息

1.7.2.1 查看内核版
[root@CentOS8 ~]# uname -r
4.18.0-147.el8.x86_64

[root@CentOS7 ~]#uname -r
3.10.0-1062.el7.x86_64

[root@CentOS6 ~]# uname -r
2.6.32-754.el6.x86_64

root@ubuntu1804:~# uname -r
4.15.0-55-generic
1.7.2.2 查看操作系统发行版本

CentOS8 查看发行版本

[root@CentOS8 ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core) 
[root@CentOS8 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"

[root@CentOS8 ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 8.1.1911 (Core) 
Release:	8.1.1911
Codename:	Core
[root@CentOS8 ~]# 

ubuntu 查看发行版本

root@ubuntu1804:~# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
root@ubuntu1804:~# cat /etc/is
iscsi/     issue      issue.net  
root@ubuntu1804:~# cat /etc/issue
Ubuntu 18.04.3 LTS \n \l

root@ubuntu1804:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.3 LTS
Release:	18.04
Codename:	bionic
root@ubuntu1804:~# 

1.7.3 日期和时间

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

相关命令

  • date 显示和设置系统时间
    范例:
[root@CentOS8 ~]# date +%s
1584867893
[root@CentOS8 ~]# date -d @`date +%s`
Sun Mar 22 17:05:13 CST 2020
[root@CentOS8 ~]# date -d @1584867893
Sun Mar 22 17:04:53 CST 2020
[root@CentOS8 ~]# date -d @1584867893 +%F_%T
2020-03-22_17:04:53
  • clock,hwclock: 显示硬件时钟
    -s, --hctosys 以硬件时钟为准,校正系统时钟
    -w, --systohc 以系统时钟为准,校正硬件时钟

时区:

 /etc/localtime  

范例:

[root@CentOS8 ~]# timedatectl set-timezone Asia/Shanghai
[root@CentOS8 ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Mar 16 22:22 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
[root@CentOS8 ~]# cat /etc/timezone
cat: /etc/timezone: No such file or directory

显示日历:

cal –y

范例:

[root@CentOS8 ~]# cal 9 1752
   September 1752   
Su Mo Tu We Th Fr Sa
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

1.7.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.7.5 用户登录信息查看命令

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

1.7.6 文本编辑

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

1.7.7 会话管理

命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命 令。用户与计算机的这种临时的交互,称为一次"会话"(session)
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话 结束,会话内部的进程也会随之终止,不管有没有运行完
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次 登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消 失了。为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到 以后需要的时候,再让会话"绑定"其他窗口

终端复用器软件就是会话与窗口的"解绑"工具,将它们彻底分离。
(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
(2) 它可以让新窗口"接入"已经存在的会话。
(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
(4)它还支持窗口任意的垂直和水平拆分。
类似的终端复用器还有Screen,Tmux

1.7.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.7.7.2 tmux

Linux 基础入门_第3张图片
Tmux 是一个终端复用器(terminal multiplexer),类似 screen,但是更易用,也更强大
Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离,功能如下

  • 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
  • 它可以让新窗口"接入"已经存在的会话。
  • 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
  • 它还支持窗口任意的垂直和水平拆分

安装

yum install tmux

启动与退出

[root@centos8 ~]#tmux 

[root@centos8 ~]#exit   
logout

tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是 Ctrl+b ,即先按下 Ctrl+b ,快捷键才会生效。帮助命令的快捷键是 Ctrl+b ? 然后,按下 q 键,就可以退出帮助
新建会话
第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。使用编号区分会话,不太直观,更好的方法是为会话起名。下面命令新建一个指定 名称的会话。

tmux new -s 

tmux ls或Ctrl+b,s 可以查看当前所有的 Tmux 会话

tmux ls   
tmux list-session

分离会话
在 Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。

tmux detach

接入会话
tmux attach 命令用于重新接入某个已存在的会话。

tmux attach -t 

范例:

tmux attach -t 100

杀死会话
tmux kill-session命令用于杀死某个会话。

tmux kill-session -t 

切换会话
tmux switch命令用于切换会话

tmux switch -t 

可以将窗口分成多个窗格(pane),每个窗格运行不同的命令
上下分窗格

tmux split-window   
ctrl+b,"

左右分窗格

tmux split-window -h   
ctrl+b,%

窗格快捷键

Ctrl+b %:划分左右两个窗格  
Ctrl+b ":划分上下两个窗格   
Ctrl+b :光标切换到其他窗格。是指向要切换到的窗格的方向键,比如切换 到下方窗格,就按方向键↓   
Ctrl+b ;:光标切换到上一个窗格   
Ctrl+b o:光标切换到下一个窗格。  
 Ctrl+b {:当前窗格左移   
 Ctrl+b }:当前窗格右移   
 Ctrl+b Ctrl+o:当前窗格上移   
 Ctrl+b Alt+o:当前窗格下移   
 Ctrl+b x:关闭当前窗格   
 Ctrl+b !:将当前窗格拆分为一个独立窗口   
 Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小   
 Ctrl+b Ctrl+:按箭头方向调整窗格大小   
 Ctrl+b q:显示窗格编号

窗口管理
除了将一个窗口划分成多个窗格,
Tmux 也允许新建多个窗口
新建窗口 tmux new-window命令用来创建新窗口

tmux new-window

新建一个指定名称的窗口

tmux new-window -n 

切换窗口
tmux select-window命令用来切换窗口
切换到指定编号的窗口

tmux select-window -t 

切换到指定名称的窗口

tmux select-window -t 

窗口快捷键

Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。   
Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。   
Ctrl+b n:切换到下一个窗口。   
Ctrl+b :切换到指定编号的窗口,其中的是状态栏上的窗口编号   
Ctrl+b w:从列表中选择窗口   
Ctrl+b ,:窗口重命名

列出所有快捷键,及其对应的 Tmux 命令

tmux list-keys

列出所有 Tmux 命令及其参数

tmux list-commands

1.7.8 输出信息echo

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

echo [-neE][字符串]

选项:

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

  • -n 不自动换行

  • -e 启用 \ 字符的解释功能
    显示变量

    echo "$VAR_NAME"   #用变量值替换,弱引用
    echo '$VAR_NAME'   #变量不会替换,强引用

启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出

  • \a 发出警告声
  • \b 退格键
  • \c 最后不加上换行符号
  • \e escape,相当于\033
  • \n 换行且光标移至行首
  • \r 回车,即光标移至行首,但不换行
  • \t 插入tab
  • \ 插入\字符
  • \0nnn 插入nnn(八进制)所代表的ASCII字符
  • \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
    范例
[root@CentOS8 ~]# echo -e 'a\x0Ab'
a
b
[root@CentOS8 ~]# echo -e '\033[43;31;1;5mmagedu\e[0m'
magedu
[root@CentOS8 ~]# echo -e '\x57\x41\x4E\x47'
WANG
[root@CentOS8 ~]# echo \$PATH
$PATH
[root@CentOS8 ~]# echo \
> 

[root@CentOS8 ~]# echo \\
\
[root@CentOS8 ~]# echo \\\
> 
\
[root@CentOS8 ~]# echo \\\\
\\
[root@CentOS8 ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@CentOS8 ~]# echo '$PATH'
$PATH

1.8 字符集和编码

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

1.8.1 ASCII码

计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字 符与二进制位之间的关系,做了统一规定,即ASCII(American Standard Code for Information Interchange)码
ASCII 码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为 0
Linux 基础入门_第5张图片
范例:查看 ascii 表

[root@CentOS8 ~]# dnf -y install man-pages
CentOS-8 - AppStream                                        1.9 kB/s | 4.3 kB     00:02    
CentOS-8 - Base                                             4.9 kB/s | 3.8 kB     00:00    
CentOS-8 - Extras                                           2.4 kB/s | 1.5 kB     00:00    
Package man-pages-4.15-6.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@CentOS8 ~]# man ascii

Linux 基础入门_第6张图片

1.8.2 Unicode

由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,即ASCII编码,但是要处理 中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了 GB2312编码,用来把中文编进去。
全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就 会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码
为了表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode 是一个 很大的集合,现在的规模可以容纳100多万个符号。Unicode 仅仅只是一个字符集,规定了每个字符对 应的二进制代码,至于这个二进制代码如何存储则没有规定
Unicode编码方案:

  • UTF-8:变长,1到4个字节
  • UTF-16:变长,2或4个字节
  • UTF-32:固定长度,4个字节
    Linux 基础入门_第7张图片
    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.9 命令行扩展和被括起来的集合

1.9.1 命令行扩展:`` 和 $()

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

$(COMMAND) 或 `COMMAND`

范例:比较 “ ” ,‘ ’, ``三者区别

[root@CentOS8 ~]# echo "echo $HOSTNAME"
echo CentOS8.magedu.com
[root@CentOS8 ~]# echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@CentOS8 ~]# echo `echo $HOSTNAME`
CentOS8.magedu.com

结论:

  • 单引号:六亲不认,变量和命令都不识别,都当成了普通的字符串
  • 反向单引号:变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的 命令继续
  • 双引号:不能识别命令,可以识别变量

范例:

[root@CentOS8 ~]# echo "echo $HOSTNAME"
echo CentOS8.magedu.com
[root@CentOS8 ~]# echo 'echo $HOSTNAME'
echo $HOSTNAME
[root@CentOS8 ~]# echo `echo $HOSTNAME`
CentOS8.magedu.com
[root@CentOS8 ~]# echo "This system's name is $(hostname)"
This system's name is CentOS8.magedu.com
[root@CentOS8 ~]# echo "I am `whoami`"
I am root
[root@CentOS8 ~]# touch $(date +%F).log
[root@CentOS8 ~]# ls
2020-03-22.log   Desktop    Downloads             Music     Public     Videos
anaconda-ks.cfg  Documents  initial-setup-ks.cfg  Pictures  Templates
[root@CentOS8 ~]# ll
total 8
-rw-r--r--. 1 root root    0 Mar 22 20:38 2020-03-22.log
-rw-------. 1 root root 1600 Mar 16 22:23 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Desktop
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Documents
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Downloads
-rw-r--r--. 1 root root 1755 Mar 16 22:24 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Music
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Pictures
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Public
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Templates
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Videos
[root@CentOS8 ~]# touch `date +%F`.txt
[root@CentOS8 ~]# ll
total 8
-rw-r--r--. 1 root root    0 Mar 22 20:38 2020-03-22.log
-rw-r--r--. 1 root root    0 Mar 22 20:39 2020-03-22.txt
-rw-------. 1 root root 1600 Mar 16 22:23 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Desktop
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Documents
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Downloads
-rw-r--r--. 1 root root 1755 Mar 16 22:24 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Music
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Pictures
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Public
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Templates
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Videos
[root@CentOS8 ~]# touch `hostname`-`date +%F`.log
[root@CentOS8 ~]# ll
total 8
-rw-r--r--. 1 root root    0 Mar 22 20:38 2020-03-22.log
-rw-r--r--. 1 root root    0 Mar 22 20:39 2020-03-22.txt
-rw-------. 1 root root 1600 Mar 16 22:23 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 Mar 22 20:39 CentOS8.magedu.com-2020-03-22.log
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Desktop
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Documents
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Downloads
-rw-r--r--. 1 root root 1755 Mar 16 22:24 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Music
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Pictures
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Public
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Templates
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Videos
[root@CentOS8 ~]# touch `date +%F_%F_%M_%S`.log
[root@CentOS8 ~]# touch `date -d '-1 day' +%F`.log
[root@CentOS8 ~]# ll
total 8
-rw-r--r--. 1 root root    0 Mar 22 20:41 2020-03-21.log
-rw-r--r--. 1 root root    0 Mar 22 20:41 2020-03-22_2020-03-22_41_01.log
-rw-r--r--. 1 root root    0 Mar 22 20:38 2020-03-22.log
-rw-r--r--. 1 root root    0 Mar 22 20:39 2020-03-22.txt
-rw-------. 1 root root 1600 Mar 16 22:23 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 Mar 22 20:39 CentOS8.magedu.com-2020-03-22.log
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Desktop
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Documents
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Downloads
-rw-r--r--. 1 root root 1755 Mar 16 22:24 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Music
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Pictures
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Public
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Templates
drwxr-xr-x. 2 root root    6 Mar 16 22:25 Videos

范例:$( ) 和 ``

[root@CentOS8 ~]# ll `echo `date +%F`.txt`
bash: .txt: command not found...
ls: cannot access 'date': No such file or directory
ls: cannot access '+%F': No such file or directory

[root@CentOS8 ~]# ll $(echo $(date +%F).txt)
-rw-r--r--. 1 root root 0 Mar 22 20:39 2020-03-22.txt

[root@CentOS8 ~]# ll `echo $(date +%F).txt`
-rw-r--r--. 1 root root 0 Mar 22 20:39 2020-03-22.txt

[root@CentOS8 ~]# ll $(echo `date +%F`.txt)
-rw-r--r--. 1 root root 0 Mar 22 20:39 2020-03-22.txt

1.9.2 括号扩展:{ }

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

[root@CentOS8 ~]# echo file{1,3,5,7}
file1 file3 file5 file7
[root@CentOS8 ~]# rm -f file{1,3,5,7}

[root@CentOS8 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10

[root@CentOS8 ~]# 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@CentOS8 ~]# echo {000..20..2}
000 002 004 006 008 010 012 014 016 018 020

[root@CentOS8 ~]# echo {a..z..2}
a c e g i k m o q s u w y

[root@CentOS8 ~]# 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.10 tab 键补全

tab 键可以实现命令及路径等补全,提高输入效率,避免出错

1.10.1 命令补全

  • 内部命令:
  • 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文 件,第一次找到的命令即为要执行的命令
  • 命令的子命令补全,需要安装 bash-completion

注意:用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表
范例:

[root@CentOS8 ~]# nmcli connection 
add      delete   edit     help     load     monitor  show     
clone    down     export   import   modify   reload   up 

1.10.2 路径补全

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果惟一:则直接补全
否则:再次Tab给出列表

1.10.3 双击Tab键

  • command 2Tab 所有子命令或文件补全
  • string2Tab 以string开头命令
  • /2Tab 显示所有根目录下一级目录,包括隐藏目录
  • ./2Tab 当前目录下子目录,包括隐藏目录
  • *2Tab 当前目录下子目录,不包括隐藏目录
  • ~2Tab 所有用户列表
  • $2Tab 所有变量
  • @2Tab /etc/hosts记录 (centos7 不支持)
  • =2Tab 相当于ls –A (centos7不支持

范例:

[root@CentOS8 ~]# /
bin/   data/  etc/   lib/   media/ opt/   root/  sbin/  sys/   usr/   
boot/  dev/   home/  lib64/ mnt/   proc/  run/   srv/   tmp/   var/  

[root@CentOS8 ~]# ./
.cache/    .dbus/     Documents/ .local/    Music/     .pki/      Templates/ 
.config/   Desktop/   Downloads/ .mozilla/  Pictures/  Public/    Videos/

[root@CentOS8 ~]# *
Desktop    Documents  Downloads  Music      Pictures   Public     Templates  Videos

[root@CentOS8 ~]# ~
~adm/                 ~gdm/                 ~postfix/             ~sssd/
~avahi/               ~geoclue/             ~pulse                ~sync/
~bin/                 ~gluster              ~qemu/                ~systemd-coredump/
~chrony/              ~gnome-initial-setup  ~radvd/               ~systemd-resolve/
~clevis               ~halt/                ~root/                ~tcpdump/
~cockpit-ws           ~libstoragemgmt/      ~rpc/                 ~tss
~colord/              ~lp/                  ~rpcuser/             ~unbound/
~daemon/              ~mail/                ~rtkit/               ~usbmuxd/
~dbus/                ~nobody/              ~saslauth             ~zc/
~dnsmasq/             ~operator/            ~setroubleshoot/      
~ftp/                 ~pipewire             ~shutdown/            
~games/               ~polkitd/             ~sshd/     

[root@CentOS8 ~]# $
$_                                   $HISTSIZE
$_backup_glob                        $HOME
$BASH                                $HOSTNAME
$BASH_ALIASES                        $HOSTTYPE
$BASH_ARGC                           $IFS
$BASH_ARGV                           $LANG
$BASH_CMDS                           $LESSOPEN
$BASH_COMMAND                        $LINENO
$BASH_COMPLETION_VERSINFO            $LINES
$BASH_LINENO                         $LOGNAME
$BASHOPTS                            $LS_COLORS
$BASHPID                             $MACHTYPE
$BASHRCSOURCED                       $MAIL
$BASH_REMATCH                        $MAILCHECK
$BASH_SOURCE                         $OPTERR
$BASH_SUBSHELL                       $OPTIND
$BASH_VERSINFO                       $OSTYPE
$BASH_VERSION                        $PATH
--More--

1.11 命令行历史

当执行命令后,系统默认会在内存记录执行过的命令
当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是 ~/.bash_history
登录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@CentOS8 ~]# cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
[root@CentOS8 ~]# history
    1  ip a
    2  ping 10.0.0.6
    3  date
    4  ls
    5  ls-a
    6  ip -a
    7  ip a

1.12 调用命令行历史

#重复前一个命令方法   
  重复前一个命令使用上方向键,并回车执行   
  按 !! 并回车执行 
  输入 !-1 并回车执行 
  按 Ctrl+p 并回车执行
!:0     执行前一条命令(去除参数)   
!n      执行history命令输出对应序号n的命令   
!-n     执行history历史中倒数第n个命令   
!string 重复前一个以“string”开头的命令
!?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.13 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 + # 提示输入指定字符后,重复显示该字符#次

注意:Alt组合快捷键经常和其它软件冲突
例如在xshell中需要启动 alt 键

2 获得帮助

获取帮助的能力决定了技术的能力!
多层次的帮助

  • whatis
  • command --help
  • man and info
  • /usr/share/doc/
  • Red Hat documentation 、Ubuntu documentation
  • 软件项目网站
  • 其它网站
  • 搜索

2.1 whatis

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

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

范例:

[root@CentOS8 yum.repos.d]# whatis cal
cal (1)              - display a calendar
cal (1p)             - print a calendar

[root@CentOS8 yum.repos.d]# man -f cal
cal (1)              - display a calendar
cal (1p)             - print a calendar

2.2 查看命令的帮助

内部命令:

  • help COMMAND
  • man bash

范例:

[root@CentOS8 yum.repos.d]# type history
history is a shell builtin
[root@CentOS8 yum.repos.d]# 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 modified
    entry 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 position OFFSET.
    
      -a	append history lines from this session to the history file
      -n	read all history lines not already read from the history file
    		and append them to the history list
      -r	read the history file and append the contents to the history
    		list
      -w	write the current history to the history file
    
      -p	perform history expansion on each ARG and display the result
    		without storing it in the history list
      -s	append the ARGs to the history list as a single entry
    
    If 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 used
    as a format string for strftime(3) to print the time stamp associated
    with 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
  • 发行版的官方文档
  • (7) Google

2.3 --help 或 -h 选项

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

2.4 man 命令

man 提供命令帮助的文件,手册页存放在/usr/share/man
几乎每个命令都有man的“页面”
中文man需安装包

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

man 页面分组为不同的“章节”,统称为Linux手册,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

man命令的操作方法:使用less命令实现

  • space, ^v, ^f, ^F: 向文件尾翻屏
  • b, ^b: 向文件首部翻屏
  • d, ^d: 向文件尾部翻半屏
  • u, ^u: 向文件首部翻半屏
  • RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行
  • y or ^Y or ^P or k or ^K:向文件首部翻一行
  • q: 退出
  • “#”:跳转至第#行
  • 1G: 回到文件首部
  • G:翻至文件尾部
  • /KEYWORD
    以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写
    n:下一个
    N:上一个
  • ?KEYWORD
    以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写
    n:跟搜索命令同方向,下一个
    N:跟搜索命令反方向,上一个

2.5 info

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

info [ 命令 ]

导航info页

  • 方向键,PgUp,PgDn 导航

  • Tab键 移动到下一个链接

  • d 显示主题目录

  • Home 显示主题首部

  • Enter进入 选定链接

  • n/p/u/l 进入下/前/上一层/最后一个链接

  • s 文字 文本搜索

  • q 退出 info

2.6 Linux 安装提供的本地文档获取帮助

Applications -> documentation->help(centos7)
System->help(centos6)

2.7 命令自身提供的官方使用指南

/usr/share/doc 目录
多数安装了的软件包的子目录,包括了这些软件的相关原理说明
常见文档:README INSTALL CHANGES
不适合其它地方的文档的位置
配置文件范例
HTML/PDF/PS 格式的文档
授权书详情

你可能感兴趣的:(Linux 基础入门)