【Linux指令 (四)】基础指令收尾:打包、网络、历史与Shell运行原理深度解析——涵盖tar/scp/history/shutdown等Linux核心运维指令
1 ~> 本期指令
tar,file,scp,bc,uname -e,histroy,su/su root,exit,sudo
2 ~> 本期热键
ctrl+c,ctrl+r,ctrl+d,tab
33 tar
33.1 概念
打包 / 解包,不打开它,直接看内容。
C语言写的二进制可执行程序。
33.2 语法
33.3 常用选项
-c:建立一个压缩文件的参数指令(create的意思);
-X:解开一个压缩文件的参数指令!
-t:查看tarfile里面的文件!
-z:是否同时具有gzip的属性?亦即是否需要用gzip压缩?
-j:是否同时具有bzip2的属性?亦即是否需要用bzip2压缩?
-v:压缩的程中显示文件!这个常用,但不建议用在背景执行过程!
-f:使用档名,请留意,在f之后要立即接档名喔!不要再加参数!
-C:解压到指定目录
33.4 实践
33.4.1 将整个/etc目录下的文件全部打包成为/tmp/etc.tar
[root@linux ~]$ tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
[root@linux ~]$ tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]$ tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
一键获取完整项目代码
bash
特别注意,在参数f之后的文件档名是自己取的,我们习惯上都用,tar来作为辨识。
如果加z参数,则以.tar.gz或.tgz来代表gzip压缩过的 tar file。
如果加j参数,则以.tar.bz2来作为附档名啊。
上述指令在执行的时候,会显示一个警告讯息:
【'tar: Removing leading`/" from member names`】
一键获取完整项目代码
bash
这是关于绝对路径的特殊设定。
33.4.2 查阅上述/tmp/etc.tar.gz文件内有哪些文件?
[root@linux ~]$ tar -ztvf /tmp/etc.tar.gz
一键获取完整项目代码
bash
因为我们使用gzip压缩,所以要查阅该tar file内的文件时,就得要加上z这个参数,这很重要!
33.4.3 将/tmp/etc.tar.gz文件解压缩在/usr/local/src底下
[root@linux ~]$ cd /usr/local/src
[root@linux src]$ tar -zxvf /tmp/etc.tar.gz
一键获取完整项目代码
bash
在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,我们先将工作目录变换到/usr/local/src底下,并且解开/tmp/etc.tar.gz,则解开的目录会在/usr/local/src/etc!另外,如果uu们进入/usr/local/src/etc,就会发现:该目录下的文件属性与/etc/可能会有所不同!
33.4.4 在/tmp 底下,我只想要将/tmp/etc.tar.gz内的 etc/passwd 解开
[root@linux ~]$ cd /tmp
[root@linux tmp]$ tar -zxvf /tmp/etc.tar.gz etc/passwd
一键获取完整项目代码
bash
我们可以通过tar -ztvf来查阅tar file内的文件名称,如果单只要一个文件,就可以通过这个方式来下
达!这里注意:etc.tar.gz内的根目录/是被拿掉了!
33.4.5 将/etc/内的所有文件备份下来,并且保存其权限!
[root@linux ~]$ tar -zxvpf /tmp/etc.tar.gz /etc
# 这个 -p 的属性是很重要的,尤其是当你要保留原本⽂件的属性的时候
一键获取完整项目代码
bash
33.4.6 在/home当中,比2005/06/01新的文件才备份
[root@linux ~]$ tar -N "2005/06/01" -zcvf home.tar.gz /home
一键获取完整项目代码
cpp
33.4.7 我要备份/home,/etc,但不要/home/dmtsai
[root@linux ~]$ tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
一键获取完整项目代码
bash
33.4.8 将/etc/打包后直接解开在/tmp底下,而不产生文件!
[root@linux ~]$ cd /tmp
[root@linux tmp]$ tar -cvf - /etc | tar -xvf -
一键获取完整项目代码
bash
这个动作有点像是cp-r/etc/tmp!但是它依旧是有其有用途的!
要注意的地方在于输出档变成 - 而输入档也变成 -,以及这里也用到了“管道”。
这分别代表standard output,standard input与管线命令啦!
33.5 常用选项
33.5.1 -czf
[root@VM-4-17-centos dir1]# tar -czf Greyrat.tgz Greyrat
一键获取完整项目代码
bash
-c:(create)创建。
-z:压缩。
-f:名字。
33.5.2 -xzf
解压到当前路径——
[root@VM-4-17-centos dir1]# tar -xzf Greyrat.tgz
一键获取完整项目代码
bash
解压解包。
解压到指定路径:-C(选项)——
[root@VM-4-17-centos dir1]# tar -xzf Greyrat.tgz -C/root
一键获取完整项目代码
bash
33.5.3 -cvzf
-v:呈现打包过程。
33.6 实践
#===============================================
# 示例 1: 使用 tar -czf 打包并压缩目录(不显示过程)
#===============================================
# 创建测试目录和文件
[root@VM-4-17-centos dir1]# mkdir -p test_dir
[root@VM-4-17-centos dir1]# echo "测试文件1" > test_dir/file1.txt
[root@VM-4-17-centos dir1]# echo "测试文件2" > test_dir/file2.txt
[root@VM-4-17-centos dir1]# ls ./test_dir
file1.txt file2.txt
# 打包并压缩 test_dir 目录为 archive.tgz(-c:创建 -z:gzip压缩 -f:指定文件名)
[root@VM-4-17-centos dir1]# tar -czf archive.tgz test_dir
[root@VM-4-17-centos dir1]# ls
archive.tar.gz test_dir
#==========================================
# 示例 2: 使用 tar -xzf 解压压缩包(不显示过程)
#==========================================
# 先删除原目录
[root@VM-4-17-centos dir1]# rm -rf test_dir
[root@VM-4-17-centos dir1]# ls
archive.tgz
# 解压 archive.tgz(-x:解压 -z:识别gzip压缩 -f:指定压缩包)
[root@VM-4-17-centos dir1]# tar -xzf archive.tgz
[root@VM-4-17-centos dir1]# ls
archive.tgz test_dir
[root@VM-4-17-centos dir1]# ls -l test_dir
total 8
-rw-r--r-- 1 root root 14 Oct 16 10:28 file1.txt
-rw-r--r-- 1 root root 14 Oct 16 10:28 file2.txt
#=======================================
# 示例 3: 使用 tar -xzf -C 解压到指定目录
#=======================================
# 创建目标目录
[root@VM-4-17-centos dir1]# mkdir -p target_dir
[root@VM-4-17-centos dir1]# ls
archive.tgz target_dir test_dir
# 解压到指定目录 target_dir(-C:指定解压路径)
[root@VM-4-17-centos dir1]# tar -xzf archive.tgz -C target_dir
[root@VM-4-17-centos dir1]# ls ./target_dir
test_dir
# ======================================
# 示例 4: 使用 tar -cvzf 打包压缩并显示过程
# ======================================
# -v:显示详细过程(verbose)
[root@VM-4-17-centos dir1]# tar -cvzf visible__archive.tgz test_dir
test_dir/
test_dir/file2.txt
test_dir/file1.txt
[root@VM-4-17-centos dir1]# ls
archive.tgz target_dir test_dir visible__archive.tgz
# ===================================
# 示例 5: 使用 tar -xvzf 解压并显示过程
# ===================================
# 清理已经存在的测试文件
[root@VM-4-17-centos dir1]# rm -rf test_dir
# -v:显示解压的每个文件
[root@VM-4-17-centos dir1]# tar -xvzf visible__archive.tgz
test_dir/
test_dir/file2.txt
test_dir/file1.txt
[root@VM-4-17-centos dir1]# ls
archive.tgz target_dir test_dir visible__archive.tgz
#====================================
#补充:在任意 tar 命令末尾加 &,例如:
#====================================
tar -czf big_archive.tar.gz /path/to/large_dir & # 后台打包
tar -xzf big_archive.tar.gz -C /target & # 后台解压
# 所以我们大部分时候也可以不用v
一键获取完整项目代码
bash
34 file(补充)
34.1 概念
查看一个文件更加详细的内容。
34.2 实践
35 scp
35.2 实践
35.2.1 从本地拷贝文件到远程服务器
scp /path/to/local/file.txt username@remote_server_ip:/path/to/remote/directory/
一键获取完整项目代码
bash
示例:将本地的report.pdf拷贝到 IP 为192.168.1.100的服务器的/home/user/downloads/目录下,登录用户是admin。
scp ./report.pdf admin@192.168.1.100:/home/user/downloads/
一键获取完整项目代码
bash
执行后:系统会提示您输入admin用户在192.168.1.100这台服务器上的密码。
35.2.2 从远程服务器拷贝文件到本地
scp username@remote_server_ip:/path/to/remote/file.txt /path/to/local/directory/
一键获取完整项目代码
bash
示例:将远程服务器example.com上用户alice家目录下的database.backup文件拷贝到本地的/tmp/目录。
scp alice@example.com:~/database.backup /tmp/
一键获取完整项目代码
bash
备注:这里的~代表用户alice的家目录。
35.2.3 其他实践
可以自己去输入关键词,让AI生成给你。
36 bc
36.1 概念
Linux下的计算器
和下图中的Windows中的计算器是同理的——
36.2 功能
bc命令还可以很方便的进行浮点运算。
36.3 退出键
quit(推出)
36.4 好处
可以进行长运算——
四、(续)面试题
问题:
你的计算机的体系结构式是什么?
如何查看你的Linux内核版本?
如何查看你的具体系统发行版本?
五、热键(Linux中的高频访问键位)
5.1 Ctrl + C
卡住了出不来?直接Ctrl + C。
5.1.1 功能
终止异常(命令行)。
5.1.2 实践
5.2 Ctrl + r(接回车)
按 “[上箭头]”、“[下箭头]” 会转到历史上的命令。
5.2.1 功能
对历史命令进行搜索。
5.2.2 实践
5.2.3 命令行的短板
命令行的短板——
(1)提示的关键词要把细节想得更加完美;
(2)现在的裸的XShell没有那么强大(下拉框没那么好使,下拉就没有了)。
5.3 Ctrl + d
5.3.1 功能
退出登录。
第一次断开机器,第二次退出XShell。
5.3.2 实践
Disconnected:断开了远程机器。
5.4 Tab(补充)
[Tab] 按键——具有 [命令补全] 和 [档案补齐] 的功能。
对命令行进行补齐——常见的命令。
记命令就只要记个大概就能【Tab】找一下,命令的几个字母记得越多越能【Tab】。
啥也不写,直接【Tab】两次,就会先退出登录,再退出XShell。
注意:不一定都能【Tab】出来。
怎么查看历史指令?——见下一条指令。
37 history
怎么查看历史指令?接下来艾莉丝要再介绍一个指令——
37.1 概念
历史上的所有指令。
37.2 历史指令记录默认有上限
历史指令默认上限是1000行,到了1000行,再写一条指令,就会把1000行中最前面的那个顶掉。
新写一个,最老的就被挤出去了。
但是,用环境变量可以改大,这里不展开,后面介绍【环境变量】时会介绍。
37.3 实践
37.3.1 history
37.3.2 history | ws -l
大家写到1000行时如果没有改环境变量,可以试一下上限是不是1000行,前面介绍过一个指令:
37.3.3 history | grep "[要过滤的指令]"
六、云服务器永不关机
6.1 Linux
6.2 Windows
shutdown \?
一键获取完整项目代码
bash
在Windows命令行查看shutdown。
6.3 开机有指令吗?——???
开机有指令吗?emmmmmmmmmmmm……
开机没有命令,命令在操作系统上面,开机请您按电源键……
38 shutdown && halt
38.1 概念 / 功能
关机。
38.2 语法
shutdown [选项]
38.3 常用选项
-h:立即重启;
-r:重启;
-t sec:+ [秒数]——n秒后关机。
38.4 扩展命令
七、Shell以及运行原理
即指令的运行原理,指令怎么执行的?
7.1 Shell(外壳)
7.2 操作系统初步认识
7.2.1 小白认知
7.2.2 初始操作系统
7.3 一个故事,感性理解Shell(外壳)
如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的MM小美。你看上了小美,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小美,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。
接下来,我们就用一个故事,感性理解Shell(外壳)——
结尾
uu们,本文的内容到这里就全部结束了,艾莉丝再次感谢您的阅读!
————————————————
版权声明:本文为CSDN博主「艾莉丝努力练剑」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2401_89899187/article/details/153354399