Shell Script
King Seal
这个作者很懒,什么都没留下…
展开
-
高级Bash脚本编程指南(22):基本命令
高级Bash脚本编程指南(22):基本命令成于坚持,败于止步新手必须要掌握的初级命令ls"列出"文件的基本命令. 但是往往就是因为这个命令太简单, 所以我们总是低估它. 比如, 使用-R选项, 递归选项, ls将会以目录树的形式列出所有文件. 另一个很有用的选项-S, 将会按照文件尺寸列出所有文件, -t, 将会按照修改时间来列出文件, -i选项会显示文件的inoder原创 2013-06-17 20:07:13 · 1659 阅读 · 0 评论 -
高级Bash脚本编程指南(15):循环
高级Bash脚本编程指南(15):循环成于坚持,败于止步循环就是迭代(重复)一些命令的代码块, 如果循环控制条件不满足的话, 就结束循环.for循环for arg in [list]这是一个基本的循环结构. 它与C语言中的for循环结构有很大的不同.for arg in [list]do command(s)... done在循环的每次执行中, arg将顺序原创 2013-06-09 20:12:47 · 2690 阅读 · 0 评论 -
高级Bash脚本编程指南(14):双圆括号结构
高级Bash脚本编程指南(14):双圆括号结构成于坚持,败于止步与let命令很相似, ((...))结构允许算术扩展和赋值. 举个简单的例子, a=$(( 5 + 3 )), 将把变量"a"设为"5 + 3", 或者8. 然而, 双圆括号结构也被认为是在Bash中使用C语言风格变量操作的一种处理机制.#!/bin/bash(( a = 23 )) # C语言风格的变量赋值,"=原创 2013-05-10 18:33:26 · 1662 阅读 · 0 评论 -
高级Bash脚本编程指南(13):参数替换
高级Bash脚本编程指南(13):参数替换成于坚持,败于止步处理和(或)扩展变量${parameter}与$parameter相同, 也就是变量parameter的值. 在某些上下文中, ${parameter}很少会产生混淆,可以把变量和字符串组合起来使用.#!/bin/bashYOUR_ID=${USER}-on-${HOSTNAME}echo "$YOUR_ID原创 2013-05-09 19:43:05 · 1862 阅读 · 0 评论 -
高级Bash脚本编程指南(12):指定变量的类型: 使用declare或者typeset
高级Bash脚本编程指南(12):指定变量的类型: 使用declare或者typeset成于坚持,败于止步declare或者typeset内建命令(这两个命令是完全一样的)允许指定变量的具体类型. 在某些编程语言中, 这是指定变量类型的一种很弱的形式. declare命令是从Bash 2.0之后才被引入的命令. typeset也可以用在ksh的脚本中.declare/typeset选项原创 2013-05-08 19:59:35 · 1775 阅读 · 0 评论 -
高级Bash脚本编程指南(11):操作字符串
高级Bash脚本编程指南(11):操作字符串成于坚持,败于止步Bash所支持的字符串操作的数量多的令人惊讶. 但是不幸的是, 这些工具缺乏统一的标准. 一些是参数替换的子集, 而另外一些则受到UNIX expr命令的影响. 这就导致了命令语法的不一致, 还会引起冗余的功能, 但是这些并没有引起混乱.得到字符串长度的方法:一${#string}二expr length $st原创 2013-05-07 20:03:25 · 1413 阅读 · 0 评论 -
高级Bash脚本编程指南(10):内部变量
高级Bash脚本编程指南(10):内部变量成于坚持,败于止步内建变量,这些变量将会影响bash脚本的行为.$BASHBash的二进制程序文件的路径root@ubuntu:~/resource/shell-study/0506-2013# echo $BASH/bin/bash$BASH_ENV这个环境变量会指向一个Bash的启动文件, 当一个脚本被调用的时候, 这个原创 2013-05-07 18:44:54 · 1496 阅读 · 0 评论 -
高级Bash脚本编程指南(8):操作符
高级Bash脚本编程指南(8):操作符成于坚持,败于止步=通用赋值操作符, 可用于算术和字符串赋值算术操作符+加法计算-减法计算*乘法计算/除法计算**幂运算(c语言中没用过的)%模运算, 或者是求余运算(返回一次除法运算的余数)这里重点说一下“=”root@ubuntu:~/resource/shell-study/原创 2013-05-06 15:25:24 · 1550 阅读 · 0 评论 -
高级Bash脚本编程指南(6):条件测试结构
高级Bash脚本编程指南(6):条件测试结构成于坚持,败于止步if/then结构用来判断命令列表的退出状态码是否为0(因为在UNIX惯例, 0表示"成功"), 如果成功的话, 那么就执行接下来的一个或多个命令,有一个专有命令[ (左中括号, 特殊字符). 这个命令与test命令等价, 并且出于效率上的考虑, 这是一个内建命令. 这个命令把它的参数作为比较表达式或者作为文件测试, 并且根据比原创 2013-04-26 16:37:52 · 1723 阅读 · 0 评论 -
高级Bash脚本编程指南(5):退出和退出状态码
高级Bash脚本编程指南(5):退出和退出状态码成于坚持,败于止步exit被用来结束一个脚本, 就像在C语言中一样. 它也返回一个值, 并且这个值会传递给脚本的父进程, 父进程会使用这个值做下一步的处理.每个命令都会返回一个 退出状态码 (有时候也被称为 返回状态 ). 成功的命令返回0, 而不成功的命令返回非零值, 非零值通常都被解释成一个错误码. 行为良好的UNIX命令, 程序,原创 2013-04-25 09:40:43 · 2095 阅读 · 0 评论 -
高级Bash脚本编程指南(4):shell中的引用
高级Bash脚本编程指南(4):shell中的引用成于坚持,败于止步引用的字面意思就是将字符串用双引号括起来. 它的作用就是保护字符串中的特殊字符不被shell或者shell脚本重新解释, 或者扩展. (我们这里所说的"特殊"指的是一些字符在shell中具有的特殊意义, 而不是字符的字面意思, 比如通配符 -- *.)在日常的演讲和写作中, 当我们"引用"一个短语的时候, 这意味着这个原创 2013-04-25 09:19:57 · 1939 阅读 · 0 评论 -
高级Bash脚本编程指南(3):变量和参数的介绍
高级Bash脚本编程指南(3):变量和参数的介绍成于坚持,败于止步变量替换变量的名字就是变量保存值的地方. 引用变量的值就叫做变量替换.“$“这个符号就好像是一种标志让我们仔细的区别变量的名字和变量的值. 如果variable是一个变量的名字, 那么$variable就是引用这变量的值, 即这边变量所包含的数据.root@ubuntu:~# variable=12原创 2013-04-24 15:06:13 · 1981 阅读 · 0 评论 -
高级Bash脚本编程指南(1):从一个简单的script出发
高级Bash脚本编程指南:从一个简单的script出发成于坚持,败于止步开始shell脚本编程学习,路途遍布荆棘啊,O(∩_∩)O~,开始吧,这是“高级Bash脚本编程指南”为我们量身打造的“HelloWorld”,其实也不算,因为这个只是我们无比熟悉的命令的堆叠嘛!O(∩_∩)O清除/var/log下的log文件# 清除,当然要使用root身份来运行这个脚本.cd /var/原创 2013-04-22 16:37:18 · 3679 阅读 · 5 评论 -
高级Bash脚本编程指南(30):终端控制命令
高级Bash脚本编程指南(30):终端控制命令成于坚持,败于止步影响控制台或终端的命令tput初始化终端或者从terminfo数据中取得终端信息. 这个命令有许多选项, 每个选项都允许特定操作. tput clear与后边所介绍的clear命令等价, tput reset与后边所介绍的reset命令等价, tput sgr0可以复位终端, 但是并不清除屏幕.bash$ tput原创 2013-06-22 13:39:27 · 2833 阅读 · 0 评论 -
高级Bash脚本编程指南(31):数学计算命令
高级Bash脚本编程指南(31):数学计算命令成于坚持,败于止步操作数字factor将一个正数分解为多个素数.root@ubuntu:~/resource/shell-study/0622-2013# factor 23742374: 2 1187root@ubuntu:~/resource/shell-study/0622-2013# factor 27417274原创 2013-06-22 15:16:50 · 3522 阅读 · 2 评论 -
高级Bash脚本编程指南(16):循环与分支
高级Bash脚本编程指南(16):循环与分支成于坚持,败于止步嵌套循环嵌套循环就是在一个循环中还有一个循环, 内部循环在外部循环体中. 在外部循环的每次执行过程中都会触发内部循环, 直到内部循环执行结束.外部循环执行了多少次, 内部循环就完成多少次.当然, 无论是内部循环还是外部循环的break语句都会打断处理过程.#!/bin/bash# nested-loop.sh:原创 2013-06-13 18:39:25 · 2845 阅读 · 0 评论 -
高级Bash脚本编程指南(18):内部命令与内建命令(一)
高级Bash脚本编程指南(18):内部命令与内建命令(一)成于坚持,败于止步内建命令指的就是包含在Bash工具包中的命令, 从字面意思上看就是built in.这主要是考虑到执行效率的问题:内建命令将比外部命令执行的更快, 一部分原因是因为外部命令通常都需要fork出一个单独的进程来执行,另一部分原因是特定的内建命令需要直接访问shell的内核部分.当一个命令或者是shell本身需要初原创 2013-06-14 20:24:25 · 3136 阅读 · 0 评论 -
高级Bash脚本编程指南(21):作业控制命令
高级Bash脚本编程指南(21):作业控制命令成于坚持,败于止步在下面的学习作业控制命令的过程中,你会不止一次的碰到一些标识符,这里叫做“作业标识符”,首先列出这是标识符记法含义%N作业号[N]%S以字符串S开头的被(命令行)调用的作业%?S包含字符串S的被(命令行)调用的作业%%"当前"作原创 2013-06-17 19:16:41 · 1692 阅读 · 0 评论 -
高级Bash脚本编程指南(17):测试和分支(case与select结构)
高级Bash脚本编程指南(17):测试和分支(case与select结构)成于坚持,败于止步测试和分支(case与select结构)case和select结构在技术上说并不是循环, 因为它们并不对可执行代码块进行迭代.但是和循环相似的是, 它们也依靠在代码块顶部或底部的条件判断来决定程序的分支.case (in) / esac在shell中的case结构与C/C++中的sw原创 2013-06-13 20:21:29 · 3479 阅读 · 0 评论 -
高级Bash脚本编程指南(9):数字常量
高级Bash脚本编程指南(9):数字常量成于坚持,败于止步shell脚本在默认情况下都是把数字作为10进制数来处理, 除非这个数字采用了特殊的标记或者前缀. 如果数字以0开头的话那么就是8进制数. 如果数字以0x开头的话那么就是16进制数. 如果数字中间嵌入了#的话, 那么就被认为是BASE#NUMBER形式的标记法(有范围和符号限制).下面根据具体的实例对这几种表示方法进行深入分析:原创 2013-05-06 19:00:10 · 2215 阅读 · 0 评论 -
高级Bash脚本编程指南(7):文件测试操作符
高级Bash脚本编程指南(7):文件测试操作符成于坚持,败于止步如果下面的条件成立将会返回真.-e文件存在-a文件存在,这个选项的效果与-e相同. 但是它已经被"弃用"了, 并且不鼓励使用.-f表示这个文件是一个一般文件(并不是目录或者设备文件)-s文件大小不为零-d表示这是一个目录-b表示这是一个块设备(软盘, 光驱, 等等.)-c原创 2013-05-06 14:08:08 · 1740 阅读 · 0 评论 -
高级Bash脚本编程指南(2):Shell特殊字符
高级Bash脚本编程指南(2):Shell特殊字符成于坚持,败于止步# 注释1. 表示注释2. 在引号中间和\#等表示#本身3.echo ${PATH#*:} # 参数替换,不是一个注释4.echo $(( 2#101011 )) # 数制转换,不是一个注释; 分隔1.命令分隔,在一行中写多个命令 echo "aa" ; echo "bb"2.在条件中的if和t原创 2013-04-22 20:05:04 · 2329 阅读 · 0 评论 -
高级Bash脚本编程指南(29):文件与归档命令(二)
高级Bash脚本编程指南(29):文件与归档命令(二)成于坚持,败于止步Comparisondiff, patchdiff: 一个非常灵活的文件比较工具. 这个工具将会以一行接一行的形式来比较目标文件. 在某些应用中, 比如说比较单词词典, 在通过管道将结果传递给diff命令之前, 使用诸如sort和uniq命令来对文件进行过滤将是非常有用的. diff file-1 file原创 2013-06-22 11:00:34 · 2814 阅读 · 0 评论 -
高级Bash脚本编程指南(28):文件与归档命令(一)
高级Bash脚本编程指南(28):文件与归档命令(一)成于坚持,败于止步归档命令tar标准的UNIX归档工具. 起初这只是一个磁带归档程序, 而现在这个工具已经被开发为通用打包程序, 它能够处理所有设备的所有类型的归档文件, 包括磁带设备, 正常文件, 甚至是stdout. GNU的tar工具现在可以接受不同种类的压缩过滤器比如tar czvf archive_name.tar原创 2013-06-22 09:39:35 · 2508 阅读 · 0 评论 -
高级Bash脚本编程指南(27):文本处理命令(三)
高级Bash脚本编程指南(27):文本处理命令(三)成于坚持,败于止步处理文本和文本文件的命令tr字符转换过滤器.必须使用引用或中括号, 这样做才是合理的. 引用可以阻止shell重新解释出现在tr命令序列中的特殊字符. 中括号应该被引用起来防止被shell扩展.无论tr "A-Z" "*" -d选项删除指定范围的字符.root@ubuntu:~/res原创 2013-06-21 19:45:31 · 2670 阅读 · 0 评论 -
高级Bash脚本编程指南(26):文本处理命令(二)
高级Bash脚本编程指南(26):文本处理命令(二)成于坚持,败于止步处理文本和文本文件的命令looklook命令与grep命令很相似, 但是这个命令只能做"字典查询", 也就是它所搜索的文件必须是已经排过序的单词列表. 默认情况下, 如果没有指定搜索哪个文件, look命令就默认搜索/usr/share/dict/words, 当然也可以指定其他目录下的文件进行搜索.一个原创 2013-06-20 20:20:53 · 2022 阅读 · 0 评论 -
高级Bash脚本编程指南(25):文本处理命令(一)
高级Bash脚本编程指南(25):文本处理命令(一)成于坚持,败于止步处理文本和文本文件的命令sort文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页.,最简单的实例,排序当前目录中文件,并全文件名打印出来#!/bi原创 2013-06-20 19:43:08 · 2394 阅读 · 0 评论 -
高级Bash脚本编程指南(24):时间/日期 命令
高级Bash脚本编程指南(24):时间/日期 命令成于坚持,败于止步时间/日期和计时date直接调用date命令就会把日期和时间输出到 stdout上. 这个命令有趣的地方在于它的格式化和分析选项上.root@ubuntu:~/resource/shell-study/0619-2013# dateWed Jun 19 03:30:04 PDT 2013root@ubu原创 2013-06-19 19:34:28 · 3918 阅读 · 0 评论 -
高级Bash脚本编程指南(23):复杂命令
高级Bash脚本编程指南(23):复杂命令成与坚持,败于止步更高级的用户命令findfind命令的一般格式:find pathname -options [-exec]pathname 是find命令所查找的目录路径-exec 对匹配的文件执行该参数所给出的shell命令 -options 选项参数:-name 按照文件名查找文件-perm 按照文件权限来查原创 2013-06-18 19:42:13 · 3866 阅读 · 0 评论 -
高级Bash脚本编程指南(20):内部命令与内建命令(三)
高级Bash脚本编程指南(20):内部命令与内建命令(三)成于坚持,败于止步脚本行为source, . (点 命令)当在命令行中调用的时候, 这个命令将会执行一个脚本. 当在脚本中调用的时候, source file-name 将会加载file-name文件. sourc一个文件(或点命令)将会在脚本中引入代码, 并将这些代码附加到脚本中(与C语言中的#include指令效果相同)原创 2013-06-17 18:38:19 · 1896 阅读 · 1 评论 -
高级Bash脚本编程指南(19):内部命令与内建命令(二)
高级Bash脚本编程指南(19):内部命令与内建命令(二)成与坚持,败于止步文件系统cdcd, 修改目录命令, 在脚本中用的最多的时候就是当命令需要在指定目录下运行时, 需要用它来修改当前工作目录.这里只是提一下比较特殊的情况,也许你不是很常用这些cd - 将会把工作目录修改至$OLDPWD, 也就是之前的工作目录.root@haitao-VirtualBox:~#原创 2013-06-15 15:46:12 · 2167 阅读 · 0 评论 -
高级Bash脚本编程指南(32):混杂命令(一)
高级Bash脚本编程指南(32):混杂命令(一)成于坚持,败于止步一些不好归类的命令jot, seq这些工具用来生成一系列整数, 用户可以指定生成范围.每个产生出来的整数一般都占一行, 但是可以使用-s选项来改变这种设置.root@ubuntu:~/resource/shell-study/0624-2013# seq 512345root@ubuntu:~原创 2013-06-26 18:59:11 · 3593 阅读 · 0 评论