Linux Shell编程

原本是打算就Shell编程来罗列知识点做笔记的,但是因为掌握的不全,刚好老师又发了两个题目,就就着这两个题目(这句话真不是病句,哈)来自己记下笔记

题目一:

1.设计一个Shell程序,依次实现下述功能。
1)回显当前工作路径;
2)在/tmp目 录下的files子目录下新建10个空文件,文件名命名格式为“学生学号编号”例如2012081111_ 1 ~ 2012081111_10;
3)同时设置每个空文件的权限,其中文件所有者的权限为:读、写、执行;其他用户的权限为:无;文件所有者所在组的权限为:读;
4)将files 目录打包压缩为files.tar.gz文件(请使用-v参数) ;
5)查看该压缩文件files.tar.gz以及10个空文件的详细信息。

程序运行效果见下页图示:
在这里插入图片描述
代码:

#!/bin/bash  用来指定解释器的信息
rm -rf /tmp/files
#Because I need to test the code repeatedly,I are supposed to remove this directory
echo current directory is $(pwd).
mkdir /tmp/files
touch /tmp/files/2012080097_{1..10}
chmod 740 /tmp/files/2012080097_{1..10}
tar -cvzf /tmp/files.tar.gz /tmp/files
ls -l /tmp/files/2012080097_{1..10}
ls -l /tmp/files.tar.gz

如何使用vi
  • vi sh1.sh
    那么这个就会新建一个sh1.sh文件,并进入该文件的一般命令模式(这是默认的模式,这个模式下可以进行删除、复制、粘粘等操作,但无法编辑文件的内容)
  • 按下(i、I、o、O、a、A、r、R)等任何一个字母进入编辑模式,这是界面左下方会出现【INSERT】或者【REPLACE】字样。一般习惯使用i进入编辑模式,因为insert嘛,好记。如果要回到一般命令模式,则必须按下【Esc】按键退出编辑模式。
  • 在一般模式中,输入【: / ?】三个中任何一个按钮,就可以将光标移动到最下面一行。在这个模式中,可以进行读取、保存、批量替换字符、退出vi、显示行号等操作。一般用来保存并退出,输入【:wq】即可保存退出(注意按下:光标就会自动移动到最下面一行,并有: ,所以这时你只需要输入wq,回车即可保存退出),w(write保存),q(quit退出)。但是有些文件权限不对,如-r–r–r–,可能无法写入,这是可以使用【:wq!】多加一个感叹号强制写入。
  • 运行shell脚本,shell脚本一般都以.sh为后缀名。让一个脚本文件可执行,需要设置x权限。通过cd命令进入到文件所在目录,依次输入如下命令:
    chmod +x ./sh1.sh
    ./sh1.sh
    第二条命令就是执行sh1.sh脚本,注意,一定要输入./sh1.sh,表示执行当前目录下的sh1.sh,而不能直接输入sh1.sh,这样Linux系统会去PATH里寻sh1.sh,但当前目录通常不在PATH里,所以会找不到命令。
    或者第二行命令可以写成 /bin/sh sh1.sh
    将文件作为解释器的参数,这种方式运行的脚本,不需要在第一行指定解释器信息,即使写了也不会起作用。

    所以呢一般的流程就是
    vi 文件名
    按键盘i
    编写代码
    按Esc
    输入:
    再在最后一行键入wq!
    回车即可保存退出
    chmod +x sh1.sh
    ./sh1.sh

后面的都是一些小的知识点

命令替换

命令替换是指 Shell 执行指定命令并使用执行该命令后的结果替换原来内容(即命令替换部分)。
命令替换有两种方式:使用反引号“` "(反引号是Esc下面,和~公用一个键的字符)和使用$( )
POSIX规范建议使用 $(命令)的形式,因为更易读,而且转义处理比较简单
简单的例子: echo `pwd` ;echo $(pwd)


文件访问权限修改

Linux的基本全县有9个,分别使拥有者(owner)、所属群组(group)、其他人(others),三种身份都有各自的读(read)、写(write)、执行(execute)权限
文件的权限字符为:【-rwxrwxrwx】,(第一个-代表文件的类型),这九个权限是三个三个一组,从左到右依次属于u(owner)、g(group)、o(others)

  • 数字类型修改
    三个三个一组之后,将每一个字符看成二进制表示,r w x如果有则表示1,没有则表示0,如rw-就是6,–x就是1,代码中所用到的就是这种方法,chmod 740 sh1.sh ,则sh1.sh的权限为【-rwxr-----】

  • 符号权限修改

chmodu g o a+(加入) -(移除) =(设置)r w x文件或目录

chmod u=rwx,go=rx sh1.sh
那么现在sh1.sh的权限位【-rwxr-xr-x】
(注意u=rwx,go=rx是连在一起的中间没有空格,这里的go表示group和others,中间不要有空格)

chomod a-x sh1.sh #所有人失去x权限
chomod o+x,g+r,u+rwx #others增加写权限,g增加读权限,u增加读写执行权限。


文件与文件系统的压缩

tar可以将多个目录或文件打包成一个大文件,同时还可以通过gzip、bzip2、xz的支持,将该文件同时进行压缩
在这里插入图片描述
在这里插入图片描述


如有错误,欢迎指正,谢谢!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值