Linux文件操作实战:压缩/传输/计算10分钟速成,掌握核心命令组合与Shell内核交互秘籍



🔥@雾忱星: 个人主页
👀专栏:《C++学习之旅》《Linux学习指南》
💪学习阶段:C/C++、Linux
⏳"人理解迭代,神理解递归。"


文章目录

  • 引言
  • 一、文件压缩与解压
    • [1.1 tar:压缩与解压的"万能工具"](#1.1 tar:压缩与解压的“万能工具”)
  • 二、远程文件传输+终端计算
    • [2.1 scp:远程拷贝](#2.1 scp:远程拷贝)
    • [2.2 bc:Linux终端计算器](#2.2 bc:Linux终端计算器)
  • 三、必看面试题+常用热键
    • [3.1 你的计算机体系结构是什么?](#3.1 你的计算机体系结构是什么?)
    • [3.2 如何查看你的 Linux 的内核版本?](#3.2 如何查看你的 Linux 的内核版本?)
    • [3.3 如何查看你的具体系统发行版?](#3.3 如何查看你的具体系统发行版?)
    • [3.4 四个热键](#3.4 四个热键)
  • 四、Shell与内核交互原理
    • [4.1 原理解析](#4.1 原理解析)
    • [4.2 明确核心角色:Shell是"翻译官",内核是"执行者"](#4.2 明确核心角色:Shell是“翻译官”,内核是“执行者”)
  • 总结

引言

Linux终端操作是运维、开发必备基础,日常工作与面试均高频涉及。

本文以实操为核心,讲解tar、scp、bc指令用法,补充面试题与热键,结合故事拆解Shell与内核交互逻辑。

知识点搭配终端案例,新手可直接复制测试,快速掌握Linux基础。


一、文件压缩与解压

1.1 tar:压缩与解压的"万能工具"

tar 是 Linux 最常用的压缩 / 解压指令,支持多种压缩格式(.tar、.tar.gz、.tar.bz2等),其核心作用是"打包"(将多个文件/文件夹合并)和"压缩"(减小体积),可以结合使用。

语法: tar [选项] 目标文件/目录
功能: 把多个文件/目录打包成一个 (.tar) 文件。

常用选项:

  • -c:创建压缩包(打包/压缩时必用)

  • -x:解压压缩包(解压时必用)

  • -f:指定压缩包文件名(必须放在所有选项最后,紧跟文件名)

  • -v:显示操作过程(常用,但是不建议在背景执行过程使用)

  • -C:指定解压目录(解压时用,可自定义输出路径)

  • -z:使用 gzip 算法压缩/解压(对应 .tar.gz 格式,最常用)

  • -j:使用 bzip2 算法压缩/解压(对应 .tar.bz2 格式,压缩率更高)

  • -t:查看压缩包内的文件列表(不解压)

常用组合参数:

  • -czf [压缩包文件名.tgz] [要打包的文件/目录] / -czvf...显示压缩过程
bash 复制代码
#==================
#使用-czf打包压缩文件
#==================
[root@VM-0-6-centos ~]# ls
B  test.txt
#递归创建目录
[root@VM-0-6-centos ~]# mkdir -p lesson/a/b/c/d
[root@VM-0-6-centos ~]# ls
B  lesson  test.txt
[root@VM-0-6-centos ~]# tree lesson/
lesson/
`-- a
    `-- b
        `-- c
            `-- d

4 directories, 0 files
[root@VM-0-6-centos ~]# tar -czf lesson.tgz lesson/
[root@VM-0-6-centos ~]# ls
B  lesson  lesson.tgz  test.txt
[root@VM-0-6-centos ~]# ll lesson.tgz 
-rw-r--r-- 1 root root 165 Jan 20 13:33 lesson.tgz

#==============
# -v显示压缩过程
#==============
#移除已存在的压缩包
[root@VM-0-6-centos ~]# rm lesson.tgz 
rm: remove regular file 'lesson.tgz'? y
[root@VM-0-6-centos ~]# ls
B  lesson  test.txt
[root@VM-0-6-centos ~]# tar -czvf lesson.tgz lesson/
lesson/
lesson/a/
lesson/a/b/
lesson/a/b/c/
lesson/a/b/c/d/
[root@VM-0-6-centos ~]# ls
B  lesson  lesson.tgz  test.txt
[root@VM-0-6-centos ~]# ll lesson.tgz 
-rw-r--r-- 1 root root 165 Jan 20 13:35 lesson.tgz

#==================================
#在tar命令末尾加 & :表示行为在后台完成
#==================================
#后台打包压缩
[root@VM-0-6-centos ~]# pwd
/root
[root@VM-0-6-centos ~]# ls
B  lesson  lesson.tgz  test.txt
[root@VM-0-6-centos ~]# rm lesson.tgz 
rm: remove regular file 'lesson.tgz'? y
[root@VM-0-6-centos ~]# ls
B  lesson  test.txt
[root@VM-0-6-centos ~]# tar -czf lesson.tgz lesson/ &
[1] 26377
[root@VM-0-6-centos ~]# 
[1]+  Done                    tar -czf lesson.tgz lesson/
  • -xzf [压缩包文件名.tgz]... -C [路径](解压到指定位置)
bash 复制代码
#=======================
#解压到当前路径下的B文件夹中
#=======================
[root@VM-0-6-centos ~]# tar -xzf lesson.tgz -C ./B
[root@VM-0-6-centos ~]# ls
B  lesson  lesson.tgz  test.txt
[root@VM-0-6-centos ~]# ls B
b1  lesson
[root@VM-0-6-centos ~]# tree ./B/lesson/
./B/lesson/
`-- a
    `-- b
        `-- c
            `-- d

4 directories, 0 files

#==================================
#在tar命令末尾加 & :表示行为在后台完成
#==================================
#后台解压
[root@VM-0-6-centos ~]# ls B
b1
[root@VM-0-6-centos ~]# tar -xzf lesson.tgz -C ./B &
[1] 26790
[root@VM-0-6-centos ~]# 
[1]+  Done                    tar -xzf lesson.tgz -C ./B

二、远程文件传输+终端计算

2.1 scp:远程拷贝

scp 基于 SSH 协议,可实现本地与远程服务器、远程服务器之间的文件/目录传输,传输过程加密,安全可靠,适合跨服务器同步文件。

语法:

  • 本地 → 远程scp [选项] 本地文件/目录 远程用户@远程IP:远程路径
  • 远程 → 本地scp [选项] 远程用户@远程IP:远程文件/目录 本地路径

常用选项:

  • -r:递归传输目录(传输文件夹时必用,否则只传空目录)
  • -p:保留文件的修改时间、权限等属性(传输后文件属性不变)。

2.2 bc:Linux终端计算器

bc 是 Linux 内置的命令行计算器,支持 整数/小数运算、进制转换、函数计算,适合在终端快速执行数学运算,无需打开图形化计算器。

语法:

  • 直接进入计算器交互模式:bc(输入运算式回车计算,输入 quit 退出)
  • 非交互模式(一次性计算):echo "运算式" | bc [选项]

常用选项: -l:加载数学库(支持小数运算、三角函数等,必加否则默认整数运算)。

使用:

bash 复制代码
#========================
#默认下,计算器不支持小数运算
#========================
[root@VM-0-6-centos ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+2
3
3/3
1
2*3
6
1/2
0
1.2/2
0
quit

#=======
#-l选项
#=======
[root@VM-0-6-centos ~]# bc -l
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+2
3
2*3
6
1/2
.50000000000000000000
1.2/2
.60000000000000000000
quit


#==========
#非交互模式-管道
#==========
[root@VM-0-6-centos ~]# echo "1+2" | bc
3
[root@VM-0-6-centos ~]# echo "1*2" | bc
2
[root@VM-0-6-centos ~]# echo "1?2" | bc
(standard_in) 1: illegal character: ?
(standard_in) 1: syntax error
[root@VM-0-6-centos ~]# echo "1/2" | bc
0
[root@VM-0-6-centos ~]# echo "1/2" | bc -l
.50000000000000000000

三、必看面试题+常用热键

3.1 你的计算机体系结构是什么?

计算机体系结构是什么,本质问的是 CPU架构是什么。

指令: uname -r查看:

bash 复制代码
[root@VM-0-6-centos ~]# uname -r
3.10.0-1160.119.1.el7.x86_64

其中 x86_64就是计算机的体系结构,后面如果没有64,那就是32(但是很少见)。

3.2 如何查看你的 Linux 的内核版本?

内核版本是Linux操作系统核心组件的版本号,就像汽车的发动机版本,决定了系统的基础功能和性能。

也是指令uname -r查看:

bash 复制代码
3.10.0-1160.119.1.el7.x86_64

其中3.10.0-1160.119.1就是内核版本

bash 复制代码
# 您的内核版本:3.10.0-1160.119.1
3.10.0-1160.119.1.el7.x86_64
┌──┬──┬──┬──────────┬────────────┬──────┬─────────┐
│3 │10│0 │ -1160    │ .119.1     │ .el7 │ .x86_64 │
├──┼──┼──┼──────────┼────────────┼──────┼─────────┤
│主│次│修│ RedHat    │  安全更新   │ 发行版│  硬件    │
│版│版│订│ 基础构建   │   序列号    │ 标识  │  架构    │
│本│本│版│  编号     │             │      │         │
│号│号│本│           │            │      │         │
└──┴──┴──┴──────────┴────────────┴──────┴─────────┘

3.3 如何查看你的具体系统发行版?

指令:

bash 复制代码
[root@VM-0-6-centos ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

其中发行版:

bash 复制代码
NAME="CentOS Linux"
VERSION="7 (Core)"

3.4 四个热键

热键 名称 作用
Ctrl + C 中断/停止 强制终止当前正在运行的前台进程(程序)
Ctrl + R 反向搜索 搜索历史命令记录(输入关键词后会匹配最近执行过好友关键词的指令)
Ctrl + D 退出 结束输入(EOF),或退出当前Shell终端(等同于exit
Tab 自动补全 最常用,按一次会自动补全文件名/命令;按下两次列出所有匹配项

【补充】:

[ 关机 ]

语法: shutdown [选项]

常用选项:

  • -h:将系统的服务停掉后,立即关机
  • -r:再将系统的服务停掉之后就重新启动
  • -t sec:-t 后加秒数,代表过几秒后关机

【命令扩展】:

  • 安装和登录命令: login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
  • 文件处理命令: file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
  • 系统管理相关命令: df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
  • 网络操作命令: ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、nslookup;
  • 系统安全相关命令: passwd、su、umask、chgrp、chmod、chown、chattr、sudo、ps、who;
  • 其它命令: tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

四、Shell与内核交互原理

作为 Linux 使用者,我们每天都在终端输入命令(如ls、tar),但你是否好奇:敲下回车后,计算机是==如何理解并执行这个命令的?==核心答案就在于Shell与内核的协同工作

4.1 原理解析

Linux 严格说是一个操作系统,称为"核心(kernel)",但是对于一般用户,不能直接使用kernel,而是由其"外壳程序",即Shell来与核心沟通。

从技术角度,Shell的本质的是"命令解释器":将用户的命令翻译给核心处理;同时,将核心处理结果翻译给用户。

4.2 明确核心角色:Shell是"翻译官",内核是"执行者"

下面以一个形象有趣的故事来理解交互流程:

交互情景一:小刘(用户)、王婆(Shell)、如烟(内核)

小刘是一个有志青年,年少有为,但是架不住他的村长老爹催婚。由于吧小刘对这件事有点不知所措,更不敢与女孩子交流 ,于是拜托王婆 去和心爱的女子如烟说媒。但是当王婆将小刘的情况说给了如烟,如烟拒绝了 ,王婆就把结果告诉了小刘

  • 用户 (小王) 有操作需求(想找如花),但既没有权限、也不懂交流,无法直接对接内核(如花);
  • Shell(王婆) 作为唯一中介,先接收用户的指令(小王说 "喜欢如花"),解析 后转换成内核能懂的 "系统调用"(王婆按规矩说媒);
  • 内核 (如花) 只响应 Shell 的合法请求,处理后返回结果(如花拒绝),再由 Shell 把结果格式化反馈给用户(王婆告诉小王被拒)。

【核心】:用户不直接接触内核,所有指令都经 Shell "翻译" 后传递给内核,内核处理完结果再通过 Shell 回传给用户。

交互情景二:

听到被拒绝后,小刘也忍不住了,我这么优秀一个人,还能拒绝我?于是再次拜托王婆去说媒。等到王婆改天再去,发现如烟和别的男生在一起,王婆这就明白了,于是将如烟有对象的结果告诉了小刘,小刘也就明白了。

  • 用户 (小王) 提出需求(再去说媒),但可能提出不合理或非法的要求;
  • Shell(王婆) 作为 "守门员",在向内核传递请求前,会先进行前置判断(查看情况);
  • Shell 发现问题(如花有对象 / 命令语法错误),直接拦截请求,不再去打扰内核;
  • 反馈结果:Shell 直接告诉用户 "不行",内核(如花)全程未被打扰。

【核心】:Shell 具有 "过滤 / 拦截" 功能,能在用户请求触及内核之前,自行处理或拒绝不合理的指令,从而保护内核的资源和安全。

交互场景三:

小刘本想放弃,但是他老爹仍要求王婆再去试试,碍于情面,王婆答应了 。但是为了不砸了自己这块金字招牌,派了徒弟去。

  • 用户(小刘) 受老爹施压,再次向 Shell(王婆)发起请求(找如花说媒);
  • Shell(王婆) 碍于情面无法拒绝,但为了保护自身(不砸招牌),不直接对接内核(如花),而是创建子进程(派徒弟)代为执行请求;
  • 子进程 (徒弟) 作为 Shell 的代理,向内核(如花)传递请求,内核处理后返回结果(拒绝);
  • 子进程(徒弟) 结束并将结果反馈给 Shell(王婆),最终由 Shell 把结果告知用户(小刘)。

【核心】: Shell 在处理用户请求时,会创建独立子进程代为与内核交互,既满足用户需求,又保护自身主进程不受影响,避免 "砸招牌"。


总结

html 复制代码
🍓 我是晨非辰Tong!若这篇技术干货帮你打通了学习中的卡点:
👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长
❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量
⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用
💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑
🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解
技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标!

结语:

本文覆盖Linux终端实操技能与Shell、内核交互原理,通俗易懂、层层递进。

掌握文中指令可高效处理文件操作,牢记热键与查询命令提升效率,理解交互原理可排查基础异常。

建议实操案例、牢记原理,为Linux进阶学习筑牢基础。

相关推荐
币之互联万物2 小时前
HeyCyan智能眼镜,如何用声网“对话式AI引擎”重构人机交互?
人工智能·ai
代码AC不AC2 小时前
【Linux】环境变量
linux·环境变量·命令行参数
MSTcheng.2 小时前
【C++】使用哈希表封装unordered_set和unordered_map!
c++·哈希算法·散列表·map/set封装
小镇学者2 小时前
【python】python虚拟环境与pycharmIDE配置
开发语言·python
波动几何2 小时前
模式提示词套件
人工智能
ViiTor_AI2 小时前
Instagram 视频如何转文字并翻译成多语言?AI 字幕与本地化实战指南
大数据·人工智能
q_35488851532 小时前
交通数据分析项目:python地铁数据可视化分析系统 Flask框架 爬虫 数据分析 轨道数据 地铁数据分析 大数据 (源码)✅
人工智能·爬虫·python·机器学习·信息可视化·数据分析·flask
物联网软硬件开发-轨物科技3 小时前
【轨物方案】新能源的下半场:构筑光伏场站全生命周期智慧运维新范式
大数据·人工智能·物联网
努力努力再努力wz3 小时前
【Linux网络系列】:JSON+HTTP,用C++手搓一个web计算器服务器!
java·linux·运维·服务器·c语言·数据结构·c++