当前位置: 首页 > article >正文

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/linkln /path/to/target /path/to/link
跨文件系统可以跨文件系统不能跨文件系统
链接对象可以链接文件和目录只能链接文件,通常不能链接目录
文件的物理存储软链接有独立的 inode,指向目标文件路径硬链接指向相同的 inode,多个路径指向相同的文件内容
目标文件删除后软链接会变成无效链接(死链接)硬链接不会受目标文件删除的影响
文件内容修改修改软链接指向的文件会影响所有软链接修改任何一个硬链接都会影响其他硬链接
删除链接后的效果删除软链接不会影响目标文件,目标文件被删除后,软链接失效删除一个硬链接不影响文件,文件只有删除所有硬链接后才会被删除

使用案例

  1. 移动文件和创建软链接

假设我们需要将 newfile 移动到 newdir2 目录,并在原位置创建一个指向新位置的软链接:

mv newfile newdir2
ln -s newdir2/newfile newfile
  1. 拷贝文件和创建硬链接

假设我们需要将 file.txt 拷贝到 newdir.txt,并在原文件位置创建一个硬链接:

cp file.txt newdir.txt
ln file.txt hardlink.txt
  1. 创建软链接和硬链接

假设我们有一个文件 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-nn 格式。
  • -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 的文件。
高级查找示例
  1. 按时间查找
    查找 30 分钟内修改的 .sh 文件并列出:

    find . -type f -iname '*.sh' -mmin -30 -ls
    
    • -ls:显示文件详细信息(类似 ls -l 命令)。
  2. 按权限查找
    查找 root 用户的 .sh 文件,具有其他用户写权限,忽略错误:

    find / -user root -type f -perm -o=w -name "*.sh" 2>/dev/null
    
    • -user root:查找 root 所有的文件。
    • -perm -o=w:文件具有“其他用户写权限”。
    • 2>/dev/null:忽略权限不足的错误。
  3. 删除匹配文件
    查找并删除 .svn 目录:

    find . -name "*.svn" -exec rm -rf {} \;
    
    • -exec:对匹配的文件/目录执行命令,{} 表示匹配文件或目录。
  4. 按修改时间排序并分页查看
    查找 2 天前修改的文件,按修改时间排序,分页显示:

    find ~ -mtime 2 -ls | sort -k9 -k10 | more
    
    • sort -k9 -k10:按第 9 列(文件名)和第 10 列(修改时间)排序。
    • more:分页显示,便于查看。
  5. 增量备份(根据修改时间)

    查找修改时间在 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

查找命令路径

whereiswhich 都是用于定位命令路径的工具。

whereis

whereis 查找命令的二进制文件、源码和帮助文件路径。

  • 常用参数

    • -b:仅查找二进制文件路径
    • -m:仅查找帮助文件路径
  • 示例

    whereis ls
    
which

whichPATH 环境变量中查找命令的执行路径,适用于确认命令的安装位置。

  • 常用参数

    • -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:指定文件系统类型,如 ext4xfs 等。
  • -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

ssnetstat 的更快速替代工具,性能优于 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。
  • addressnetmaskgateway:分别指定 IP 地址、子网掩码和网关。

其他命令

scp — 文件拷贝

scp 命令(Secure Copy)用于在不同主机之间通过 SSH 协议安全地复制文件或目录。适用于需要在本地与远程或两个远程主机之间传输文件的场景,scp 既保证了传输的加密安全,也提供了丰富的选项便于灵活操作。

常用选项
  • -r:递归复制整个目录及其内容。
  • -p:保留文件的权限和修改时间。
  • -C:在传输过程中压缩文件,加速传输。
  • -P [端口号]:指定 SSH 端口(默认是 22),当远程主机使用非默认端口时需设置。
示例
  1. 从本地复制文件到远程主机

    scp file.txt user@remote:/path/to/destination
    
    • 将本地文件 file.txt 复制到远程主机 remote/path/to/destination 目录下。
  2. 递归复制目录到远程主机

    scp -r dir/ user@remote:/path/to/destination
    
    • 将本地的 dir 目录及其内容递归复制到远程主机的 /path/to/destination 路径。
  3. 从远程主机复制文件到本地并重命名

    scp root@1.1.1.1:/home/kali/.bashrc Copiedbashrc
    
    • root 用户从 IP 地址 1.1.1.1 的远程主机上复制 /home/kali/.bashrc 文件到本地并重命名为 Copiedbashrc
  4. 保留文件属性并指定端口进行复制

    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
    

http://www.kler.cn/a/384370.html

相关文章:

  • 2024 CSS保姆级教程二 - BFC详解
  • 使用Docker Compose构建多容器应用
  • 学习Vue之商城案例(代码+详解)
  • 云集电商:如何通过 OceanBase 实现降本 87.5%|OceanBase案例
  • MySQL缓存参数如何优化与表结构如何优化才算是最大性能的优化
  • mysql5安装
  • 在本地运行大模型:以Ollama为例
  • 2024最新版JavaScript逆向爬虫教程-------基础篇之Chrome开发者工具学习
  • 架构师:如何提高web网站的请求并发响应量?
  • Python中pandas组件学习总结
  • 【Linux】进程间通信(匿/命名管道、共享内存、消息队列、信号量)
  • 【go从零单排】实现枚举类型(Enum)
  • PyCharm中 argparse 库 的使用方法
  • jenkins流水线pipeline
  • Netty篇(学习前言)
  • mysql常见的一些配置项
  • C#-拓展方法
  • iOS开发 swift系列---一个视图数据修改后,如何刷新另外一个视图
  • 多机器人图优化:2024ICARA开源
  • 服务器数据恢复—分区结构被破坏的reiserfs文件系统数据恢复案例
  • 火山引擎云服务docker 安装
  • SpringBoot开发——8种读取配置文件信息的方式
  • 基于MPPT最大功率跟踪的光伏发电蓄电池控制系统simulink建模与仿真
  • 【ArcGISPro】单次将自己建立的工具箱添加至Arcpy中
  • C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
  • MySQL limit offset分页查询可能存在的问题