Linux--shell脚本开发基础

shell脚本基础

1.操作系统基础
在这里插入图片描述
(man:参数选项 命令/文件
source:
alias:
bg:进程
bind:
break:
builtin:内建
exec:执行
history:)
(只有/不能用来做文件名)
2.bash的基本特性
a、history命令历史
查看之前的命令的历史记录
关于命令历史的文件:
每个用户家目录下面的.bash_history
在关机的时候,会自动写入一次(history -a 将内存中的命令历史写入文件)

扩展知识:
       关于命令历史的变量:【环境变量:bash程序下默认能够生效的变量,不需要定义;环境变量必须大写】
     查看:env(environment)  //查看环境变量
     	    set      //查看更详细的环境变量参数
	env 只能查看系统支持的部分环境变量
	set查看所有环境变量,同时set可以设置变量
	但是,如果要是用export将set设置变量导入到环境变量中
	-----以上都是临时的!
	
     	 /etc/profile           /etc/rcbash
     	 ~/.profile               ~/.rcbash(家目录)
    	  source让其生效(所有命令source后才生效)
    	  exec【剥离子进程,单独创建父进程】指定父进程

           变量:一段被命名的内存空间;
           crontab:做定时任务
           history所定义的环境变量
           		HISTCONTROL=ignoredups
           					    ignoredups  //忽略重复的历史命令 -- 连续且相同,才叫重复
           					    ignorespace  //忽略空白开头的历史命令,“键入空格开头则不会被记录”
           					    ignoreboth  //俩者都生效
           		HISTFILE=/root/.bash_history (.bash_history存储历史记录,存在硬盘)
           		HISTFILESIZE=500
           		HISTSIZE=500     //数量
           history命令:
           		-d:删除指定行
           		-c:清除所有记录
           		-a:将当前的记录信息,添加到/root/.bash_history中去;
           history命令的调用方式:
           		!#:指定调用哪一行命令(#表示数量,执行#行的命令)
           		!string:匹配最近一次的字符串
           		!!:执行上一条命令
           		*!$*:上一条命令的最后一个参数
           			ls /etc
           			ls !$
           			ESC+.(快捷键esc+.):获取上一条命令最后的部分(空格分隔)
           		history# :显示最近#行的命令

b、命令补全、目录补全
tab键实现命令和目录的补全;
【多敲】
扩展知识:
PATH路径:命令被查找的一个默认路径;
PATH=$PATH:/usr/bin
如果执行文件不在PATH路径下,只能使用全路径进行执行;

	【$:调用
	&&:与;||:或
	-x:判断文件是否有执行权限
	-r:判断文件是否有读权限
	-w:判断文件是否有写权限】

c、命令展开—date命令
Linux的目录需要遵循什么规则? — FHS目录规则
cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf.bak
cp /usr/local/nginx/{nginx.conf,nginx.conf.bak}
id 名字
1 a
2 b
1_a 1_b 2_a 2_b
touch{1,2}_{a,b}

	   date  ---显示当前系统时钟 (硬件时钟)(系统是软件)ntp服务器:做时钟同步
	   clock或hwclock ---硬件时钟
	   用hwclock可以做硬件时钟和系统时钟的同步
	   cal:看日历
	   用法:
	   		date[option]...[+format]
	   		date [MMDDhhmm[CC|YY]
	            		月  日  时 分   世纪 年  秒
	    格式:
	    		%F ---2019-9-16  CCYY-mm-dd
	    		%D ---09/16/19    mm/dd/YY
	    		%T ---15:51:26     hh:MM:ss
	    		%H---小时   hh
	    		%S---秒       ss
	    		%s---19700101源年时间(Linux出现时间)
	    		%M---分    MM
	    		%m---月份   mm
	    		%c ---Mon 16 Sep 2019 03:50:28 PM CST
	    		%C ---20
	    		%Y ---CCYY

(``:获取结果)

	压缩和归档
	压缩:gzip  ungzip  zcat(查看压缩文件且不解压)
		bzip2
		xz
		【注意:压缩操作只能对文件进行,不能对目录进行操作】
	归档:tar---(本身只做归档,但也可做压缩)--可以对目录进行操作
			-j ---bzip2
			-J ---xz
			-z ---gzip
			-x ---解压extract(可以不指定解压的工具)
			-c ---create
			-v ---详细信息verbose
			-f ---指定创建的压缩文件的文件名
			-t ---不解压查看内容,和zcat一样
		   tar cjvf etc.bak.`date +%F`.bzip2 /etc/
		   tar xf ----解压文件(解压时不要指定解压方式,会自动识别)			  
		   练习:每天周期性备份/etc/文件,并取好名字;
		   crontab做定时任务:
	           crontab -e:
		   ***** /bin/tar cjf /root/etc.bak`/bin/date +%F`.bzip2 /etc/ &> /dev/null
		   分时日月星期(*代表)

d、命令的执行状态
命令执行后,有俩类返回值:1.命令的默认返回值;
2.命令的执行状态。
状态有俩类:1、0 ----代表命令执行成功;
2、1-255 ----均代表执行失败。
? : 一 个 特 殊 环 境 变 量 。 用 来 存 储 上 一 条 命 令 的 执 行 状 态 ; [ ? :一个特殊环境变量。用来存储上一条命令的执行状态; [ ?[? -eq 0] && exit 0 || exit 1
e、命令的快捷键
Ctrl + a:光标跳到命令行行首
Ctrl + e:跳到命令行行尾
Ctrl + u:删除光标前的字符
Ctrl + k:删除光标后的字符
Ctrl + w:删除光标前的一个单词
Ctrl + shift + t:新建图形终端
Ctrl + l clear:清屏
Ctrl + s:锁定终端,使之无法输入内容
Ctrl + q:解锁
Ctrl + d:关闭当前bash程序
Ctrl + r:和!string效果一样,调用最近一次匹配string的命令
Ctrl + f :光标向右移动一个字符(相当于方向键右键)
Ctrl + b:光标向左移动一个字符
Ctrl + insert:复制命令行内容
shift + insert:粘贴命令行内容
Ctrl + c:中断终端正在执行的任务或者删除整行
f、alias别名
取外号—为了方便命令的调用,取一些容易记忆的名字;
alias cls=‘clear’ //注意:等号前后没有空格;
/etc/profile(全局生效) //指定环境变量
/etc/rcbash(全局生效) //用来存储普通变量
~/.profile(当前目录下生效)
~/.rcbash(当前目录下生效)
g、文件通配符 – globbing
文件通配符

  •     匹配任意长度的任意字符(不能匹配空白符)
    

? 匹配任意单个字符
[] [0-9] [a-z] [A-Z] [a-zA-Z] [0-9a-zA-Z]
[^] [^0-9]
符号集合 [:digit:],[:graph:],[:lower:],[:print:],[:punct:], [:space:],[:upper:],[:xdigit:]
[0-9] [a-z] [^0-9a-zA-Z] [空格符] [A-Z] [A-Fa-f0-9](十六进制)
[:alpha:] [:alnum:]
[a-zA-Z] [0-9a-zA-Z]
注意:在使用时候需要再加中括号[[:digit:]] = [0-9]

练习:
1.显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;
ls /var/1*[0-9][[:lower:]]
2.显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
ls /etc/[0-9]
[^0-9]
3.显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或目录;
4.复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/test目录中;
5.复制/etc目录下,所有以.d结尾的文件或目录至/tmp/test.com目录中;
6.复制/etc目录下,所有以.conf结尾,且以m n r p开头的文件或目录至/tmp/test.com目录中;

注意:文件通配符globbing都是用来匹配文件名的;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值