Shell编程--shell基础

Shell概述   |  脚本执行方式   |    history和Tab补全   |   别名与快捷键  |   输入输出重定向  |   多命令顺序执行与管道符   |   用户自定义变量

Shell是一个命令行解释器,它为用户提供一个与系统交互的工具


外层应用程序-->Shell命令解释器-->内核-->硬件

Shell还是一个强大的编程语言,易编写,易调试,灵活性较强。
Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令

常用的shell是Bash

Bash:Bash与sh兼容,现在使用的linux就是使用Bash作用用户的基本Shell


Linux支持的Shell

在这个文件下:/etc/shells

Shell使用例子:

扫描二维码关注公众号,回复: 3007138 查看本文章
[root@localhost ~]# sh
sh-4.1#

单用户系统修复启动的就是sh的shell

##############################################################################

脚本的执行方式


1、echo命令,输出命令


[root@localhost ~]# echo [选项] [输出内容]
选项:
-e:     支持反斜线控制的字符转换

如果中间有空格,用双引号连接,!是shell的保留字,要用感叹号,也需要用单引号引起来
 

[root@localhost ~]# echo "hello world!"
[root@localhost ~]# echo 'hello world!'
控制字符 作用
\\ 输出\本身
\a 输出警告音
\b 退格键,也就是向左删除键
\c 取消输出末行的换行符。和"-n"选项一致
\e ESCAPE键
\f 换页符
\n 换行符
\r 回车符
\t 制表符,也就式tab键
\v 垂直制表符
\0nnn 按照八进制ASCII码表输出字符。其中0为数字0,nnn是三位八进制数
\xhh 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数
[root@localhost ~]# echo "abc"             			#输出abc
[root@localhost ~]# echo -e "ab\bc"					#输出ac
[root@localhost ~]# echo -e "a\tb\tc\nd\tc\tf"  

##########输出颜色

#30m=黑色 31m=红色 32m=绿色 33m=黄色
#34m=蓝色 35m=洋红 36m=青色 37m=白色
[root@localhost ~]# echo -e "\e[1;31m abcd \e[0m"   #输出红色abcd
[root@localhost ~]# echo -e "\e[1;32m abcd \e[0m" 

2、第一个脚本

[root@localhost ~]# vim hello.sh
#!/bin/Bash
#The first program
#Author: TENNOE 

echo -e "Mr.T is the most honest man in LampBrother"

3、执行脚本

第一种
赋予执行权限,直接运行

[root@localhost ~]# chmod 755 hello.sh
[root@localhost ~]# ./hello.sh

第二钟:通过Bash调用执行脚本

[root@localhost ~]# bash hello.sh

4、在linux运行windows写的脚本

 1:把windows脚本转成linux脚本

[root@localhost ~]# dos2unix windows.sh    #windows转unix
[root@localhost ~]# unix2dos linux.sh      #unix转windows

2:执行脚本

####################################################################################

 [root@localhost ~]# history [选项] [历史命令保存文件]
 选项:
 -c             清空历史命令
 -w             把缓存中的历史命令写入历史命令保存文件中,默认是在~/.bash_history

 
 
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
HISTSIZE=1000

历史命令的调用
使用上下箭头调用以前的历史命令
使用"!n"重复执行第n条历史命令
使用"!!"重复执行上一条命令
使用"!字串"重复执行最后一条以该字串开头的命令

########################################################################
别名与快捷键

[root@localhost ~]# alias 别名='原命令'   	#定义别名
[root@localhost ~]# alias            		#查看别名

命令执行时顺序
1、第一顺位执行用绝对路径或相对路径执行的命令
2、第二顺位执行别名
3、第三顺位执行Bash内部命令
4、第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。

让别名永久生效

[root@localhost ~]# vi /root/.bashrc   #修改root用户的

########################################################
Bash常用快捷键

快捷键 作用
ctrl+A 把光标移动到命令行开头,如果输入的命令过长,想要把光标移动到命令行开头时使用
ctrl+E 把光标移动到命令行结尾
ctrl+C 强制结束当前的命令
ctrl+L 清屏,相当于clear命令
ctrl+U 删除或剪切光标之前的命令,输入一个很长的命令,不想使用退格键一个一个删除,使用这个快捷键会更加方便
ctrl+K 删除或剪切光标之后的内容
ctrl+Y 粘贴ctrl+U或ctrl+K剪切的内容
ctrl+R 在历史命令中搜索,按下ctrl+R后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索
ctrl+D 退出当前终端
ctrl+Z 暂停 并放入后台
ctrl+S 暂停屏幕输出
ctrl+Q 恢复屏幕输出

##############################################################

输出符(2和>中间不能与空格)

命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
命令 >> 文件 以追加的方式,把命令的正确输出输出到指定的文件或设备当中
错误命令 2> 文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备档中
错误命令 2>> 文件 以追加的方式,把命令的错误输出输出到指定的文件或设备档中
[root@localhost ~]# ls > abc
[root@localhost ~]# ls >> abc
[root@localhost ~]# lst 2> abc  #错误提示要用2>输出
[root@localhost ~]# lst 2>> abc  #错误提示要用2>输出

正确输出和错误输出同时保存到一个文件档中(2和>中间不能与空格)

命令 &> 文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件档中
命令 &>> 文件 以追加的方式,把正确输出和错误输出都保存到同一个文件档中
命令 >> 文件1   2>>   文件2 把正确的输出保存到文件1,错误的输出保存到文件2

把输出保存到垃圾箱(直接丢弃,不显示结果,也不保存到文件)

[root@localhost ~]# ls &> /dev/null   

3、输入重定向

选项: 
   -c    统计字节数
   -w    统计单词数
   -l    统计行数

[root@localhost ~]# wc < anaconda-ks.cfg 
  52  147 1623
#########52行   147个单词    1623字节

##################################################################
多命令顺序执行与管道符

多命令执行符 格式 作用
; 命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1&&命令2 逻辑与。当命令1正确执行,则命令2才会执行
|| 命令1||命令2 逻辑或。当命令1执行不正确,则命令2才会执行

 

[root@localhost ~]# dd if=输入文件 of=输出文件 bs=字节数 count=个数
选项:
    if=输入文件      指定源文件或源设备
    of=输出文件         指定目标文件或目标设备
    bs=字节数         指定一次输入/输出多少字节,即把这些字节看做一个数据块
    count=个数       指定输入/输出多少个数据块

例子:

[root@localhost ~]# date; dd if=/dev/zero of=/root/testfile bs=1k count=100000;date

[root@localhost ~]# grep [选项] "搜索内容" 文件名
选项:
    -i:            忽略大小写
    -n:            输出行号
    -v:            反向查找
    --color=auto    搜索出的关键字用颜色显示

猜你喜欢

转载自blog.csdn.net/qq_28710983/article/details/81676390