LInux基础 (一):Linux 系统重要命令拾遗
LInux基础 1:Linux 系统重要命令拾遗
声明
笔记内容参考了B站UP主 泷羽sec 的学习视频,如有侵权,将立即删除。
本笔记旨在促进网络安全学习,任何不当使用均与作者无关,请勿逾越法律红线,否则后果自负。
希望这些内容能对各位师傅有所帮助,欢迎您的点赞和评论!
在日常的Linux使用中,有一些命令是我们经常用到的基础命令,掌握它们对于系统管理与日常操作至关重要。本文将选取一些常用且容易出错的命令,详细讲解它们的使用方法、常用参数以及应用场景,帮助你更好地理解和使用这些命令。
文件操作
mv — 移动或重命名文件和目录
mv
命令用于移动文件或目录,或者重命名文件和目录。其基本语法为:
mv [选项] 源文件/目录 目标文件/目录
使用说明
mv
命令可以移动单个文件、多个文件或目录。- 如果目标是已存在的目录,源文件或目录会被移动到该目录中。
- 如果目标是已存在的文件,源文件会被重命名为目标文件的名称。
mv
命令具有递归特性,可以用于移动目录及其内容。
示例
mv file1.txt /home/user/documents/ # 将 file1.txt 文件移动到目标目录
mv file1.txt newname.txt # 重命名 file1.txt 为 newname.txt
mv folder1 /home/user/documents/ # 将 folder1 目录移动到目标目录
mv folder1 newfolder # 将 folder1 目录重命名为 newfolder
rm — 删除文件或目录
rm
命令用于删除文件或目录。删除操作是不可逆的,需谨慎使用。
常用选项
-r
:递归删除,适用于删除目录及其内部所有文件。-f
:强制删除,不会提示确认。-i
:交互模式,每次删除前都会提示确认。
示例
rm file1.txt # 删除单个文件
rm -r dir1/ # 删除目录及其内容
rm -f file2.txt # 强制删除文件
rm -rf /home/user/* # 强制删除目录下所有内容
cp — 拷贝文件
cp
命令用于拷贝文件或目录。
常用选项
-r
:递归拷贝目录及其内容。-i
:拷贝时询问确认,防止覆盖已有文件。-u
:仅在源文件较新时才拷贝。
示例
cp file.txt /home/user/documents/ # 拷贝file.txt文件到指定目录
cp -r dir1/ /home/user/backup/ # 递归拷贝目录及其内容
cp -u file.txt /home/user/backup/ # 仅在源文件较新时才拷贝
sort — 排序文件内容
sort
命令用于排序文件内容或标准输入的内容。默认按字典顺序排序。
常用选项
-n
:按数字大小排序。-r
:反向排序。-k
:按指定的列进行排序。-u
:去重,只输出唯一的行。
示例
sort file.txt # 按字典顺序排序文件内容
sort -n file.txt # 按数字顺序排序文件内容
sort -r file.txt # 反向排序文件内容
sort -u file.txt # 排序并去重
uniq — 去重
uniq
命令用于去除文件中的重复行,常与 sort
一起使用。
常用选项
-c
:统计每行出现的次数。-u
:仅显示唯一的行。-d
:仅显示重复的行。
示例
sort file.txt | uniq # 去除重复行
sort file.txt | uniq -c # 显示每行出现的次数
uniq -u file.txt # 显示唯一行
wc — 统计文件内容
wc
命令用于统计文件的字数、行数和字符数。
常用选项
-l
:统计行数。-w
:统计单词数。-c
:统计字符数。-m
:统计字符数(不区分字节和字符,适用于多字节字符集)。
示例
wc -l file.txt # 统计文件行数
wc -w file.txt # 统计文件单词数
wc -c file.txt # 统计文件字符数
wc -m file.txt # 统计文件字符数(包括多字节字符集)
软连接和硬链接
软链接(Symbolic Link)
软链接,也称为符号链接或快捷方式,类似于 Windows 系统中的快捷方式。它是一个独立的文件,其中包含指向目标文件或目录路径的引用。软链接本质上是一个文本文件,指向实际的文件或目录。
创建软链接
使用 ln -s
命令来创建软链接:
ln -s /path/to/target /path/to/link
-s
表示创建符号链接。/path/to/target
是目标文件或目录的路径。/path/to/link
是软链接创建的路径。
软链接的特点
- 跨文件系统:软链接可以在不同的文件系统之间创建链接。
- 链接文件和目录:软链接不仅可以指向文件,还可以指向目录。
- 链接失效:当目标文件被删除或移动时,软链接会变为“死链接”,无法再访问目标内容。
软链接使用场景
- 灵活的文件组织:可以用于为常用的文件或程序创建易于记忆的别名或快捷方式。
- 软件环境管理:例如在不同版本的软件之间切换,可以使用软链接指向当前版本。
硬链接(Hard Link)
硬链接是指向文件的多个入口。硬链接通过指向同一个文件的 inode,使得文件有多个路径名。所有硬链接指向相同的数据块,文件内容不会被删除,直到所有硬链接都被删除。
创建硬链接
硬链接使用 ln
命令创建(不带 -s
选项):
ln /path/to/target /path/to/link
/path/to/target
是目标文件的路径。/path/to/link
是硬链接创建的路径。
硬链接的特点
- 不能跨文件系统:硬链接只能在同一文件系统中创建,不能跨文件系统。
- 指向相同 inode:硬链接指向文件的 inode,每个硬链接都会分配一个新的文件名,但它们指向相同的物理数据块。
- 文件内容共享:修改任一硬链接的文件内容,所有硬链接都会受到影响。
- 文件删除:删除一个硬链接并不会删除文件,只有当所有硬链接都被删除时,文件才会被实际删除。
硬链接使用场景
- 确保文件不丢失:硬链接适用于需要确保文件始终存在的场景,如文件备份和保护重要数据。
- 多路径访问同一文件:如果多个程序需要访问同一文件,硬链接可以提供多个入口。
软链接与硬链接的主要区别
特性 | 软链接(Symbolic Link) | 硬链接(Hard Link) |
---|---|---|
创建命令 | ln -s /path/to/target /path/to/link | ln /path/to/target /path/to/link |
跨文件系统 | 可以跨文件系统 | 不能跨文件系统 |
链接对象 | 可以链接文件和目录 | 只能链接文件,通常不能链接目录 |
文件的物理存储 | 软链接有独立的 inode,指向目标文件路径 | 硬链接指向相同的 inode,多个路径指向相同的文件内容 |
目标文件删除后 | 软链接会变成无效链接(死链接) | 硬链接不会受目标文件删除的影响 |
文件内容修改 | 修改软链接指向的文件会影响所有软链接 | 修改任何一个硬链接都会影响其他硬链接 |
删除链接后的效果 | 删除软链接不会影响目标文件,目标文件被删除后,软链接失效 | 删除一个硬链接不影响文件,文件只有删除所有硬链接后才会被删除 |
使用案例
- 移动文件和创建软链接
假设我们需要将 newfile
移动到 newdir2
目录,并在原位置创建一个指向新位置的软链接:
mv newfile newdir2
ln -s newdir2/newfile newfile
- 拷贝文件和创建硬链接
假设我们需要将 file.txt
拷贝到 newdir.txt
,并在原文件位置创建一个硬链接:
cp file.txt newdir.txt
ln file.txt hardlink.txt
- 创建软链接和硬链接
假设我们有一个文件 original.txt
,可以分别创建软链接和硬链接:
-
创建软链接:
ln -s original.txt symlink.txt
-
创建硬链接:
ln ~/offseec123.txt hardlink.txt
查找工具
find
find
是 Linux 系统中强大的文件查找工具,支持通过文件名、类型、时间、大小、权限等多种条件进行文件查找。
基本语法
find [路径] [选项] [查找条件]
常用选项和条件
- -name:按文件名查找,支持通配符。
-iname
忽略大小写。 - -type:按文件类型查找 (
f
为文件,d
为目录)。 - -size:按文件大小查找,单位
b
(字节)、k
(千字节)、M
(兆字节)等。 - -mtime / -mmin:按最后修改时间(天/分钟)查找,支持
+n
、-n
、n
格式。 - -atime / -amin:按最后访问时间查找。
- -ctime / -cmin:按文件状态变更时间(权限、链接)查找。
- -user:按文件所有者查找。
- -perm:按文件权限查找,支持
/4000
、/2000
、/1000
等格式。 - -exec:对每个找到的文件执行指定命令。
查找特殊权限文件
SUID 文件
SUID 是一种特殊权限,用于执行文件时应用文件所有者的权限。
find / -type f -perm /4000
SGID 文件
SGID 表示执行文件时应用文件组的权限。
find / -type f -perm /2000
Sticky 位
Sticky 位用于目录,防止非所有者删除该目录中的文件。
find / -type d -perm /1000
特定权限查找
+u+s
:查找至少具有 SUID 的文件。-u+s
:查找不包含 SUID 的文件。=u+s
:查找完全匹配 SUID 的文件。
高级查找示例
-
按时间查找
查找 30 分钟内修改的.sh
文件并列出:find . -type f -iname '*.sh' -mmin -30 -ls
- -ls:显示文件详细信息(类似 ls -l 命令)。
-
按权限查找
查找root
用户的.sh
文件,具有其他用户写权限,忽略错误:find / -user root -type f -perm -o=w -name "*.sh" 2>/dev/null
- -user root:查找
root
所有的文件。 - -perm -o=w:文件具有“其他用户写权限”。
- 2>/dev/null:忽略权限不足的错误。
- -user root:查找
-
删除匹配文件
查找并删除.svn
目录:find . -name "*.svn" -exec rm -rf {} \;
-exec
:对匹配的文件/目录执行命令,{}
表示匹配文件或目录。
-
按修改时间排序并分页查看
查找 2 天前修改的文件,按修改时间排序,分页显示:find ~ -mtime 2 -ls | sort -k9 -k10 | more
- sort -k9 -k10:按第 9 列(文件名)和第 10 列(修改时间)排序。
- more:分页显示,便于查看。
-
增量备份(根据修改时间)
查找修改时间在 24 小时内的文件并备份:
find /source/directory -mtime -1 -exec cp -u {} /backup/directory/ \;
-mtime -1
:查找 24 小时内修改的文件。-exec cp -u
:仅当源文件较新时才复制。
locate
locate
是一种比 find
更快捷的文件查找工具。它依赖预生成的文件数据库(如 /var/lib/mlocate/mlocate.db
)来定位文件,查找速度极快,但可能不是最新的数据,因为数据库更新通常是通过计划任务进行的(如 updatedb
命令)。
常用选项
- -i:忽略大小写查找。
- -r:使用正则表达式查找。
- -n [数量]:限制显示的结果数量。
- -c:只输出匹配结果的数量。
- -e:仅显示当前实际存在的文件(剔除数据库中已经不存在的文件)。
- -0:输出结果使用
\0
作为分隔符,适合与其他命令结合使用。
示例
-
基本查找
查找包含 “filename” 的所有文件:
locate filename
-
忽略大小写查找
查找名称中包含 “filename” 的文件,忽略大小写:
locate -i filename
-
正则表达式查找
使用正则表达式查找
.log
文件:locate -r '\.log$'
-
限制查找结果数量
限制查找到 5 个结果:
locate -n 5 filename
-
统计匹配结果数量
统计匹配
filename
的文件数目:locate -c filename
更新数据库
由于 locate
使用缓存数据库,需要定期更新数据库才能保证数据的准确性:
sudo updatedb
查找命令路径
whereis
和 which
都是用于定位命令路径的工具。
whereis
whereis
查找命令的二进制文件、源码和帮助文件路径。
-
常用参数:
-b
:仅查找二进制文件路径-m
:仅查找帮助文件路径
-
示例:
whereis ls
which
which
在 PATH
环境变量中查找命令的执行路径,适用于确认命令的安装位置。
-
常用参数:
-a
:显示所有匹配路径(默认显示第一个)
-
示例:
which -a python
磁盘与内存管理
df — 查看磁盘空间
df
命令用于显示文件系统的磁盘空间使用情况。
常用命令
df -h
df -T
-h
:以易于理解的格式显示磁盘空间,单位为 KB、MB、GB 等。-T
:显示文件系统类型,如 ext4、xfs 等。
du — 查看目录空间使用
du
命令用于查看目录及其子目录的磁盘空间使用情况。
常用命令
du -h /path/to/dir
du -sh /path/to/dir
sudo du -hsc ./*
-h
:以人类可读的格式显示空间使用情况。-s
:仅显示目录的总磁盘使用情况,不列出每个子目录。-c
:显示所有文件和目录的总和。
free — 查看内存使用情况
free
命令用于显示系统内存和交换空间的使用情况。
常用命令
free -h
free -m
-h
:以易于理解的格式显示内存使用情况。-m
:以 MB 为单位显示内存使用情况。
fdisk — 查看硬盘分区
fdisk
是磁盘分区工具,用于列出系统中的磁盘及其分区信息。
常用命令
sudo fdisk -l
-l
:列出所有磁盘及其分区信息。
mount — 挂载分区
mount
命令用于挂载文件系统,将分区或设备挂载到指定的目录。
常用命令
sudo mount /dev/sda2 /mnt/data # 将 /dev/sda2 分区挂载到 /mnt/data 目录
sudo mount -t ext4 /dev/sda1 /mnt/data # 挂载指定类型的分区
-t
:指定文件系统类型,如ext4
、xfs
等。-o
:指定挂载选项,如ro
(只读)或rw
(读写)。
进程管理
ps — 查看进程
ps
命令用于查看系统中当前运行的进程信息,帮助管理员监控系统状态和分析进程活动。
常用命令
ps aux
ps -ef
aux
:显示所有用户的所有进程。-ef
:以标准格式列出所有进程的详细信息,包括父进程、启动时间等。
top — 实时查看进程
top
命令可以实时显示系统的资源占用情况,包括 CPU、内存、各进程的资源消耗等,适合监控系统性能和进程健康状况。
使用说明
top
默认每 3 秒刷新一次,显示所有进程的资源使用情况。- 按
q
键退出top
界面。
常用操作
P
:按 CPU 使用率排序。M
:按内存使用率排序。k
:通过输入 PID 终止进程。
网络管理
网络接口管理
ifconfig
ifconfig
用于查看和配置网络接口信息。
常用命令:
ifconfig # 显示所有接口的详细信息
ifconfig ens33 # 查看指定接口
ifconfig eth0 down # 禁用接口 eth0
ifconfig eth0 up # 启用接口 eth0
ip
ip
命令是 ifconfig
的替代工具,功能更强大,支持更详细的网络接口配置。
常用命令:
ip a # 列出所有接口的信息
ip addr show eth0 / ip a show eth0 # 查看指定接口
ip link set eth0 up # 启用接口 eth0
ip link set eth0 down # 禁用接口 eth0
查看网络连接状态
netstat
netstat
用于查看网络连接、路由表和接口统计信息。
常用命令:
netstat -pantu
-n
:显示地址和端口号的数值形式,提升解析速度。-a
:显示所有连接(包括监听和非监听的套接字)。-l
:显示所有正在监听的网络连接。-t
:显示 TCP 连接。-u
:显示 UDP 连接。-p
:显示每个连接对应的进程 ID 和名称。
ss
ss
是 netstat
的更快速替代工具,性能优于 netstat
。它可以更高效地显示网络套接字信息。
常用命令:
ss -pantu
-n
、-a
、-t
、-u
、-p
:与netstat
的选项含义相同,用于查看特定的网络状态信息。
查看 ARP 缓存
arp
arp
用于管理和显示 IP 地址与 MAC 地址的映射关系(ARP 缓存)。通过 arp
,可以查看和修改系统中的 ARP 表。
常用命令:
arp -en
-e
:以易读格式显示 ARP 缓存中的条目,包括 IP 地址、MAC 地址等。-n
:不解析域名,加快执行速度。
路由信息管理
route
route
用于显示和管理系统的路由表,可以用于查看当前的路由信息、添加或删除路由条目。
常用命令:
route # 显示当前的路由表
route add default gw 192.168.1.1 # 添加默认网关
ip route
ip route
提供了更灵活和强大的路由管理功能,是 route
的现代替代工具,适用于复杂的路由配置。
常用命令:
ip route # 显示当前的路由表
sudo ip route add 10.10.10.0/24 dev eth0 # 添加到特定网络的路由
add
:添加新的路由条目。10.10.10.0/24
:目标网络地址和子网掩码。dev eth0
:指定通过eth0
接口到达目标网络。
路由跟踪工具
traceroute
traceroute
是用于跟踪数据包从本地主机到目标主机的路径的工具,可显示每一跳路由的 IP 地址和响应时间。
常用命令:
traceroute www.example.com
www.example.com
:目标主机的域名或 IP 地址。
网络配置文件
/etc/network/interfaces
/etc/network/interfaces
是 Debian 系统上用于网络接口配置的文件。可以在此文件中定义接口的 IP 地址、网关、子网掩码等信息。
常用配置示例:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
auto eth0
:自动启动接口eth0
。iface eth0 inet static
:配置接口eth0
使用静态 IP。address
、netmask
、gateway
:分别指定 IP 地址、子网掩码和网关。
其他命令
scp — 文件拷贝
scp
命令(Secure Copy)用于在不同主机之间通过 SSH 协议安全地复制文件或目录。适用于需要在本地与远程或两个远程主机之间传输文件的场景,scp
既保证了传输的加密安全,也提供了丰富的选项便于灵活操作。
常用选项
-r
:递归复制整个目录及其内容。-p
:保留文件的权限和修改时间。-C
:在传输过程中压缩文件,加速传输。-P [端口号]
:指定 SSH 端口(默认是 22),当远程主机使用非默认端口时需设置。
示例
-
从本地复制文件到远程主机
scp file.txt user@remote:/path/to/destination
- 将本地文件
file.txt
复制到远程主机remote
的/path/to/destination
目录下。
- 将本地文件
-
递归复制目录到远程主机
scp -r dir/ user@remote:/path/to/destination
- 将本地的
dir
目录及其内容递归复制到远程主机的/path/to/destination
路径。
- 将本地的
-
从远程主机复制文件到本地并重命名
scp root@1.1.1.1:/home/kali/.bashrc Copiedbashrc
- 以
root
用户从 IP 地址1.1.1.1
的远程主机上复制/home/kali/.bashrc
文件到本地并重命名为Copiedbashrc
。
- 以
-
保留文件属性并指定端口进行复制
scp -p -P 2222 passwd root@127.0.0.1:~
- 将本地文件
passwd
复制到127.0.0.1
本地的root
用户主目录,同时保留文件属性,指定 SSH 端口为2222
。
- 将本地文件
OpenSSL — 安全套接字层工具
openssl
是一个开源库和命令行工具,用于实现 SSL/TLS 协议、加密通信及密钥和证书管理。它支持多种加密算法,可用于生成密钥、创建证书签名请求 (CSR) 和证书格式转换等操作。
密码哈希生成
OpenSSL 支持多种密码哈希算法:
-
示例:
openssl passwd -1 123 # 使用 MD5 算法 openssl passwd -5 123 # 使用 SHA-256 算法
-
常用选项:
-salt <val>
:自定义盐值,防止彩虹表攻击-6
:SHA-512 算法-5
:SHA-256 算法-apr1
:MD5 的 Apache 变体-1
:MD5 算法
常用命令
-
生成 RSA 密钥对及证书请求 (CSR):
openssl genpkey -algorithm RSA -out private.key # 生成私钥 openssl rsa -pubout -in private.key -out public.key # 生成公钥 openssl req -new -key private.key -out request.csr # 生成 CSR
-
证书格式转换(PEM 转 DER):
openssl x509 -outform DER -in certificate.pem -out certificate.der