Linux文件操作實(shí)戰(zhàn)之壓縮,遠(yuǎn)程傳輸和終端計(jì)算速成
引言
Linux終端操作是運(yùn)維、開(kāi)發(fā)必備基礎(chǔ),日常工作與面試均高頻涉及。
本文以實(shí)操為核心,講解tar、scp、bc指令用法,補(bǔ)充面試題與熱鍵,結(jié)合故事拆解Shell與內(nèi)核交互邏輯。
知識(shí)點(diǎn)搭配終端案例,新手可直接復(fù)制測(cè)試,快速掌握Linux基礎(chǔ)。
一、文件壓縮與解壓
1.1 tar:壓縮與解壓的“萬(wàn)能工具”
tar 是 Linux 最常用的壓縮 / 解壓指令,支持多種壓縮格式(.tar、.tar.gz、.tar.bz2等),其核心作用是“打包”(將多個(gè)文件/文件夾合并)和“壓縮”(減小體積),可以結(jié)合使用。
語(yǔ)法:tar [選項(xiàng)] 目標(biāo)文件/目錄。
功能: 把多個(gè)文件/目錄打包成一個(gè) (.tar) 文件。
常用選項(xiàng):
-c:創(chuàng)建壓縮包(打包/壓縮時(shí)必用)-x:解壓壓縮包(解壓時(shí)必用)-f:指定壓縮包文件名(必須放在所有選項(xiàng)最后,緊跟文件名)-v:顯示操作過(guò)程(常用,但是不建議在背景執(zhí)行過(guò)程使用)-C:指定解壓目錄(解壓時(shí)用,可自定義輸出路徑)-z:使用 gzip 算法壓縮/解壓(對(duì)應(yīng) .tar.gz 格式,最常用)-j:使用 bzip2 算法壓縮/解壓(對(duì)應(yīng) .tar.bz2 格式,壓縮率更高)-t:查看壓縮包內(nèi)的文件列表(不解壓)
常用組合參數(shù):
-czf [壓縮包文件名.tgz] [要打包的文件/目錄](méi) / -czvf...顯示壓縮過(guò)程
#==================
#使用-czf打包壓縮文件
#==================
[root@VM-0-6-centos ~]# ls
B test.txt
#遞歸創(chuàng)建目錄
[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顯示壓縮過(guò)程
#==============
#移除已存在的壓縮包
[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命令末尾加 & :表示行為在后臺(tái)完成
#==================================
#后臺(tái)打包壓縮
[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 [路徑](解壓到指定位置)
#=======================
#解壓到當(dāng)前路徑下的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命令末尾加 & :表示行為在后臺(tái)完成
#==================================
#后臺(tái)解壓
[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
二、遠(yuǎn)程文件傳輸+終端計(jì)算
2.1 scp:遠(yuǎn)程拷貝
scp 基于 SSH 協(xié)議,可實(shí)現(xiàn)本地與遠(yuǎn)程服務(wù)器、遠(yuǎn)程服務(wù)器之間的文件/目錄傳輸,傳輸過(guò)程加密,安全可靠,適合跨服務(wù)器同步文件。
語(yǔ)法:
- 本地 → 遠(yuǎn)程:
scp [選項(xiàng)] 本地文件/目錄 遠(yuǎn)程用戶(hù)@遠(yuǎn)程IP:遠(yuǎn)程路徑 - 遠(yuǎn)程 → 本地:
scp [選項(xiàng)] 遠(yuǎn)程用戶(hù)@遠(yuǎn)程IP:遠(yuǎn)程文件/目錄 本地路徑
常用選項(xiàng):
-r:遞歸傳輸目錄(傳輸文件夾時(shí)必用,否則只傳空目錄)-p:保留文件的修改時(shí)間、權(quán)限等屬性(傳輸后文件屬性不變)。
2.2 bc:Linux終端計(jì)算器
bc 是 Linux 內(nèi)置的命令行計(jì)算器,支持 整數(shù)/小數(shù)運(yùn)算、進(jìn)制轉(zhuǎn)換、函數(shù)計(jì)算,適合在終端快速執(zhí)行數(shù)學(xué)運(yùn)算,無(wú)需打開(kāi)圖形化計(jì)算器。
語(yǔ)法:
- 直接進(jìn)入計(jì)算器交互模式:
bc(輸入運(yùn)算式回車(chē)計(jì)算,輸入quit退出) - 非交互模式(一次性計(jì)算):
echo "運(yùn)算式" | bc [選項(xiàng)]
常用選項(xiàng):-l:加載數(shù)學(xué)庫(kù)(支持小數(shù)運(yùn)算、三角函數(shù)等,必加否則默認(rèn)整數(shù)運(yùn)算)。
使用:
#======================== #默認(rèn)下,計(jì)算器不支持小數(shù)運(yùn)算 #======================== [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選項(xiàng) #======= [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 你的計(jì)算機(jī)體系結(jié)構(gòu)是什么?
計(jì)算機(jī)體系結(jié)構(gòu)是什么,本質(zhì)問(wèn)的是 CPU架構(gòu)是什么。
指令:uname -r查看:
[root@VM-0-6-centos ~]# uname -r 3.10.0-1160.119.1.el7.x86_64
其中 x86_64就是計(jì)算機(jī)的體系結(jié)構(gòu),后面如果沒(méi)有64,那就是32(但是很少見(jiàn))。
3.2 如何查看你的 Linux 的內(nèi)核版本?
內(nèi)核版本是Linux操作系統(tǒng)核心組件的版本號(hào),就像汽車(chē)的發(fā)動(dòng)機(jī)版本,決定了系統(tǒng)的基礎(chǔ)功能和性能。
也是指令uname -r查看:
3.10.0-1160.119.1.el7.x86_64
其中3.10.0-1160.119.1就是內(nèi)核版本
# 您的內(nèi)核版本: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 │ 安全更新 │ 發(fā)行版│ 硬件 │
│版│版│訂│ 基礎(chǔ)構(gòu)建 │ 序列號(hào) │ 標(biāo)識(shí) │ 架構(gòu) │
│本│本│版│ 編號(hào) │ │ │ │
│號(hào)│號(hào)│本│ │ │ │ │
└──┴──┴──┴──────────┴────────────┴──────┴─────────┘
3.3 如何查看你的具體系統(tǒng)發(fā)行版?
指令:
[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"
其中發(fā)行版:
NAME="CentOS Linux" VERSION="7 (Core)"
3.4 四個(gè)熱鍵
| 熱鍵 | 名稱(chēng) | 作用 |
|---|---|---|
| Ctrl + C | 中斷/停止 | 強(qiáng)制終止當(dāng)前正在運(yùn)行的前臺(tái)進(jìn)程(程序) |
| Ctrl + R | 反向搜索 | 搜索歷史命令記錄(輸入關(guān)鍵詞后會(huì)匹配最近執(zhí)行過(guò)好友關(guān)鍵詞的指令) |
| Ctrl + D | 退出 | 結(jié)束輸入(EOF),或退出當(dāng)前Shell終端(等同于exit) |
| Tab | 自動(dòng)補(bǔ)全 | 最常用,按一次會(huì)自動(dòng)補(bǔ)全文件名/命令;按下兩次列出所有匹配項(xiàng) |
【補(bǔ)充】:
1.[ 關(guān)機(jī) ]
語(yǔ)法:shutdown [選項(xiàng)]。
常用選項(xiàng):
-h:將系統(tǒng)的服務(wù)停掉后,立即關(guān)機(jī)-r:再將系統(tǒng)的服務(wù)停掉之后就重新啟動(dòng)-t sec:-t 后加秒數(shù),代表過(guò)幾秒后關(guān)機(jī)
2.【命令擴(kuò)展】:
- 安裝和登錄命令: login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
- 文件處理命令: file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
- 系統(tǒng)管理相關(guān)命令: df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
- 網(wǎng)絡(luò)操作命令: ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、nslookup;
- 系統(tǒng)安全相關(guān)命令: passwd、su、umask、chgrp、chmod、chown、chattr、sudo、ps、who;
- 其它命令: tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
四、Shell與內(nèi)核交互原理
作為 Linux 使用者,我們每天都在終端輸入命令(如ls、tar),但你是否好奇:敲下回車(chē)后,計(jì)算機(jī)是==如何理解并執(zhí)行這個(gè)命令的?==核心答案就在于Shell與內(nèi)核的協(xié)同工作。
4.1 原理解析
Linux 嚴(yán)格說(shuō)是一個(gè)操作系統(tǒng),稱(chēng)為“核心(kernel)”,但是對(duì)于一般用戶(hù),不能直接使用kernel,而是由其“外殼程序”,即Shell來(lái)與核心溝通。
從技術(shù)角度,Shell的本質(zhì)的是“命令解釋器”:將用戶(hù)的命令翻譯給核心處理;同時(shí),將核心處理結(jié)果翻譯給用戶(hù)。
4.2 明確核心角色:Shell是“翻譯官”,內(nèi)核是“執(zhí)行者”
下面以一個(gè)形象有趣的故事來(lái)理解交互流程:
交互情景一:小劉(用戶(hù))、王婆(Shell)、如煙(內(nèi)核)
小劉是一個(gè)有志青年,年少有為,但是架不住他的村長(zhǎng)老爹催婚。由于吧小劉對(duì)這件事有點(diǎn)不知所措,更不敢與女孩子交流,于是拜托王婆去和心愛(ài)的女子如煙說(shuō)媒。但是當(dāng)王婆將小劉的情況說(shuō)給了如煙,如煙拒絕了,王婆就把結(jié)果告訴了小劉。
- 用戶(hù)(小王) 有操作需求(想找如花),但既沒(méi)有權(quán)限、也不懂交流,無(wú)法直接對(duì)接內(nèi)核(如花);
Shell(王婆) 作為唯一中介,先接收用戶(hù)的指令(小王說(shuō) “喜歡如花”),解析后轉(zhuǎn)換成內(nèi)核能懂的 “系統(tǒng)調(diào)用”(王婆按規(guī)矩說(shuō)媒);- 內(nèi)核(如花) 只響應(yīng) Shell 的合法請(qǐng)求,處理后返回結(jié)果(如花拒絕),再由 Shell 把結(jié)果格式化反饋給用戶(hù)(王婆告訴小王被拒)。
【核心】:用戶(hù)不直接接觸內(nèi)核,所有指令都經(jīng) Shell “翻譯” 后傳遞給內(nèi)核,內(nèi)核處理完結(jié)果再通過(guò) Shell 回傳給用戶(hù)。

交互情景二:
聽(tīng)到被拒絕后,小劉也忍不住了,我這么優(yōu)秀一個(gè)人,還能拒絕我?于是再次拜托王婆去說(shuō)媒。等到王婆改天再去,發(fā)現(xiàn)如煙和別的男生在一起,王婆這就明白了,于是將如煙有對(duì)象的結(jié)果告訴了小劉,小劉也就明白了。
- 用戶(hù)(小王) 提出需求(再去說(shuō)媒),但可能提出不合理或非法的要求;
Shell(王婆) 作為 “守門(mén)員”,在向內(nèi)核傳遞請(qǐng)求前,會(huì)先進(jìn)行前置判斷(查看情況);Shell發(fā)現(xiàn)問(wèn)題(如花有對(duì)象 / 命令語(yǔ)法錯(cuò)誤),直接攔截請(qǐng)求,不再去打擾內(nèi)核;- 反饋結(jié)果:Shell 直接告訴用戶(hù) “不行”,內(nèi)核(如花)全程未被打擾。
【核心】:Shell 具有 “過(guò)濾 / 攔截” 功能,能在用戶(hù)請(qǐng)求觸及內(nèi)核之前,自行處理或拒絕不合理的指令,從而保護(hù)內(nèi)核的資源和安全。

交互場(chǎng)景三:
小劉本想放棄,但是他老爹仍要求王婆再去試試,礙于情面,王婆答應(yīng)了 。但是為了不砸了自己這塊金字招牌,派了徒弟去。
- 用戶(hù)(小劉) 受老爹施壓,再次向 Shell(王婆)發(fā)起請(qǐng)求(找如花說(shuō)媒);
Shell(王婆) 礙于情面無(wú)法拒絕,但為了保護(hù)自身(不砸招牌),不直接對(duì)接內(nèi)核(如花),而是創(chuàng)建子進(jìn)程(派徒弟)代為執(zhí)行請(qǐng)求;- 子進(jìn)程(徒弟) 作為 Shell 的代理,向內(nèi)核(如花)傳遞請(qǐng)求,內(nèi)核處理后返回結(jié)果(拒絕);
- 子進(jìn)程(徒弟) 結(jié)束并將結(jié)果反饋給 Shell(王婆),最終由 Shell 把結(jié)果告知用戶(hù)(小劉)。
【核心】: Shell 在處理用戶(hù)請(qǐng)求時(shí),會(huì)創(chuàng)建獨(dú)立子進(jìn)程代為與內(nèi)核交互,既滿足用戶(hù)需求,又保護(hù)自身主進(jìn)程不受影響,避免 “砸招牌”。

以上就是Linux文件操作實(shí)戰(zhàn)之壓縮,遠(yuǎn)程傳輸和終端計(jì)算速成的詳細(xì)內(nèi)容,更多關(guān)于Linux文件操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Centos7更改網(wǎng)卡名稱(chēng)Eth0的方法
這篇文章主要介紹了Centos7更改網(wǎng)卡名稱(chēng)Eth0的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Ubuntu開(kāi)機(jī)出現(xiàn)黑屏現(xiàn)象的常見(jiàn)解決方案
在使用 Ubuntu 操作系統(tǒng)時(shí),一些用戶(hù)可能會(huì)遇到開(kāi)機(jī)后屏幕黑屏的現(xiàn)象,這種問(wèn)題可能是由顯卡驅(qū)動(dòng)、GRUB 配置、或者啟動(dòng)項(xiàng)等問(wèn)題引起的,本文將介紹幾種常見(jiàn)的解決方案,幫助大家排除 Ubuntu 開(kāi)機(jī)黑屏的問(wèn)題,需要的朋友可以參考下2025-05-05
CentOS(Linux)下的apache服務(wù)器配置與管理方法分享
CentOS(Linux)下的apache服務(wù)器配置與管理方法分享,需要的朋友可以參考下。2011-04-04
虛擬機(jī)ubuntu16.04無(wú)法連網(wǎng)的解決方法
這篇文章主要為大家詳細(xì)介紹了虛擬機(jī)ubuntu16.04無(wú)法連網(wǎng)的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03

