Linux之系统操作篇

连接服务器

  • mac/linux系统,在终端执行命令

    1
    ssh -p22 username@host

    密码输入时看不到内容

    image-20210309105350976

  • Windows系统,推荐下载Xshell

    image-20210309105620435

帮助命令

为什么要学习帮助命令

  • Linux的基本操作方式是命令行
  • 海量的命令不适合“死记硬背”
  • 通过使用帮助命令查看命令的具体使用

man

  • man是manual的缩写

  • 使用演示

    1
    2
    # 查看ls命令的帮助文档
    [root@linux lvjing]# man ls
  • man也是一条命令,也可使用man命令获得man的帮助,man分为9个篇章

    1
    2
    3
    4
    5
    # 查看man的帮助命令
    [root@linux lvjing]# man man

    # 查看man第7个篇章的命令
    [root@linux lvjing]# man 7 man

    命令的描述里面会讲解命令有多少章节,根据指定的章节查看命令的不同章节的说明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 目前有如下情况,passwd在Linux中存在命令和配置文件
    [root@linux etc]# ll /etc/ | grep passwd
    -rw-r--r-- 1 root root 1561 6月 29 17:03 passwd

    [root@iZ2ze0gzw63rkie6uwjs74Z ~]# passwd
    更改用户 root 的密码 。
    新的 密码:

    # 上述情况我们如何查询passwd的帮助文档,查询是命令,还是帮助文档呢?从man命令详解可知,不同章节可查不同形式的命令
    # 对命令查看
    [root@linux etc]# man 1 passwd

    # 对配置文件查看
    [root@linux etc]# man 5 passwd

    # 如果只知道passwd关键字,不知道passwd是命令还是配置文件,如下命令查看
    [root@linux lvjing]# man -a passwd

    man的章节描述

    image-20201023113317202

help

  • shell(命令解释器)自带的命令成为内部命令,其他的是外部命令

  • 内部命令使用help帮助

    1
    2
    3
    4
    5
    # 使用type查看命令是内部还是外部
    [root@linux lvjing]# type cd
    cd 是 shell 内建

    [root@linux lvjing]# help cd
  • 外部命令使用help帮助

    1
    2
    3
    4
    5
    # 使用type查看命令是内部还是外部
    [root@linux lvjing]# type ls
    ls 是 `ls --color=auto' 的别名

    [root@linux lvjing]# ls --help

info

  • info帮助比help更相信,作为help的补充

    1
    [root@linux lvjing]# info ls

文件管理命令

文件也可以理解为数据,在 Linux 环境下有一个很基本的设计原则,即 Everything is file(一切皆文件),所有的内容都是以文件的形式来进行抽象的,比如:进程、网络、硬件等,都可以抽象成文件,可以对其进行打开、读取、写入等操作。

文件查看

pwd

  • 显示当前的目录名称

    • / 根目录
    • /root root用户的家目录
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [root@linux ~]# pwd
    /root
    [root@linux ~]# pwd --help
    pwd: pwd [-LP]
    打印当前工作目录的名字。

    选项:
    -L 打印 $PWD 变量的值,如果它包含了当前的工作目录
    -P 打印当前的物理路径,不带有任何的符号链接

    默认情况下,`pwd' 的行为和带 `-L' 选项一致

    退出状态:
    除非使用了无效选项或者当前目录不可读,否则返回状态为0。

cd

  • 更改当前的操作目录

    • cd /path/to/… 绝对路径,从根目录开始,切换到指定的目录
    • cd ./path/to/… 相对路径,从当前目录开始,切换到指定的目录
    • cd ../path/to/… 相对路径,从当前目录开始,切换到上一级目录/指定的上一级目录
    • cd - 回到之前的目录
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 目录切换演示
    [root@linux /]# ls /etc/sysconfig/network-scripts/
    ifcfg-eth0
    [root@linux /]# cd /etc/sysconfig/network-scripts/
    [root@linux network-scripts]# pwd
    /etc/sysconfig/network-scripts
    [root@linux network-scripts]# ls
    ifcfg-eth0
    [root@linux network-scripts]# cd -
    /

ls

  • 查看当前目录下的文件
    • ls [选项,选项…] 参数 …
  • 常用参数:
    • -l 长格式显示文件
    • -a 显示隐藏文件
    • -r 逆序显示(以文件名)
    • -t 按照时间顺序显示
    • -R 递归显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 查看根目录下的文件
[root@linux ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

# 查看多个目录,注意:空格分隔
[root@linux ~]# ls /root /

# -l 长格式显示文件,显示根目录下的文件 ls -l . 后面的点表示当前目录
[root@linux /]# ls -l
总用量 24
lrwxrwxrwx. 1 root root 7 5月 11 2019 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 2月 18 2020 boot
drwxr-xr-x 19 root root 2940 6月 30 09:15 dev
drwxr-xr-x. 100 root root 8192 9月 17 12:31 etc
drwxr-xr-x. 5 root root 45 6月 29 17:03 home
lrwxrwxrwx. 1 root root 7 5月 11 2019 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 5月 11 2019 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 5月 11 2019 media
drwxr-xr-x. 2 root root 6 5月 11 2019 mnt
drwxr-xr-x. 4 root root 43 6月 29 23:11 opt
dr-xr-xr-x 219 root root 0 6月 30 09:15 proc
dr-xr-x---. 8 root root 4096 9月 17 16:52 root
drwxr-xr-x 32 root root 960 6月 30 09:31 run
lrwxrwxrwx. 1 root root 8 5月 11 2019 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 5月 11 2019 srv
dr-xr-xr-x 13 root root 0 6月 30 17:15 sys
drwxrwxrwt. 3 root root 118 10月 19 16:53 tmp
drwxr-xr-x. 12 root root 144 2月 18 2020 usr
drwxr-xr-x. 21 root root 4096 2月 18 2020 var

# -a 显示隐藏文件,文件名前有个点就表示隐藏文件
[root@linux /]# ls -a
. .autorelabel boot etc lib media opt root sbin sys usr
.. bin dev home lib64 mnt proc run srv tmp var

# 以文件名逆向显示
[root@iZ2ze0gzw63rkie6uwjs74Z /]# ls -lr
总用量 24
drwxr-xr-x. 21 root root 4096 2月 18 2020 var
drwxr-xr-x. 12 root root 144 2月 18 2020 usr
drwxrwxrwt. 3 root root 147 10月 19 16:58 tmp
dr-xr-xr-x 13 root root 0 6月 30 17:15 sys
drwxr-xr-x. 2 root root 6 5月 11 2019 srv
lrwxrwxrwx. 1 root root 8 5月 11 2019 sbin -> usr/sbin
drwxr-xr-x 32 root root 960 6月 30 09:31 run
dr-xr-x---. 8 root root 4096 9月 17 16:52 root
dr-xr-xr-x 221 root root 0 6月 30 09:15 proc
drwxr-xr-x. 4 root root 43 6月 29 23:11 opt
drwxr-xr-x. 2 root root 6 5月 11 2019 mnt
drwxr-xr-x. 2 root root 6 5月 11 2019 media
lrwxrwxrwx. 1 root root 9 5月 11 2019 lib64 -> usr/lib64
lrwxrwxrwx. 1 root root 7 5月 11 2019 lib -> usr/lib
drwxr-xr-x. 5 root root 45 6月 29 17:03 home
drwxr-xr-x. 100 root root 8192 9月 17 12:31 etc
drwxr-xr-x 19 root root 2940 6月 30 09:15 dev
dr-xr-xr-x. 5 root root 4096 2月 18 2020 boot
lrwxrwxrwx. 1 root root 7 5月 11 2019 bin -> usr/bin

注意:权限#是root权限,$是普通用户,普通用户查看文件会报

1
2
# root用户切换
[root@linux ~]$ su - root

创建文件

touch

  • 创建一个空白文件

创建和删除目录

mkdir

  • 建立目录
  • 常用参数
    • -p 建立多级目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 在根目录创建a目录
[root@linux lvjing]# mkdir /a
[root@linux lvjing]# cd /
[root@linux /]# ls
a boot etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var

# 在当前目录创建a目录
[root@linux lvjing]# mkdir a
[root@linux lvjing]# ls
a calculate.sh example.sh jenkins my.cnf passwd

# 在当前目录同时创建b c d e四个目录
[root@linux lvjing]# mkdir b c d e
[root@linux lvjing]# ls
a calculate.sh e jenkins passwd
b c d example.sh my.cnf

# 创建已存在的目录
[root@linux lvjing]# mkdir a
mkdir: 无法创建目录 “a”: 文件已存在

# 创建多级目录,第一种方式
[root@linux lvjing]# mkdir /a
[root@linux lvjing]# mkdir /a/b
[root@linux lvjing]# cd /
[root@linux /]# ls /a
b

# 创建多级目录,第二种方式
[root@linux lvjing]# mkdir -p /d/e/f
[root@linux lvjing]# cd /
[root@linux /]# ls /d
e

# 查看多级目录
[root@linux /]# ls -R /d
/d:
e

/d/e:
f

/d/e/f:

rmdir

  • 删除空目录

    1
    2
    3
    4
    5
    6
    # 删除空目录
    [root@linux /]# rmdir a

    # 删除非空目录
    [root@linux /]# rmdir /d
    rmdir: 删除 '/d' 失败: 目录非空

    rm

  • 删除文件或目录

  • 常用参数

    • -r 递归地删除(包括目录下的所有文件)
    • -f 删除文件不进行提示
  • 注意:因为在终端中没有回收站或垃圾箱。如果用 rm 命令删除了文件,那可没后悔药吃,一般比较难恢复(还是有办法可以恢复的,只是挺麻烦)。

1
2
3
4
5
6
7
8
9
# 删除非空目录,一级一级的提示删除目录
[root@linux /]# rm -r /d
rm:是否进入目录'/d'? y
rm:是否进入目录'/d/e'? y
rm:是否删除目录 '/d/e/f'?y
rm:是否删除目录 '/d/e'?y
rm:是否删除目录 '/d'?y


  • rm -rf 删除非空不提示命令(该命令慎重使用)

复制和移动目录

cp

  • 复制文件和目录
    • cp [选项] 文件路径
    • cp [选项] 文件… 路径
  • 常用参数
    • -r 复制目录
    • -p 保留用户、权限、时间等文件属性
    • -a 等同于-dpR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 复制目录
[root@linux /]# cp /a /tmp/
cp: 未指定 -r;略过目录'/a'
[root@linux /]# cp -r /a /tmp/
[root@linux /]# cd /tmp/
[root@linux tmp]# ls
a

# 复制文件
[root@linux /]# touch filea
[root@linux /]# cp filea /tmp/
[root@linux /]# cd tmp/
[root@linux tmp]# ls
filea

# 复制文件显示详情
[root@linux /]# cp -v filea /tmp/
'filea' -> '/tmp/filea'

# 复制文件发生了时间变化
[root@linux /]# ls -l /filea
-rw-r--r-- 1 root root 0 10月 24 09:25 /filea
[root@linux /]# cp filea /tmp/
[root@linux /]# ls -l /tmp/filea
-rw-r--r-- 1 root root 0 10月 24 09:27 /tmp/filea

# 复制文件保留时间
[root@linux /]# ls -l filea
-rw-r--r-- 1 root root 0 10月 24 09:25 filea
[root@linux /]# cp -p filea /tmp/
[root@linux /]# ls -l /tmp/filea
-rw-r--r-- 1 root root 0 10月 24 09:25 /tmp/filea

mv

  • 移动文件/文件重命名
    • mv [选项] 源文件 目标文件
    • mv [选项] 源文件 目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 文件重命名
[root@linux /]# mv filea fileb
[root@linux /]# ls
bin dev fileb lib media opt root sbin sys usr
boot etc home lib64 mnt proc run srv tmp var

# 文件移动
[root@linux /]# mv fileb /tmp/
[root@linux /]# ls -l tmp/
总用量 0
-rw-r--r-- 1 root root 0 10月 24 09:25 fileb

# 文件移动并重命名
[root@linux tmp]# mv fileb /filec
[root@linux tmp]# cd ..
[root@linux /]# ls
bin dev filec lib media opt root sbin sys usr
boot etc home lib64 mnt proc run srv tmp var

通配符

  • 定义:shell内建的符号
  • 用途:操作多个相似(有简单规律)的文件
  • 常用通配符
    • *匹配任何字符串
    • ?匹配1个字符串
    • [xyz]匹配xyz任意一个字符
    • [a-z]匹配一个范围
    • [!xyz][^xyz]不匹配

文本查看

cat

  • 一次性将文本内容显示到终端
  • 常用参数
    • -n 文件内容显示行号

less

  • 分页显示文件内容
  • less 命令中最基本最常用的快捷键
    • 空格键:文件内容读取下一个终端屏幕的行数,相当于前进一个屏幕(页)。很常用的快捷键。与键盘上的 PageDown(下一页)效果一样;
    • 回车键:文件内容读取下一行,也就是前进一行,与键盘上的向下键效果是一样的;
    • d 键:前进半页(半个屏幕);
    • b 键:后退一页,与键盘上的 PageUp(上一页)效果一样;
    • y 键:后退一行,与键盘上的向上键效果是一样的;
    • u 键:后退半页(半个屏幕);
    • q 键:停止读取文件,中止 less 命令。
    • = 号:显示你在文件中的什么位置(会显示当前页面的内容是文件中第几行到第几行,整个文件所含行数,所含字符数,整个文件所含字符);
    • h 键:显示帮助文档,按 q 键退出帮助文档;
    • /(斜杠):进入搜索模式,只要在斜杠后面输入你要搜索的文字,按下回车键,就会把所有符合的结果都标识出来。要在搜索所得结果中跳转,可以按 n 键(跳到下一个符合项目),N 键(shift 键 + n。跳到上一个符合项目)。当然了,正则表达式(Regular Expression)也是可以用在搜索内容中的。这里我们就不细说什么是正则表达式了,有兴趣可以 百度 / Google 看看;
    • n 键:跳到下一个符合的搜索结果;
    • N 键:跳到上一个符合的搜索结果。
  • 查看文件开头,默认情况下显示文件的前10 行
  • 常用参数
    • -n 指定显示的行数,从文件的前开始

tail

  • 查看文件结尾,默认情况下显示文件的后10 行
  • 常用参数
    • -n 指定显示的行数,从文件的尾开始
    • -f 实时追踪文件的更新

wc

  • 统计文件内容信息
  • 常用参数
    • -l 只显示行数
    • -w 只显示字数
    • -c或–bytes或–chars 只显示Bytes数
  • 用法提示:查看一个文件,使用什么命令好呢?可使用wc -l查看一下文件有多少行,如果行数少可使用cat命令一次性显示文本内容,如果行数较多,则使用less命令进行分页显示文本内容。