Linux Bash命令行基础操作指南
前言
在云计算和容器技术普及的今天,无论上层技术栈如何更迭,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 |
保留绝对路径 | 绝对路径 |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)