Bash 编程和使用零散整理(个人所用非系统化笔记,更新时间2011.2.4)

  • ssh localhost 得到一个新的Shell
  • printenv LINUXCBT 打印环境变量、set/env 查看所有环境变量、/etc/skel 下边的变量都是新建用户继承的
  • test是一个命令,用于检测,0为true,1为false (man test查看比较选项)
  • tac是cat的反向
  • touch一个文件,若这个文件存在则不会覆盖,但会更新修改时间。
  • cut命令可以token一行文字
  • ls -A| wc -l 文件个数统计
  • sleep 暂停(秒) usleep(微秒)
  • script 记录shell操作的过程,Ctrl-d结束
  • time 计时所用
  • watch命令是定期循环执行一个命令
  • expr 是测试表达式的
  • info 可以查看一个命令的基本情况说明
    --help 查看基本参数
    man 查看具体参数和说明
  • date +%N 可以用来生成随机数
  • seq可以构造循环
  • read 读入一个变量(可以放在shell脚本中作为input)
  • Ctrl + z 放到后台挂起
    jobs 看后台挂起的作业
    fg 放到前台
  • tr 用于转换字符串、处理字符串 :echo FILEEE1 | tr -s A-Z | tr A-Z a-z
  • basename 从绝对路径中获取文件名或者后缀
  • source 可用作include一个shell脚本(用一个点再加一个空格是不启动子shell直接在当前shell环境下执行)
  • mkdir test{1,2,3}(5,6}
  • $? 返回上次命令是否正确执行,若有则返回0,若无该命令则返回127,返回2为bad argument,权限问题返回126,用户中断返回130
  • ls -l && pwd 只有前一个正确执行了后一个才会执行。可以理解为C语言中的&&符,相反||则是前一个失败了才会执行后一个,这其实就可以构成了一个if语句。在shell脚本中经常这样简写。
    要是一个变量里面带有格式化的符号,可以用echo "$var" 保留格式
  • 命令替换除了使用反引号外还可以这样:etcdir1=$(ls -l /etc)
  • 输入重定向:filelist=`< list.txt`
  • 引号:在bash中有两种引号,一种是强引号,保留所有字面上的字(单引号),一种是弱引号(双引号),替换命令、变量,保留格式,当然默认是不保留格式,替换命令、变量。
  • 表示空格:mkdir test\ a\ directory
  • mail可以让你发本地邮件或者是外埠邮件
  • 定义function可以不加这个关键词function
    循环中的变量递增:let "COUNT += 1";
  • 条件的表达:
    test $NUM -lt $MAX 等效于[ $NUM -lt $MAX ]
  • 变量做计算时使用:let arg [arg ...]
  • 不想保存也不想显示的东西重定向到/dev/null
  • 字符串比较: [ "Script" = "Script" ](大小写敏感)
  • 检查某个服务是不是有:
    netstat -ant |grep 80 >/dev/null 此时$?代表了这个命令是否运行正确,或者说这个服务是否启动 echo $?查看即可
  • case语句的default语法为 *)
  • shell脚本需要变量时,变量个数不对exit返回165。
  • Shell脚本写个简单的交互菜单:

#!/bin/bash

echo "This script can make any of the files in this directory private."
echo "Enter the number of the file you want to protect:"

PS3="Your choice: "
QUIT="QUIT THIS PROGRAM - I feel safe now."
touch "$QUIT"

select FILENAME in *;
do
case $FILENAME in
"$QUIT")
echo "Exiting."
break
;;
*)
echo "You picked $FILENAME ($REPLY)"
chmod go-rwx "$FILENAME"
;;
esac
done
rm -f "$QUIT"

  • Linux的Log系统产生的Log文件,若是没有后缀则表示是当前的Log
  • 变量赋值:

    变量赋值方式

    str没有赋值

    str为空字符串

    str为非空字符串

    备注

    var=${str-expr}var=exprvar=$str对var进行设置
    var=${str+expr}var=$strvar=expr对var进行设置,var与str要不都取值,要不都不取值。虽然取值不同
    var=${str=expr}str=expr
    var=expr
    str不变
    var=$str
    对var与str进行设置,

    var与str保持一致

    var=${str?expr} expr输出至stderr var=str对var进行设置
    var=${str:-expr}var=exprvar=$str
    var=${str:+expr}var=var=expr
    var=${str:=expr}str=expr
    var=expr
    str不变
    var=$str
    var=${str:?expr} expr输出至stderr

  • 变量运算:在BashShell中,只能进行两个整数间的运算,其结果仍为整数.要进行算术运算,需要使用let命令,语法为: letexpr
    expr是一个包含项和操作符的表达式,项可以是一个变量或是一个整数常数,当使用整数常数时,其默认为十进制整数,用户可以用radio#number来指定其它形式的整数,其中radio定义了整数是几进制表示的,number是该整数的值.若radio>;10,那么数字字符可从0-9和A-Z.
    当表达式中含有shell的特殊字符(如|)时,需要用引用符('或")将其引用起来.使用let时还需要注意的时,对于letx+y这样的式子,shell虽然计算了x+y的值但却将结果丢弃,若不想这样,可以使用letsum=x+y将x+y的结果保存在变量sum中另外还可以使用((和))操作符取代let命令,而且这样的话,还可以省去对算术表达式的引用,如果想返回表达式的值,则需用$(())的格式.
  • 要希望程序在后台运行又不输出任何信息到屏幕上刻意将错误重定向到标准输出,然后再重定向到 /dev/null,例如:# ls >/dev/null 2>&1
  • 可以利用sleep来进行临时闹钟设置:sleep 8h && vlc music.mp3
  • shell脚本报错:"[: =: unary operator expected" :在匹配字符串相等时常出现,多加一层[]就可以了:if [[ $STATUS = "OK" ]]; then echo "OK"fi
  • var=${parameter:-defaultValue} 一个变量parameter若是没有设置就是用默认值defaultvalue。另外一种方式是
    var=${parameter:-=defaultValue},但是这种方式不支持shell脚本传入的参数。
  • _domain="${1:?Usage: mknginxconf domainName}" 这说明要是没有传入参数则该shell脚本将停止并且打印这条信息。
  • ${#var} 是这个变量的长度。
  • 去掉该变量前边的一些字符:比如var=test123,则echo ${var#test}输出的就是123。这行的意思是说var去掉从左到右第一个test,若想从右到左,删除某字符char前的所有字符(包含char),则使用##*char。例如,_self="${0##*/}"就得到了basename一样的效果——该shell的名字。${var%pattern}则是从右往左去除某个字符。
  • 查找和替代:${varName/Pattern/Replacement} 这是替代单个的,若想替代全部则使用${varName//Pattern/Replacement},例如:y=/etc/resolv.conf cp "${y}" "${y/.conf/.conf.bak}"

${parameter:-defaultValue}Get default shell variables value
${parameter:=defaultValue}Set default shell variables value
${parameter:?"Error Message"}Display an error message if parameter is not set
${#var}Find the length of the string
${var%pattern}Remove from shortest rear (end) pattern
${var%%pattern}Remove from longest rear (end) pattern
${var:num1:num2}Substring
${var#pattern}Remove from shortest front pattern
${var##pattern}Remove from longest front pattern
${var/pattern/string}Find and replace (only replace first occurrence)
${var//pattern/string}Find and replace all occurrences
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下 4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
学校大创竞赛管理系统,学生上报项目内容,学院、教务处、评审专家评审。SpringBoot、SpringCloud、SpringSecurity、redis、Mysql、swagger、fastdfs、maven、vue、webpack.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值