Linux学习笔记(11)——bash

1)  bash简介

a)  bashshell的内建指令:type name

 

b)  反斜杠(\)跳脱紧接着的字符:指令太长时可以使用[\Enter]来换行继续在>之后输入

2) 变量

a)  读取:echo $变量名/echo ${变量名}

b)  变量设定规则

c)  变量与变量内容用【=】等号连接,但是两边不能接空格字符。

d)  变量内容若有空格符,可以用双引号【“】或者单引号【‘】将变量内容结合起来。但双引号的特殊字符,如$,可以保有原有特性,而单引号只表示一般纯文本。

e)  可用跳脱字符[\],将特殊符号变成一般字符。

f)  在一串指令中,还需要借由其它的指令提供的信息,可以使用反单引号[`指令`]或[$(指令)]。

g)  若该变量为扩增变量内容时,可以使用$变量或者${变量}来累加。如:PATH=”$PATH”:/home/bin

h)  若该变量需要在其他子程序(再开启一个bash)中执行,需要用export来使变量变成环境变量。如:export PATH

i)  取消变量:unset 变量名称

j)  简化工作目录:#work="/usr/local/hadoop2.5";#cd$work

k)  观察环境变量:#env   environment的简称

l)  观察所有变量:#set

m)  键盘输入变量内容:#read [-pt] 变量名

n)  变量声明:#declare/typeset [-aixr] 变量名

 

o)  数组变量:#var[index]=content

p)  文件限制:ulimit

3) 变量删除、取代、替换

a)  总体说明

b)  变量删除

c)  变量取代

d)  变量测试

#new_var=${old_var-content}

若old_var为空,则new_var为content

 

4) 命令别名

#alias   查看系统所有指令的别名

#alias alias_name=’指令’   设置指令别名

#unalias alias_name   取消指令别名

#history  查询曾经执行过得命令

 

路径与指令搜寻顺序:先alias再builtin再由$PATH来搜寻,可以使用【type –a –指令名】来查看具体路径。

5) bash配置文件设定

a)  注销bash,前期设定的变量都会失效,除非写入bash配置文件。

b)  loginshell与 non-loginshell环境,进入bash需要输入账号密码时为loginshell,否则为non-login shell。

c)  loginshell只会读取以下两个配置文件 :

d)  /etc/profile:系统整体设定

e)  ~/.bash_profile或~/.bash_login或~/.profile:个人设定。其实 bash 的 login shell 设定只会读取上面三个档案的其中一个, 而读取的顺序则是依照上面的顺序。

f)  source:读入环境配置文件的指令,无需注销即可生效

#source 变量文件

g)  ~/.bashrc(non-login shell 会读)

h)  ~/.bash_history:登陆bash之后,首先读取该档案,历史命令

i)  ~/.bash_logout:注销 bash 后,系统再帮我做完什么后才离开

6) 终端机的环境设定,stty,set

a)  #stty–a  列出所有stty参数,setting tty的简写

b)  [#stty按键内容 按键组合]  设定按键功能

#stty erase ^h    #删除功能按键组合变为ctrl + h

c)  bash中通配符

d)  bash中特殊符号

7) 数据流重导向(redirect)

a)  standardoutput 与 standarderror output

stdout:指令执行所回传的正确的讯息

stderr:指令执行失败后,所回传的错误讯息

数据流重导向可以将stdout和stderr分别传送到其他的档案或者装置中去。所使用的特殊字符为:

       

b)  重导向之[>]与[>>]

该档案若不存在,则系统自动建立;若案存在,系统会将之清空,然后再写入;及若以[>]输出到一个已经存在的档案中,该档案会被覆盖掉。

如果需要累加而不覆盖的话,只需要把[>]替换成[>>]即可

c)  /dev/null垃圾桶黑洞装置

d)  正确与错误的数据都写到同一档案

e)  重导向之[<]与[<<]

[<]:将原本需要键盘输入的数据,改由档案内容来取代

[<<]:结束的输入字符,相当于ctrl+d

f)  命令执行的判断依据:

g)  [;]分号,不考虑指令相关性的连续指令下达

h)  若前一个指令的结果正确,Linux底下会回传一个$?=0的值

记忆的时候,可以记为与、或的关系,认为最终的结果为TRUE

i)  顺序:command1 && command2 || command3

j)  一般情况下,command2和command3放置可以成功执行的指令。

8) 管线命令(pipe)

a)  在每个管线后面接的数据必定是『指令』,而且这个指令必须要能够接受 standard input 的数据才行,这样的指令才可以称为【管线命令】

b)  管线命令仅会处理stdout,对于stderr会忽略。

c)  管线命令必须要能够接受前一个指令的数据成为stdin继续处理才行

d)  撷取命令:cut,grep

#echo $PATH | cut –d ‘:’ –f3,5

# export | cut -c 12-     

cut的主要用途在于将同一行里面的数据进行分解,取出想要的。

e)  grep:分析行信息

f)  排序命令sort,wc,uniq

 

# cat /etc/passwd | wc –l     查看系统有多少账户

g)  双向重导向tee

tee 会同时将数据流分送到档案与屏幕(screen),而输出到屏幕的,其实就是stdout,可以让下个指令继续处理。

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

a)  tr:删除或者替换讯息

 

b)  col:将【Tab】按键取代成空格键

c)  join:两个档案中有相同数据的那一行,才将他加在一起

  

d)  paste:将两行贴在一起,且中间以tab键隔开

e)  expand:将tab按键转成空格键、

 

f)  split:档案命令

 

g)  xargs:参数代换

xargs 可以读入 stdin 的数据,并以空格符或断行字符作为分辨,将 stdin 的资料分割成为 arguments。

 

使用xargs的原因,很多指令其实并不支持管线命令,因此我们可以透过 xargs 来提供该指令引用standard input之用。

10)     总结

a)  由于核心在内存中是受保护的区块,因此我们必须要透过『 Shell 』将我们输入的指令与Kernel 沟通,好让Kernel 可以控制硬件来正确无误的工作。

b)  系统合法的shell均写在/etc/shells档案中

c)  用户默认登陆的 shell 记录于 /etc/passwd 的最后一个字段;

d)  locale:用于查看语言资料。

e)  bash的配置文件主要分为login shell 与 non-login shell。loginshell 主要读取 /etc/profile 与~/.bash_profile, non-login shell 则仅读取 ~/.bashrc

f)  管线命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理才行。



------以上整理自鸟哥的Linux私房菜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值