随笔分类 - Shell
摘要:一 调试1.设置选项(1)bash -n scriptname 不会实际运行脚本,而只是检查标本的语法错误,也可以在脚本中添加 set -n 或者set -o noexec(2)bash -v scriptname在实际执行一个命令或者脚本前打印出这个命令或者脚本的内容,也可以在脚本中添加set -v 或者set -o verbose(3)bash -x scriptname 打印每个命令的执行结果,set -x or set -o xtrace2.$LINENO和caller(1)$LINENO 等同与vc中的 __LINE__(2)caller#!/bin/bashfunc(){calle
阅读全文
摘要:一 函数1.在调用函数之前必须先要定义函数2.函数的嵌套,但是并不常用eg f1(){ f2() {echo "f2"}}f2 #在此处调用f2会出现错误。f1 #什么也不做,并不会调用f2f2 #此时可以正确调用f2了,因为之前调用f1使f2在脚本中变得可见了先面对比的看另一例子func(){ var=100}echo $var #nullfuncecho $var #1003. 向函数传递参数#!/bin/bashfunc(){ echo "$1" #这里并不是传递给该脚本的位置参数}func "nihao"exit 04.变量替
阅读全文
摘要:一 正则表达式1.在这里就不详细列举正则表达式中各种元字符的功能仅仅说一下,在看这一章遇到的一个小问题* 匹配前一个字符的任意多次(包括零次)eg "1133*",更明确的应该写成"113(3*)"可以理解它匹配113(0个3) 1133(1个3),但是为什么可以匹配111312?111312 因为它是这样匹配的此时匹配了1个3,并没有匹配开头和结尾,要想匹配开头和结尾的话,需要改成"^1133*$" ,此时就只能匹配以113开头,且后面有n(n>=0)个3的情况。二 通配下面介绍另一概念:通配。这是一个很容易跟正则表达式混淆的
阅读全文
摘要:一 命令替换1.命令替换的两种形式(1)var=`basename $0`(2)var=$(basename $0)2.命令替换会调用一个subshell3.(1)command `echo a b` #2args: and b(2)command "`echo a b`" #1args:"a b"(3)dir=`ls -l`echo $dir #换行消失echo "$dir" #4.var1=`<file1`var2=`cat file2` #var1 and var2 分别是file1 和file2文件的内容5.变量替换允许
阅读全文
摘要:一.通讯命令1.host 通过IP或者网址来搜索一个互联网主机的信息二。终端控制命令三数学计算命令1.bc linux中的计算器,输入bc后即进入计算模式也可在脚本中使用 var=$(echo "scale=9,express"|bc) eg.var=$(echo "scale=2,1/3."|bc)scale =2,小数点后两位四 混杂命令1.seqfor a in `seq 80` or for a in $(seq 80) or for a in 1 2 ...80五 系统与管理命令1.tty 显示当前用户终端的名字2.lsof 列出当前打开的所有
阅读全文
摘要:一.内部命令与内建命令1.内建命令指的是包含在Bash工具包中的命令,从字面上看就是built in,主要是考虑到执行效率的问题。内建命令比外部命令执行的更快,一部分原因是外部命令通常都fork出一个子进程来执行,另一部分原因是特定的内建命令可以直接访问shell的内核部分。2.值得注意的是一个内建命令通常会与一个系统命令同名,但是Bash内部重新实现了这些命令,但是他们在大多数情况下是一样的3.关键字就是保留字,具有特殊含义,并用来构建shell语法结构。4.(1)echo -n "\v\v\v" #result: \v\v\v -n选项不换行(2)echo -e &qu
阅读全文
摘要:方法一:.添加encoding支持(1)ubuntu的Applications菜单中默认没有配置编辑器选项,首先添加,系统-》首选项-》主菜单-》系统工具,选中配置编辑器(2)这是应用程序菜单中就有了配置编辑器apps——gedit-2——preferences——encodings。双击右边的“auto_detected”——点“添加”按钮——输入新列表值:“GB18030”并确定。并up到第一项,完成方法二 编写脚本 1 #!/bin/bash 2 <<HELP 3 The script is used to change a dos text file 4 to a unix
阅读全文
摘要:一:循环和分支1.for planet in "Mercury 36" "Venus 67"do set --$planet echo "$1 $2,000,000 miles from sun"doneexit 02.当一个for循环中忽略in [list]部分,将会使循环操作$@3.使用命令替换来产生循环的【list】NUMBERS=“9 8 7 5”for number in `echo $NUMBER`4.C风格for循环for ((a=1,b=1;a<LIMIT;a++,b++));doecho -n "$a
阅读全文
摘要:该章从第九章变量访问开始一.内部变量1.内建变量 $FUNCNAME,当前函数的名字func(){echo "$FUNCNAME" #func}2.$IFS内部字段分割符当shell读取输入时,它给出来分割单词的一组字符,它通常是空格,制表符和换行符。$* 所有的参数用环境变量$IFS的第一个字符分割开$@则不是用$IFS中的字符分割变量。3.$LINENO表示在脚本中该变量出现时的所在的行数4.$SECONDS脚本已运行的秒数,sleep num ,程序停止num秒5.$TMOUT,经错$TMOUT后,shell提示符会超时,这将使此shell退出登录6.在使用$*时一定
阅读全文
摘要:stty时一个用来改变并打印终端行设置的常用命令1,在命令行下,禁止输出大写的方法 stty iuclc #开启stty -iuclc #恢复2,在命令行下禁止输出小写stty olcuc #开启stty -olcuc#恢复3,打印出终端的行数和列数stty size4,改变ctrl+D的方法:stty eof "string"系统默认是ctrl+D来表示文件的结束,而通过这种方法,可以改变! 5,屏蔽显示stty -echo #禁止回显stty echo #打开回显测试方法:stty -echo;read;stty echo;read6,忽略回车符stty igncr #
阅读全文
摘要:1.eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。2.eval也可以用于回显简单变量,不一定时复杂变量。NAME=ZONEeval echo $NAME等价于echo $NAME3.两次扫描test.txt内容:hello shell world!myfile="cat test.txt"(1)echo $myfile #result:cat test.txt(2)eval echo $myfile #result:hello shell
阅读全文
摘要:1.我们可以使用trap命令来忽略或者回复系统信号对当前脚本的影响。忽略:trap "" SIGHUP SIGINT 或trap "" 1 2恢复:trap SIGHUP SIGINT 或 trap : 1 22.stty -a 可以列出中断信号与键盘的对应3.可以项C语言中的signal一样在shell中用trap定义我们自己的信号处理程序trap "echo 'recieve SIGINT'" SIGINTtrap funcname SIGINT4.Linux信号简介1) SIGHUP本信号在用户终端连接(正常或非
阅读全文
摘要:内容范围:第五章 引用开始1.echo $(ls -l)#输出结果没有换行echo "$(ls -l)"#不会去掉换行符2.退出码(1)exit num(num必须是一个0-255范围的十进制整数)(2)如果一个脚本以不带参数的exit命令结束,脚本的退出码将是执行exit命令前的最后一个命令的退出码(3)没有exit,exit 没退出码和exit $?三者时等价的(4)当一个函数返回时,$?保存了函数里最后一个命令的退出码,当一个脚本结束时,保存了脚本的退出码。3.逻辑非(!)! true ;echo $? #result:1 注意!后面的空格去掉空格后输出true4.(
阅读全文
摘要:原文地址:http://dev.firnow.com/course/6_system/linux/Linuxjs/20071027/80454.htmlexec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。在说明exec和source的区别之前,先说明一下fork的概念。fork是l
阅读全文
摘要:1.cat /dev/null > messages 清空messages文件的内容。注意方向性。2.shell的执行(1)将scriptfile放到/usr/local/bin中,这样系统中的所有用户都可以使用了只要输入scriptfile即可。(2)sh scriptfile 运行bash脚本将会禁止所有bash的扩展特性。3.命令分割符【分号】,允许同一行里有多个命令。4.case语句天生具有break的特性。5.【点号】命令作为一个文件名的前缀时,使该文件具有了隐藏属性。除非用ls 加-a选项,不能显示。6.【双引号】里面的特殊字符能够被解释,【单引号】是更强的引用,不允许解释
阅读全文

浙公网安备 33010602011771号