码迷,mamicode.com
首页 > 系统相关 > 详细

linux学习之路之bash及其特性

时间:2014-06-10 23:17:27      阅读:512      评论:0      收藏:0      [点我收藏+]

标签:bash   特性   其命令   

我们知道当我们用鼠标点击,或输入一个命令,系统就玩帮我们完成一个任务,那么当我们点击一个链接时,系统由是如何知道要去完成相应的操作呢?这是因为通过shell来完成的。

那么什么是shell呢?

shell就是用户和操作系统之间的一个接口,通过这个接口shell接受来自用户的命令,并调用相应的应用程序来呼叫kernel来处理相应的工作。


在linux系统上面存放着多种类型的shell,这些shell存放在/etc/shells文件里,默认RedHat使用的shell为bash


下面介绍一些bash的特型及相应的命令

bash具有以下特性

1、命令历史和命令补全

2、可以使用管道和重定向

3、可以使用命令别名

4、支持命令行编辑

5、支持命令行展开

6、支持文件名通配

7、支持变量

8、支持shell编程


命令历史

什么是目录历史?

命令历史就是譬如使用的一些命令如ls、cd、pwd等命令存放在内存缓冲区当中,这些命令在系统关机后会自动的写入到~/.bash_history当中。

使用命令历史可以很方便的进行命令操作

语法格式 history [option]

不加选项时。列出命令历史中使用过的命令

-c:清空整个命令历史

-d num:***指定位置的命令历史

-w :将缓冲区中的命令历史写入到~/.bash_history当中


命令历史的使用技巧

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

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

!!:执行上一次命令

!string:执行命令历史中最近一次以string开头的命令

COMMAND !$:引用前一次命令的最后一个参数

COMMAND Esc,.:也可以引用前一次命令的最后一个参数

COMMAND Alt+.:引用前一次命令的最后一个参数


那是不是缓冲区中可以无限的存命令历史了?

当然不是,默认情况下,系统只能存取一定数量的命令历史。

使用echo $HISTSIZE 可以显示系统默认存放的命令历史的条数



命令补全机制:该命令是在PATH这个环境变量下搜索出来的

路径补全机制:是在打头路径下查找的


命令别名alias

当一个命令过长或经常使用的话,可以通过定义别名的方法来操作

语法格式:alias  COMMALIAS=COMMAND OPTION

注意:在shell中的定义的别名仅在当前shell有效,shell的有效范围为当前shell进程

unalias COMMALIAS :撤销别名

\COMMAND:不使用别名,而是使用原命令本身


命令替换

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

$()=`` 

在某些命令当中,如果出现命令替换符,那么kernel会首先执行子命令,然后在执行外部命令


bash支持的三种引号

反引号``:用于命令替换

双引号"":弱引用,可以实现变量替换

单引号‘‘:强引号,原样输出


光标跳转
Ctrl+a:跳到行首
Ctrl+e:跳到行尾
Ctrl+u:***光标至命令行首的内容
Ctrl+k:***光标至命令行尾的内容
Ctrl+l:清屏


文件名通配

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

?:匹配任意单个字符(不含空格符)

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

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

[:space:]:所有空白字符

[:punct:]:所有标点符号

[:lower:]:所有小写字母

[:upper:]:所有大写字母

[:alpha:]:大小写字母

[:digit:]:所有数字

[:alnum:]:数字和大小写字母



文件的权限

文件的权限分别对应着3类用户,文件的所有者,文件的所有者属组和其他用户

每一类权限都是有按照rwx这个顺序组成的,其中-表示该为的权限为空

例如(某个位的权限如果存在则为1,空则为0),那么:

000 ---:权限为空

001 --x:有执行权限

010 -w-:有些权限

011 -wx:有写和执行权限

100 r--:有读权限

101 r-x:有读和执行的权限

110 rw-:有读写的权限

111 rwx:有读写和执行的权限


那么对于文件和目录,权限的含义又是什么呢?

对于文件而言

r:具有可读的权限,例如可以使用cat等命令来查看文件内容

w:具有写的权限,用户可以编辑和***该文件

x;具有执行的权限,可以在命令提示符下提交命令给kernel执行


对于目录而言

r:可以对此目录使用ls等命令来查看该目录下的文件

w:可以在此目录下创建文件

x:可以使用cd命令来切换进入此目录,也可以使用ls -l命令来查看此目录下的文件的详细信息


用户管理

我们知道linux是一个多用户多任务的系统,不同的用户具有不同的权限,且彼此之间的操作互不影响。

那么系统中的有哪些类型的用户了?

用户的类型

    管理员用户:UID=0

    普通用户:UID=[1-65535]

        系统用户:UID=[1-499],系统用户的账号是不可登入的

        一般用户:UID=500+



用户组类型

    基本组:用户的默认组

    私有组:创建用户时,如果没有知道所属的组,则系统会自动创建一个与用户名相同的组名

    额外组,附加组:默认组以外的其他的组


那么这些用户和组都存放在那里呢?

/etc/passwd:该文件是存放用户的相关的信息的

bubuko.com,布布扣

每一行用冒号:隔开,共有7个字段

第一个字段:显示的是用户名

第二个字段:为用户的密码占位符,实际密码在/etc/shadow中

第三个字段:为用户的UID

第四个字段:为用户所属组的GID

第五个字段:注释信息

第六个字段:用户的家目录

第七个字段:用户默认的shell


用户所属组的相关信息存放在/etc/group中

bubuko.com,布布扣

每一行用冒号:隔开,关共有4个字段

第一字段:为用户所属的组

第二个字段:用户所属组的密码,实际密码在/etc/gshadow中,这里只是占位符

第三个字段为用户所属组的GID

第四个字:为该组支持的用户


再来谈一下用户的密码存放在那个文件中?

/etc/shadow

bubuko.com,布布扣

每一行用冒号隔开,共有9个字段

第一个字段:为用户名

第二个字段:加密后的密码(如果显示为!!表示该用户被锁定了,不可登入)

第三个子段:从1970年到最近一次密码改变所经过的天数

第四个字段:为密码最短使用期限

第五个字段:为密码最长使用期限

第六个字段:离密码过期之前的提醒时间

第七个字段:为密码宽限天数(可以登入,不过登入必须先改密码)

第八个字段:为用户禁用的天数(过了这个天数用户失效,不管密码过期没)

第九个字段:保留


想一想,为什么当我们使用useradd命令创建用户时,这个用户会显示那么多的信息?



本文出自 “linux学习之路” 博客,谢绝转载!

linux学习之路之bash及其特性,布布扣,bubuko.com

linux学习之路之bash及其特性

标签:bash   特性   其命令   

原文地址:http://xslwahaha.blog.51cto.com/4738972/1423758

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!