linux基础六 bash

1) type

查看指令是外部指令还是内建在bash中的指令

type [-tpa] 指令

-t :当加入 -t 参数时,type 会将 name 以底下这些字眼显示出他的意义: file :表示为外部指令;alias :表示该指令为命令别名所设定的名称;builtin :表示该指令为 bash 内建的指令功能;

-p :如果后面接的 name 为外部指令时,才会显示完整文件名;
-a :会由 PATH 变量定义的路径中,将所有含 name 的指令都列出来,包含 alias

2)查看环境变量

env 

3)查看所有变量(环境变量和自定义变量)

set

环境变量(可以)和自定义变量(不能)区别,是否能被子程序引用;

export

子程序仅会继承父程序的环境变量, 子程序不会继 承父程序的自定义变量,export将自定义变量转化为环境变量,供子程序使用

 

shell编程

1)变量设定规则

  1. 变量与变量值以一个等号『=』来连结  如:myname=VBird

  2. 等号两边不能直接接空格符,如下所示为错误: 『myname = VBird』或『myname=VBird Tsai』

  3. 变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误: 『2myname=VBird』

  4. 变量值若有空格符可使用双引号『"』或单引号『'』将变量值结合起来,但双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示:『var="lang is $LANG"』则『echo $var』可得『lang is en_US』 单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』

  5. 转义字符 \

  6. 在一串指令中,还需要藉由其他的指令提供的信息,可以使用反单引号『`指令`』或『$(指令)』,如『version=$(uname -r)』再『echo $version』可得『2.6.18-128.el5』

  7. 若该变量为扩增变量内容时,则可用"$变量名称"或${变量}累加内容,如下所示: 『PATH="$PATH":/home/bin』

  8. 若该变量需要在其他子程序执行,则需要以export来使变量变成环境发量: 『export PATH』

  9. 通常大写字符为系统默认变量,自行设定变量可以使用小写字符

  10. 取消变量的方法 unset

几个比较重要的变量

1)PS1

提示字符

2)$

echo $$  输出PID

3) ?

上个执行指令的回传值

执行指令时,这些指令都会回传一个执行后的代码,一般来说,成功执行该指令,回传0。执行过程中发生错误,就会回传错误代码

4)locale 影响显示结果的语系变量

5)变量键盘读取、数组、声明

read [-pt] variable

-p :后面可以接提示字符!
-t :后面可以接等待的『秒数!』这个比较有趣~不会一直等待使用者啦!

变量声明

declare [-aixr] variable

-a :将后面名为 variable 的变量定义成为数组 (array) 类型
-i :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x :用法与 export 一样,就是将后面的variable 变成环境发量;
-r :将变量设定成为 readonly 类型,该变量不可被更改内容,也不能 unset

declare +x 是对declare -x的逆操作

myname[1]=a

myname[2]=b

echo "${myname[1]}"

注:默认情况下,bash变量类型默认是字符串,bash环境中的数值运算,预设仅能到达整型形态

变量值【内容】的删除与替换

变量赋值

myname=a

变量myname存在,则将myname的值赋给myname1,变量myname不存在则将字符串b赋值给myname1

myname1=${myname-b}

变量myname存在并且不为空,则将myname的值赋给myname1,变量myname不存在则将字符串b赋值给myname1

myname1=${myname:-b}

 

文件系统与程序的限制

ulimit [-SHacdfltu] [配额]

 

历史命令

history

!number

执行第number条指令

!command

由最近的指令向前搜寻『指令串开头为 command』的那个指令, 并执行;

!!

执行上一个指令

 

指令的执行顺序

 

 

login与non-login shell

读取的配置文件数据不一样

login shell只读取一下两个配置文件

1. /etc/profile:这是系统整体的设定,最好不要修改这个档案;

2. ~/.bash_profile或~/.bash_login或~/.profile:(按顺序读取,前边的存在就不会读取后边的了)属于使用者个人设定,要改自己的数据,就写入这里!

 

source :读入环境配置文件的指令

由于/etc/profile 与 ~/.bash_profile都是在取得login shell的时候才会读取的配置文件,所以, 如果 你将自己的偏好设置写入上述的档案后,通常都是得注销再登入后,该设置才会生效。那么,能不能直 接读取配置文件而不注销登入呢? 可以的!那就得要用到 source 这个指令了!

 

non-login shell

当取得non-login shell的时候 该bash配置文件仅会读取 ~/.bashrc

 

bash中的通配符与特殊符号

数据流重导向

垃圾桶黑洞与特殊写法

如果不想显示或存储输出,可以将数据流重导向到/dev/null装置

ls -l /etc/xx 2> /dev/null

将标准输出和标准错误输出都写入output.txt

ls -l / output.txt 2>&1

命令执行的判断依据

; , &&, ||

一次执行多个命令的两种方式,一:写一个脚本,执行多个指令。二:命令行下,分号分割多个执行,例如: sync; sync; shutdown -h now。

管线命令

摘取命令

cut、grep

例如:

echo $PATH | cut -d ':' -f 5

echo $PATH | cut -d ':' -f 2,5

echo $PATH | cut -c 12-

echo $PATH | cut -c 12-20

cut 主要的用途在于将『同一行里面的数据进行分解』

cut 是将一行讯息当中,取出某部分我们想要的,而 grep 则是分析一行讯息, 若当中有我们所 需要的信息,就将该行拿出来

排序命令

sort

统计文档中行数、字数、字符数

wc 

双向重定向

tee

tee 会同时将数据流分送到档案去不屏幕

字符转换命令: tr, col, join, paste, expand

可以用来删除一段讯息当中的文字,获取是进行文字讯息的替换

col

join

paste

expand

分割命令

split

参数替换

xargs

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值