Linux学习笔记(11)——bash

原创 2015年07月09日 14:18:53

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私房菜

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux学习笔记6

Linux学习笔记6Linux学习笔记6Linux下passwd和shadow文件内容详解 查看用户的uidgid扩展组 用户和用户组管理 执行历史命令最近的那条相似命令 切换账号 命令sudo 不允...
  • q547550831
  • q547550831
  • 2016年03月30日 22:23
  • 1776

bash: /etc/profile: line 11: `pathmunge () {

由于第一次操作linux,配置环境文件时,还是很不习惯用vi命令编辑,所以用的传输工具,拷下来在windows上编辑好,再上传上去 报错如下图: 经过仔细核查,语法是没有问题的,使用cat -...
  • tsh18523266651
  • tsh18523266651
  • 2017年11月24日 09:41
  • 68

linux学习笔记(11) - 初步认识bash shell

- 1、什么是shell 简单来说,我们通过shell将命令输入与核心沟通,让核心可以控制硬件正确无误的工作。 说的通俗一点,shell就相当于你在使用空调时需要的遥控器,你通过遥控器跟空...
  • m0_37664906
  • m0_37664906
  • 2017年08月31日 18:09
  • 88

Linux ps进程时间问题

ps -eo pid,cmd,etime,lstart 或者ps -eo "%p %c %t"
  • hayyon
  • hayyon
  • 2005年11月25日 11:10
  • 1830

Linux学习笔记 --Bash ScriptsII

#test条件判断# test命令可用于评估bash脚本中的表达式。它评估其参数所指定的表达式,如果表达式为true,返回零退出状态,如果表达式为false,则返回非零退出状态。test具有替代语...
  • HnSoi
  • HnSoi
  • 2017年06月20日 22:53
  • 152

Linux Bash 学习笔记(1)

1.几个基本概念:  1)文件:linux系统将一切(包括周边硬件)都看作文件。文件分成以下几种:a)一般文件,文件代码“-”;b)目录,--“d”;c)设备文件(字符文件--“c”,磁盘文件--“b...
  • ziying273
  • ziying273
  • 2011年06月21日 07:57
  • 181

Linux学习笔记——Bash常用快捷键

Bash常用快捷键 快捷键 描述 ctrl+a 把光标移动到命令行开头 ctrl+e 把光标移动到命令行尾 ctrl+l 清屏,相当于clear...
  • sirenxiaohuayuan
  • sirenxiaohuayuan
  • 2016年03月14日 23:56
  • 487

linux Bash 命令行操作(学习笔记)

linux BASH 命令行基本操作    Shell分为两种   CLI   GUI  操作系统的Shell      CLI:BASH      GUI:GNOME   BASH 提示符     ...
  • u012943597
  • u012943597
  • 2013年12月02日 20:45
  • 775

linux bash shell学习笔记

Bash 开头#!/bin/bash。echo 语句屏蔽 “ ” 若使用则 \” \” 。 即使文件没有执行权限,仍然可以通过bashhello.sh 或者 sh hello.sh...
  • u011538954
  • u011538954
  • 2014年06月17日 08:51
  • 1009

linux BASH编程学习笔记

1. Linux 脚本编写基础  1.1 语法基本介绍  1.1.1 开头  程序必须以下面的行开始(必须方在文件的第一行):  #!/bin/sh  符号#!用来告诉系...
  • today20080808
  • today20080808
  • 2014年11月17日 10:56
  • 361
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux学习笔记(11)——bash
举报原因:
原因补充:

(最多只允许输入30个字)