Linux Shell编程学习笔记】的更多相关文章

LinuxShell编程学习笔记目录附笔记资源下载 目录(?)[-] 写在前面 第一部分 Shell基础编程 第二部分 Linux Shell高级编程技巧 资源下载 写在前面 最近花了些时间学习Shell,视频学习过程中做了笔记,留给大家参考. 第一部分 Shell基础编程 第一部分 Shell基础编程——第一章 Shell简介 http://blog.csdn.net/wentasy/article/details/8702846 第一部分 Shell基础编程——第二章变量和运算符 http:…
1:Shell Script中if语句的条件部分要以分号来分隔 2:要注意条件测试部分中的空格.在方括号的两侧都有空格 3:echo "Hi, ${a}s" 单引号中的变量不会进行变量替换操作. 4:[ -f "$file" ] 判断$file是否是一个文件 5:[ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于 6:[ -x "$file" ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性…
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板.如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名.搜索的结果被送到标准输出,不影响原文件内容. grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成…
linux通配符: 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在 命令的“参数”里(它不用在 命令名称里, 也不用在 操作符上).当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展):否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理.总之,通配符 实际上就是一种shell实现的路径扩展功能.在 通配符…
打算在学习过程中将每个写过的程序一个个的往上贴; 2015-07-03 1. 鸟叔第三版13.2.1节“利用日期进行文件的创建” 源代码 #!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHread -p "Please input your filename:" fileuserfilename=${fileuser:-"file"…
20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的变量 定义变量直接用 variablename= value 就可以 其中变量名与等号之间没有空格. 使用变量的时候 是 ${vairablename} 的方式进行使用 大括号可以有可以没有,但是建议有. 可以使用 for file in `ls /etc/` 的方式来循环取得文件名. 使用do d…
目前在学习Shell编程,我会把我的学习笔记记录在这里.大神可以直接略过~ 嗯,第一段代码,肯定是要输出Hello World了~ 以下蓝色字体的内容为linux命令,红色字体的内容为输出的内容: # cd /opt # mkdir scripts # vim script01.sh 开始编写script01.sh的脚本,脚本内容为: #! /bin/sh echo "hello world!" # chmod +x script01.sh # ./script01.sh hello…
本文为本人学习笔记,如有转载请注明出处,谢谢 一.Bourne Shell 有如下四种变量: 用户自定义变量 位置变量,即命令行参数 预定义变量 环境变量 二.位置变量 $ 与键入的命令行一样,包含脚本文件名 $, $, ……. $ 分别包含第一个到第九个命令行参数 $# 包含命令行参数的个数 $@ 包含所有命令行参数: “$, $, ……. $”会一个一个拆分解析 $? 包含前一个命令的退出状态 $* 包含所有命令行参数: “$, $, ……. $”所有包括在一起解析的 $$ 包含正在执行进程…
在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值. linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0,正确输出standard output 1,错误输出:error outp…
shell编程中可以实现for循环遍历 先来写一个最简单的吧,循环输出从1到10,脚本内容为: #! /bin/sh for i in {1..10} do echo $i done 上面的代码从1到20循环输出,使用for关键字进行循环,循环体以do开始,以done结束. 再看第二个例子,这个例子循环遍历一个集合: #! /bin/sh list="a b c d" for item in $list do echo $item done 上面的代码会把集合循环遍历输出,分别输出a.…
编程语言中都有条件判断,shell编程也不例外,下面我们来看一下shell中应该怎么使用if条件判断 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script07.sh 开始编写script07.sh的脚本,脚本内容为: #! /bin/sh if [ 3 -gt 2 ] then echo "3>2" fi if [ 3 -lt 2 ] then echo "3<2" else ech…
这一篇不是讲shell编程的,专门讲cat命令.shell编程书用到了这个cat命令,顺便说一下cat命令. cat命令有多种用法,我一一来列举(以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容): 1.查看文件内容 # cat file1.txt helloworld 2.把一个文件的内容复制到另一个文件,如果另一个文件不存在,则自动创建该文件 # cat file1.txt > file2.txt # cat file2.txt helloworld 使用-n参数会在复制的新文件…
在执行Shell脚本的时候,可以在执行时带上参数,相当于传递参数给脚本,下面我们看一下怎么使用这个参数 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script05.sh 开始编写script05.sh的脚本,脚本内容为: #! /bin/sh echo "$# 个参数" echo "参数内容:$@" echo "第一个参数内容:$1" ps -ef|grep $1 # chmo…
在shell编程中,大多数处理的都是文本文件.对文本文件进行处理除了使用交互式文本编辑器(vi[m],gedit......)也可以使用另外一类:流编辑器. 流编辑器:使用预定义的编辑规则来对文本进行处理.如sed,gawk 本文将会记录学习的sed的一些命令,以及一些正则联合使用来对文本进行操作案例. 第一部分:sed简述 1.1 sed的使用方法 sed编辑器是以行为单位来对文本处理的编辑器.它的使用方法有两种: sed [选项] 命令 目标文本 sed [选项] -f 脚本文件 目标文件…
特殊变量($0.$1.$2. $?. $# .$@. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的参数1到参数9 $? 脚本的返回值 $# 脚本执行时,输入的参数的个数 $@ 输入的参数的具体内容(将输入的参数作为一个多个对象,即是所有参数的一个列表) $* 输入的参数的具体内容(将输入的参数作为一个单词) $@与$*的区别: $@与$*都可以使用一个变量来来表示所有的参数内容,但这两个变量之间有一…
一.文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]-r filename 如果 filename可读,则为真 [ -r…
Shell的种类有很多种,例如CSH,Bourne Shell,Korn Shell.在现在的大多数Linux发行版中,默认的Shell一般都是Bourne again shell(bash). <echo> echo $SHELL 在Linux中,$符号代表一个shell变量.所有的shell都用这种方式使用变量.有一些shell变量在你的系统启动的时候就有了默认值.例如,$SHELL:$LOGNAME是你的登录名,而$PATH变量指明了你的shell命令的搜索范围. echo命令的作用就是…
对于使用过程中并发.通过实现更轻量级线程. 每个线程都是一个独立的逻辑流. 主题是CPU在执行调度的最小独立单位,这个过程是资源分配单元.当然,这是在微内核操作系统说.总之,这是唯一的一个操作系统内核提供了最重要的OS服务,许多人看点击打开链接 每一个线程有它自己的线程上下文.包含一个唯一的线程ID(linux上实现为unsigned long),栈,栈指针.程序计数器.通用目的寄存器和条件码,还有自己的信号掩码和优先级.同一个进程里的线程共享这个进程的整个虚拟地址空间,包含可运行的程序文本.程…
进程线程分配方式 简述下常见的进程和线程分配方式:(好吧,我仅仅是举几个样例作为笔记...并发的水太深了,不敢妄谈...) 1.进程线程预分配 简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销.能够在请求到达前预先进行分配. 2.进程线程延迟分配 预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销.由此,有个折中的方法是,当某个处理须要花费较长时间的时候,我们创建一个并发的进程或线程来处理该请求.实现也非常easy,在主线程中定时,定…
现在我们看一下Shell中局部变量的使用 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script03.sh 开始编写script03.sh的脚本,脚本内容为: #! /bin/sh num=123 func1() { num=321 echo $num } func2() { local num=456 echo $num } echo $num func1 echo $num func2 echo $num # chmod…
变量在很多编程语言中都有,Shell中也不例外,我们下面看一下Shell中的变量怎么使用: 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script02.sh 开始编写script02.sh的脚本,脚本内容为: #! /bin/sh long_string="this is a test" echo $long_string num1=20 num2=30 echo $(($num1+$num2)) echo &quo…
2017-07-17 09:32:07 输入read: 用途: 从标准输入读取一行,或者从文件描述符FD(file descriptor)中读取一行,并且将其分割成字段. 用法: read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数] [-N 读取字符数] [-p 提示符] [-t 超时] [-u 文件描述符] [名称 ...] 常用选项: -a:(arrary) 将读取得的字符划分成单词,按照数组存储(从0开始) 源码:#!/bin/bash ec…
首先是fork()函数.移步APUE 8.3.  比較清晰的解释能够參考http://blog.csdn.net/lingdxuyan/article/details/4993883和http://www.oschina.net/question/195301_62902 补充一点是:fork返回后,原进程中的每一个文件或套接口描写叙述符的引用计数加1(相当于被多打开了一次),每调用一次close,引用计数减1,仅仅有当引用计数减到0时才会真正关闭该套接字. 可运行文件被linux运行的唯一方式…
shell中也可以实现类似java的while循环 while循环是指满足条件时,进行循环 示例: #! /bin/sh index=10 while [ $index -gt 0 ] do index=$((index-1)); echo $index done while循环以whille开始,循环体以do开始,以done结束 注意第5行的代码,表达式index-1外面添加了$(()),如果不添加$(())的话,会报错,因为这里index是字符串,得到的结果不是9,而是10-1 第5行的in…
除了可以使用if条件判断,还可以使用case 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script08.sh 开始编写script08.sh的脚本,脚本内容为: #! /bin/sh case $1 in 1) echo "你输入了1";; 2) echo "你输入了2";; *) echo "你输入了其他";; esac 上面的代码,$1是指接收到的第1个参数 每一个cas…
我们这里把echo要打印的内容输出到文件中 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script06.sh 开始编写script06.sh的脚本,脚本内容为: #! /bin/sh echo "hello" > /opt/test/test1.txt cat /opt/test/test1.txt 上面的echo本来是输出到屏幕的,通过使用>,将要输出到屏幕的内容改为输出到文件中 然后,使用cat命令将…
通过echo可以输出字符串,下面看一下怎么输出特殊转义字符,首先我先列出来echo的转义字符: \\ 输入\ \a 输出警告音 \b 退格,即向左删除一个字符 \c 取消输出行末的换行符,和-n选项一致 \e Esc \f 换页符 \n 换行 \r 回车 \t 制表,即Tab \v 垂直制表符 \0nnn 按照八进制ASCII码表输出字符,其中0为数字零,nnn是三位八进制数 \xhh 按照十六进制ASCII码表输出字符,其中hh是两位十六进制数 以下蓝色字体部分为Linux命令,红色字体的内容…
在Shell脚本中,用于while或for循环中经常要涉及到整数自增的情况,下面罗列下可能的方式 [方式一]declare -i来声明整数变量 root@localhost:~# declare -i x=1 root@localhost:~# x+=1 root@localhost:~# echo $x 2 [方式二]使用let命令 root@localhost:~# i=1 root@localhost:~# let i+=1 root@localhost:~# echo $i 2 root…
<cut> 作用:从输入文件或者命令的输出中析取出各种域 用法:cut –c{字符串范围} –d{字段间分割符} –f{字段索引编号} 举例: (1)查看在线用户:who | cut –c1-8 (2)从系统文件/etc/passwd中获取用户名列表:cut –d: -f1 /etc/passwd [dannchen@sqaauto3 ~]$ ls D4C Desktop Documents Downloads Music Pictures process process1 process2…
在循环遍历中,可以添加对应判断条件跳出循环,跳出循环可以使用break/continue,这个跟java语言是一样的,break是指跳出整个循环,continue是指跳出当前循环体,继续下一项循环. 下面是break的示例: #! /bin/sh for i in {1..10} do if [ $i -eq 5 ] then break fi echo $i done 执行该代码,会依次输出1到4,后面的循环就不再执行了 把上面的代码稍微改一下,使用continue: #! /bin/sh f…