前言

在云计算和容器技术普及的今天,无论上层技术栈如何更迭,Linux内核始终是绝大多数服务器运行的基石。无论是管理云主机,调试Docker容器,还是排查Kubernetes集群的节点问题,最终都要落到对操作系统本身的理解和操作上。这篇博客会从Linux目录结构入手,带你理清系统文件放在哪里、各自有什么用,同时通过ls、cat、touch等常用命令的练习,配合vim编辑器的基本使用以及软硬链接的区分,把日常最频繁接触的这些操作过一遍。我的博客主要分享云计算运维相关的内容,涵盖Linux、Docker、Kubernetes等技术,希望能帮到在这个领域深耕或入门的你,也欢迎持续关注,后续会逐步深入更系统的实战话题。

一、Linux Bash是什么?

Bash全称是Bourne Again Shell,是绝大多数Linux发行版和MacOS默认使用的命令行解释器(Shell)。你可以把它理解成操作系统的“翻译官”——它接收你敲入的命令,翻译给内核去执行,再把执行结果返回给你。简单说,你打开终端窗口看到的光标提示符,背后跑的就是Bash。
具体来说,Bash承担这几个核心的角色:
命令执行器: 你输入的ls、cd、mkdir等命令,都由它解析并调用系统程序执行。
**编程语言解释器:**支持变量、条件判断(if)、循环(for)、函数等,你可以把一系列命令写成脚本(.sh
**交互式环境:**提供历史记录(方向键翻命令)、命令补全(按Tab键)、别名(alias)等便捷功能,能提升日常操作效率。

二、Linux系统目录结构

1.FHS(Filesystem Hierarchy Standard)

在这里插入图片描述

文件层级结构标准,是Linux及类Unix操作系统中关于文件目录结构的核心规范,由Linux基金会维护。其主要目的是通过统一目录布局和命名规则,提高不同发行版之间的兼容性,并简化应用软件的部署与系统管理。

2.关键目录速查

目录 用途
/ 根目录,问价你行的顶层挂载点,其他所有目录均是该目录的子目录
/bin、/sbin、/lib 系统启动和单用户模式(root)所需的基础命令、系统管理工具及共享库。
/usr 系统主要软件和共享数据的存放位置,用于安装各种应用程序
/etc 存放系统各种配置文件和子目录
/home、/root 前者为普通用户的家目录,后者为超级用户的个人目录,普通用户没有访问权限
/var 运行时可变数据,如日志(/var/log)、缓存(/var/cache)、假脱机队列(/var/spool)
/boot 存放启动时所需的文件,引导加载程序,这些文件若损坏常会导致系统无法启动,一般不要改动
/dev 包含所有系统文件
/proc、/sys 内核与进程信息的虚拟文件系统,不存储物理磁盘
/opt 第三方应用软件包的安装目录,例如Sun Straroffice、Corel WordPerfect,这可避免将文件分散至整个文件系统
/srv server简写,服务启动后需要访问的数据目录
/tmp 用来存放不同程序执行时产生的临时文件,重启后通常被清空
/run 保存自系统启动以来描述系统信息的文件

3.怎么切换目录

cd 路径

“路径”表示某个目录层次到达某一文件或子目录的一条线路,路径由以“/”分隔符的多个目录名组成。分为相对路径和绝对路径。

  • 绝对路径:以“/”根目录为起点来表示系统中某个文件(或目录)的位置的方式。
  • 相对路径:以当前目录为起点,表示系统中某个文件或目录在目录结构中的位置的方式。
    例:
#查看用户当前所在位置
[root@server1~]# pwd 
/root
#切换到根目录
[root@server1~]# cd / 
[root@server1/]# cd ~
[root@server1~]# pwd
/root
#返回至当前目录的上一级目录
[root@server1~]# cd .. 
#切换至之前目录
[root@server1/]# cd - 
/root
#切换至当前目录
[root@server1~]# cd . 
[root@server1~]#

三、Linux文件管理

1、stat命令查看文件详细信息

[root@server1~]# stat /usr/src
File: ‘/usr/src’
  Size: 34              Blocks: 0          IO Block: 4096   directory #目录,文件类型
Device: fd00h/64768d    Inode: 67163975    Links: 4
Access: (0755/drwxr-xr-x) #权限 Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-06-14 15:36:49.001083212 +0800
Modify: 2026-06-12 14:19:35.668485078 +0800
Change: 2026-06-12 14:19:35.668485078 +0800
 Birth: -

· Access(访问时间):最近一次读取文件时间。
· Modify (修改时间):最近一次内容被修改的时间。
· Change(状态变更时间):最近一次元数据(如权限、所有者)被修改的时间。
· Links:硬链接数。
· UID:用户ID
· GID: 组ID
· I0 Block: 块大小

2、Linux元数据以及权限类型

元数据:文件背后的详细信息,谁拥有这个文件、属于哪个组,权限规则,时间戳,文件大小,硬链接数,数据存在硬盘的哪个位置,都属于元数据。元数据存储在文件inode(索引节点)中用stat命令可看全貌。
Linux权限模型分为基础权限和特殊权限 。

<1>基础权限:

·r(读): 文件可读,目录可列出文件列表。
·w(写): 文件可改,目录可增删文件。
·x(执行): 文件可作为程序运行,目录可被进入。

<2>特殊权限:

·SUID(4): 执行时临时拥有文件所有者权限。典型如passwd命令,让普通用户能临时以root身份修改密码文件。
·SGID(2): 执行时临时拥有文件所属组权限;若设置在目录,则其中新建文件自动继承该目录的属组。
·Sticky Bit(1): 防删位。常见于/tmp,用户在此目录下只能删除自己的文件。

3、Linux文件类型——查看方法ll第一个字母

第一个字符 文件类型
- 普通文件
d 目录文件
c 字符设备文件
b 块设备文件
p 管道文件
s 套接字文件
l 符号链接又称软链接,和原文件不是一个文件
例:
[root@server1 ~]# ll /dev/random
crw-rw-rw- 1 root root 1, 8 Jun 25 09:21 /dev/random
[root@server1 ~]# ll /etc/fstab
-rw-r--r--. 1 root root 465 Jun 12 14:19 /etc/fstab
[root@server1 ~]# ll /dev/sda1
brw-rw---- 1 root disk 8, 1 Jun 25 09:21 /dev/sda1
[root@server1 ~]# ll /tmp
total 0
drwx------ 3 root root 17 Jun 20 15:03 systemd-private-3fc10ceaad664d6ab8e615e86ad69293-chronyd.service-KHD3nJ
drwx------ 3 root root 17 Jun 20 09:51 systemd-private-6cd5388615da474498124e9ccf756b85-chronyd.service-Ch9yV2
drwx------ 3 root root 17 Jun 25 09:21 systemd-private-8387bc028166450dbc3cb451ea342c6f-chronyd.service-ecMDvJ
drwx------ 3 root root 17 Jun 23 16:12 systemd-private-d8e9debf0ca7404b890a8c4398523dd5-chronyd.service-1wrUbm
[root@server1 ~]# ll /bin
lrwxrwxrwx. 1 root root 7 Jun 12 14:19 /bin -> usr/bin
[root@server1 ~]# ll /lib
lrwxrwxrwx. 1 root root 7 Jun 12 14:19 /lib -> usr/lib

4、文件的创建与删除

<1>mkdir——创建目录

mkdir [-p]  目录名

例:

[root@server1 ~]# mkdir -p n1/n2/n3 #创建多级嵌套目录
[root@server1 ~]# mkdir a1
[root@server1 ~]# mkdir d1 d2 d3 #批量一次性创建
[root@server1 ~]# mkdir -pv b1/b2/b3 #-v显示详细创建过程
mkdir: created directory ‘b1’
mkdir: created directory ‘b1/b2’
mkdir: created directory ‘b1/b2/b3’
[root@server1 ~]# mkdir -p dir1/2/3
[root@server1 ~]# tree dir1/ #用yum install -y tree 进行下载
dir1/
└── 2
    └── 3

<2>rmdir——删除目录

[root@server1 ~]# rmdir dir1/2/3
[root@server1 ~]# tree dir1/
dir1/
└── 2 #只删除最后一个文件
[root@server1 ~]# rm -r dir1/ #强制删除
rm: descend into directory ‘dir1/’? y
rm: remove directory ‘dir1/2’? y
rm: remove directory ‘dir1/’? y
[root@server1 ~]# tree dir1/
dir1/ [error opening dir]

特别注意: 要在某个目录下创建子目录,必须拥有该父目录的w(写)和x(执行)权限。

5、touch——创建普通文件

<1>文件已存在,更新时间戳

[root@server1 ~]# stat /etc/passwd
  File: ‘/etc/passwd’
  Size: 846             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 34579749    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-06-25 09:21:19.455000045 +0800
Modify: 2026-06-12 15:39:57.196226691 +0800
Change: 2026-06-12 15:39:57.197226691 +0800
 Birth: -
[root@server1 ~]# touch /etc/passwd
[root@server1 ~]# stat /etc/passwd #关于stat的作用详见上文
  File: ‘/etc/passwd’
  Size: 846             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 34579749    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-06-25 12:40:50.486540680 +0800   #cat会更新,可优化以减少cpu占用。
Modify: 2026-06-25 12:40:50.486540680 +0800
Change: 2026-06-25 12:40:50.486540680 +0800
 Birth: -

<2>文件不存在,创建文件

[root@server1 ~]# touch p1.txt
[root@server1 ~]# touch p2.txt p3.txt p4.txt
[root@server1 ~]# touch {1,2,3}.txt [root@server1 ~]# touch file_{1..10}
[root@server1 ~]# ls file_{1..9}
file_1  file_2  file_3  file_4  file_5  file_6  file_7  file_8  file_9

6、dd——创建大容量文件

dd if=来源 of=新文件名 count=数据块个数 bs=块容量 

dd是Linux中创建大容量文件的“瑞士军刀”,尤其适合测试磁盘读写速度填充占位空间

<1>创建指定大小的真实文件

[root@server1 ~]# dd if=/dev/zero of=test.img bs=1M count=1024 status=progress #进度显示
1052770304 bytes (1.1 GB) copied, 16.137950 s, 65.2 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 16.5667 s, 64.8 MB/s

<2>极速创建巨型稀疏文件

稀疏文件,通俗的讲就是“虚胖文件”。它在文件系统里显示的体积很大,但实际占用的硬盘空间却小得多。
常用于:
虚拟机磁盘镜像(如VMware的.vmdk):刚创建时显示几百G,但只占用实际写入数据的几十GB。
**数据库预留表空间:**提前占坑,避免运行时因磁盘不足而崩溃。
**日志文件轮转:**快速创建大文件用于测试程序的处理能力。

[root@server1 ~]# dd if=/dev/zero of=huge.img bs=1M count=0 seek=10240 #seek=10240在**输出文件**末尾挖10GB的坑,即跳过10GB的距离。
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000207322 s, 0.0 kB/s

<3>cpu压力测试

目的:让cpu满负荷运行,测试散热/稳定性,监控警告。

[root@server1~]#dd if=/dev/zero of=/dev/null #从/dev/zero中无限读取0字节,写入/dev/null,它会丢弃所有数据,该进程持续占用cpu做无意义的读写
[root@server1~]#^c #进程终止

<4>备份

[root@server1~]##dd if=/dev/sda of=mbr bs=512 count=1 #备份磁盘分区表,硬盘前466主引导记录mbr,以后64主分区表,4个分区,每个分区16字节,后续两字节55aa,为磁盘有效性标识。

7、rm——删除文件

rm -参数 文件名

用法:
·删除文件: rm 文件名
·删除目录: rm -r 目录名
·强制删除: rm -f 文件名

8、du——统计目录及文件的空间占用情况

du [参数] [目录名]

参数:

选项 功能
-a 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。
-s 只统计每个文件所占用空间总的大小,而不是统计每个子目录、文件的大小。
-h 以K,M,G为单位显示磁盘使用情况,以提高信息的可读性
例:
[root@server1 ~]# du -sh /etc
32M     /etc

9、tree——以树状结构显示目录和文件

tree  -[参数]  [路径]
参数 功能
-a 显示隐藏文件
-d 只显示目录
-L N 限制显示深度为N层
-f 显示完整路径
例:
[root@server1 ~]# mkdir -p dir1/2/3/4/5/6/7/8
[root@server1 ~]# tree dir1/
dir1/
└── 2
    └── 3
        └── 4
            └── 5
                └── 6
                    └── 7
                        └── 8

7 directories, 0 files
[root@server1 ~]# tree -L 4 dir1/
dir1/
└── 2
    └── 3
        └── 4
            └── 5

4 directories, 0 files
[root@server1 ~]# tree -a /etc
/etc
├── adjtime
├── aliases
├── aliases.db
├── alternatives
│   ├── ld -> /usr/bin/ld.bfd
│   ├── libnssckbi.so.x86_64 -> /usr/lib64/pkcs11/p11-kit-trust.so
│   ├── mta -> /usr/sbin/sendmail.postfix
│   ├── mta-aliasesman -> /usr/share/man/man5/aliases.postfix.5.gz
│   ├── mta-mailq -> /usr/bin/mailq.postfix
│   ├── mta-mailqman -> /usr/share/man/man1/mailq.postfix.1.gz
│   ├── mta-newaliases -> /usr/bin/newaliases.postfix
│   ├── mta-newaliasesman -> /usr/share/man/man1/newaliases.postfix.1.gz
│   ├── mta-pam -> /etc/pam.d/smtp.postfix
│   ├── mta-rmail -> /usr/bin/rmail.postfix
│   ├── mta-sendmail -> /usr/lib/sendmail.postfix
│   └── mta-sendmailman -> /usr/share/man/man1/sendmail.postfix.1.gz

10、数据流和重定向

·标准输入(stdin):从键盘读取用户输入,文件描述符为0
·标准输出(staout):终端屏幕正常输出结果,文件描述符为1
·标准错误(stderr):终端屏幕输出报错/警告信息,文件描述符为2

符号 含义
> 覆盖写入文件
>> 追加写入文件
2> 错误输出重定向
&> 标准输出+错误同时重定向
< 使文件从指定文件中读取数据作为输入
<< 在命令行读取数据作为输入,直到遇到指定的标识字符串
[root@server1 ~]# useradd lzc #定义用户名
[root@server1 ~]# su - lzc #从超级用户切换至普通用户,缺少部分文件访问权限
[lzc@server1 ~]$ find /etc/passwd 
/etc/passwd
[lzc@server1 ~]$ find /etc -name /passwd
find: warning: Unix filenames usually don't contain slashes (though pathnames do).  That means that '-name ‘/passwd’' will probably evaluate to false all the time on this system.  You might find the '-wholename' test more useful, or perhaps '-samefile'.  Alternatively, if you are using GNU grep, you could use 'find ... -print0 | grep -FzZ ‘/passwd’'.
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
[lzc@server1 ~]$ fin /etc -name psswd 2> /dev/null #将错误输出重定向至/dev/null丢弃
[lzc@server1 ~]$ find /etc -name passwd 2> /dev/null
/etc/passwd
/etc/pam.d/passwd
[lzc@server1 ~]$ find /etc -name passwd 2> stderr.txt 1> stdout.txt #将错误输出和正确输出分别存入两个文件

11、| ——管道符

管道符号(|),是unix一个很强大的功能,用于两个命令或者多个命令相连接,将管道符左边命令输出作为右边命令的输入。
命令A | 命令B | 命令C…
例:
在这里插入图片描述

12、tee——读取数据输出到文件

作用:
**·**读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕。
**·**指令从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出文件。
例:

[root@server1 ~]# find /etc -name passwd | tee file.txt #管道只允许标准输入数据进入
/etc/passwd
/etc/pam.d/passwd
[root@server1 ~]# find /etc -name passwd | tee file.txt | wc -l
2

13、软连接与硬连接

<1>硬链接

**原理:**本质上是一个物理文件(inode)的多个“入口”共用一个索引节点inode。
建立硬连接:ln -参数 源文件 目标链接文件
例:

[root@server1 ~]# touch m1.txt
[root@server1 ~]# stat m1.txt
  File: ‘m1.txt’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 67159525    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-06-26 13:57:32.985748410 +0800
Modify: 2026-06-26 13:57:32.985748410 +0800
Change: 2026-06-26 13:57:32.985748410 +0800
 Birth: -
[root@server1 ~]# ln m1.txt m2.txt
[root@server1 ~]# stat m1.txt
  File: ‘m1.txt’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 67159525    Links: 2 #硬连接数发生变化
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-06-26 13:57:32.985748410 +0800
Modify: 2026-06-26 13:57:32.985748410 +0800
Change: 2026-06-26 13:57:56.809321568 +0800
 Birth: -

<2> 软连接

ln -s 源文件 链接文件

**原理:**软连接是一种符号链接,类似于windows“快捷方式”,进包含链接的路径名。
例:

[root@server1 ~]# echo "china" > h1.txt
[root@server1 ~]# rm -f h2.txt
[root@server1 ~]# ln -s h1.txt h2.txt
[root@server1 ~]# ll h2.txt
lrwxrwxrwx 1 root root 6 Jun 26 14:03 h2.txt -> h1.txt
[root@server1 ~]# stat h1.txt
  File: ‘h1.txt’
  Size: 6               Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 67158354    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-06-14 13:03:41.449864651 +0800
Modify: 2026-06-26 14:03:01.981869002 +0800
Change: 2026-06-26 14:03:01.981869002 +0800
 Birth: -

三、vi/vim编辑器

vim是Linux最强大的终端文本编辑器。

1、vim编辑器的三种模式

·命令模式(普通模式):也成为了阅读模式,可以控制光标移动,对文本进行查看、删除、复制粘贴等操作。
·插入模式:进入后底部显示“–Insert–”,此时才能正常输入文字。
·命令行模式:“保存与退出”模式。输入命令后回车执行。

2、命令行模式的快捷键

按键 功能
↑、↓、←、→ 光标按单个字符移动
w 光标按照单词向后跳转
b 光标按照单词向前跳转
^ 光标跳转至行首
$ 光标跳转至行尾
gg 文档首行第一个字符
G 文档最后一行一个字符
dd 删除所在行
数字 dd 删除从光标开始的n行
d^ 删除光标前至行首字符
d$ 删除光标及之后的所有字符
yy 复制光标所在行
数字 yy 复制从光标开始的n行
p 将缓冲区内容粘贴至光标所在行的下一行
P 将缓冲区的内容粘贴至光标所在的上一行
u 撤销操作

3、末行模式的快捷键

按键 功能
/word 从上而下查找字符串“word”
: s /old/new 将当前行中查找到的第一个字符“old”替换成“new”
: s /old/new 将当前行中查找到的所有字符“old”替换为“new”
:n1,n2 s/old/new/g 在行号n1,n2范围内替换所有字符串
:% s/old/new/g 将整个文件内的字符串“old”替换为“new”
:q 退出vi/vim编辑器,未对文件做出任何操作编辑才可退出
:q! 不保存文档内容,强制退出vi/vim编辑器
:w 保存文件
:w /dir/file 将文件另存为/dir/file/
:wq 保存文件内容并退出vi/vim编辑器
:wq 强制保存并退出
:r /dir/file 在当前文件中读入其他文件内容
:g/word/d 查找含有“word”的所有行并删除
:set nu 显示行号
:set nonu 关闭行号显示
:n1,n2 d 删除n1-n2行内容
:n1,n2 co n 复制n1-n2行到第n行后面

四、文件内容显示

1、浏览普通文件

<1>cat

cat -参数 文件名

参数:
-n:显示行号
-b:文件中所有非空行增加行号,编号从一开始。
例1:

[root@server1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.88.130 server1

例2:合并文件

[root@server1 ~]# echo "peace" > f1.txt
[root@server1 ~]# echo "the world" > f2.txt
[root@server1 ~]# cat f1.txt f2.txt >f3.txt
[root@server1 ~]# cat f3.txt
peace
the world

<2>tac

tac 参数 文件名

作用:导致输出文件内容,从文件最后一行到第一行输出文件。
例:

[root@server1 ~]# tac /etc/passwd
lzc:x:1000:1000::/home/lzc:/bin/bash
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
[root@server1 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
lzc:x:1000:1000::/home/lzc:/bin/bash

tac是cat的反向输出。

<3>more

more 文件名

作用:基于行的分页查看器,翻页查看文件内容,适合内容较多的文件查看。回车则一行一行查看,空格整页查看。
例:

[root@server1 ~]# more /dev/sda #查看磁盘分区
Most commands optionally preceded by integer argument k.  Defaults in brackets.
Star (*) indicates argument becomes new default.
-------------------------------------------------------------------------------
<space>                 Display next k lines of text [current screen size]
z                       Display next k lines of text [current screen size]*
<return>                Display next k lines of text [1]*
d or ctrl-D             Scroll k lines [current scroll size, initially 11]*
q or Q or <interrupt>   Exit from more
s                       Skip forward k lines of text [1]
f                       Skip forward k screenfuls of text [1]
b or ctrl-B             Skip backwards k screenfuls of text [1]
'                       Go to place where previous search started
=                       Display current line number
/<regular expression>   Search for kth occurrence of regular expression [1]
n                       Search for kth occurrence of last r.e [1]
!<cmd> or :!<cmd>       Execute <cmd> in a subshell
v                       Start up /usr/bin/vi at current line
ctrl-L                  Redraw screen
:n                      Go to kth next file [1]
:p                      Go to kth previous file [1]
:f                      Display current file name and line number
.                       Repeat previous command
-------------------------------------------------------------------------------

<4>less

less 文件名

作用:同more,上下键进行浏览,点击q退出。

<5>head

head - 数字 文件名

作用:查看文档前n行内容。
例:

[root@server1 ~]# less /etc/hosts
[root@server1 ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

<6>tail

tail -参数 文件名

作用:查看文档末尾内容。``
参数:
-f:动态刷新,实时显示日志文件并且能动态更新。
例:

[root@server1 ~]# tail /etc/passwd #默认显示后10行。

<7>file

file  -参数 文件名

作用:通过检查文件内容“魔数(magic number)”来查看文件类型。
文件类型:

  • ASCII file :ASCII文本字符文件
  • empty:空文件
  • block special :块设备文件
  • character special :字符设备文件
  • diretory:目录
选项 说明
-b 不显示文件名,只显示类型
-i 显示MIME类型
-z 尝试查看压缩文件内部
-L 跟随符号连接
-s 读取块设备、特殊文件
-k 显示所有匹配的类型
-F “sep” 自定义分隔符
[root@server1 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32,  BuildID[sha1]=aaf05615b6c91d3cbb076af81aeff531c5d7dfd9, stripped #可执行文件

<8>grep——文件过滤显示

grep -参数 查找条件 文件名

作用:在指定的普通文件中查找并显示含有指定字符串的行,也可与管道符一起使用,支持正则表达式,用于在文件或输出中查找匹配的行。

总结 选项
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择——仅列出没有“关键词”的行
-A -A 2 搜索时显示匹配到的那一行以及下2行
-B -B 2 搜索时显示匹配到的那一行以及上2行
-C -C 2 搜索时显示匹配到的那一行以及上下2行

<9>sort——排序显示

sort -参数 文件名

参数:

选项 作用
-f 忽略大小写
-b 忽略缩进与空格
-n 以数值型排序
-r 反向排序
-u 去除重复行
-t 指定间隔符
-k 设置字段范围

<10>find——查找文件

find  查找路径   查找条件  具体条件  操作

作用:按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件。
参数:

-name 根据文件basename匹配名称
-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-mtime [+|-]n 匹配修改内容的时间(-4指小于等于4天内的文件名;+4,大于等于5天前的文件名;4指前4~5那一天的文件)
-atime [+|-]n 匹配访问文件的时间
参数 作用
-ctime [+|-]n 匹配修改文件权限的时间
-newer f1 !f2 匹配比文件f1新但比f2旧的文件
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-nouser 匹配无所有者的文件
-nogroup 匹配无所属组的文件
-type b/d/c/p/l/f 匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-depth 先从该目录子目录下查找,再查找该目录
-maxdepth levels
-mindepth levels
最多查找多少层目录;最少查找多少层目录
-delete 将找到的文件删除,如果是目录只能删除找到的空目录。
-exec …… {}; 后面可跟用于进一步处理搜索结果的命令

<11>zip和unzip

zip file
unzip file

参数:

选项 说明 示例
-r 递归压缩目录 zip -r backup.zip /home/user/
-q 安静模式(不显示进度) zip -q archive.zip *.txt
-9 最高压缩率 zip -9 archive.zip bigfile
-0 不压缩(仅打包) zip -0 archive.zip *.jpg
-e 加密(密码保护) zip -e secret.zip file.txt
-u 更新现有压缩包 zip -u archive.zip newfile
-d 从压缩包删除文件 zip -d archive.zip oldfile
-x 排除文件 zip -r backup.zip dir/ -x "*.log"
-v 显示详细信息 zip -v archive.zip file

<12>tar——归档命令

tar -参数   [args]

tar是Linux 上经典的归档打包工具,本身只打包不压缩,但可与压缩工具配合实现打包压缩一体化。
参数:

选项 含义 记忆
-c create,创建新归档 create
-x extract,解压提取 extract
-t list,列出内容 table of contents
-v verbose,显示详情 verbose
-f file,指定文件名 file
-z gzip 压缩(.tar.gz / .tgz) zip
-j bzip2 压缩(.tar.bz2) bjp
-J xz 压缩(.tar.xz) J (xJ)
-p 保留权限 preserve
-C 切换到指定目录 Change dir
--exclude 排除文件 排除
-P 保留绝对路径 绝对路径
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐