Linux文件系统基础命令

1.1 Linux文件系统概念

  • 操作系统中负责管理和存储文件信息的软件机构称为文件管

    理系统,简称文件系统:

  • 文件系统的结构通常叫做目录树结构,从斜杠/根目录开始:

  • Liux号称”万物皆文件”,意味着针对Liux的操作,大多数时间是在针对Linux文件系统操作。

image-20230109132526566

1.2 文件系统的通用性

  • 几乎主流的文件系统都是从/根目录开始的,Liux也不例外,而windows,文件系统会以盘符来区分不同文件系统;
  • 目录树中节点分为两个种类:目录(directory)、文件(file);
  • 从根目录开始,路径具有唯一性:
  • 只有在目录下才可以继续创建下一级目录,换句话说目录树到文件终止蔓延。

1.3 易混概念

  • 当前路径:也叫当前工作目录,当下用户所属的位置:
  • 相对路径:相对当前工作目录开始的路径,会随当前路径变化而变化:
  • 绝对路径:不管工作目录在哪,绝对路径都是从/根目录开始,唯一不重复。

image-20230109132856954

1.4 特殊符号

  • . 目录或者文件名字以开始表示是隐藏的文件,如果路径以.开始表示当前路径
  • .. 当前目录的上一级目录
  • ~ 当前用户的home目录,比如root用户home目录是/root
  • / 根目录
1
2
3
4
5
6
7
8
9
10
# 进入当前目录下的a
cd ./a
# 进入根目录下的a
cd /a
# 进入当前目录上一级下的a
cd ../a
# 进入当前操作用户home目录下的a
cd ~/a
# 进入当前目录下的a a是隐藏的
cd .a

1.5 Linux 命令帮助手册

  • help命令

image-20230109133251050

  • man命令

image-20230109133324255

Linux基础命令

1.1 概述

  • 命令属于死东西,属于多用多会,不用就忘的知识,孰能生巧;
  • Tab键可以实现自动补全和提示,要合理使用;
  • history命令可以显示历史执行记录,或者使用方向键来切换前后执行过的命令;

1.2 显示目录内容

  • Is (list files)命令:用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
  • -a 显示所有文件及目录(开头的隐藏文件也会列出)
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等详细列出
1
2
3
4
5
s path
ls -a path # 查看所有文件 包括隐藏文件
ls -l =ll # 查看文件详细信息 包括权限 类型 时间 大小等
ll -h path # 表示以人性化的显示内容
ll * # *通配符表示任意字符 ?表示有且只有一个字符

1.3 切换目录

  • cd(change directory)命令:用于切换当前工作目录。切换的路径可为绝对路径或相对路径。若路径省略,则 变换至使用者的home目录 。

  • ~ 也表示为home目录的意思

  • . 则是表示目前所在的目录

  • . .则表示目前目录位置的上一层目录

1
2
3
4
5
6
7
pwd #查看自己当前所在目录
cd path #注意自己写的是相对还是绝对的 还可以结合特殊符
号使用
cd ./
cd /
cd ../
cd ~

1.4 创建 删除

  • mkdir(make directory)命令:用于创建目录。
    • -p 确保父目录名称存在,不存在的就建一个。
  • touch 命令:创建一个空文件,无任何内容。
  • rm(remove)命令:用于删除一个文件或者目录。
    • -f 强制直接删除,无需用户确认。
    • -r 将目录及以下所有递归逐一删除。
1
2
3
4
5
6
7
8
9
10
[root@node1 ~]# mkdir /a/b/c
mkdir: cannot create directory ‘/a/b/c’: No such file or directory
[root@node1 ~]# mkdir -p /a/b/c
[root@node1 ~]# rm -rf /a/b/c
[root@node1 ~]# rm -rf /a
-f #强制删除 不给与提示
-r #递归删除 针对文件夹
-rf #杀伤力极大 问问自己在干什么
坐牢眼:rm -rf /*

1.5 复制与移动

  • cp(copy file)命令:用于复制文件或目录。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • mv(move file)命令:用来为文件或目录改名、或将文件或目录移入其它位置
1
2
3
4
5
cp [options] source... directory
mv source_file(文件) dest_file(文件) #将源文件名 source_file 改为目标文件名 dest_file
mv source_file(文件) dest_directory(目录) #将文件 source_file 移动到目标目录 dest_directory中
mv source_directory(目录) dest_directory(目录) #目录名 dest_directory 已存在,将source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则source_directory 改名为目录名 dest_directory
mv source_directory(目录) dest_file(文件) #出错

1.6 文件内容查看

  • cat(concatenate)命令:用于连接文件并打印到标准输出设备如console控制台上。适合小文件内容查看。
  • more 命令:类似cat,不过会以一页一页的形式显示,更方便使用者逐页阅读,翻页结束自动退出。适合大文件 查看。按space键翻下一页,按b往回(back)上一页
  • tail 命令:用于查看文件的结尾部分的内容。
    • -n 用于显示行数,默认为10,即显示 10 行的内容。
    • -f 用于实时显示文件动态追加的内容。会把文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 文件有更新,就可以看到最新的文件内容

1.7 其他

  • | 管道命令:将前一个命令执行的结果作为内容交给下一个命令处理。可以形成多级管道操作。 命令1|命令2 可以将命令1的结果通过命令2作进一步的处理
  • echo 命令:用于内容的输出,将内容输出到console控制台上。 echo string
1
2
3
4
5
6
7
8
9
10
root@node1 ~]# ls
1.txt anaconda-ks.cfg hello lrzsz-0.12.20.tar.gz test test.file
[root@node1 ~]# ls | grep ^t
test
test.file
#相当于print 将内容输出console控制台
[root@node1 test]# echo 111
111
[root@node1 test]# echo "hello "
hello
  • > 输出重定向(覆盖)命令 command > file 执行command然后将输出的内容存入file,file内已经存在的内容将被新内容覆盖替代

  • >> 输出重定向(追加)命令 command >> file 执行command然后将输出的内容存入file,新内容追加在文件末尾。

1
2
3
4
5
6
7
8
9
10
[root@node1 test]# echo 111 > 4.txt
[root@node1 test]# cat 4.txt
111
[root@node1 test]# echo 222 > 4.txt
[root@node1 test]# cat 4.txt
222
[root@node1 test]# echo 333 >> 4.txt
[root@node1 test]# cat 4.txt
222
333

1.8 解压命令

​ tar(tape archive )命令:常用于备份文件。是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内 的文件。

  • -c 或–create 建立新的备份文件。
  • -x 或–extract或–get 从备份文件中还原文件。
  • -v 或–verbose 显示指令执行过程。
  • -f <备份文件>或–file=<备份文件> 指定备份文件。
1
2
3
4
5
6
7
8
9
10
11
# tar cvf 打包名.tar 文件或者目录
[root@node1 test]# ll
-rw-r--r-- 1 root root 0 Aug 10 19:27 1.txt
-rw-r--r-- 1 root root 0 Aug 10 19:27 2.txt
[root@node1 test]# tar -cvf test.tar 1.txt 2.txt
1.txt
2.txt
[root@node1 test]# ll
-rw-r--r-- 1 root root 10240 Aug 10 19:28 1.txt
-rw-r--r-- 1 root root 0 Aug 10 19:27 2.txt
-rw-r--r-- 1 root root 20480 Aug 10 19:28 test.tar
1
2
3
4
5
6
7
8
9
root@node1 test]# ll
-rw-r--r-- 1 root root 20480 Aug 10 19:28 test.tar
[root@node1 test]# tar xvf test.tar
1.txt
2.txt
[root@node1 test]# ll
-rw-r--r-- 1 root root 10240 Aug 10 19:28 1.txt
-rw-r--r-- 1 root root 0 Aug 10 19:27 2.txt
-rw-r--r-- 1 root root 20480 Aug 10 19:28 test.tar

​ 在打包备份或者解包的过程中,可以通过指定压缩算法,对打包的文件进行压缩,解压的时候也需要指定相应的算法。

  • -z 或–gzip或–ungzip 通过gzip指令处理备份文件

  • 重要的搭配: tar -zxvf xxxxx.tar.gz

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@node1 test]# ll
-rw-r--r-- 1 root root 10240 Aug 10 19:28 1.txt
-rw-r--r-- 1 root root 0 Aug 10 19:27 2.txt
[root@node1 test]# tar zcvf test.tar.gz 1.txt 2.txt
[root@node1 test]# tar zcvf test.tgz 1.txt 2.txt
[root@node1 test]# ll
-rw-r--r-- 1 root root 10240 Aug 10 19:28 1.txt
-rw-r--r-- 1 root root 0 Aug 10 19:27 2.txt
-rw-r--r-- 1 root root 142 Aug 10 19:35 test.tar.gz
-rw-r--r-- 1 root root 142 Aug 10 19:35 test.tgz


[root@node1 test]# tar zxvf test.tar.gz #解压到当前目录
1.txt
2.txt
[root@node1 test]# tar zxvf test.tar.gz -C /root/ #-C参数
可以设定解压到指定目录
1.txt
2.txt

Linux系统常用命令

1.1 时间日期查看

  • date命令:用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号 后接数个标记。
  • cal(calendar)命令:用于用于显示当前或者指定日期的公历。
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@node1 linux02]# date
Tue May 18 14:44:13 CST 2021
[root@node1 linux02]# date +"%Y-%m-%d %H:%M:%S"
2021-05-18 14:44:53
[root@node1 linux02]# cal
May 2021
Su Mo Tu We Th Fr Sa
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

1.2 内存、磁盘使用率查看

  • free命令:用于显示内存状态。会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以 及系统核心使用的缓冲区等。
  • df(英文全拼:disk free)命令:用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@node1 linux02]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 38G 1.5G 36G 5% / #重点关注这一行
/dev/sda1 1014M 152M 863M 15% /boot
/dev/mapper/centos-home 19G 33M 19G 1% /home
tmpfs 378M 0 378M 0% /run/user/0
tmpfs 378M 0 378M 0% /run/user/1000
#内存使用情况
[root@node1 linux02]# free -h
total used free shared buff/cache available
Mem: 3.7G 257M 3.0G 11M 467M 3.2G
Swap: 3.9G 0B 3.9G

1.3 vi/vim文本编辑器

1.3.1 简介

  • vi是一款很多unix及其延伸系统内置的文本编辑器,具有强大的文本编辑能力。
  • vim是从vi发展出来的一个文本编辑器,可以理解为vi编辑器的增强版。vim中代码补完、编译及错误跳转等方便编 程的功能特别丰富
  • vi/vim编辑器的核心设计思想:让程序员的手指始终保持在键盘的核心区域, 就能完成所有的编辑操作。
  • 学习使用vi/vim编辑器最大挑战:万物皆命令

1.3.2 打开与新建文件

1
vim /path/file
  • 如果打开的文件不存在,此时就是新建文件,编辑器左下角会提示new file
  • 如果文件已经存在,此时就打开这个文件,进入命令模式

1.3.3 vim编辑器的3种编辑器

  • 命令模式(Command mode) 命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。 此模型下,不能自由进行文本编辑。

  • 输入模式(Insert mode) 也就是所谓的编辑模式、插入模式。 此模式下,才可以对文件内容进行自由编辑。

  • 底线命令模式(Last line mode) 以:开始,通常用于文件的保存、退出。

image-20230109140922378

1.3.4 输入模式

  • i 进入到编辑输入模式后,定位到当前光标前面

  • o 进入到编辑输入模式后,在当前行的后面添加一行空行(当前行的下一行)

  • 输入模式下按ESC退回到命令模式

1.3.5 底线模式

  • 在命令模式下,输入:进入底线命令模式。

  • 常用的底线命令有:

    • :q 退出 :w 保存
    • :wq 保存退出
    • :wq! 强制保存退出
  • 在命令模式下按下shift + zz,可以实现快速的保存退出。

1.3.6 光标移动

  • 方向键控制移动
  • 翻页 pageup pagedown
  • 行首(home 0) 行尾(end $)
  • 跳到文件的最后一行 G
  • 跳到文件的第一行 gg

1.3.7 复制 粘贴

  • 复制

    • yy 复制光标当前所在行内容

    • nyy 复制当前行往下n行

  • 粘贴

    • p 当前行的下一行粘贴
    • P 当前行的上一行粘贴

注意:使用鼠标从window或者其他地方复制内容到vim编辑器粘贴,一定一定要在输入模式下进行,否则数据会有丢 失的风险

1.3.8 删除 撤销

  • 删除命令

    • dd 删除光标所在当前行内容
    • ndd 删除当前行往下n行
  • 撤销

    • u 撤销上一步的操作(后悔药)
    • ctrl+r 反撤销