当前位置: 首页 > news >正文

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

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

统一使用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/bashecho "hello shell"
date#定义变量并赋值,=两边不能有空格
author="余华"
age=60#修改变量
age=65#双引号可以解析里面的命令和变量
echo "《活着》的作者是:$author,年龄是:$age"#单引号会当作字符串原样输出
echo '《活着》的作者是:$author,年龄是:$age'#删除变量
unset age
echo "《活着》的作者是:" $author",年龄是:$age"

条件语句if:

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

#!/bin/bashread age #从键盘读取输入,存到age变量中if (($age<18));thenecho "未成年"elif ((18<=$age&&$age<=65));thenecho "努力工作"elif (($age>65&&$age<=70));thenecho "退休了,帮儿女看娃"elseecho "安享晚年"fi

while循环:

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

举例:计算1-100累加和

#!/bin/bashi=1
sum=0
while((i<=100))
do((sum+=i))((i++))doneecho "1-100的累加和是:"$sum

for循环:

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

举例:计算1-100累加和

#!/bin/bashi=1
sum=0
for ((i;i<=100;i++))
do((sum+=i))done
echo "sum is:"$sum

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

#!/bin/bashsum2=0
for n in {1..100}
do((sum2+=n))done
echo "sum2 is:"$sum2

函数:

举例:

#!/bin/bashfunction add()  # function是关键字,代表定义一个函数{echo $(($1+$2)) # $1代表第一个参数,$2代表第二参数。当n>=10时,需要使用${n}来获取参数。如获取第                        # 十个参数需要${10}。
}
add 1 2         #调用函数并且传参

主函数main

#!/bin/bashfunction add()
{#shell中整数运算,需要使用(())包裹echo $(($1+$2))}function sub()
{echo $(($1-$2))}#使用main函数来调用,main函数省略function关键字
main()
{echo "现在使用main函数作为入口统一调度"add 2 3sub 5 3}#调用main函数
main


http://www.mrgr.cn/news/3512.html

相关文章:

  • C语言文件操作
  • 【秋招笔试】8.18大疆秋招(第一套)-后端岗
  • 作品集图片美化处理网站推荐
  • 初识C++:开启C++之旅
  • redis string类型
  • CSS的:definite和:indefinitte伪类:探索确定性与不确定性的元素选择
  • InputApc()函数是如何调用ProcessKeyboardInput()函数的?
  • Android 架构模式之 MVP
  • Linux --- 文件系统
  • reactive 和 ref 的区别和联系
  • 二十二、状态模式
  • 【Orb-Slam3学习】 ORBextractor类主要成员函数调用关系
  • windows C++- Com技术简介(上)
  • MySql高级视频笔记
  • csdn狗都不用-测试再次解释
  • 共享内存及网络通信
  • 白骑士的计算机名词解析之各种“面向”
  • 【QT文件操作】---xml文件读取
  • 火山引擎AI创新巡展:豆包比友商便宜98%,行业落地探索,2000人座无虚席,PPT值得拍照收藏
  • CSS的:host伪类:精确定位于Web组件的指南