自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 【Bash百宝箱】shell历史命令(history)

在shell命令行执行过的命令默认会保存到历史命令中,这些历史命令可以通过内建命令history和fc进行查看,下面对history命令做个介绍。 history [n] history -c history -d offset history -anrw [filename] history -p arg [arg ...]

2016-09-29 17:18:34 2039

原创 【Bash百宝箱】shell命令行自动补全(compgen、complete、compopt)

在shell命令行可以使用“Tab”键自动补全命令或文件名,这种功能其实可以在shell脚本中实现,使得使用“Tab”键可以自动补全自定义的shell函数,相关命令有三个,compgen、complete和compopt。1、compgencompgen [option] [word]compgen命令根据option生成与word可能匹配的补全,并打印到标准输出中,这些选项可以是内建命令compl

2016-09-29 17:15:15 9136

原创 【Bash百宝箱】shell作业控制(jobs、bg、fg)

在shell中,作业控制指选择性地停止(暂停)并在后来继续(恢复)执行某个进程的能力。通常,用户通过操作系统内核的终端驱动和bash共同提供的功能,在交互式的界面上进行作业控制。shell把每个管道和一个作业关联起来,维护着一个当前正在执行的作业表,这个表可以使用内建命令jobs列出,下面先介绍一下jobs命令的用法。jobs [-lnprs] [ jobspec ... ]jobs -x com

2016-09-29 17:13:18 2457

原创 【Bash百宝箱】shell目录栈(dirs、pushd、popd)

在shell中,目录栈是一组最近访问过的目录,使用内建命令dirs、pushd、popd进行管理。dirs命令可以显示目录栈的内容,pushd命令可以把目录压入目录栈、更改当前目录,popd命令可以从目录栈中移除目录、更改当前目录,下面对这三个命令的用法作个介绍。1、dirsdirs [-clpv] [+n] [-n]dirs命令可以列出当前目录栈的内容,用pushd命令添加目录,popd命令删除目

2016-09-28 21:34:33 1947

原创 【Bash百宝箱】shell数组

shell支持一维数组,包括普通的使用下标的索引数组和关联的键值对数组,下面以例子说明。创建一个名为foo的索引数组,三个元素a、bear、123以空格分隔放在圆括号内。$ foo=(a bear 123)查看索引数组foo的全部元素(使用特殊符号):$ echo $fooa$ echo ${foo}a$ echo ${foo[@]}a bear 123 echo ${foo[*]}a

2016-09-28 21:33:22 1027

原创 【Bash百宝箱】shell环境变量有哪些

在shell中,有些环境变量如PATH、HOME、PWD等我们非常熟悉,有些则较为陌生,下面对shell现有的环境变量作个总结。CDPATH:冒号分隔的一组目录名,用作内建命令cd的搜索路径。HOME:当前用户主目录,也是内建命令cd不带参数时的目的路径,这个变量的值还用在波浪号扩展中。IFS:用来分隔字段的一组字符,例如空格、水平制表符、换行符,在shell扩展中用于分隔单词。MAIL:如果这个变

2016-09-28 21:25:47 2294

原创 【Bash百宝箱】shell内建命令之set、shopt

1、set在shell中,内建(builtin)命令set,格式如下:set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]set命令用以改变bash默认行为,不指定任何选项和参数时,显示所有shell变量的名称及值,包括shell函数,但

2016-09-27 21:13:53 2095

原创 【Bash百宝箱】shell内建命令之bind、enable、ulimit

1、bind在shell中,内建(builtin)命令bind,格式如下:bind [-m keymap] [-lpsvPSVX]bind [-m keymap] [-q function] [-u function] [-r keyseq]bind [-m keymap] -f filenamebind [-m keymap] -x keyseq:shell-commandbind [-m

2016-09-23 18:06:55 2382

原创 【Bash百宝箱】shell内建命令之read、readarray、mapfile

1、read在shell中,内建(builtin)命令read,格式如下:read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]read命令用于从标准输入或选项”-u“指定的文件描述符中读取一行文本,把第一个单词赋值给第一个名称nam

2016-09-23 18:05:14 10015

原创 【Bash百宝箱】shell内建命令之help、type、let、logout

1、help在shell中,内建(builtin)命令help,格式如下:help [-dms] [pattern]help命令用于显示shell内建命令的帮助信息,如果指定了模式pattern,则只显示与模式匹配的命令的帮助信息,否则显示全部内建命令的帮助信息。选项“-d”用于显示命令的一个简短描述,“-m”以man page的格式来打印命令描述,否则以默认格式打印,“-s”用于显示命令的语法格式

2016-09-23 18:03:34 1701

原创 【Bash百宝箱】shell内建命令之echo、printf

1、echo在shell中,内建(builtin)命令echo,格式如下:echo [-neE] [arg ...]echo命令用于输出各参数arg,参数间以空格分隔,结尾是个换行符。选项“-n”禁止输出结尾的换行符。对于一些反斜线“\”转义的特殊字符,在echo命令中默认不进行转义,选项“-e”启用转义,“-E”禁止转义。下面是反斜线“\”转义的特殊字符。 \a

2016-09-23 18:01:45 4104

原创 【Bash百宝箱】shell内建命令之declare、typeset、local

1、declare(typeset)在shell中,内建(builtin)命令declare与typeset用法相同,格式如下:declare [-aAfFgilnrtux] [-p] [name[=value] ...]typeset [-aAfFgilnrtux] [-p] [name[=value] ...]declare命令用于声明变量,可以给变量设置属性。如果没有指定name,则显示相应

2016-09-22 18:20:16 7932

原创 【Bash百宝箱】shell内建命令之builtin、command、caller

1、builtin在shell中,内建(builtin)命令builtin,格式如下:builtin shell-builtin [arguments]builtin命令用以执行shell的内建命令,既然是内建命令,为什么还要以这种方式执行呢?因为shell命令执行时首先从函数开始,如果自定义了一个与内建命令同名的函数,那么就执行这个函数而非真正的内建命令。下面以shell内建命令umask为例说明

2016-09-22 18:18:50 5869

原创 【Bash百宝箱】shell内建命令之alias与unalias

1、alias在shell中,内建(builtin)命令alias,格式如下:alias [-p] [name[=value] ...]alias命令用于给一个shell命令建立一个别名,主要用于简化命令,比如说有一个经常要用到的复杂命令,如果每次在使用时都输入这个命令,就显得繁琐了,这时可使用alias给这个命令创建一个简单的别名,然后直接使用这个别名就方便多了。alias命令不指定任何参数或使用

2016-09-21 20:04:36 2116

原创 【Bash百宝箱】shell内建命令之trap

在shell中,内建(builtin)命令trap,格式如下:trap [-lp] [[arg] sigspec ...]trap命令用于跟踪Linux信号,当shell收到信号sigspec时,就会读取命令arg并执行它。首先,看一下Linux有哪些信号。$ trap -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6

2016-09-21 20:03:03 2687

原创 【Bash百宝箱】shell内建命令之test

在shell中,内建(builtin)命令test,格式如下:test expr[ expr ]test命令用于测试条件表达式expr的结果,为true时返回0,为false时返回1,每个运算符和操作数都是一个独立的参数。对条件表达式测试时使用一对方括号也是可以的,效果等同于test命令。test命令支持以下4种运算符(运算符优先级从高到低):! expr 如果expr为false,返回tr

2016-09-21 20:00:18 1419

原创 【Bash百宝箱】shell内建命令之times、umask、unset

1、times在shell中,内建(builtin)命令times,格式如下:timestimes命令用于显示shell及其子进程所使用的累积用户时间和系统时间,退出状态为0。times命令用例如下(启动一个新的shell终端开始执行):$ times0m0.024s 0m0.004s0m0.000s 0m0.000s$ times0m0.024s 0m0.004s0m0.000s 0m0

2016-09-20 21:05:08 1893 1

原创 【Bash百宝箱】shell内建命令之pwd、readonly、return、shift

1、pwd在shell中,内建(builtin)命令pwd,格式如下:pwd [-LP]pwd命令用于打印当前工作目录的绝对路径,选项“-L”表示路径可能包含符号链接,选项“-P”表示路径为物理路径,不包含符号链接,不指定任何选项时,默认效果同选项“-L”。成功执行时,pwd命令的退出状态为0。2、readonly在shell中,内建(builtin)命令readonly,格式如下:readonly

2016-09-20 21:03:25 2201 1

原创 【Bash百宝箱】shell内建命令之hash

在shell中,内建(builtin)命令hash,格式如下:hash [-lr] [-p filename] [-dt] [name]hash命令的作用是在环境变量PATH中搜索命令name的完整路径并记住它,这样以后再次执行相同的命令时,就不必搜索其完整路径了,而且shell每次执行环境变量PATH中的一个命令时,hash都会记住它。当hash不指定任何参数时,显示当前hash列表,包括每个命令

2016-09-20 21:01:40 7957 1

原创 【Bash百宝箱】shell内建命令之cd、getopts

1、cd在shell中,内建(builtin)命令cd,格式如下:cd [-L | -P] [dir]cd命令用于改变当前工作目录,新的工作目录为dir,如果没有指定dir,则使用shell系统变量“HOME”的值,参数“-L”表示不跟踪符号链接,如果dir是一个符号链接的目录,结果便是dir本身,“-P”表示物理链接即跟踪符号链接,如果dir是一个符号链接的目录,结果则是dir指向的实际物理目录,

2016-09-19 20:38:31 1264 1

原创 【Bash百宝箱】shell内建命令之eval、exec、exit、export

1、eval在shell中,内建(builtin)命令eval,格式如下:eval [arg ...]eval命令首先读取其参数值,然后把它们连接成一个命令并执行这个命令,这个命令的退出状态即eval的退出状态,如果没有指定参数,其退出状态为0。在简单命令的场景中,eval并没有什么特殊之处,如下例子:$ foo="uname"$ unameLinux$ $fooLinux但是,遇到复杂命令

2016-09-19 20:34:35 9016 1

原创 【Bash百宝箱】shell内建命令之break与continue

1、break在shell中,内建(builtin)命令break,格式如下:break [n]break命令用于退出for、while、until、select循环,循环可嵌套多层,可指定退出循环的层数n,这个值大于等于1,不指定时,默认为1,即退出当前循环。当n小于1时,命令出错,“loop count out of range”,退出状态为1,否则退出指定的循环嵌套层数,命令退出状态为0,若n

2016-09-19 20:32:43 1517 1

原创 【Bash百宝箱】shell内建命令之句点与source

在shell中,内建(builtin)命令句点“.”和source用法相同,格式如下:. filename [arguments]source filename [arguments]句点命令和source的作用相同,都是从脚本filename中读取命令并执行它们,若指定了参数arguments,参数便成为对应的位置参数。命令执行的退出状态为执行的最后一个命令的退出状态,没有执行任何命令时,退出状

2016-09-19 20:30:28 1635 1

原创 【Bash百宝箱】shell内建命令之冒号

在shell中,冒号“:”是一个内建(builtin)命令,格式如下:: [arguments]冒号命令本身没什么副作用,使用场景有限,一般用于参数扩展,有以下几种用法:${parameter:-word} 如果parameter没有设置或者为空,替换为word;否则替换为parameter的值。${parameter:+word} 如果parameter没有设置或者为空,不进行任何替

2016-09-19 20:29:14 6414 2

原创 【Bash百宝箱】shell重定向

在shell中,可以对输入、输出进行重定向,顺序从左到右。Linux有三个特殊的文件描述符,分别是标准输入、标准输出和标准错误输出,对应于“/dev/stdin”、“/dev/stdout”、和“/dev/stderr”,也即“/dev/fd/0”、“/dev/fd/1”和“/dev/fd/2”。在shell重定向中,常对这三个文件描述进行操作。1、输入重定向输入重定向的基本格式为:[n]<word

2016-09-16 16:21:53 947 1

原创 【Bash百宝箱】shell变量及扩展

1、shell变量shell变量赋值语句为”name=[value]“,等号两边不能有空格,可以给shell变量追加内容”name+=value“,取消shell变量的设置使用”unset name”,例子如下。$ var=1$ echo $var1$ var=123$ echo $var123$ var+=100$ echo $var123100$ var=a$ echo $v

2016-09-15 06:15:58 2733 1

原创 【Bash百宝箱】shell函数

1、基本格式shell函数的格式如下:name () compound-command [redirection]function name [()] compound-command [redirection]shell函数实际上就是一个简单的shell命令,在当前shell执行,它代表了一组复合命令compound-command即函数体,函数体一般放在一对花括号中。关键字function可有

2016-09-14 09:34:18 1322 1

原创 【Bash百宝箱】协作进程coproc

shell中的协作进程coprocess是指一个shell命令的前面添加了coproc关键字的情形,这个命令是在子shell中异步执行的,就好像在命令的末尾使用了后台命令控制符“&”一样,不同的是,协作进程与其父进程间有双向的管道,提供了一种便利的通信途径。 协作进程命令格式如下:coproc [NAME] command [redirections]上述命令用于创建一个名为NAME的协作进程,如

2016-09-14 09:29:25 3007 2

原创 【Bash百宝箱】shell命令

1、简单命令简单命令即命令本身,只有一个命令,有些命令有一个或多个参数,它们以空格分隔。2、多个命令执行多个命令最简单的方法是使用分号“;”把它们分隔开来,效果是所有的命令会依次执行,即使前面的命令执行失败了,后面的命令也会继续执行,不同于下面介绍的队列命令。退出状态为执行的最后一个命令的退出状态。3、队列命令队列命令使用符号”&&“、”||“,在c/c++中,它们也叫短路运算符,前者称为逻辑与,当

2016-09-10 07:47:28 1181 1

原创 【Bash百宝箱】Bash简介

1、shell在Unix/Linux操作系统中,shell俗称壳,区别于kernel内核。shell有双重功能,一方面,shell是一个命令解释器,用于处理shell内置的命令或者用户自定义的命令,可以在shell终端与用户交互,等待用户输入一个命令或者一串命令,然后以用户指定的方式执行命令;另一方面,shell是一种程序设计语言,更确切地说是一种脚本语言,一种解释型语言,类似于Python,有内置

2016-09-10 07:36:46 1253 2

原创 【设计模式】行为模式之Visitor访问者

Visitor访问者是一种对象行为型设计模式,用于表示一个作用于某对象结构中的各元素的操作,使得可以在不改变各元素的类的前提下定义作用于这些元素的新操作。使用Visitor模式, 必须定义两个类层次,一个对应于接受操作的元素,另一个对应于定义对元素的操作的访问者,给访问者类层次增加一个新的子类即可创建一个新的操作。Visitor访问者模式的结构如下图所示:上图中,Visitor访问者为该对象结构中C

2016-09-04 10:07:10 662

原创 【设计模式】行为模式之Template Method模板方法

Template Method模板方法是一种类行为型设计模式,目的是定义一个操作中的算法的骨架,而将一些步骤延迟到之子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体的行为。Template Method模板方法的结构如下图所示:上图中,AbstractClass抽象类定义抽象的原语操作,具体的子类将重定

2016-09-04 09:23:06 629

原创 【设计模式】行为模式之Strategy策略

Strategy策略是一种对象行为型设计模式,目的是定义一系列的算法,把它们一个一个封装起来,并且使它们可相互替换,算法可独立于使用它的客户而变化。一个常见的应用是文本编辑器,其中有许多算法对一个正文流进行分析,将这些算法硬编进使用它们的类中是不可取的,因为需要换行功能的客户程序如果直接包含换行算法代码的话将会变得复杂,这使得客户程序庞大并且难以维护,尤其当其需要支持多种换行算法时问题会更加严重,而

2016-09-03 08:49:49 692

原创 【设计模式】行为模式之State状态

State状态是一种对象行为型设计模式,目的是允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。如果一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为,就可以使用State模式;或者一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态,也可以使用State模式。通常,这个状态用一个或多个枚举常量表示,有多个操作包含这一相同的条件结构,State

2016-09-03 07:29:27 682

原创 【设计模式】行为模式之Observer观察者

Observer观察者是一种对象行为型设计模式,目的是定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。在进行系统设计时,通常会将一个系统分割成一系列相互协作的类,模块化,降低耦合性,但这有一个常见的副作用,需要维护相关对象间的一致性,我们不希望为了维持一致性而使各类紧密耦合,因为这样降低了它们的可重用性。Observer模式可以解决这一问题,这一模式

2016-09-02 07:15:12 782

原创 【设计模式】行为模式之备忘录Memento

备忘录Memento是一种对象行为型设计模式,目的是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。有时有必要记录一个对象的内部状态。为了允许用户取消不确定的操作或从错误中恢复过来,需要实现检查点和取消操作,而要实现这些机制,必须事先将状态信息保存在某处,这样才能将对象恢复到它们先前的状态。但是对象通常封装了其部分或者所有的状态信

2016-09-01 07:23:15 697

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除