前后台运行

Linux系统进程前后台运行相关的几个命令:&、ctrl+z、jobs、fg、bg

& 用在一个命令或代码块的最后(注意需要空格隔开),可以把命令或代码段放到后台执行;
ctrl + z 可以将一个正在前台执行的命令放到后台,并且暂停;
jobs 查看当前后台运行的命令列表;
fg 将后台中的命令调至前台继续运行(前台运行);
bg 将一个在后台暂停的命令,变成继续执行(后台运行);

 Shell命令控制蜂鸣器发声

1、使用如下命令进行安装:

sudo apt-get install beep

2、安装好后,查看帮助信息:

beep [-verbose-debug] [-e device-device device] [-f N] [-l N] [-r N] [-d N] [-D N] [-s] [-c]

-verbose或-debug选项开启调试信息输出功能;

-e device或-device device选项设定event设备,未指定则尝试/dev/tty0和/dev/vc/0两设备;

-f N表示beep的频率为N Hz,0<N<20000;

-l N表示beep多久,为N毫秒;

-r N表示beep重复次数,默认为1;

-d N和-D N表示两次重复间的延时为N毫秒,其中d则表示最后一次重复不发生该延时,而D则表示每次都有该延时;

-s和-c表示beep时需从stdin读取,s表示每读一行,c表示每读一字符。

3、测试有没有声音出来:

beep -f 300.7 -r 2 -d 100 -l 400

该命令是用man beep里看到的,使用该例子进行测试,但声音没有出来?查了下,发现驱动没有加载:

lsmod | grep pcspkr

上面这条命令返回空。

确认Linux内核的配置里CONFIG_INPUT_PCSPKR=m,那就更肯定是没加载了。

继续查,最后发现在/etc/modprobe.d/blacklist.conf文件里居然有如下这句:

blacklist pcspkr

看来是每次启动时都被黑名单过滤掉了,我们手动加载下吧:

sudo modprobe pcspkr

这时再执行上面的beep命令就有声音出来了。

注意:如果你需要在Shell脚本里使用beep命令,记得用上/usr/bin/beep这个绝对路径,别只用命令,还有如果该Shell脚本要每次启动都能成功执行,那么上面的blacklist一句记得注释掉。

shell脚本输出带颜色信息

echo显示带颜色,需要使用参数-e
格式如下:
echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
例如: 
echo -e "\033[41;37m TonyZhang \033[0m"
其中41的位置代表底色, 37的位置是代表字的颜色

注意:
1、字背景颜色和文字颜色之间是英文的“""”
2、文字颜色后面有个m
3、字符串前后可以没有空格,如果有的话,输出也是同样有空格

下面看几个例子:

echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m ×××字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"

控制选项说明 :

\33[0m 关闭所有属性 
\33[1m 设置高亮度 
\33[4m 下划线 
\33[5m 闪烁 
\33[7m 反显 
\33[8m 消隐 
\33[30m -- \33[37m 设置前景色 
\33[40m -- \33[47m 设置背景色 
\33[nA 光标上移n行 
\33[nB 光标下移n行 
\33[nC 光标右移n行 
\33[nD 光标左移n行 
\33[y;xH设置光标位置 
\33[2J 清屏 
\33[K 清除从光标到行尾的内容 
\33[s 保存光标位置 
\33[u 恢复光标位置 
\33[?25l 隐藏光标 
\33[?25h 显示光标

shell 比较大小

一、整数比较

-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
小数据比较可使用AWK 

二、字符串

#判断字符串是否相等
if [ "$A" = "$B" ];then
echo "[ = ]"
fi#判断字符串是否相等,与上面的=等价
if [ "$A" == "$B" ];then
echo "[ == ]"
fi#注意:==的功能在[[]]和[]中的行为是不同的,如下#如果$a以”a”开头(模式匹配)那么将为true
if [[ "$A" == a* ]];then
echo "[[ ==a* ]]"
fi#如果$a等于a*(字符匹配),那么结果为true
if [[ "$A" == "a*" ]];then
echo "==/"a*/""
fi#File globbing(通配) 和word splitting将会发生, 此时的a*会自动匹配到对应的当前以a开头的文件
#如在当前的目录中有个文件:add_crontab.sh,则下面会输出ok
#if [ "add_crontab.sh" == a* ];then
#echo "ok"
#fi
if [ "$A" == a* ];then
echo "[ ==a* ]"
fi#如果$a等于a*(字符匹配),那么结果为true
if [ "$A" == "a*" ];then
echo "==/"a*/""
fi#字符串不相等
if [ "$A" != "$B" ];then
echo "[ != ]"
fi#字符串不相等
if [[ "$A" != "$B" ]];then
echo "[[ != ]]"
fi#字符串不为空,长度不为0
if [ -n "$A" ];then
echo "[ -n ]"
fi#字符串为空.就是长度为0.
if [ -z "$A" ];then
echo "[ -z ]"
fi#需要转义<,否则认为是一个重定向符号
if [ $A /< $B ];then
echo "[ < ]"
fiif [[ $A < $B ]];then
echo "[[ < ]]"
fi#需要转义>,否则认为是一个重定向符号
if [ $A /> $B ];then
echo "[ > ]"
fiif [[ $A > $B ]];then
echo "[[ > ]]"
fi

算术运算有三种命令方式

#!/bin/bash
#PATH1=0
for i in $*;    #$*:所有输入参数的内容
doPATH2=${i}#方式一let PATH1=PATH1+PATH2#方式二PATH3=$((PATH3+PATH2))#方式三(注意加号有空格)PATH4=$(expr $PATH4 + ${i})done
echo $PATH1
echo $PATH3
echo $PATH4

shell脚本(linux)相关推荐

  1. Linux Shell脚本 Linux C程序 获取指定的范围内 or 系统可用端口

    Linux Shell脚本 && Linux C程序 获取指定的范围内 or 系统可用端口 一.源代码及其运行 1. Linux C程序getPort.c 源码 运行示例 2. 脚本文 ...

  2. Shell脚本:Linux下定时备份MySQL数据库

    对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间和精力,还灰常不专业的说.于是,有了下面这段脚本的出现.参 ...

  3. linux下的shell脚本,linux下shell脚本的学习

    一:shell脚本须以#!/bin/sh开始,指定了命令的解释器 #!/bin/sh  //指定解释器 sudo mv /home/pi/Desktop/installationPackage/bac ...

  4. linux防火墙shell脚本,Linux系统目录结构,Shell脚本;关闭和开启防火墙

    Linux系统目录结构 目录 描述 备注 /bin a.存放着最经常使用的命令 b.可执行文件,用户命令 c.构建最小系统所需要的命令 /boot a.内核与启动文件 b.系统启动相关文件 c.启动L ...

  5. linux下的shell脚本,linux下的shell脚本的使用

    什么是shell? Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户.这种对话方式可是交互 ...

  6. 【shell】shell脚本Linux环境mutt发送邮件(实现单邮件循环发送和根据条件循环发送)

    之前用过shell脚本发送报表,不过都是单个脚本发送一个报表,最近使用到根据条件循环发送报表的情况,也从同事那里学到这个技能.这里对shell发送邮件做一些总结. 目录 1.单个脚本实现单封邮件的发送 ...

  7. linux将db2账户添加到组_超实用的shell脚本--Linux安全加固设置,值得收藏

    概述 近几年来Internet变得更加不安全了.网络的通信量日益加大,越来越多的重要交易正在通过网络完成,与此同时数据被损坏.截取和修改的风险也在增加. 只要有值得偷窃的东西就会有想办法窃取它的人.I ...

  8. linux启用shell脚本,linux下开机启动shell脚本

    背景 设置比较炫酷的开机启动脚本 首先,新建一个kaiji.sh 后缀名的脚本-->新建的脚本在任何位置创建都可以,只要在使用.sh 文件,时候使用绝对路径即可 [root@hf-01 ~]# ...

  9. linux保存shell脚本,linux – bash如何保存shell脚本

    是否可以保持/停止bash脚本进度而不会终止进程? (通过kill命令)或其他命令 例如 这个脚本 – install_linux_pkgs.bash,将逐步安装Linux pkgs ./instal ...

  10. linux中常用的shell脚本,Linux常用shell脚本

    1. 设置ssh.scp命令的认证 运行一次脚本后,以后再使用ssh或scp命令登录远程机器时不再提示输入密码 -----------------setkey.sh开始---------------- ...

最新文章

  1. inno setup修改properties格式内容_linux内核修炼之setup
  2. android 导入so库
  3. Oracle FGA审计记录的清理步骤
  4. 关于Java抽象类,接口与实现接口及派生类继承基类
  5. maven创建父项目和子项目
  6. RPC(远程过程调用)原理及应用
  7. 如何在Azure上创建和部署云服务
  8. 题目243-交换输出
  9. 线性表文档之静态链表
  10. github rust 项目Travis ci配置
  11. JVM参数解析 Xmx、Xms、Xmn、NewRatio、SurvivorRatio、PermSize、PrintGC
  12. 单像空间后方交会模型
  13. NEO FANTASY:回合制策略游戏在ACGN文化与GameFi中的新探索09-07
  14. 字符移位(将大写字母移到字符串尾部并不改变相对顺序)
  15. 微信域名防封技术,微信域名总是被封如何解决
  16. [敏捷开发]研发管理 开发过程管理
  17. hyu 1698 Just a Hook
  18. 使用 Go 语言进行并发编程的实践方法
  19. 中职网络安全竞赛设备-----文件上传渗透测试
  20. 使用python 实现 微信好友 个性签名 并 制作 词云图

热门文章

  1. docker 部署 kong konga postgresql 以及konga配置
  2. 局域网中最常用的三种网络协议简述
  3. 基于主成分分析法的安全评价模型
  4. java继承1—上溯造型
  5. Linux查询一个进程是被那个启动项启动的
  6. 使用OpenCV库函数将图片合成视频
  7. 红旗7linux安装教程,红旗Linux7.0硬盘安装简明教程
  8. QUIC不可靠的数据报扩展(An Unreliable Datagram Extension to QUIC)
  9. postgres 判断null_PostgreSQL空值null参与运算的处理方法
  10. 项目实战 航班飞行网图分析