离用户最近的强大程序——bash

今天是生信星球陪你的第47天

你想找辆共享单车,发现满街都是别家车,没有一辆你能骑。

你想学点生信,搜了“初学者教程”,满眼尽是高大上,没有一句能看懂。

终于你跨越茫茫宇宙,来到生信星球,发现了初学者的新大陆!

bash及其特性:

发展历史:

shell翻译为外壳,是用户连入计算机后进行交互式操作的程序

广义上shell包含两类:

GUI:Gnome、KDE、Xface

CLI:最早期bsh(近似B语言) --> csh(编程方式类似C语言), 大大促进Unix流行-->ksh(比csh更强大,但需要付费) --> linux流行后也需要一个shell, 出现了bash(born again shell),兼具了csh、ksh的各种特性,且更强大 --> 最新的zsh更丰富,但不是很流行

shell特点:

shell本身就是进程。可以新建多个shell,且互不冲突

进程:在每个进程看来,当前主机上只存在内核和当前进程。名字可以相同,但进程号各自唯一,Linux只识别进程号【就像全国重名的人很多,但身份证没有重复】

shell作为一个程序、一个外部命令(相对于内核来讲)。作为程序就能运行内部命令,因此还能继续创建子shell。因此很多时候,对子shell的设定,对父shell无效;反之亦如此。

shell可以交互打开。例如当前打开的是bash,可以在bash中敲ksh,在ksh中又可以敲zsh…

bash特性

命令行编辑:

光标跳转:

Ctrl+A:跳到命令行首

Ctrl+E:跳到命令行尾

Ctrl+U:删除光标至命令行首的内容

Ctrl+K:删除光标至命令行尾的内容

Ctrl+L:清屏

命令历史:history

删除:

-c : 清空全部历史

-d:删除指定位置【要删除指定位置向下n个,在-d后加n】

调用:

!n: 执行第n条命令

!-n:执行倒数第n条

!!:执行上一条

!string: 执行命令历史中最近一个以指定字符串开头的命令

: 引用上一个命令的最后一个参数【也可以用】

命令补全:

输入的前几个字符是在PATH中能唯一识别的,敲一次tab就能打出来;

如果不能,敲两次tab会列出所有和输入字符相关的命令

命令别名alias:

bash只是一个程序,当前所有的设置将在退出这一个程序后失效

若要长期使用alias,可将相应的alias命令存放到bash的初始化文件中

方法:alias 别名='原命令 -选项/参数'

撤销:unalias 别名

\别名:适用于别名和原命令一样,只是添加了一些参数,现在想使用原命令

命令替换:

把中的子命令替换为前面命令的执行结果,举两个例子就能懂

例如要打印当前路径:

echo "The current dir is $(pwd)"

例如要在当前目录下新建一个包含年月日时分秒的文件

touch ./file-$(date +%F-%H-%M-%S).txt

命令行展开

用命令行展开特性一步完成需要分开成多步完成的操作

使用将相应的参数括起来,括号中的参数以逗号分隔, 例如:

/tmp/ #生成/tmp/x和/tmp/y

mkdir #生成1-5为名的文件夹

mkdir -p / #在1-5的文件夹里再生成1-5的文件夹

文件名通配 globbing

快速匹配到你想要的文件

例如: 新建6个文件

目的:

1. 找出a开头的文件:

【*:匹配任意长度的任意字符】

2. 找出第二个字母是y的文件【?:任意单个字符】

【如果找第三个字母是y的,只需要】

3. 以字母开头,数字结尾,中间不限ls [a-zA-Z] * [0-9]

[ ]:匹配指定范围内的任意单个字符

:匹配指定范围之外的任意单个字符

非数字 非大小写字母

:大小写字母 =

:空白字符

:标点符号

:小写字母

:大写字母

:数字

:数字和大小写字母 =

练习:

创建如下文件:xi、jie6、u56m、my、m.r、t 94、8%u、567【注意:t 94文件中间有空格!】

显示以a或m开头的文件;

显示文件名中包含数字的文件;

显示以数字结尾且文件名中没有空白的文件;

显示文件名中包含非字母或数字的特殊符号文件

初学生信,很荣幸带你迈出第一步。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180626G1UEF400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券