在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程序设计相关推荐

  1. 【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】

    ⌛️ 文章目录 一.Shell 概述 二.Shell 脚本的定义与执行 2.1 Shell 脚本的定义 2.2 Shell 脚本的执行 三.Shell 变量 3.1 用户自定义变量 3.2 环境变量 ...

  2. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  3. Linux常用命令及Shell的简单介绍

    一.linux命令   1.查看指令的参数搭配: man 指令名称   2.基础指令 ls  列出当前目录下的所有文档的名称(文档指的是文件和文件夹) 常用参数搭配: ls -l 列出文档详细信息 l ...

  4. linux超级基础系列——什么是shell? bash和shell有什么关系

    什么是Shell?        shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序.你在提示符下输入的每个命令都由shell先解释然后传给Linux内核.    ...

  5. linux shell 原理,linux下shell的工作原理

    linux下shell的工作原理 2009-12-8 10:19:53   出处:https://www.yqdown.com shell是用户和Linux操作系统之间的接口.Linux中有多种she ...

  6. linux+shell+func,Linux shell编程笔记总结

    Linux Shell学习笔记简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称.shell是用户和Linux内核之间的接 ...

  7. linux系列(七):shell编程、shell概念、ssh协议概念、执行shell文件的三种方式

    1 概念 https://www.xshell.com/zh/free-for-home-school/ 1.1 xshell(执行linux命令的客户端软件) Xshell [1] 是一个强大的安全 ...

  8. Linux:shell编程(shell基本语法)

    参考菜鸟教程:shell教程 目录 什么是shell? shell脚本的执行方式 一.HelloWorld 二.shell中的变量 2.1.定义变量 2.1.1.定义动态变量 2.1.2.删除变量 2 ...

  9. Linux学习笔记二Shell教程

    Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...

  10. linux运维基础进阶和shell入门,Linux运维工程师从基础到进阶:Shell变量知识梳理...

    原标题:Linux运维工程师从基础到进阶:Shell变量知识梳理 Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂 ...

最新文章

  1. 举例浅介grep、sed、awk
  2. leetcode 79:simplify path
  3. IP、TCP、UDP、HTTP头部信息
  4. 北大青鸟java y2_Struts-2 北大青鸟 Y2学年 项目案例使用 2框架开发租房网站 Java Develop 249万源代码下载- www.pudn.com...
  5. Guava入门~Charsets
  6. java 依赖其他项目时如何导出_使用Eclipse将具有外部依赖性的Java项目导出到jar...
  7. 20190824:(leetcode习题)报数
  8. list集合根据jsonobjectvalue排序_Java之List集合两种排序的性能比较
  9. python系统学习_【Python系统学习】基础篇
  10. 解析P2P金融的业务安全
  11. 微信支付v3——批量转账到零钱(提现)
  12. 做嵌入式编程,为什么用的是C语言而不是C++呢?
  13. SpringBoot整合RabbitMQ之Spring事件驱动模型
  14. 实现极致节能,维谛技术(Vertiv)有哪些特殊技能?
  15. 『开发技巧』全网最详尽手把手教你在Ubuntu安装搜狗输入法
  16. ida pro 反汇编 Android so 库后修改 arm 汇编指令的方法总结
  17. 2022年自考专业考试(英语)英语翻译练习题
  18. 这些低代码平台,你是否知悉?
  19. 无尽长廊(Gallery)
  20. 第2课:5G标准小知识

热门文章

  1. 使用cocoapods导入第三方后 报错_OBJC_CLASS_$_XXX
  2. Ubuntu移动硬盘下载
  3. linux系统查看dns缓存,如何清空linux的DNS缓存
  4. 参考TLC5615基于verilog HDL实现SPI时序
  5. 实战:Longhorn存储-2022.2.24
  6. Bitbucket安装配置
  7. unity黑白滤镜_unity图像优化美化滤镜渲染插件Beautify 6.2.7
  8. 华为大数据研发第1轮面试
  9. [RK356x] [Firefly-Ubuntu] 1min教你在Ubuntu系统安装GCC开发工具
  10. Chrome扩展框架-Vue项目(用vue配合webpack实现浏览器扩展,包含热更新,无需重复加载浏览器插件)