一、文件和命令操作
1. cd 命令
(它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径)
Linux 常用命令汇总涵盖了文件操作、权限管理、文本处理、搜索、压缩、进程管理及系统信息查询等核心功能。内容包括 cd、ls、cp、mv、rm 等基础命令,chmod、chown 权限设置,grep、sed、awk 文本处理,find 搜索,tar 压缩,ps、kill 进程控制,以及 uname、top、df 等系统监控工具。各命令的参数用法与典型示例,适用于 Linux 系统管理与开发场景。

(它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径)
cd /home # 进入 /home 目录
cd .. # 返回上一级目录
cd ../.. # 返回上两级目录
cd / # 返回根目录
cd - # 返回上次所在的目录
mkdir <目录名> # 创建目录
mkdir dir1 dir2 # 同时创建两个目录
mkdir -p /tmp/dir1/dir2 # 递归创建目录树
rm -f file1 # 删除 file1 文件
rmdir dir1 # 删除 dir1 目录
rm -rf dir1 # 删除 dir1 目录及其内容
rm -rf dir1 dir2 # 同时删除两个目录及其内容
pwd # 显示工作路径
ls # 查看目录中的文件
ls -l # 显示文件和目录的详细资料
ls -a # 列出全部文件,包含隐藏文件
ls -lh # 查看文件和目录的详情列表(增强文件大小易读性)
ls -lSr # 查看文件和目录列表(以文件大小升序查看)
tree # 查看文件和目录的树形结构(如果没有需要先安装 yum install tree)
ls -R # 连同子目录的内容一起列出(递归列出)
ls -al /proc/pid/exe # 通过 pid 查询程序正在运行的路径
(用于复制文件,copy 之意,它还可以把多个文件一次性地复制到一个目录下)
-a # 将文件的特性一起复制
-p # 连同文件的属性一起复制,而非使用默认方式,与-a 相似,常用于备份
-i # 若目标文件已经存在时,在覆盖时会先询问操作的进行
-r # 递归持续复制,用于目录的复制行为
-u # 目标文件与源文件有差异时才会复制
cp dir/* . # 复制某目录下的所有文件至当前目录
cp -a dir1 dir2 # 复制目录
cp -a /temp/dir1 . # 复制一个目录至当前目录
ln -s file1 link1 # 创建指向文件/目录的软链接
ln file1 lnk1 # 创建指向文件/目录的物理链接
touch -t 0712250000 file1 # 修改一个文件或目录的时间戳 (-YYMMDDhhmm)
-f force # 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i # 若目标文件已经存在,就会询问是否覆盖
-u # 若目标文件已经存在,且比目标文件新,才会更新
mv old_dir new_dir # 重命名/移动目录
-f : force # 忽略不存在的文件,不会出现警告消息
-i : 互动模式 # 在删除前会询问用户是否操作
-r : 递归删除 # 最常用于目录删除,它是一个非常危险的参数
(用于查看文本文件的内容,后接要查看的文件名,通常可用管道与 more 和 less 一起使用)
cat file1 # 从第一个字节开始正向查看文件的内容
cat -n file1 # 标示文件的行数
cat xxx.txt awk 'NR%2==1' tac file1 # 从最后一行开始反向查看一个文件的内容
more file1 # 查看一个长文件的内容
less file1 # 类似 more 命令,但允许方向操作
head -n 2 file1 # 查看一个文件的前两行
tail -f /log/msg # 实时查看添加到文件中的内容
tail -n 2 file1 # 查看一个文件的最后两行
tail -n +1000 file1 # 从 1000 行开始显示,显示 1000 行以后的
cat filename | head -n 3000 | tail -n +1000 # 显示 1000 行到 3000 行
cat filename | tail -n +3000 | head -n 1000 # 从第 3000 行开始,显示 1000(即显示 3000~3999 行)
grep ss hello.txt # 在文件 hello.txt 中查找关键词 ss
grep ^s hello.txt # 在文件 hello.txt 中查找以 s 开头的内容
grep [0-9] hello.txt # 选择 hello.txt 文件中所有包含数字的行
sed 's/ss/mm/g' hello.txt # 将 hello.txt 文件中的 ss 替换成 mm
sed '/^$/d' hello.txt # 从 hello.txt 文件中删除所有空白行
sed '/ *#/d; /^$/d' hello.txt # 从 hello.txt 文件中删除所有注释和空白行
sed -e '1d' hello.txt # 从文件 hello.txt 中排除第一行
sed -n '/s1/p' hello.txt # 查看只包含关键词"s1"的行
sed -e 's/ *$//' hello.txt # 删除每一行最后的空白字符
sed -e 's/s1//g' hello.txt # 从文档中只删除词汇 s1 并保留剩余全部
sed -n '1,5p;5q' hello.txt # 查看从第一行到第 5 行内容
sed -n '5p;5q' hello.txt # 查看第 5 行
paste file1 file2 # 合并两个文件或两栏的内容
paste -d '+' file1 file2 # 合并两个文件或两栏的内容,中间用"+"区分
sort file1 file2 # 排序两个文件的内容
sort file1 file2 uniq # 取出两个文件的并集 (重复的行只保留一份)
sort file1 file2 uniq -u # 删除交集,留下其他的行
sort file1 file2 uniq -d # 取出两个文件的交集 (只留下同时存在于两个文件中的文件)
comm -1 file1 file2 # 比较两个文件的内容 (去除'file1'所含内容)
comm -2 file1 file2 # 比较两个文件的内容 (去除'file2'所含内容)
comm -3 file1 file2 # 比较两个文件的内容 (去除两文件共有部分)
find / -name file # 从根目录开始搜索文件/目录
find / -user user1 # 搜索用户 user1 的文件/目录
find /dir -name *.bin # 在目录/dir 中搜索带有 .bin 后缀的文件
find / -name file1 # 从 '/' 开始进入根文件系统搜索文件和目录
find /usr/bin -type f -atime +100 # 搜索在过去 100 天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 # 搜索在 10 天内被创建或者修改过的文件
find . -regex '.*\(net\|comm\).*' # 匹配整个路径名,出当前目录树中所有文件名中任意位置包含字符串 net 或 comm 的文件
locate *.mp4 # 寻找 .mp4 结尾的文件
whereis <关键词> # 显示某二进制文件/可执行文件的路径
which <关键词> # 查找系统目录下某的二进制文件
(使用 "+" 设置权限,使用 "-" 用于取消)
ls -lh # 显示当前目录所有文件的权限
chmod 777 文件名 # 修改文件权限(最高权限)
chmod ugo+rwx dir # 设置目录的所有人 (u)、群组 (g) 以及其他人 (o) 以读(r,4)、写 (w,2) 和执行 (x,1) 的权限
chmod go-rwx dir1 # 删除群组 (g) 与其他人 (o) 对目录的读写执行权限
chmod u+s /bin/file1 # 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限
chmod u-s /bin/file1 # 禁用一个二进制文件的 SUID 位
chmod g+s /home/public # 设置一个目录的 SGID 位 - 类似 SUID,不过这是针对目录的
chmod g-s /home/public # 禁用一个目录的 SGID 位
chmod o+t /home/public # 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件
chmod o-t /home/public # 禁用一个目录的 STIKY 位
chmod +x 文件路径 # 为所有者、所属组和其他用户添加执行的权限
chmod -x 文件路径 # 为所有者、所属组和其他用户删除执行的权限
chmod u+x 文件路径 # 为所有者添加执行的权限
chmod g+x 文件路径 # 为所属组添加执行的权限
chmod o+x 文件路径 # 为其他用户添加执行的权限
chmod ug+x 文件路径 # 为所有者、所属组添加执行的权限
chmod =wx 文件路径 # 为所有者、所属组和其他用户添加写、执行的权限,取消读权限
chmod ug=wx 文件路径 # 为所有者、所属组添加写、执行的权限,取消读权限
(改变文件的所有者)
chown user1 file1 # 改变一个文件的所有人属性
chown -R user1 dir1 # 改变一个目录的所有人属性并同时改变改目录下所有文件的属性
chown user1:group1 file1 # 改变一个文件的所有人和群组属性
(改变文件所属用户组)
chgrp group1 file1 # 改变文件的群组
(分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等)
grep Aug /var/log/messages # 在文件'/var/log/messages'中查找关键词"Aug"
grep ^Aug /var/log/messages # 在文件'/var/log/messages'中查找以"Aug"开始的词汇
grep [0-9] /var/log/messages # 选择'/var/log/messages'文件中所有包含数字的行
grep Aug -R /var/log/* # 在目录'/var/log'及随后的目录中搜索字符串"Aug"
sed 's/stringa1/stringa2/g' example.txt # 将 example.txt 文件中的'string1'替换成'string2'
sed '/^$/d' example.txt # 从 example.txt 文件中删除所有空白行
paste file1 file2 # 合并两个文件或两栏的内容(查看两文件合并后的内容)
paste -d '+' file1 file2 # 合并两个文件或两栏的内容,中间用"+"区分
sort file1 file2 # 排序两个文件的内容
sort file1 file2 | uniq # 取出两个文件的并集 (重复的行只保留一份)
sort file1 file2 | uniq -u # 删除交集,留下其他的行
sort file1 file2 | uniq -d # 取出两个文件的交集 (只留下同时存在于两个文件中的文件)
comm -1 file1 file2 # 比较两个文件的内容只删除'file1'所包含的内容
comm -2 file1 file2 # 比较两个文件的内容只删除'file2'所包含的内容
comm -3 file1 file2 # 比较两个文件的内容只删除两个文件共有的部分
(对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如 gzip 和 bzip 等)进行压缩和解压)
-c # 新建打包文件
-t # 查看打包文件的内容含有哪些文件名
-x # 解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x 不能同时出现在同一条命令中
-j # 通过 bzip2 的支持进行压缩/解压缩
-z # 通过 gzip 的支持进行压缩/解压缩
-v # 在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename # filename 为要处理的文件
-C dir # 指定压缩/解压缩的目录 dir
# 压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
# 查询:tar -jtv -f filename.tar.bz2
# 解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
bunzip2 file1.bz2 # 解压一个叫做'file1.bz2'的文件
bzip2 file1 # 压缩一个叫做'file1'的文件
gunzip file1.gz # 解压一个叫做'file1.gz'的文件
gzip file1 # 压缩一个叫做'file1'的文件
gzip -9 file1 # 最大程度压缩
rar a file1.rar test_file # 创建一个叫做'file1.rar'的包
rar a file1.rar file1 file2 dir1 # 同时压缩'file1', 'file2'以及目录'dir1'
rar x file1.rar # 解压 rar 包
zip file1.zip file1 # 创建一个 zip 格式的压缩包
unzip file1.zip # 解压一个 zip 格式压缩包
zip -r file1.zip file1 file2 dir1 # 将几个文件和目录同时压缩成一个 zip 格式的压缩包
(用于将某个时间点的进程运行情况选取下来并输出,process 之意)
-A # 所有的进程均显示出来
-a # 不与 terminal 有关的所有进程
-u # 有效用户的相关进程
-x # 一般与 a 参数一起使用,可列出较完整的信息
-l # 较长,较详细地将 PID 的信息列出
ps -ef # 显示所有进程的详细信息
ps aux # 查看系统所有的进程数据
ps ax # 查看不与 terminal 有关的所有进程
ps -lA # 查看系统所有的进程数据
ps axjf # 查看连同一部分进程树状态
pstree -aup # 查看正在运行的树桩结构显示
netstat -lntp # 查看各个节点及进程和使用的端口号
kill -9 pid # (-9 表示强制关闭)
pkill 程序的名字 # 根据名字杀死进程
x,X : 在一行中,x 为向后删除一个字符(相当于 del 键),X 为向前删除一个字符(相当于 backspace 键)
dd : 删除光标所在的那一整行
ndd : n 为数字。从光标开始,删除向下 n 列
yy : 复制光标所在的那一行
nyy : n 为数字。复制光标所在的向下 n 行
p,P : p 为将已复制的数据粘贴到光标的下一行,P 则为贴在光标的上一行
u : 复原前一个操作
CTRL + r : 重做上一个操作
小数点 '.':重复前一个动作
:set number : 在每一行设置行标号
:n1,n2 m n3 : 移动 n1-n2 行 (包括 n1,n2) 到 n3 行之下
:n1,n2 co n3 : 复制 n1-n2 行 (包括 n1,n2) 到 n3 行之下
:n1,n2 d : 删除 n1-n2 行 (包括 n1,n2) 行
# 查看进程端口号:netstat -tunlp|grep 端口号
ss -tnl # 查看正在已使用的端口
shutdown -h now # 关闭系统 (1) 即刻关机
shutdown -h 10 # 10 分钟后关机
shutdown -h 11:00 # 11:00 关机
shutdown -h +10 # 预定时间关机(10 分钟后关机)
shutdown -c # 取消指定时间关机
shutdown -f now # 重启
shutdown -r 10 # 10 分钟后重启
shutdown -r 11:00 # 定时重启
reboot # 重启
init 6 # 重启
init 0 # 即刻关机
telinit 0 # 关机
poweroff # 立刻关机
halt # 关机
sync # buff 数据同步到磁盘
logout # 退出登录 Shell
time # 测算一个命令(即程序)的执行时间
# 查看系统的详细信息
lsb_release -a # 查看内核/OS/CPU 信息
uname -a # 查看内核版本
uname -r # 查看处理器架构
uname -m # 查看主机名称
arch # 查看主机名称
hostname # 显示当前登录系统的用户
who # 显示登陆时的用户名
who am i # 显示当前用户名
whoami # 查看 linux 版本信息
cat /proc/version # 查看 CPU 信息
cat /proc/cpuinfo # 查看中断
cat /proc/interrupts # 查看系统负载
cat /proc/loadavg # 查看系统运行时间、用户数、负载
uptime # 查看系统的环境便令
env # 查看系统 PCI 设备信息
lspci -tv # 查看已加载的系统模块
lsmod # 查看内存总量
grep MemTotal /proc/meminfo # 查看空闲内存量
grep MemFree /proc/meminfo # 查看内存用量和交换区用量
free -m # 显示系统时间
date # 显示 2021 日历表
cal 2021 # 动态显示 cpu/内存/进程情况
top # 每 1 秒采一次系统状态,采 20 次
vmstat 1 20 # 查看 io 读写/cpu 使用情况
iostat # 查看 cpu 使用情况(1 秒 1 次,共 10 次)
sar -u 1 10 # 查询磁盘性能
sar -d 1 10 # 找出占用内存资源最多的前 10 个进程
ps -auxf | sort -nr -k 4 | head -10 # 找出占用 CPU 资源最多的前 10 个进程
ps -auxf | sort -nr -k 3 | head -10 # 查看 cpu 内存占用情况
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head
# 查看所属有磁盘分区
fdisk -l # 查看所有交换分区
swapon -s # 查看磁盘使用情况及挂载点
df -h # 查看磁盘使用情况及挂载点
df -hl # 查看指定某个目录大小
du -sh /dir # 从高到底依次显示文件和目录大小
du -sk * | sort -rn # 查看内存
free -h # 查看 CPUs
cat /proc/cpuinfo # 挂在 hda2 盘
mount /dev/hda2 /mnt/hda2 # 指定文件系统类型挂载(如 ntfs)
mount -t ntfs /dev/sdc1 /mnt/usbhd1 # 挂载 iso 文件
mount -o loop xxx.iso /mnt/cdrom # 挂载 usb 盘/闪存设备
mount /dev/sda1 /mnt/usbdisk # 通过设备名卸载
umount -v /dev/sda1 # 通过挂载点卸载
umount -v /mnt/mymnt # 强制卸载 (慎用)
fuser -km /mnt/hda1
# 创建用户
useradd ss # 查看所用系统用户
cut -d: -f1 /etc/passwd # 删除用户
userdel -r ss # 创建用户组
groupadd group_name # 查看系统所有组
cut -d: -f1 /etc/group # 删除用户组
groupdel group_name # 修改用户的组
usermod -g group_name user_name # 将用户添加到组
usermod -aG group_name user_name # 修改用户 ss 的登录 Shell、主目录及用户组
usermod -s /bin/ksh -d /home/codepig –g dev ss # 查看 ss 用户所在的组
groups ss # 切换到另一个用户环境
su user_name # 修改口令
passwd # 修改用户密码
passwd ss # 查看用户活动
w # 查看指定用户 ss 的信息
id ss # 查看用户登录日志
last # 查看当前用户的计划任务
crontab -l
# 查看网络接口属性
ifconfig # 查看某网卡的配置
ifconfig eth0 # 查看路由表
route -n # 查看所有监听端口
netstat -lntp # 查看已经建立连接的 TCP 连接
netstat -antp # 查看 TCP/UDP 的状态信息
netstat -lutp # 启用 eth0 网络设备
ifup eth0 # 禁用 eth0 网络设备
ifdown eth0 # 查看 iptables 规则
iptables -L # 配置 ip 地址
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 # 以 dhcp 模式启用 eth0
dhclient eth0 # 配置默认网关
route add -net 0/0 gw Gateway_IP # 配置静态路由到达网络'192.168.0.0/16'
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 # 删除静态路由
route del 0/0 gw Gateway_IP # 查看主机名
hostname # 解析主机名
host 主机名 # 查询 DNS 记录,查看域名解析是否正常
nslookup 主机名 # 查看所有进程
ps -ef # 过滤出你需要的进程
ps -ef|grep redis # kill 指定名称的进程
kill -s name # kill 指定 pid 的进程
kill -s pid
# 查看当前目录总大小
du -sh # 查看当前目录所有子目录大小
du -sh * # 查看当前目录和所有子目录大小,最后一行会显示当前目录的总大小,不包括隐藏文件
du -ach * # 指定文件夹显示层次深度
du -h –max-depth=0 *
du -h --max-depth=0
# 查看有哪些自启服务
systemctl list-unit-files --type service | grep enabled # 查看服务的开机启动状态
systemctl list-unit-files --type service |grep service_name # 启动(关闭,重启,查看)某个服务
# centos6 service service_name (start|stop|restart|status)
# centos7 systemctl (start|stop|restart|status) service_name # 设置开机启动或者关闭某个服务
# centos6 开机启动:chkconfig --add service_name 或者 chkconfig service_name on 开机关闭:chkconfig --del service_name 或者 chkconfig service_name off
# centos7 开机启动:systemctl enable service_name 开机关闭:systemctl disable service_name

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online