Linux命令汇总

Linux命令汇总

用户类型

  • root用户

    超级用户,也成为管理员,权限最大;

    对系统损害几乎有无限的能力,非必要,不登录root。

  • 普通用户

权限有限,造成损害的能力比较有限。

tty命令

tty查看当前所在终端
示例:
root@ubuntu2204:~# tty
/dev/pts/0

shell命令

shell显示当前使用的
示例:
root@ubuntu2204:~# cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/sh
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen
[root@rocy8-1 ~]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

永久设置PS登录的效果

我们可以将PS1的值保存到一个文件里面,从而实现永久设定的效果
[root@rocky9 ~]# echo "PS1='\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\] '" >> .bashrc
[root@rocky9 ~]# source .bashrc
然后再开启一个新的终端,就可以看到 命令提示行自动变成我们期望的颜色了。

hostname命令

hostname主机名
修改hostname 需要root权限;主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
示例:
#临时生效,将主机名修改为NAME
hostname NAME
#永久生效,将主机名修改为NAME
hostnamectl set-hostname NAME

区分管理员和普通用户

# 管理员
$ 普通用户
echo $PS1 #查看当前命令提示符
[\u@\h \W]\$

shell中可执行的两类命令

内部命令:由shell自带的,而且通过某命令形式提供,用户登录后自动加载并常驻内存中
外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除
内部命令:
root@ubuntu2204:~# type echo
echo is a shell builtin
外部命令:
root@ubuntu2204:~# type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo is /bin/echo
#查看path
[root@rokcy8 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

CPU

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

free命令

示例:
[root@ubuntu2204 ~]# free
               total       used       free     shared buff/cache   available
Mem:         1989528      353580      844332        1328      791616     1479600
Swap:        2097148           0     2097148
备注:
total #系统总的可用物理内存大小
used #已被使用的物理内存大小
free #还有多少物理内存可用
shared #被共享使用的物理内存大小
buff/cache #被 buffer 和 cache 使用的物理内存大小
available #还可以被 应用程序 使用的物理内存大小

lsblk和df命令

lsblk分区
df -h查看磁盘大小
示例:
[root@centos8 ~]# 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 199G  0 part 
 ├─rl-root 253:0    0   70G  0 lvm /
 ├─rl-swap 253:1    0   2G  0 lvm [SWAP]
 └─rl-home 253:2    0 127G  0 lvm /home
sr0          11:0    1 1024M  0 rom

查看系统架构

arch 查看系统架构
[root@ubuntu2204 ~]# arch
x86_64

查看内核版本

示例:
[root@rocky8 ~]# uname -r
4.18.0-372.9.1.el8.x86_64
[root@ubuntu2204 ~]# uname -r
5.15.0-25-generic

查看操作系统发行版本

[root@centos8 ~]#cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
[root@centos8 ~]#cat /etc/os-release

查看 OS 版本

[root@centos8 ~]#lsb_release -is
CentOS

日期和时间

date 显示和设置系统时间
示例:
#显示当前时区时间
[root@ubuntu2204 ~]# date
Mon May  8 02:21:33 AM UTC 2023
#显示时区信息
[root@ubuntu2204 ~]# date -R
Mon, 08 May 2023 02:21:40 +0000
#修改日期 + 时间 (将系统时间设置为 2025-12-25 14:30:00)
date -s "2025-12-25 14:30:00"
#只修改时间(日期默认不变)
date -s "16:45:00"
#只修改日期(时间默认不变)
date -s "2025-12-26"

timedatectl 查看时间与时区状态或验证时区是否生效
#系统中列出全球所有可用时区的命令
timedatectl list-timezones
#修改时区为亚洲上海
[root@ubuntu2204 ~]# timedatectl set-timezone Asia/Shanghai

日历

cal   日历
#查看2026年1月
[root@rocky8 ~]# cal 1 2026
      一月 2026     
日 一 二 三 四 五 六
             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

关机和重启

关机:
halt
poweroff
init 0
shutdown -h now

# 10分钟后关机
sudo shutdown -h +10
# 晚上20:00准时关机
sudo shutdown -h 20:00
# 关机前给所有用户发送提示信息
sudo shutdown -h +5 "系统将在5分钟后关机,请保存工作!"
#计划变更,需要取消已设置的定时关机任务
sudo shutdown -c
重启:
reboot
init 6
shutdown -r now

# 立即重启(核心用法)
sudo shutdown -r now
# 定时重启:5分钟后重启
sudo shutdown -r +5
# 定时重启:指定具体时间重启
sudo shutdown -r 18:00
# 取消已计划的重启(如上述5分钟后重启的任务)
sudo shutdown -c

用户登录信息查看命令

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

#显示当前用户的用户名
whoami
#显示当前用户的用户名 终端 登录时间 来源IP
who am i
#显示当前已登录的用户信息。
who [选项]... [ 文件 | 参数1 参数2 ]
备注:
who #列出在当前主机上所有登录用户
who -u | --users #列出当前主机上所有用户的空闲时间 . 表示最近一分钟还是活跃状态 old 表示用户己经空闲超过24小时
who -s | --short #列出在当前主机上所有登录用户,等同于who
who -q | --count #登录用户统计
who -b | --boot #上次系统启动时间
who -a | --all #多选项组合
who -m        #who am i
示例:
w
19:19:03 up 28 min,  2 users, load average: 0.04, 0.05, 0.11
USER     TTY     FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.31.236   18:40    2.00s  0.09s  0.00s w
jose     tty2     tty2             18:41   38:45  24.98s  0.04s 
/usr/libexec/gsd-disk-utility-notify

文本编辑

vim vi  nano

文件模式介绍

模式名称 核心作用 切换方式
普通模式 移动光标、复制、粘贴、删除、撤销等快捷操作 vim 启动默认进入;其他模式按 Esc 键返回
插入模式 输入 / 编辑文本内容(类似记事本) 普通模式下按 i/a/o/I/A/O 等键切换
命令模式 保存文件、退出编辑器、查找替换、设置格式等 普通模式下按 :///? 键切换

命令解释

命令 作用说明
:q 退出 Vim(仅适用于文件未修改的场景)
:q! 强制退出 Vim,不保存任何修改(丢弃所有变更)
:wq 保存修改并退出 Vim(等同于 :x
:wq! 强制保存退出,跳过部分校验
:w 保存修改但不退出 Vim(可继续编辑)
:w filename 另存为指定文件(不退出,原文件不变)
h 光标向左移动 1 个字符(等同于 ← 键)
j 光标向下移动 1 行(等同于 ↓ 键)
k 光标向上移动 1 行(等同于 ↑ 键)
l 光标向右移动 1 个字符(等同于 → 键)
0 光标跳转到当前行的行首
$ 光标跳转到当前行的行尾
gg 光标跳转到文件的第一行首
G 光标跳转到文件的最后一行首
nG 光标跳转到第 n 行(示例:10G 跳转到第 10 行)
Ctrl+f 向下翻页(等同于 PageDown 键)
Ctrl+b 向上翻页(等同于 PageUp 键)
yy 复制当前整行内容
nyy 复制从当前行开始的 n 行内容(示例:3yy 复制 3 行)
y$ 复制从光标位置到当前行尾的内容
y0 复制从光标位置到当前行首的内容
p 将复制的内容粘贴到光标下方 / 右侧
P 将复制的内容粘贴到光标上方 / 左侧
dd 删除(剪切)当前整行内容
ndd 删除(剪切)从当前行开始的 n 行内容(示例:5dd 删除 5 行)
d$ 删除从光标位置到当前行尾的内容
d0 删除从光标位置到当前行首的内容

插入模式

i 在光标当前位置前插入文本(最常用)
a 在光标当前位置后插入文本
o 在光标当前行下方新建一行,并进入插入模式
I 直接跳转到当前行行首,并进入插入模式
A 直接跳转到当前行行尾,并进入插入模式
O 在光标当前行上方新建一行,并进入插入模式

echo命令

echo  输出内容
示例:
#默认换行
[root@ubuntu2204 ~]# echo hello
hello
#不换行
[root@ubuntu2204 ~]# echo -n hello
hello[root@ubuntu2204 ~]#
#把hello打印到指定文件
echo hello > /etc/tun.txt
#把hello打印到指定文件不覆盖
echo hello >> /etc/tun.txt
#输出变量
[root@ubuntu2204 ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
[root@ubuntu2204 ~]# echo {000..20..2}
000 002 004 006 008 010 012 014 016 018 020

history历史行命令

#常用选项
-c #清空命令历史
-d offset #删除历史中指定的第offset个命令
n #显示最近的n条历史
-a #追加本次会话新执行的命令历史列表至历史文件
-r #读历史文件附加到历史列表
-w #保存历史列表到指定的历史文件
-n #读历史文件中未读过的行到历史列表
-p #展开历史参数成多行,但不存在历史列表中
-s #展开历史参数成一行,附加在历史列表后

help帮助

示例:
[root@ubuntu2204 ~]# ls --help
Usage: ls [OPTION]... [FILE]...

文件系统目录结构

常见的文件系统目录功能

/boot #引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin #所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin #管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序      
/lib #启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64 #专用于x86_64系统上的辅助共享库文件存放位置
/etc #配置文件目录
/home/USERNAME #普通用户家目录
/root #管理员的家目录
/media #便携式移动设备挂载点
/mnt #临时文件系统挂载点
/dev #设备文件及特殊文件存储位置, b:block device,随机访问,c:character 
device,线性访问
/opt #第三方应用程序的安装位置
/srv #系统上运行的服务用到的数据
/tmp #临时文件存储位置
/usr #universal shared, read-only data
/usr/bin #保证系统拥有完整功能而提供的应用程序
/usr/sbin #同上
/usr/lib #32位使用
/usr/lib64 #只存在64位系统
/usr/include #C程序的头文件(header files)
/usr/share #结构化独立的数据,例如doc, man等
/var #variable data files,可变数据目录
/var/cache #应用程序缓存数据目录
/var/lib #应用程序状态信息数据
/var/local #专用于为/usr/local下的应用程序存储可变数据
/var/lock #锁文件
/var/log #日志目录及文件
/var/opt #专用于为/opt下的应用程序存储可变数据
/var/run #运行中的进程相关数据,通常用于存储进程pid文件
/var/spool #应用程序数据池
/var/tmp #保存系统两次重启之间产生的临时数据
/proc #用于输出内核与进程信息相关的虚拟文件系统
/sys #用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux #security enhanced Linux,selinux相关的安全策略等信息的存储位置

Linux下的文件系统类型

文件类型 标识符
普通文件 -
目录文件 d
符号链接文件 l
块设备文件 b
字符设备文件 c
管道文件 p
套接字文件 s

linux系统中的文件类型颜色标识

文件类型 颜色
普通文件 白色
目录文件 蓝色
符号链接文件 浅蓝色
块设备文件 黄色
字符设备文件 黄色
管道文件 青黄色
套接字文件 粉红色
图片文件 粉红色
压缩文件 红色
其他文件 灰色

文件操作命令

pwd   #显示当前绝对路径
#常用选项
-P #显示真实物理路径
#走相对路径,从当前目录出发
示例:
[root@ubuntu2204 apt]# pwd
/etc/apt
[root@ubuntu2204 apt]# ls
apt.conf.d   keyrings       sources.list             sources.list.d
auth.conf.d preferences.d sources.list.curtin.old trusted.gpg.d
[root@ubuntu2204 apt]# cd apt.conf.d/
cd  #更改目录
.   #当前目录
..  #返回上一级
ls  #列出目录内容
#常用选项
-l #显示额外的信息
-a #包含隐藏文件
-X #按文件后缀排序
cat   #查看文件内容
touch  #创建空文件
#将abc 时间设置为7月8日9时10分
[root@ubuntu2204 ~]# touch -t 07080910 abc
cp  #复制
#常用选项
-i   #如果目标文件己存在,则提示是否覆盖
-n   #如果目标文件己存在,则跳过此文件复制
-R   #递归复制,可用于目录的复制
-a   #保留所有属性 相当于 dpR 选项组合
-s   #不复制文件,而是创建链接
-p   #同时复制访问时间,修改时间,权限等属性,
mv   #移动和重命名文件
#常用选项
-b   #如果目标存在,则先备份
-n   #如果目标文件己存在,则跳过此文件移动
-i   #如果目标文件己存在,则提示是否覆盖
-u   #当源文件比目标文件新时,才执行移动操作
-v   #显示移动过程
rm   删除文件和目录
#常用选项
-i  #删除前确认
-f  #不确认直接删除
-r  #递归删除
-d  #删除空目录
--no-preserve-root #强删根目录
tree   显示目录树
#常用选项
-a #显示所有,包括隐藏目录和文件
-d #只显示目录
-f #显示所有内容的完整路径
mkdir   创建目录
#常用选项
-m  #目录权限属性
-p  #如果要创建的目录父级目录不存在,则一起创建,是递归的意思
-v  #显示创建过程
查看分区inode
df -i
tr

硬链接

硬链接:硬链接的作用是允许一个文件拥有多个有效的路径名

软连接

软连接:软链接是建立一个独立的文件,这个文件的指向的是目标的文件名。

创建硬链接
ln 源文件 目标文件
创建符号链接
ln -s 源文件 目标文件
示例:
#正确
[root@ubuntu2204 ~]# ln -sv /root/abc /boot/abc.link2
'/boot/abc.link2' -> '/root/abc'
[root@ubuntu2204 ~]# ll /boot/abc.link2
lrwxrwxrwx 1 root root 9 Jul 12 15:10 /boot/abc.link2 -> /root/abc
对目录进行软连接实践
[root@rocky9 link]# ln -s dir1 soft_dir1
[root@rocky9 link]# ln -s dir1 soft_dir1-1
[root@rocky9 link]# ln -s soft_dir1 soft_soft_dir1
[root@rocky9 link]# ll
总用量 0
drwxr-xr-x. 2 root root 6 9月 24 10:30 dir1
drwxr-xr-x. 2 root root 6 9月 24 10:30 dir2
-rw-r--r--. 4 root root 0 9月 24 10:29 file1
-rw-r--r--. 1 root root 0 9月 24 10:29 file2
-rw-r--r--. 4 root root 0 9月 24 10:29 hard_file1
-rw-r--r--. 4 root root 0 9月 24 10:29 hard_file1-1
-rw-r--r--. 4 root root 0 9月 24 10:29 hard_hard_file1
lrwxrwxrwx. 1 root root 4 9月 24 10:37 soft_dir1 -> dir1
lrwxrwxrwx. 1 root root 4 9月 24 10:37 soft_dir1-1 -> dir1
lrwxrwxrwx. 1 root root 9 9月 24 10:37 soft_soft_dir1 -> soft_dir1
对文件进行软连接实践
[root@rocky9 link]# ln -s file2 soft_file2
[root@rocky9 link]# ln -s file2 soft_file2-2
[root@rocky9 link]# ln -s soft_file2 soft_soft_file2
[root@rocky9 link]# ll
总用量 0
drwxr-xr-x. 2 root root 6 9月 24 10:30 dir1
drwxr-xr-x. 2 root root 6 9月 24 10:30 dir2
-rw-r--r--. 4 root root 0 9月 24 10:29 file1
-rw-r--r--. 1 root root 0 9月 24 10:29 file2
-rw-r--r--. 4 root root 0 9月 24 10:29 hard_file1
-rw-r--r--. 4 root root 0 9月 24 10:29 hard_file1-1
-rw-r--r--. 4 root root 0 9月 24 10:29 hard_hard_file1
lrwxrwxrwx. 1 root root 4 9月 24 10:37 soft_dir1 -> dir1
lrwxrwxrwx. 1 root root 4 9月 24 10:37 soft_dir1-1 -> dir1
lrwxrwxrwx. 1 root root 5 9月 24 10:38 soft_file2 -> file2
lrwxrwxrwx. 1 root root 5 9月 24 10:38 soft_file2-2 -> file2
lrwxrwxrwx. 1 root root 9 9月 24 10:37 soft_soft_dir1 -> soft_dir1
lrwxrwxrwx. 1 root root 10 9月 24 10:39 soft_soft_file2 -> soft_file2
软连接删除实践
[root@rocky9 link]# rm -rf soft_file2 soft_dir1
[root@rocky9 link]# cat soft_file2-2
cat: soft_file2-2: 没有那个文件或目录
删除软连接文件的 原始文件 -- 链接文件会变红
[root@ubuntu2204 0509]# ll
total 0
drwxr-xr-x 2 root root 48 Jul 12 15:17 dir1
lrwxrwxrwx 1 root root  5 Jul 12 15:18 dir1.link -> dir1/
#这样是删除链接指向的目录
[root@ubuntu2204 0509]# rm -rf dir1.link/
#这样是删除链接文件
[root@ubuntu2204 0509]# rm -rf dir1.link

硬链接和软连接区别总结

选项 硬链接 软连接
本质 本质是同一个文件 本质不是同一个文件
跨设备 不支持 支持
inode 相同 不同
链接数 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 创建或删除,链接数不会变化
文件夹 不支持 支持
相对路径 原始文件相对路径是相对于当前工作目录 原始文件相对路径是相对于链接文件
删除源文件 是链接数减一,但链接文件的访问不受影响 链接文件将无法访问
文件类型 和源文件相同 链接文件,和源文件无关

用户和权限管理

用户:Linux系统是多用户系统,可以同时存在多个用户,每个用户之间都是互相隔离的

用户组:Linux中可以将一个或多个用户加入用户组中,组就是包含0个或多个用户的集合,用户组是通过Group ID(GID) 来唯一标识的

用户和组的关系

  • 一个用户至少有一个组,也可以有多个组;
  • 一个组至少有0个用户,也可以有多个用户;
  • 用户的主要组(primary group):又称私有组,一个用户必须属于且只有一个主组,创建用户时,默认会创建与其同名的组作为主组;
  • 用户的附加组(supplementary group):又称辅助组,一个用户可以属于0个或多个附加组;
  • 使用组,可以对用户进行批量管理,比如对一个组授权,则该组下所有的用户能能继承这个组的权限

程序:一个程序或一个命令,本质上也是一个可执行的二进制文件或一个可执行的脚本文件;

在服务器上有很多文件,只有那些特定的,可以被执行的二进制文件,才能被称为程序;

进程:运行中的程序,就是进程;

用户和组

用户和组的配置文件

  • /etc/passwd:用户及其属性信息(名称、UID、主组ID等)
  • /etc/shadow:用户密码及其相关属性
  • /etc/group:组及其属性信息
  • /etc/gshadow:组密码及其相关属性
配置文件 作用 关键字段说明
/etc/passwd 保存所有用户信息 用户名:密码占位符:UID:GID:用户描述:家目录:登录Shell
/etc/shadow 保存用户密码(加密存储) 用户名:加密密码:最后修改时间:最小修改间隔:有效期...
/etc/group 保存所有用户组信息 组名:组密码占位符:GID:组内用户列表(附加组)
/etc/gshadow 保存组密码(很少用) 组管理员密码、组密码等

groupadd—创建用户组

[root@rocky8 ~]# ll /etc/passwd
-rw-r--r--. 1 root root 2594 12月 26 16:21 /etc/passwd
[root@rocky8 ~]# ll /etc/shadow
----------. 1 root root 1577 12月 26 16:21 /etc/shadow
[root@rocky8 ~]# ll /etc/group
-rw-r--r-- 1 root root 1030 1月   2 18:03 /etc/group
[root@rocky8 ~]# ll /etc/gshadow
---------- 1 root root 828 1月   2 18:03 /etc/gshadow
结果显示:
 shadow 只有 root 才有读和写权限,这样就保证了密码文件的安全性
 passwd和group 文件每个用户都有读权限

passwd

查看用户及其属性信息
[root@rocky8 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@rocky8 ~]# cat /etc/passwd
opadm:x:1000:1000:opadm:/home/opadm:/bin/bash
从passwd文件中获取某一个用户信息
[root@rocky8 ~]#  getent passwd opadm
opadm:x:1000:1000:opadm:/home/opadm:/bin/bash
注意:每一列都是以 : 为分隔符

shadow

[root@rocky8 ~]# cat /etc/shadow
root:$6$YiDYOFywV6Y6otTE$19DuEI5rAv0.hOuDBDEda3MsweS8HW64oeRalBh7q84HSQGHJ4jb95dBpkXYg8kg6/1fS4LsbX1NCFe2KpJ3o1::0:99999:7:::

用户组管理

groupadd—创建用户组

创建用户组
[root@rocky8 ~]# groupadd group
查看用户组
[root@rocky8 ~]# getent group group
group:x:1003:

指定用户组创建用户

创建用户组
[root@rocky8 ~]# groupadd -g 10000 group2
# -g:指定 GID,需确保未被占用
创建用户
[root@rocky8 ~]# useradd -g 10000 user2
查看用户创建效果
[root@rocky8 ~]# id user2
uid=1004(user2) gid=10000(group2) 组=10000(group2)

指定id创建用户组

指定id创建用户组
[root@rocky8 ~]# groupadd group5 -g 10000
查看用户组
[root@rocky8 ~]# getent group group5
group5:x:10000:

创建系统用户组

创建系统用户组
[root@rocky8 ~]# groupadd -r sroup
查看系统用户组
root@rocky8 ~]# getent group sroup
sroup:x:972:

groupadd—修改用户组属性

创建用户组
[root@rocky8 ~]# groupadd group5 -g 10000
[root@rocky8 ~]# getent group group5
group5:x:10000:
修改用户组的属性
[root@rocky8 ~]# groupmod -g 20010 group5
[root@rocky8 ~]# getent group group5
group5:x:20010:
修改用户组名字
[root@rocky8 ~]# groupmod -n group8 group5
[root@rocky8 ~]# getent group group5
[root@rocky8 ~]# getent group group8
group8:x:20010:

groupdel—删除用户组

删除指定用户组 - 只能一个一个的删
[root@rocky8 ~]#  groupdel -f group8
[root@rocky8 ~]#  groupdel -f group3

在用户存在的前提下,删除用户组

在用户存在的前提下,删除用户组
[root@rocky8 ~]# groupdel -f group2
[root@rocky9 ~]# id user2
用户id=1004(user2) 组id=10000 组=10000
结果显示:
 强制删除用户组之后,显示该组名的地方,只能显示该组ID,如果此时新建与组ID相同的新组,则被删除组的数

用户管理

id—查看用户信息

查看当前登录用户
[root@rocky8 ~]# id
用户uid=0(root) 主组gid=0(root) 当前用户所属的所有用户组=0(root)
查看指定用户信息
[root@rocky8 ~]# id opadm
uid=1000(opadm) gid=1000(opadm) 组=1000(opadm),10(wheel)

useradd —创建新用户

创建用户默认会添加一个组
[root@rocky8 ~]# useradd hello
[root@rocky8 ~]# id hello
uid=1003(hello) gid=1004(hello) 组=1004(hello)
[root@rocky8 ~]# getent gshadow hello
hello:!::
[root@rocky8 ~]# ll /home/
总用量 4
drwx------   3 hello    hello      78 1月   8 17:03 hello

usermod —— 修改已有用户属性

# 1. 先确认soute组是否存在,不存在则先创建
grep soute /etc/group  # 查询组是否存在
groupadd soute        # 不存在则创建该组(root权限执行)
# 2. 查询原始组信息
id qwe
# 3. 核心操作:修改qwe的主组为soute(必须root权限执行)
usermod -g soute qwe
# 4. 验证修改结果
[root@192 0110]# id qwe
uid=1000(qwe) gid=1001(soute) 组=1001(soute)
# 锁定用户(禁止登录)
usermod -L testuser
# -L:Lock,锁定后无法登录
# 解锁用户
usermod -U testuser
# -U:Unlock,解锁

userdel—删除用户

# 只删除用户,保留家目录
userdel opadm
# 彻底删除用户(含家目录和邮件)
userdel -r opadm
# -r:删除用户的同时删除家目录 /home/opadm
[root@192 0110]# cd /home/
[root@192 home]# ll
总用量 0
drwx------. 3 opadm opadm 92 1月  10 20:00 opadm
drwx------. 3 qwe   qwe   92 1月   9 20:55 qwe
[root@192 home]# userdel -r opadm
[root@192 home]# ll
总用量 0
drwx------. 3 qwe qwe 92 1月   9 20:55 qwe

passwd —设置 / 修改用户密码

# 修改当前登录用户的密码
passwd
# 修改指定用户的密码(需root权限)
passwd opadm
# 执行后按提示输入新密码,密码无回显
# 锁定密码(等价于 usermod -L)
passwd -l opadm
# 解锁密码(等价于 usermod -U)
passwd -u opadm

su—切换用户身份

# 切换到 root 用户(需要输入 root 密码)
su - root
# -:表示切换后加载目标用户的环境变量(推荐加 -)

# 切换到普通用户
su - opadm
# 以 root 权限执行单个命令(需配置 sudoers)
sudo ls /root
# 执行后输入当前用户的密码,无需 root 密码

# 切换到 root 并执行命令(无需输入密码,需配置)
sudo -i
# -i:模拟 root 登录,加载 root 环境

文件权限管理

对文件来讲,系统中的用户,分属于三类不同的角色,分别是属主,属组,其它用户;

而每个角色用户,对该文件的权限,也分三种,分别是读,写,执行;

image-20251225214043943

文件用户属性

四种角色:
角色 字符表示
属主:所有者 u
属组:属于哪个组 g
其它用户:不是所有者,也不在属组中的用户 o
所有人,包括属主属组和其它用户 a

文件操作权限

三种权限:

权限 字符表示 八进制数字表示
读权限 r 4
写权限 w 2
执行权限 x 1

赋值写法

在命令中的字符 备注
+ 增加某些权限
- 减少某些权限
= 只保留某些权限,覆盖写法

常见写法:

u+r #属主加读权限
g-x     #属组去掉执行权限
ug=rx   #属主属组权限改为读和执行
o=     #other用户无任何权限   
a=rwx   #所有用户都有读写执行权限
u+r,g-x #同时指定

属性操作(chown)

准备工作

创建相关文件
[root@rocky8 0108]# mkdir open{1..4}
[root@rocky8 0108]# touch toker{1..4}.txt
查看文件权限
[root@rocky8 0108]# ll
总用量 0
drwxr-xr-x 2 root root 6 1月   8 20:23 open1
drwxr-xr-x 2 root root 6 1月   8 20:23 open2
drwxr-xr-x 2 root root 6 1月   8 20:23 open3
drwxr-xr-x 2 root root 6 1月   8 20:23 open4
-rw-r--r-- 1 root root 0 1月   8 20:25 toker1.txt
-rw-r--r-- 1 root root 0 1月   8 20:25 toker2.txt
-rw-r--r-- 1 root root 0 1月   8 20:25 toker3.txt
-rw-r--r-- 1 root root 0 1月   8 20:25 toker4.txt
结果显示:
 默认创建的文件权限是 644,也就是所,谁都可以读去文件内容
 默认创建的目录权限是 755,也就是说,谁都可以进入目录查看

chown

更改文件用户属性

只修改所有者属性
[root@rocky8 0108]# chown opadm toker1.txt 
同时修改所有者和归属组的属性
[root@rocky8 0108]# chown opadm. toker2.txt 
[root@rocky8 0108]# chown opadm: toker3.txt 
查看效果
[root@rocky8 0108]# ll *.txt
-rw-r--r-- 1 opadm root  0 1月   8 20:25 toker1.txt
-rw-r--r-- 1 opadm opadm 0 1月   8 20:25 toker2.txt
-rw-r--r-- 1 opadm opadm 0 1月   8 20:25 toker3.txt
-rw-r--r-- 1 root  root  0 1月   8 20:25 toker4.txt
仅修改文件的归属组的属性
[root@rocky8 0108]# chown .opadm toker1.txt 
[root@rocky8 0108]# ll toker1.txt 
-rw-r--r-- 1 opadm opadm 0 1月   8 20:25 toker1.txt

批量修改文件属性信息

[root@rocky8 ~]# chown -R opadm 0108/
[root@rocky8 ~]# cd 0108/
[root@rocky8 0108]# ll
总用量 0
drwxr-xr-x 2 opadm root  6 1月   8 20:23 open1
drwxr-xr-x 2 opadm root  6 1月   8 20:23 open2
drwxr-xr-x 2 opadm root  6 1月   8 20:23 open3
drwxr-xr-x 2 opadm root  6 1月   8 20:23 open4
-rw-r--r-- 1 opadm opadm 0 1月   8 20:25 toker1.txt
-rw-r--r-- 1 opadm opadm 0 1月   8 20:25 toker2.txt
-rw-r--r-- 1 opadm opadm 0 1月   8 20:25 toker3.txt
-rw-r--r-- 1 opadm root  0 1月   8 20:25 toker4.txt

chgrp 命令可以只修改文件的属组

归属组信息设置

[root@rocky8 ~]# chgrp -R qwe 0108/
[root@rocky8 ~]# ll 0108/
总用量 0
drwxr-xr-x 2 opadm qwe 6 1月   8 20:23 open1
drwxr-xr-x 2 opadm qwe 6 1月   8 20:23 open2
drwxr-xr-x 2 opadm qwe 6 1月   8 20:23 open3
drwxr-xr-x 2 opadm qwe 6 1月   8 20:23 open4
-rw-r--r-- 1 opadm qwe 0 1月   8 20:25 toker1.txt
-rw-r--r-- 1 opadm qwe 0 1月   8 20:25 toker2.txt
-rw-r--r-- 1 opadm qwe 0 1月   8 20:25 toker3.txt
-rw-r--r-- 1 opadm qwe 0 1月   8 20:25 toker4.txt

chmod 命令可以修改文件的操作权限

权限的增删

操作示例:
    u+r # 属主加读权限
    g-x # 属组去掉执行权限
    ug=rx # 属主属组权限改为读和执行
    o=  #用户无任何权限
    a=rwx # 所有用户都有读写执行权限
    u+r,g-x # 同时指定

文件权限修改实践

指定文件的其他用户都增加x权限
[root@rocky8 0108]#  chmod o+x toker{1..4}.txt
[root@rocky8 0108]# ll *.txt
-rw-r--r-x 1 opadm qwe 0 1月   8 20:25 toker1.txt
-rw-r--r-x 1 opadm qwe 0 1月   8 20:25 toker2.txt
-rw-r--r-x 1 opadm qwe 0 1月   8 20:25 toker3.txt
-rw-r--r-x 1 opadm qwe 0 1月   8 20:25 toker4.txt
指定文件的 归属主权限+x,属组权限-r
[root@rocky8 0108]# chmod u+x,g-r *.txt
[root@rocky8 0108]# ll *.txt
-rwx---r-x 1 opadm qwe 0 1月   8 20:25 toker1.txt
-rwx---r-x 1 opadm qwe 0 1月   8 20:25 toker2.txt
-rwx---r-x 1 opadm qwe 0 1月   8 20:25 toker3.txt
-rwx---r-x 1 opadm qwe 0 1月   8 20:25 toker4.txt
指定文件的 所有人权限为 rwx
[root@rocky8 0108]# chmod a=rwx *.txt
[root@rocky8 0108]# ll *.txt
-rwxrwxrwx 1 opadm qwe 0 1月   8 20:25 toker1.txt
-rwxrwxrwx 1 opadm qwe 0 1月   8 20:25 toker2.txt
-rwxrwxrwx 1 opadm qwe 0 1月   8 20:25 toker3.txt
-rwxrwxrwx 1 opadm qwe 0 1月   8 20:25 toker4.txt

目录的写权限实践

修改权限后,检测效果
[root@rocky8 0108]# chmod 733 -R open*
[root@rocky8 0108]# ll
总用量 0
drwx-wx-wx 2 opadm qwe 6 1月   8 20:23 open1
drwx-wx-wx 2 opadm qwe 6 1月   8 20:23 open2
drwx-wx-wx 2 opadm qwe 6 1月   8 20:23 open3
drwx-wx-wx 2 opadm qwe 6 1月   8 20:23 open4

cut命令

cut 命令可以提取文本文件或STDIN数据的指定列

以:为分隔符,获取1,3,4,7 行内容
[root@rocky8 ~]# head -n5 /etc/passwd | cut -d: -f1,3-4,7
root:0:0:/bin/bash
bin:1:1:/sbin/nologin
daemon:2:2:/sbin/nologin
adm:3:4:/sbin/nologin
lp:4:7:/sbin/nologin

tr命令

tr命令实现 字符转换、替换、删除

演示:
[root@rocky8 ~]# tr '[0-9]' '@' < test1.txt
root:x:@:@:root:/root:/bin/bash
bin:x:@:@:bin:/bin:/sbin/nologin
daemon:x:@:@:daemon:/sbin:/sbin/nologin
adm:x:@:@:adm:/var/adm:/sbin/nologin
lp:x:@:@:lp:/var/spool/lpd:/sbin/nologin

sort命令

sort命令,实现信息排序

 -r :降序排列,默认是升序
 -n :以数字排序,默认是按字符排序

文件内容

[root@rocky8 0108]# cat toker1.txt 
1
5
7
d
t
o
9
2
t
4

内容倒序

[root@rocky8 0108]# sort -r toker1.txt 
t
t
o
d
9
7
5
4
2
1

内容升序

[root@rocky8 0108]# sort -n toker1.txt 
d
o
t
t
1
2
4
5
7
9

uniq

uniq命令 实现连续信息的去重动作

文件内容

[root@rocky8 0108]# cat uniq.txt 
AA
aa
aa
cc
cc
EE
ee
SS
ss

去重演示

[root@rocky8 0108]# uniq uniq.txt 
AA
aa
cc
EE
ee
SS
ss

find查找

根据文件名

指定文件名查找
root@ubuntu24:find# find -name test-a.log
./test-a.log
指定文件名,忽略大小写
root@ubuntu24:find# find -iname test-a.log
./test-a.log
./test-A.log
查看当前目录下的所有目录文件
root@ubuntu24:find# find -type d

压缩

zip

zip 可以实现打包目录和多个文件成一个文件并压缩,但可能会丢失文件属性信息

分别来自于 zip 和 unzip 包;对应的文件是 .zip 后缀

zip 命令用于创建 .zip 压缩包。
压缩单个文件
zip [选项] [压缩包名称].zip [要压缩的文件或目录...]
zip archive.zip document.txt
压缩整个目录
zip -r project_backup.zip my_project
创建加密的压缩包
zip -re secret_files.zip private_notes/
解压
unzip [选项] [压缩包名称].zip
解压到指定目录
unzip project_backup.zip -d /tmp/restore
查看压缩包文件内容
root@ubuntu22:~/zip# unzip -l hosts.zip

tar

tar命令本身主要用于打包文件和目录,而压缩功能通常是通过与外部压缩工具(如 gzip, bzip2, xz)结合实现的。
压缩
tar -czvf [压缩包名称].tar.gz [要压缩的文件或目录]
tar -czvf docs.tar.gz /home/user/documents
解压
tar -xzvf [压缩包名称].tar.gz
tar -xzvf docs.tar.gz
-C 解压文件到指定目录下
tar -xzvf [压缩包名称].tar.gz -C /usr/local

分页查看文件内容

more

more 可以实现分页查看文件,可以配合管道实现输出信息的分页
命令选项
空格键 #翻页
回车键 #下一行
!cmd  #执行命令
h  #显示帮助
:f  #显示文件名和当前行号
=  #显示行号

less

less 也可以实现分页查看文件或STDIN输出,less 命令是man命令使用的分页器
#常用选项
-e #显示完成后自动退出
-N #显示行号
-s #压缩连续空行
-S #不换行显示较长的内容

显示文本前面或后面的行内容

head可以显示文件或标准输入的前面行
#常用选项
-c #指定获取前N字节
-n #指定获取前N行,N如果为负数,表示从文件头取到倒数第N前
-N #同上
-q #不输出文件名
-v  #输出文件名
-z  #以NULL字符而非换行符作为行尾分隔符
示例:
[root@ubuntu2204 ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
[root@ubuntu2204 ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

tail

tail 和 head 相反,查看文件或标准输入的倒数行
#常用选项
-c #指定获取后N字节
-n#指定获取后N行,如果写成+N,表示从第N行开始到文件结束
-N #同上
-f #跟踪显示文件fd新追加的内容,常用日志监控,当删除再新建同名文件,将无法继续跟踪
示例:
[root@ubuntu2204 ~]# cat /data/f1.txt
1
2
3
4
5
6
7
8
9
10
[root@ubuntu2204 ~]# tail -n 3 /data/f1.txt
8
9
10
[root@ubuntu2204 ~]# tail -n +3 /data/f1.txt
3
4
5
6
7
8
9
10
[root@ubuntu2204 ~]# tail -3 /var/log/syslog 
May 10 08:25:52 ubuntu2204 systemd[1]: Starting Cleanup of Temporary 
Directories...
May 10 08:25:52 ubuntu2204 systemd[1]: systemd-tmpfiles-clean.service: 
Deactivated successfully.
May 10 08:25:52 ubuntu2204 systemd[1]: Finished Cleanup of Temporary 
Directories.

head + tail 的总和实践 -- 获取指定行内容

获取第6行的内容
[root@rocky9 ~]# head -n6 /etc/passwd | tail -n1
sync:x:5:0:sync:/sbin:/bin/sync
获取倒数第6行的内容
[root@rocky9 ~]# tail -n6 /etc/passwd | head -n1
sswang2:x:1025:1025::/home/sswang2:/bin/bash

文本三剑客

grep

grep 负责从数据源中检索对应的字符串,主打查找 / 过滤文本内容(按行匹配)

示例:
#标准输入
[root@ubuntu2204 ~]# grep hello
123hello456
123hello456
#管道
[root@ubuntu2204 ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
#取前三行
[root@ubuntu2204 ~]# grep -m 3 bin /etc/passwd 
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin 
bin:x:2:2:bin:/bin:/usr/sbin/nologin
#显示行号
[root@ubuntu2204 ~]# grep -n bash /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
32:mage:x:1000:1000:mage:/home/mage:/bin/bash
34:jose:x:1001:1001::/home/jose:/bin/bash
35:tom:x:1002:1002::/home/tom:/bin/bash
36:jerry:x:1003:1003::/home/jerry:/bin/bash

sed

以行为单位编辑文本(替换、删除、新增、修改),无需打开文件,适合批量处理文本。

sed 处理流程:读取一行 → 按规则处理 → 输出结果 → 处理下一行(默认不修改原文件)。

准备工作

[root@rocky8 ~]# cat sed.txt
nihao sed1 sed2 sed3
nihao sed4 sed5 sed6
nihao sed7 sed8 sed9

案例1 打印信息

默认打印信息
[root@rocky8 ~]# sed '2p' sed.txt
nihao sed1 sed2 sed3
nihao sed4 sed5 sed6
nihao sed4 sed5 sed6 # 这一行才是操作的内容,其他的都是缓存区自动输出
nihao sed7 sed8 sed9
打印第2行,不输出缓存区默认的其他信息
[root@rocky8 ~]# sed -n '2p' sed.txt 
nihao sed4 sed5 sed6
打印第1,3行,不输出缓存区默认的其他信息
[root@rocky8 ~]# sed -n '1p;3p' sed.txt
nihao sed1 sed2 sed3
nihao sed7 sed8 sed9
打印网卡信息
[root@rocky8 ~]# ifconfig eth0 | sed -n '2p'
        inet 10.0.0.12  netmask 255.255.255.0  broadcast 10.0.0.255
        
打印磁盘信息
[root@rocky9 ~]# df | sed -n '/^\/dev\/sd/p'
/dev/sda2      19911680 2772988 17138692   14% /
/dev/sda1       1038336  145380   892956   15% /boot

案例2 匹配内容打印

打印包含sed4的行
[root@rocky9 ~]# sed -n '/sed4/p' sed.txt 
nihao sed4 sed5 sed6
打印奇数行
[root@rocky9 ~]# sed -n '1~2p' sed.txt      
nihao sed1 sed2 sed3
nihao sed7 sed8 sed9
打印偶数行
[root@rocky9 ~]# sed -n '0~2p' sed.txt
nihao sed4 sed5 sed6

案例3 取反

取反显示
[root@rocky9 ~]# sed -n '2!p' sed.txt            
nihao sed1 sed2 sed3
nihao sed7 sed8 sed9
查看内容属于第几行
[root@rocky9 ~]# sed -n '/sed4/=' sed.txt  
2

sed替换

案例1 替换每行首个匹配内容

格式:sed -i 's#原内容#替换后内容#' 文件名
替换首每行的第1个sed为SED
[root@rocky8 ~]# sed -i 's#sed#SED#' sed.txt 
[root@rocky8 ~]# cat sed.txt 
nihao SED1 sed2 sed3
nihao SED4 sed5 sed6
nihao SED7 sed8 sed9

案例2 替换全部匹配内容

格式:sed -i 's#原内容#替换后内容#g' 文件名
替换全部sed为des
[root@rocky8 ~]# sed -i 's#sed#SED#g' sed.txt 
[root@rocky8 ~]# cat sed.txt 
nihao SED1 SED2 SED3
nihao SED4 SED5 SED6
nihao SED7 SED8 SED9
关于全部替换还有另外一种命令叫直接转换 y
[root@rocky8 ~]# sed 'y/SED/sed/' sed.txt
nihao sed1 sed2 sed3
nihao sed4 sed5 sed6
nihao sed7 sed8 sed9

案例3 指定行号替换首个匹配内容

格式:sed -i '行号s#原内容#替换后内容#' 文件名
替换第2行的首个SED为sed
[root@rocky9 ~]# sed -i '2s#SED#sed#' sed.txt 
[root@rocky9 ~]# cat sed.txt 
nihao SED1 SED2 SED3
nihao sed4 SED5 SED6
nihao SED7 SED8 SED9

案例4 首行指定列号替换匹配内容

格式:sed -i 's#原内容#替换后内容#列号' 文件名
替换每行的第2个SED为sed
[root@rocky9 ~]# sed -i 's#SED#sed#2' sed.txt
[root@rocky9 ~]# cat sed.txt 
nihao SED1 sed2 SED3
nihao sed4 SED5 sed6
nihao SED7 sed8 SED9

案例5 指定行号列号匹配内容

格式:sed -i '行号s#原内容#替换后内容#列号' 文件名
替换第3行的第2个SED为sed
[root@rocky9 ~]# sed -i '3s#SED#sed#2' sed.txt 
[root@rocky9 ~]# cat sed.txt 
nihao SED sed2 SED3
nihao sed4 SED5 sed6
nihao SED7 sed8 sed9

sed增加操作

格式:
 sed -i '行号a\增加的内容' 文件名

案例 基于行号实践

指定行号增加内容
[root@rocky9 ~]# sed -i '2a\zengjia-2' sed.txt 
[root@rocky9 ~]# cat sed.txt 
nihao SED sed2 SED3
nihao sed4 SED5 sed6
zengjia-2
nihao SED7 sed8 sed9
指定1~3每行都增加内容
[root@rocky9 ~]# sed -i '1,3a\tongshi-2' sed.txt 
[root@rocky9 ~]# cat sed.txt 
nihao SED sed2 SED3
tongshi-2
nihao sed4 SED5 sed6
tongshi-2
zengjia-2
tongshi-2
nihao SED7 sed8 sed9

插入实践

sed -i '行号i\增加的内容' 文件名

案例

指定行号增加内容
[root@rocky9 ~]# sed -i '1i\insert-1' sed.txt 
[root@rocky9 ~]# cat sed.txt 
insert-1
nihao SED sed2 SED3
tongshi-2
nihao sed4 SED5 sed6
tongshi-2
zengjia-2
tongshi-2
nihao SED7 sed8 sed9
指定1~3每行都增加内容
[root@rocky9 ~]# sed -i '1,3i\insert-2' sed.txt 
[root@rocky9 ~]# cat sed.txt
insert-2
insert-1
insert-2
nihao SED sed2 SED3
insert-2
tongshi-2
nihao sed4 SED5 sed6
tongshi-2
zengjia-2
tongshi-2
nihao SED7 sed8 sed9

删除替换

作用:
 指定行号删除
格式:
 sed -i '行号d' 文件名
注意:
    如果删除多行,可以在行号位置多写几个行号,彼此间使用逗号隔开,例如
    sed -i '1,3d' 文件名

基于行号实践

删除第4行内容
[root@rocky9 ~]# sed -i '4d' sed.txt 
[root@rocky9 ~]# cat sed.txt 
insert-2
insert-1
insert-2
insert-2
tongshi-2
nihao sed4 SED5 sed6
tongshi-2
zengjia-2
tongshi-2
nihao SED7 sed8 sed9
删除多行(1-6行)内容
[root@rocky9 ~]# sed -i '1,6d' sed.txt
[root@rocky9 ~]# cat sed.txt
tongshi-2
zengjia-2
tongshi-2
nihao SED7 sed8 sed9

替换实践

语法

作用:
 指定行号进行整行替换
格式:
 sed -i '行号c\内容' 文件名

案例

替换第3行内容
[root@rocky9 ~]# sed -i '3c\tihuan-1' sed.txt
[root@rocky9 ~]# cat sed.txt
tongshi-2
zengjia-2
2.3.1.4 sed其他实践[扩展]
2.3.1.4.1 加载保存
2.3.1.4.1.1 加载实践
基本语法
实践1-基于行号实践
tihuan-1
nihao SED7 sed8 sed9
指定1~3行都替换成一行内容
[root@rocky9 ~]# sed -i '1,3c\tihuan-3' sed.txt
[root@rocky9 ~]# cat sed.txt
tihuan-3
nihao SED7 sed8 sed9

保存实践

语法

作用:
 指定行号保存到其他位置
格式:
 sed -i '行号w 文件名' 文件名

案例 基于行号实践

保存第3行内容
[root@rocky9 ~]# sed -i '2w sed_test' sed.txt
[root@rocky9 ~]# cat sed_test
nihao SED7 sed8 sed9
指定2~4行内容保存到一个文件中
[root@rocky9 ~]# sed -i '1,4w sed_test' sed.txt
[root@rocky9 ~]# cat sed_test
tihuan-3
nihao SED7 sed8 sed9
1p
3p

AWK

主打分析 / 处理文本数据(按列处理,支持复杂逻辑)

字段提取:提取一个文本中的一列数据并打印输出,它提供了相关的内置变量。
    $0 表示整行文本
    $1 表示文本行中的第一个数据字段
    $2 表示文本行中的第二个数据字段
    $N 表示文本行中的第N个数据字段
    $NF 表示文本行中的最后一个数据字段
    NR 代表行的行号,在动作外部表示特定行
注意:
   如果打印多列信息,需要使用逗号隔开,否则是内容合并

准备工作

[root@rocky8 ~]# cat awk.txt
nihao awk1 awk2 awk3
nihao awk4 awk5 awk6
nihao awk7 awk8 awk9

打印列信息

打印第1列的内容
[root@rocky8 ~]# awk '{print $1}' awk.txt
nihao
nihao
nihao
打印第3列内容
[root@rocky8 ~]# awk '{print $3}' awk.txt
awk2
awk5
awk8
打印最后一列信息
[root@rocky8~]# awk '{print $NF}' awk.txt
awk3
awk6
awk9
打印所有内容
[root@rocky8 ~]# awk '{print $0}' awk.txt
nihao awk1 awk2 awk3
nihao awk4 awk5 awk6
nihao awk7 awk8 awk9

打印多列信息

打印第3,8列内容
[root@rocky9 ~]# awk '{print $1,$3}' awk.txt
nihao awk2
nihao awk5
nihao awk8
打印信息时候,合并信息
[root@rocky9 ~]# awk '{print $1$3}' awk.txt
nihaoawk2
nihaoawk5
nihaoawk8
使用\t实现内容的分割,需要用""扩住
[root@rocky9 ~]# awk '{print $1"\t"$3}' awk.txt
nihao   awk2
nihao   awk5
nihao   awk8

行号信息输出

打印每列的行号信息
[root@rocky9 ~]# awk '{print NR,$0}' awk.txt
1 nihao awk1 awk2 awk3
2 nihao awk4 awk5 awk6
3 nihao awk7 awk8 awk9
按照行号打印对应列的内容
[root@rocky9 ~]# awk '{print NR, $NR}' awk.txt
1 nihao
2 awk4
3 awk8
posted @ 2026-01-21 11:00  容器生态守护者  阅读(1)  评论(0)    收藏  举报