bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

Bash shell 的功能

bash是GNU计划中最重要的工具软件之一,目前也是Linux distributions的标准SHELL。bash主要兼容于SH,并且依据一些使用者需求,而加强版的shell版本。bash主要的特性有底下几个:

  • 命令历史(history):

只要在指令列按【上下键】就可以找到前/后一个输入的指令。而在很多distribution里头,默认的指令记忆功能可以达到1000个。
这么多的指令记录在家目录内的.bash_history,需要注意的是~/.bash_history记录的是前一次登入以前所执行过的指令,而至于这一次登入所执行的指令都被暂存在内存中,当你成功注销系统后,该指令记忆才会记录到.bash_history当中!
####### 命令语法格式:
history [-c] [-d OFFSET] [n]
history -anrw [FILENAME]
history -ps VALUE [VALUE…]
####### 命令的选项
-c: 清空命令历史;
-d offset(偏移量):删除指定命令历史,offset为history显示出来的命令数字
-r: 从文件读取命令历史至历史列表中;
-w:把历史列表中的命令追加至历史文件中;
history #:显示最近的#条命令;


  • 命令与档案补全功能([tab]按键的好处):
  • [Tab]接在一串指令的第一个字的后面,则为命令补全;
  • [Tab]接在一串指令的第二个字的后面,则为档案补齐;
    所以如果我想知道环境中可以执行的指令有几个,就直接在bash的提示字符后面连续按两次TAB。例如想知道以C开头的指令,就按下c【tab】【tab】。
    ————————————————————
  • 命令别名设定功能(alias):

假如我需要知道这个目录底下的所有档案(包含隐藏档)及所有的文件属性,那么需要输入ls -al这样的指令,经常输入同一个指令就会觉得非常麻烦,因此才会用到命令别名。可以直接用lm这个自定义的命令来取代上面的命令。lm=ls -al这个功能,可以在指令列输入alias就可以知道目前的命令别名有哪些了,也可以直接下达命令来设定别名:

alias lm='ls -al'
####### 语法
alias name='COMMAND'


  • 快捷键:

Ctrl+a:跳转至命令行行首
Ctrl+e:跳转至命令行行尾
Ctrl+u:删除行首至光标所在处之间的所有字符;
Ctrl+k:删除光标所在处至行尾的所有字符;
Ctrl+l:清屏,相当于clear
——————————————————————

  • 命令行展开:

以某些bash能够解释的符号来代替命令中的某些参数。
~:展开为用户的家目录;
例:切换至家目录
cd ~;pwd
/root
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径;
例:在/tmp/d目录下创建f1,f2,f3三个文件
touch /tmp/d/f{1,2,3}
bash


  • 命令的执行状态结果:
    bash的基础特性之状态值返回:在bash中使用一个特殊的变量$?来保存上一个命令的执行状态结果。
    0表示成功,
    1-255表示失败
    例如:

  • 变量

变量引用:


变量替换:把变量引用符号出现的位置替换为其指向的内存空间中的数据;

bash变量种类:

本地变量:作用域为当前shell进程;不包括其子进程;

环境变量:使用域为当前shell进程及其子进程;

局部变量:

作用域:生效范围,也即可引用到的范围;

本地变量:
变量赋值:NAME=VALUE

变量引用:



  • 工作控制、前景背景控制(job contril,foreground,background):

举例来说,我们在登陆 bash 后, 想要一边复制文件、一边进行数据搜寻、一边进行编译,还可以一边进行 vi 程序撰写! 当然我们可以重复登陆那六个文字介面的终端机环境中,不过,能不能在一个 bash 内达成? 当然可以啊!就是使用 job control 啦!

进行工作管理的行为中, 其实每个工作都是目前 bash 的子程序,亦即彼此之间是有相关性的。 我们无法以 job control 的方式由 tty1 的环境去管理 tty2 的 bash !

或许你会觉得很奇怪啊,既然我可以在六个终端介面登陆,那何必使用 job control 呢? 真是脱裤子放屁,多此一举啊!不要忘记了呢,我们可以在 /etc/security/limits.conf 里面配置使用者同时可以登陆的连线数,在这样的情况下,某些使用者可能仅能以一个连线来工作呢! 所以罗,你就得要了解一下这种工作管理的模式了!

由於假设我们只有一个终端介面,因此在可以出现提示字节让你操作的环境就称为前景 (foreground),至於其他工作就可以让你放入背景 (background) 去暂停或运行。要注意的是,放入背景的工作想要运行时, 他必须不能够与使用者互动。举例来说, vim 绝对不可能在背景里面运行 (running) 的!因为你没有输入数据他就不会跑啊! 而且放入背景的工作是不可以使用 [ctrl]+c 来终止的』!

总之,要进行 bash 的 job control 必须要注意到的限制是:

这些工作所触发的程序必须来自於你 shell 的子程序(只管理自己的 bash);
前景:你可以控制与下达命令的这个环境称为前景的工作 (foreground);
背景:可以自行运行的工作,你无法使用 [ctrl]+c 终止他,可使用 bg/fg 呼叫该工作;
背景中『运行』的程序不能等待 terminal/shell 的输入(input)


  • 程序化脚本(shell scripts):
shell脚本执行方式

1.直接当做命令下达:该档案必须有rx权限,然后必须可以找到该命令,即要么通过绝对路径或相对路径,或者利用环境变量PATH
2.以bash程序来执行:通过bash shell.sh或许sh shell.sh来执行(shell.sh是我们写好的脚本)。


  • 通配符:
  • brace expansion (花括号扩展)
  • tilde expansion (波浪号扩展)
  • parameter and variable expansion (参数和变量扩展)
  • arithmetic expansion (算术扩展)
  • command substitution (命令置换)
  • word splitting (单词分割)
  • filename expansion (文件名扩展)
  • process substitution(进程替换)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容