linux shell完整程序,Linux Shell程序设计
在Linux操作系统中,shell非常适合于编写一些执行相对简单任务的小工具,因为它们更强调的是易于配置,易于维护和可移植性,而不是执行的效率。不仅可以通过shell执行命令,还可以编写shell程序。
(1)管道和重定向
ls -l >
lsout.txt
将ls命令的输出保存到文件lsout.txt中。
ps >>
lsout.txt
将ps命令的输出追加到lsout.txt的尾部。
ps | sort
>> pssort.out
用管道连接进程,对ps命令的结果进行排序并追加的文件pssort.out的尾部。
(2)标准输出和标准错误输出的重定向
./main >log.txt
2>err.txt
将main进程的标准输出和标准错误分别定向到不同的文件中:
./main >log.txt
2>&1
将main进程的标准输出和标准错误都重定向到文件log.txt中,用>&操作符结合两个输出。
(3)grep命令(General Regular
Expression Parser通用正则表达式解析器)
grep in words.txt
在文件words.txt中搜索字符串in,然后输出匹配的行
grep ef$ words.txt
在文件words.txt中查找以字母ef结尾的行,可见shell支持正则表达式。
grep -b fread /usr/include/*.h
在Linux头文件目录中查找fread函数的声明位置。
(4)其它常用Linux命令
nl命令为输入的每一行添加行号。
head命令用于打印文件或流的前十行。
tail命令用于打印文件或流的最后十行。
cat命令顺序打印文件的所有行。
tac命令逆序打印文件的所有行。
sort命令逐行对文件中的内容进行排序。
expand命令用于将输入制表符转换为空格。
unexpand命令用于将输入空格转换为制表符。
locate命令用于从数据库中查找文件名,locate apt-get
-c统计查找到apt-get文件的数量。
netstat -p
-tcp用于查询活动的TCP连接,计算机监听的端口。
(5)Shell编程的基本语法
#!/bin/sh
# shelltest
# This is my shell programming test
file
# Written by TERRY-V
foo1() {
echo "Example One"
echo -n "Hi, Is it morning? Please answer yes or
no: "
read timeofday
if [ "$timeofday" = "yes" ];
then
echo "Good morning"
elif [ "$timeofday" = "no" ];
then
echo "Good afternoon"
else
echo "Sorry, $timeofday not recognized. Enter
yes or no"
exit 1
fi
}
foo2() {
echo "Example Two"
for foo in "Hello!" 100
Oh
do
echo $foo
sleep 1
done
}
foo3() {
echo "Example Three"
echo -n "Enter password:
"
read trythis
while [ "$trythis" != "secret"
]:
do
echo "Sorry, try again"
read trythis
done
}
foo4() {
echo "Example Four"
echo -n "Is it morning? Please
answer yes or no: "
read timeofday
case "$timeofday" in
yes | y | Yes | YES )
printf "Good morning\n"
echo "Up bright and early in the
morning"
return 1
;;
n* | N* )
echo "Good afternoon"
return 2
;;
* )
echo "Sorry, answer not
recognized"
return 0
;;
esac
}
echo "script starting......"
foo1
foo2
foo3
foo4
echo "script ending......"
exit 0
(6)dialog图形化工具
如果shell脚本只需要运行在Linux控制台上,则可以使用dialog工具命令,该命令使用文本模式的图形和色彩,提供图形化界面。以下是一个复杂的使用dialog工具的程序:
<1>首先,改程序通过一个简单的对话框告诉用户发生的事情,不需要获得返回值和任何用户输入。
#!/bin/sh
# Ask some questions and collect the
answer
dialog --title "Questionnaire"
--messagebox "Welcome to my simple survey" 9 18
<2>然后用一个简单的yes/no对话框询问用户是否要继续操作,如果不想继续操作,显示一个简单的信息框。
dialog --title "Conform" --yesno
"Are you willing to take part?" 9 18
if [ $? != 0 ] ; then
dialog --infobox "Thank you
anyway!" 5 20
sleep 2
gdialog --clear
exit 0
fi
<3>使用一个输入框来询问用户的姓名,重定向标准错误流2到临时文件_1.txt,然后将其放到变量Q_NAME中。
dialog --title "Questionnaire"
--inputbox "Please enter your name" 9 30
2>_1.txt
Q_NAME=$(cat _1.txt)
<4>现在显示一个菜单,有4个不同的选项。再次重定向标准错误流到文件_1.txt,然后将其放到变量Q_MUSIC中。
dialog --menu "$Q_NAME, what music
do you like most?" 15 30 4 1 "Classical" 2 "Jazz" 3 "Country" 4
"Other" 2>_1.txt
Q_MUSIC=$(cat _1.txt)
<5>对结果进行测试,最后清除对话框并退出程序。
if [ $Q_MUSIC = "1" ] ; then
dialog --title "Like Classical"
--msgbox "good choice!" 12 25
else
dialog --title "Doesn't like
Classic" --msgbox "Shame" 12 25
fi
sleep 2
dialog --clear
exit 0
linux shell完整程序,Linux Shell程序设计相关推荐
- 【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】
⌛️ 文章目录 一.Shell 概述 二.Shell 脚本的定义与执行 2.1 Shell 脚本的定义 2.2 Shell 脚本的执行 三.Shell 变量 3.1 用户自定义变量 3.2 环境变量 ...
- Linux命令行与shell脚本编程大全:第2版
<Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...
- Linux常用命令及Shell的简单介绍
一.linux命令 1.查看指令的参数搭配: man 指令名称 2.基础指令 ls 列出当前目录下的所有文档的名称(文档指的是文件和文件夹) 常用参数搭配: ls -l 列出文档详细信息 l ...
- linux超级基础系列——什么是shell? bash和shell有什么关系
什么是Shell? shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序.你在提示符下输入的每个命令都由shell先解释然后传给Linux内核. ...
- linux shell 原理,linux下shell的工作原理
linux下shell的工作原理 2009-12-8 10:19:53 出处:https://www.yqdown.com shell是用户和Linux操作系统之间的接口.Linux中有多种she ...
- linux+shell+func,Linux shell编程笔记总结
Linux Shell学习笔记简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称.shell是用户和Linux内核之间的接 ...
- linux系列(七):shell编程、shell概念、ssh协议概念、执行shell文件的三种方式
1 概念 https://www.xshell.com/zh/free-for-home-school/ 1.1 xshell(执行linux命令的客户端软件) Xshell [1] 是一个强大的安全 ...
- Linux:shell编程(shell基本语法)
参考菜鸟教程:shell教程 目录 什么是shell? shell脚本的执行方式 一.HelloWorld 二.shell中的变量 2.1.定义变量 2.1.1.定义动态变量 2.1.2.删除变量 2 ...
- Linux学习笔记二Shell教程
Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...
- linux运维基础进阶和shell入门,Linux运维工程师从基础到进阶:Shell变量知识梳理...
原标题:Linux运维工程师从基础到进阶:Shell变量知识梳理 Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂 ...
最新文章
- 举例浅介grep、sed、awk
- leetcode 79:simplify path
- IP、TCP、UDP、HTTP头部信息
- 北大青鸟java y2_Struts-2 北大青鸟 Y2学年 项目案例使用 2框架开发租房网站 Java Develop 249万源代码下载- www.pudn.com...
- Guava入门~Charsets
- java 依赖其他项目时如何导出_使用Eclipse将具有外部依赖性的Java项目导出到jar...
- 20190824:(leetcode习题)报数
- list集合根据jsonobjectvalue排序_Java之List集合两种排序的性能比较
- python系统学习_【Python系统学习】基础篇
- 解析P2P金融的业务安全
- 微信支付v3——批量转账到零钱(提现)
- 做嵌入式编程,为什么用的是C语言而不是C++呢?
- SpringBoot整合RabbitMQ之Spring事件驱动模型
- 实现极致节能,维谛技术(Vertiv)有哪些特殊技能?
- 『开发技巧』全网最详尽手把手教你在Ubuntu安装搜狗输入法
- ida pro 反汇编 Android so 库后修改 arm 汇编指令的方法总结
- 2022年自考专业考试(英语)英语翻译练习题
- 这些低代码平台,你是否知悉?
- 无尽长廊(Gallery)
- 第2课:5G标准小知识
热门文章
- 使用cocoapods导入第三方后 报错_OBJC_CLASS_$_XXX
- Ubuntu移动硬盘下载
- linux系统查看dns缓存,如何清空linux的DNS缓存
- 参考TLC5615基于verilog HDL实现SPI时序
- 实战:Longhorn存储-2022.2.24
- Bitbucket安装配置
- unity黑白滤镜_unity图像优化美化滤镜渲染插件Beautify 6.2.7
- 华为大数据研发第1轮面试
- [RK356x] [Firefly-Ubuntu] 1min教你在Ubuntu系统安装GCC开发工具
- Chrome扩展框架-Vue项目(用vue配合webpack实现浏览器扩展,包含热更新,无需重复加载浏览器插件)