您的位置:首页 > 运维架构 > Shell

Linux运维+系统服务搭建(一)bash命令及其特性

2016-09-25 19:43 253 查看
shell:外壳程序

GUI:Gnome,RDE,Xfce

GLI:sh,,csh(接近c语言),ksh(商业化)—->bash最强大功能遵循开源,zsh也比较强大但没有流行

当前所有系统默认都是bash可以支持:

程序:唯一

进程:程序的副本,程序的实例(带有内核管理的生命周期)

进程:每个进程不知道,当前主机上只存在内核和当前进程,不知道其他进程的存在。

用户工作环境:

bash:#管理员

$普通用户

shell存在子shell,shell,子shell存在包含关系

我们可以连续bash三次通过pstree查看下bash命令最后通过exit退出

为什么要说这个包含关系:

那么刚才说的shell是个进程,每个进程不知道,当前主机上只存在内核和当前进程,不知道其他进程的存在。

所以如果存在包含关系情况我们需要做的是处理权限的话,那么不同父子的进程权限是互不影响的。

那么还有个注意点sh特性的话,父类和子类可能不一样那么bash下面子类可以是csh也可以是ksh

bash特性:

1、命令历史,命令补全

2、管道,重定向

3、命令别名

4、命令行编辑

5、命令行展开

6、文件名通配

7、变量

8、编程—-以后就是所谓的脚本

命令行编辑:

命令光标跳转:ctrl+a:跳到命令行首

ctrl+e:跳到命令行尾

ctrl+d删除内容光标位置

ctrl+u删除光标至行首内容

ctrl+k删除光标至行尾的内容

ctrl+l清屏====clear

命令历史:

bash自动记录过去执行的内容,会将其保存到内核的内存区域

history查看我使用过得所有命令历史

不想让别人看见某些记录

可以通过history删除

清空整个命令历史:history -c

删除指定行内的数据;history -d 200(指行数)

删除从offset开始删除多少个:history -d offset

用户正常退出的话即使删除了那么我们可以通过.bash_history

在家目录下面存储

将内核缓存区内容保存到历史文件: -w

环境变量:

PATH:命令搜索路径

HISTSISZE:默认历史大小1000条

命令历史第n条执行:!n

命令历史的倒数第n条命令执行:!-n

执行上个命令:!!

执行命令历史搜索根据条件执行历史命令:!man该命令执行时候会以最近距离匹配的命令进行执行。

!$:引用前一个命令的最后一个参数。nano  !$打开上次文件,因为最后的一个参数是文件


ESC,.

Alt+.

以上是三个命令都可以

补全命令:

tab键第一次可以补全根据输入内容匹配,如果补不全敲击两次

规则:Path路径补全命令

命令别名:

定义的别名只在当前进程的生命周期中有效,关闭后下次需要重新输入

alias

例如dos命令cls清屏

那么我们linux命令也想要用cls那么我们可以给clear起别名

alias cls=clear

假如clear有空格,那么我们需要将其用单引号括起来

bash 也有配置文件,那么我们需要让所有用户都可以实现通过别名进行操作那么我们可以在配置文件修改,具体修改位置在编程里面写。

那么我们不想要别名了该如何撤销,我们可以通过

ualias cls那么我们的命令别名就被取消了

\CMD假如命令别名和命令相同需要加上反斜线

命令替换$(command),反引号ESC下面的那个·command·:

把命令中某个子命令替换为其执行结果的过程

echo  ”The current  directory  /root“
echo   ”The current  directory  is $(pwd)“可替换为
echo   ”The current  directory  is · pwd ·“


我们得到的结果变了我们将其结果改变了

如何获取时间,date +%F-%H-%M-%S

那么我们得到结果如同

2016-09-24-17-54-35

那么我们要在当前目录将其创建为file-2016-09-24-17-54-35.txt文件呢

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

那么这里说明下引号的使用:··:命令替换

“”弱引用,可以实现变量替换

‘’:强引用,不完成变量替换

弱引用和强引用放在变量的时候说明.

文件名通配(globbing):

通过某个符号替换某些文件名

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

?:匹配一个任意字符

【】:匹配指定范围内的任意单个字符

【^】:匹配范围内的任意单个字符

【:punct:】所有的标点符号

【:space:】所有的空白字符

【:lower:】小写字母

【:upper:】大写字母

【:alpha:】大小写字母

【:digit:】数字

【:alnum:】数字和大小写字母

我们可以根据man 7 glob查看所有的上述命令

文件名如何通配:

创建多个文件touch abc wer 123 ad34 a123

以一个字母开头,中间有空格后面结尾是跟着数字的文件
ls  【a-zA-Z】*【【:space:】】*【0-9】

或者写成:【【:alpha:】】*【【:space:】】*【【:digit:】】


以一个字母开头,

以a开头后面跟任意字符的文件 ls a*—-查看所有
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: