Linux系统-打包重定向/管道符/进程shell脚本

news2024/11/28 18:36:28

打包、解包、压缩、解压缩命令

统一使用tar命令,根据不同的参数完成不同的操作

语法:tar 参数 打包后的文件(只能是一个) 需要打包的文件或目录(可以是多个,空格分开即可)

常见的打包压缩格式:

        打包后的文件后缀名:.tar

        打包并且压缩的后缀名:.tar.gz,gzip格式压缩的

        打包并且压缩的后缀名:.tar.bz2,bzip2格式压缩的

        注意:什么样的格式压缩的,就要用什么样的格式解压。

参数:

        -c:新建打包文件,打包操作

        -x:解包操作

        -v:在操作过程中,显示被操作的文件名

        -f:指定要操作的文件或目录,此参数要写在最后

        -z:通过gzip(一种压缩格式)进行压缩或者解压缩操作

        -j:通过bzip2(一种压缩格式)进行压缩或者解压缩操作

        -C:将操作目录从当前目录(默认目录)改为指定目录

        -P:将打包后的结果文件从当前目录(默认目录)改为指定目录

常用参数组合:-cvf 打包,-zcvf打包同时压缩,-xvf解包,-zxvf解包同时解压。

        举例:打包tar -cvf file.tar a ana,代表对a目录和ana文件进行了打包,打包的结果文件命名为file.tar,默认都是在当前目录操作。

tar -cvf file.tar a ana

        举例:解包tar -xvf file.tar,代表对file.tar包文件进行解包,默认放在当前目录。

tar -xvf file.tar

        举例:打包同时压缩tar -zcf file.tar.gz a ana,代表对a目录和ana文件进行打包同时压缩,结果文件命名为file.tar.gz

tar -zcf file.tar.gz a ana

        举例:解包同时解压tar -zxf file.tar.gz,代表对file.tar.gz文件进行解包同时解压缩,默认在当前目录操作。

tar -zxf file.tar.gz

        举例:使用-P和-C参数 tar -Pzcf /home/tommy/new.tar.gz -C /root a ana,代表将操作结果放到/home/tommy目录下,这个需要使用-P参数指定。将操作对象从当前位置选取,改为指定位置选取,这个需要使用-C参数指定。

 tar -Pzcf /home/tommy/new.tar.gz  a ana //当前目录的a和ana压缩到目标目录Tommy下

 tar -zcf /home/tommy/new.tar.gz -C /root a ana//将root目录下的文件压缩到目标Tommy下

 tar -Pzcf /home/tommy/new.tar.gz -C /root a ana

重定向和管道符命令

重定向:把命令的输出重新定向到指定的文件里面,默认是输出到屏幕的。

        >覆盖重定向:举例date>file 代表把date命令的输出,从默认的屏幕,重定向到file文件中,每次都会覆盖file文件原来的内容。

        >>:举例date>>file 代表不会覆盖file文件原来内容,而是在后面追加新内容。

        >/dev/null:代表重定向到空设备,也就是不输出任何结果,只执行命令。

        2>&1:这个代表重定向的时候,将错误输出也输出,这个一般写到最后。2代表错误输出(当命令执行遇到错误的时候就会输出错误信息),1代表标准输出。如果没有这个参数,遇到命令执行错误的时候,就不会输出到重定向的位置了。

管道符:| 代表把一个命令的执行结果当作下一个命令的输入

        举例:yum list installed | grep python,这个命令代表查找当前已安装的软件,然后使用管道符把查询结果给到grep命令继续处理,grep命令来搜索里面跟python相关的关键词,再进行输出。这样我们就找到了跟python有关的软件。

进程管理相关命令

进程就是进行中的程序,此时程序就开始使用系统资源。

查看进程的命令:ps 全称是process status

        参数-e:显示所有的进程。如果不加参数,默认只显示当前用户当前终端的进程。

        参数-f:显示更完整的内容。

        常用的参数组合:ps -ef

uid:进程所属用户id,pid进程id,ppid进程的父进程id,parent的缩写,c代表cpu使用率,stime代表进程开始时间,tty是终端代号,time进程运行的总时间,cmd进程的命令名称。

一般配合管道符联合使用:ps -ef | grep python

终止进程(只有root用户和进程的所有者才有权限终止进程)

手动杀死进程:

kill 进程号pid,有时候这样会失败,因为有的进程不能这样直接杀死,因为这个进程可能还在被其他进程使用,有可能还在被父进程调用。

kill -9 进程号pid,这样可以强制杀死进程。

CTRL+c 代表终止当前运行的进程,不是对所有进程都有效。

有的进程运行结束后会自动退出,有的不会,需要使用对应的退出命令。

有的进程运行过程中遇到异常也会退出。

了解shell脚本的简单使用

shell脚本是shell script语法结合Linux命令的一个批处理文件。CentOS系统shell默认的版本bash shell。

写一个简单的shell脚本:

首先vi hello.sh新建一个shell文件

        shell脚本第一行固定写法:#!/bin/bash

        第二行使用echo打印一句话:echo "hello shell"

        第三行写一个Linux命令:date

然后保存退出

执行这个shell脚本

. /执行文件的名字
执行shell脚本有多种方式,可以分为在当前shell环境执行脚本或者另起一个shell环境执行。

        sh hello.sh也可以写成 . /hello.sh 另起一个shell进程来执行脚本,当前shell是父进程,生成一个子shell进程,在子shell中执行脚本。脚本执行完毕,退出子shell,回到当前shell。也可以使用相对路径或绝对路径的方法执行脚本,但需要给脚本单独添加执行权限。可以通过观察进程号,发现在当前进程下面启动了一个子进程来执行shell脚本,这样不会影响当前进程。

        . hello.sh 也可以写成 source hello.sh 这种方式是直接在当前的shell环境下执行,不会生成新的shell进程。脚本执行完毕,回到当前shell。这种情况会影响当前进程,比如shell脚本切换了目录,当前环境也会切换目录。通常用于生效刚修改过的配置文件。

shell脚本语言基本语法:

定义变量:

注意:定义变量时等号左右两边不能有空格。

注意:定义变量时,变量的值可以使用单引号和双引号,但是有很大区别:单引号会原样输出,双引号会解析里面的命令和变量。推荐使用双引号。

使用变量:

需要在变量前面加$,更规范的写法就是在$后面加{},比如${author},修改变量值的时候不需要加$

删除变量:

使用unset删除变量,如:unset author

举例:

#!/bin/bash

echo "hello shell"
date

#定义变量并赋值,=两边不能有空格
author="余华"
age=60

#修改变量
age=65

#双引号可以解析里面的命令和变量
echo "《活着》的作者是:$author,年龄是:$age"

#单引号会当作字符串原样输出
echo '《活着》的作者是:$author,年龄是:$age'

#删除变量
unset age
echo "《活着》的作者是:" $author",年龄是:$age"

条件语句if:

语法:每个条件分支后面加分号;then,条件和需要执行的代码需要使用双层括号(())括起来,最后以fi结束。

#!/bin/bash

read age #从键盘读取输入,存到age变量中

if (($age<18));then
    echo "未成年"

elif ((18<=$age&&$age<=65));then
    echo "努力工作"

elif (($age>65&&$age<=70));then
    echo "退休了,帮儿女看娃"

else
    echo "安享晚年"

fi

while循环:

语法:条件和需要执行的代码需要使用双层括号(())括起来,do开始,done结束。

举例:计算1-100累加和

#!/bin/bash

i=1
sum=0
while((i<=100))
do
    ((sum+=i))
    ((i++))

done

echo "1-100的累加和是:"$sum

for循环:

语法:条件和需要执行的代码需要使用双层括号(())括起来,do开始,done结束。

举例:计算1-100累加和

#!/bin/bash

i=1
sum=0
for ((i;i<=100;i++))
do
    ((sum+=i))

done
echo "sum is:"$sum

举例:for循环的另外一种写法,for in语句

#!/bin/bash

sum2=0
for n in {1..100}
do
    ((sum2+=n))

done
echo "sum2 is:"$sum2

函数:

举例:

#!/bin/bash

function add()  # function是关键字,代表定义一个函数

{

echo $(($1+$2)) # $1代表第一个参数,$2代表第二参数。当n>=10时,需要使用${n}来获取参数。如获取第                        
                # 十个参数需要${10}。
}
add 1 2         #调用函数并且传参

主函数main

#!/bin/bash

function add()
{

#shell中整数运算,需要使用(())包裹
    echo $(($1+$2))

}

function sub()
{

    echo $(($1-$2))

}

#使用main函数来调用,main函数省略function关键字
main()
{

    echo "现在使用main函数作为入口统一调度"
    add 2 3
    sub 5 3

}

#调用main函数
main

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux——网络(1)

一、IPC&#xff08;进程间通信方式&#xff09; IPC&#xff1a;Inter Process Communication 共享内存&#xff08;最高效的进程间通信方式&#xff09; 虚拟地址 mmu(memory management unit ) 共享内存: 1.是一块&#xff0c;内核预留的空间 2.最高效的…

攻击手法罕见!ESET披露最新网络钓鱼活动,专门针对Android、iPhone用户

ESET 研究人员发现了一种罕见的网络钓鱼活动&#xff0c;专门针对 Android 和 iPhone 用户。他们分析了一个在野外观察到的案例&#xff0c;该案例主要是针对一家著名的捷克银行的客户。 值得注意的是这种攻击主要是从第三方网站安装钓鱼应用程序&#xff0c;而无需用户主动安…

东方博宜OJ 训练计划:前缀和、差分 习题集

前缀和、差分 听到这个名字&#xff0c;大家一定感觉不陌生吧&#xff0c;毕竟学过动态规划的人大部分 都知道&#xff0c;那我就简单介绍一下&#xff0c;并奉上习题供大家参考&#xff01; 题目描述我就不放了&#xff0c;根据题号参见 东方博宜OJ 东方博宜OJ 网址&#xf…

【2024国赛速成系列】建模手三天必成计划

内容来自https://www.bilibili.com/video/BV14M4m1y77t 目录 一、第一天 1、常见模型分类 2、两大学习神器 &#xff08;1&#xff09;SPSSPRO &#xff08;2&#xff09;ChatGPT 二、第二天 三、第三天 一、第一天 建模手在最开始需要了解模型分类及国赛常见模型的用法…

专利有哪几种类型?

专利有哪几种类型&#xff1f;

高并发登录模块

1. 配置⼀主⼆从mysql57 1. mycat对mysql8不完全⽀持 2. mysql8主从问题不⼤ get_pub_key1 1. gtids事务复制 2. 删除/etc/my.cnf 3. 同步data⽂件需要先停⽤mysql服务&#xff0c;删除data⽬录中的 auto.cnf 4. gtid模式以及经典模式都需要锁表 flush tables with read …

击破传统跨境电商客服系统痛点:中关村科金如何帮助品牌实现跨境电商业务开拓?

有家总部位于中国、销售市场主要集中在北美的知名眼镜品牌&#xff0c;主要从事时尚眼镜的设计、生产和销售&#xff0c;近年跨境电商业务规模不断扩展&#xff0c;现有的客服体系却“落伍”了&#xff0c;难以适应当前阶段公司的发展要求。 因此希望与中关村科金合作&#xf…

【Harmony OS 4.0】生命周期

1. 自定义组件生命周期 自定义组件&#xff1a;Component 装饰的UI单元&#xff0c;可以组合多个系统组件实现UI的复用。 组件生命周期&#xff0c;即一般用Component装饰的自定义组件的生命周期&#xff0c;提供以下生命周期接口&#xff1a; 2.1 aboutToAppear&#xff1a;组…

8个我平时每天都会看的网站,涵盖办公、娱乐、学习等

分享8个我平时每天都会看的网站&#xff0c;涵盖办公、娱乐、学习等多种类别&#xff0c;试过就知道有多好用&#xff01; 1、MyFreeMP3 tools.liumingye.cn/music/#/ 一个可以免费听歌的平台&#xff0c;不用充会员&#xff0c;里面收录了大多数的国内外知名流行歌手、乐队的…

【C++初阶】一篇手撕vector类

vector类 一&#xff0c;vector的介绍二&#xff0c;vector的使用2.1 vector的定义2.2 vector iterator2.3 vector空间增长问题2.4 vector增删查改2.5 vector<char> 可以替代 string 嘛&#xff1f; 一&#xff0c;vector的介绍 vector 是表示可变大小数组序列容器。就像…

[数据集][目标检测]手钳检测数据集VOC+YOLO格式141张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;141 标注数量(xml文件个数)&#xff1a;141 标注数量(txt文件个数)&#xff1a;141 标注类别…

加载dvb文件出错解决方案

1、在c: \Windows\System32文件夹下&#xff0c;放入fm2.0.dll&#xff08;此文件已资源绑定在本文章&#xff09;文件 2、若还是不行&#xff0c;可尝试&#xff1a; 3、或重装CAD vba vba下载官网地址&#xff1a;下载适用于 Inventor 的 Microsoft VBA 模块 https://www…

Spring AI集成Ollama+llava:7b:实战探索大模型的多模态应用

前面的文章介绍的基本上都是单一数据格式的输入处理&#xff0c;比如输入文本输出文本的Chat模型、输入文本输出图片的图片模型、输入文本输出音频的模型等。本篇文章将介绍如何实现同时处理多种类型的数据格式&#xff1f; 什么是多模态 多模态是指模型同时理解和处理来自各种…

初识指针の学习笔记

目录 1>>前言 2>>内存和地址 3>>指针变量和地址 3.1取地址和解引用 3.2>>指针类型是什么&#xff1f; 3.3>>指针变量占用空间 4>>指针变量类型的意义 4.1>>指针的解引用 4.2>>指针-整数 5>>关于指针的运算 5…

「OC」暑假第三周——天气预报的仿写

「OC」暑假第三周——天气预报的仿写 文章目录 「OC」暑假第三周——天气预报的仿写写在前面预览UItableView嵌套UICollectionView毛玻璃效果SVGKit库的使用简单的动画实现主页之中详情页的编写总结 写在前面 天气预报作为暑假最后的一个项目&#xff0c;算得上我觉得有点用的…

西门子PLC跟汇川H5U系列PLC标签方式以太网通讯的快速实现方案

PLC通讯智能网关IGT-DSER模块支持汇川、西门子、三菱、欧姆龙、罗克韦尔AB、GE等各种品牌的PLC之间通讯&#xff0c;同时也支持PLC与Modbus协议的变频器、智能仪表等设备通讯。网关有多个网口、串口&#xff0c;也可选择WIFI无线通讯。PLC内无需编程开发&#xff0c;在智能网关…

金九银十秋招大模型岗位攻略来了,已收offer,非常详细收藏我这一篇就够了

秋季招聘季节是求职者寻找新机会的重要时期&#xff0c;特别是对于想要进入大模型领域的专业人士来说。以下是一份大模型学习攻略和应聘攻略&#xff0c;帮助你为秋季招聘做好准备&#xff1a; 大模型学习攻略 理解大模型基础 学习AI基础&#xff1a;了解机器学习、深度学习的…

[数据集][目标检测]扳手检测数据集VOC+YOLO格式1042张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1042 标注数量(xml文件个数)&#xff1a;1042 标注数量(txt文件个数)&#xff1a;1042 标注…

论文阅读1 Scaling Synthetic Data Creation with 1,000,000,000 Personas

Scaling Synthetic Data Creation with 1,000,000,000 Personas 链接&#xff1a;https://github.com/tencent-ailab/persona-hub/ 文章目录 Scaling Synthetic Data Creation with 1,000,000,000 Personas1. 摘要2. 背景2.1 什么是数据合成2.2 为什么需要数据合成2.3 10亿种人…

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署 什么是RAG&#xff1a; 我能把这个过程理解为Kimi.ai每次都能列出的一大堆网页参考资料吗&#xff1f;Kimi学了这些资料以后&#xff0c;根据这里面的信息综…