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

Linux Bash shell 使用

2016-11-17 15:56 127 查看
Bash shell 主要的功能有:

变量
命令别名设定
历史命令
万用字符与特殊字符
数据流重导向
管线命令
Bash shell 还有命令与档案补全、工作控制、前景背景控制和 Shell scripts 等功能。
Bash shell 内建命令 type

用法:type [ 参数 ] command

参数:-t :将 command 以下面形式显示其意思:

    -file :表示外部指令;

    -alias :表示命令别名;

    -builtin :表示 bash 内建指令。

使用 type 可以知道每个指令是否是 bash 的内建指令。同时它还可以用作类似 which 指令搜寻的功能。

变量

变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据, 例如:我设定了path 就是/home/gf,当以当你读取path 这个变量的时候,系统自然就会知道是 /hom/gf 。 当你需要执行一些指令的时候,系统就会依照该 PATH 的设定来进行指令的搜寻!而这个 PATH 就是所谓的变量了!所以就有一些所谓的环境变量需要来读入系统中了!这些环境变量例如 PATH、HOME、MAIL、SHELL
等等,都是很重要的, 为了区别与自订变量的不同,环境变量通常以大写字符来表示。

变量的一般用法:



变量简单的用途:简化路径名称

简单使用的例子:



变量设定的规则具体可以参考http://cn.linux.vbird.org/linux_basic/0320bash_2.php

变量设定中,单引号和双引号的区别:双引号可以保留变量内容,而单引号内只能是一般字符。

变量键盘读取、声明 read,declare

read

read 指令读取来自键盘输入的变量,还可以与使用者进行交互。

用法:read [ 参数 ] 变量

参数:-p  : 后面接提示字符

    -t  :后面接等待的秒数 



declare 

宣告变量的属性,如果不接任何参数,则会显示所有的变量名称与其内容。

用法:declare [ 参数 ] 变量

参数:-a  :声明变量为数组

    -i  :声明变量为整型数

    -x  :声明为环境变量

    -r  :声明为只读,也不能 unset



命令别名设定 alias 

alias  :设定命令别名

unalias  :取消命令别名

命令别名设定用指令 alias 来完成,它可以帮助一些常用指令的操作,还可以取代既有的指令,例如 rm、mv 指令均提供确认是否执行动作的参数 -i。如果 alias 后面不接任何参数,则显示目前所有的命令别名。



历史命令 history



万用字符与特殊字符



简单的例子:



数据流重导向
数据流重导向是指,将某个指令执行之后应该要出现在屏幕上的数据,传输到其他地方,档案或者装置。指令执行过程的数据传输情况:



执行一个指令的时候,这个指令可能会由档案读入资料,经过处理之后,再将数据输出到屏幕上。 标准输出与标准错误输出,都是输出到屏幕上面来的。要将标准输出和标准错误传送到其他地方,而不是屏幕上,则需要下面的传送指令:

标准输入:代码为 0 ,使用 < 或 << 

标准输出:代码为 1 ,使用 > 或 >>

标准错误:代码为 2 ,使用 2> 或 2>>



输出重导向常用的时候:

当屏幕输出的信息很重要,需要保存的时候;
一些执行命令,可能产生错误讯息,所以以 2> /dev/null 将其丢掉时;
错误讯息与正确讯息需要分别输出时。
背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
命令执行的判断依据:&&,||



变量 $? 表示指令执行结果的回执,如果没有错误讯息,则返回 $?=0 ,如果有错误,就不是 0 。



管线命令

bash 命令执行的时候有输出的数据会出现。 如果这些数据必需要经过几道手续之后才能得到我们所想要的格式,这就牵涉到管线命令的问题(pipe),管线命令使用的是 | 这个界定符号。另外,管理命令与连续下达命令是不一样的。

管线命令中,后一个指令的输入是前一个指令的输出。管线命令 | 仅能处理经由前面一个指令传来的正确信息,也就是标准输出,对于标准错误并没有直接处理的能力。那么整体的管线命令可以使用下图表示之:



撷取命令 cut,grep

将一段数据经过分析后,取出我们所想要的。 经由分析关键词,取得我们所想要的那一行。 要注意的是,撷取命令通常是针对一行一行来分析的。

cut 

将一段讯息的某一段给他切出来, 处理的讯息是以行为单位。

用法:cut -d ‘ 分隔字符 ' -f fields

    cut -c 字符区间

参数:-d  :后面接分隔字符,与 -f 一起使用

    -f  :根据 分隔字符分隔成数段,取出第 fields 段

    -c  :以字符单位取出固定字符区间

grep 

分析一行信息,若是有所需要的信息,则显示该行。

用法:grep [ 参数 ]‘搜寻字符串’ 档案

参数:





排序命令 sort,wc,uniq
sort
用法:sort [ 参数 ] 档案或输入
参数:



uniq
用法:uniq [ 参数 ] 
参数:-i  :忽略大小写
    -c  :计数
wc
用法:wc [ 参数 ]
参数:-l  :仅列出行
    -w  :仅列出多少字
    -m  :多少字符
简单的使用:



双向重导向 tee
双向重导向可以同时将数据流分送到档案和屏幕。tee 工作流程如下:





分割命令 split
split 指令可以将一个大档案,依据档案大小或行数来分割,就可以将大档案分割成为小档案。

用法:split [ 参数 ] file PREFIX
参数:-b  :后面接分割成的档案大小,单位可为 b,k,m等
    -l  :以行数进行分割

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息