Liunx-4

  • Linux第四天目标

    • 掌握打包相关命令

    • 掌握重定向、管道符和进程管理命令

    • 了解shell脚本的简单使用

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

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

1.1 参数:

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

  • -x:解包操作

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

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

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

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

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

  • -P:将操作的结果文件,放到指定目录,否则会放在当前目录。

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

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

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

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

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

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

1.3 zip打包 unzip解包

  1. 可以使用zip命令,压缩文件为zip压缩包
  • 语法:zip[-r]参数1 参数2…参数N
    -r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致

  • 示例:
    zip test.zip a.txt b.txt c.txt.
    将a.txt b.txt c.txt 压缩到test.zip文件内zip -rtest.zip test itheima a.txt
    将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内

  1. 使用unzip命令,可以方便的解压zip压缩包
  • 语法:unzip[-d]参数
    -d,指定要解压去的位置,同tar的-C选项参数,被解压的zip压缩包文件
  • 示例:
    unzip test.zip,将test.zip解压到当前目录
    unzip test.zip -d /home/itheima,将test.zip解压到指定文件夹内(/home/itheima)

1.4常见的打包压缩格式

  • 打包后缀名:.tar

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

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

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

2.重定向和管道符命令

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

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

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

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

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

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

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

3. 进程管理相关命令

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

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

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

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

    • 常用的参数组合:ps -efimg

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

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

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

    • 手动杀死进程:

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

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

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

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

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

4.了解shell脚本的简单使用

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

4.1 写一个简单的shell脚本:

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

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

    • 第二行使用echo打印一句话:echo “hello shell”

    • 第三行写一个Linux命令:date

  • 然后保存退出

  • 执行这个shell脚本

    • 执行shell脚本有多种方式;

      • sh hello.sh 另起一个shell进程来执行脚本

      • . hello.sh 也可以写成 source hello.sh 这种方式是直接在当前的shell环境下执行

4.2 shell脚本语言基本语法:

  • 定义变量:

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

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

  • 使用变量:

    • 需要在变量前面加 ,更规范的写法就是在 ,更规范的写法就是在 ,更规范的写法就是在后面加{},比如 a u t h o r ,修改变量值的时候不需要加 {author},修改变量值的时候不需要加 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:

    • 注意:条件和需要执行的代码需要使用((条件))括起来,其他的关键字有else,elif,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循环:

    • 举例:计算1-100累加和

      •   #!/bin/bash
          
          i=1
          
          sum=0
          
          while((i<=100))
          
          do
          
          	((sum+=i))
          
          	((i++))
          
          done
          
          echo "1-100的累加和是:"$sum
        
  • for循环:

    • 举例:计算1-100累加和

      •   #!/bin/bash
          
          i=1
          
          sum=0
          
          for ((i;i<=100;i++))
          
          do
          	((sum+=i))
          
          done
          
          echo "sum is:"$sum
        
    • 举例:for循环的另外一种写法,for in语句

      •   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
        

add()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值