BASH基础特性

对BASH做一下总结

一、命令历史特性: history

shell进程会其会话中保存此前用户提交执行过的命令

history是shell的内置命令

1. 命令语法格式:

history [-c] [-d OFFSET] [n]

history -anrw [FILENAME]

history -ps VALUE [VALUE...]

-c: 清空命令历史;

-d offset(偏移量):删除指定命令历史,offset为history显示出来的命令数字

-r: 从文件读取命令历史至历史列表中;

-w:把历史列表中的命令追加至历史文件中;

history #:显示最近的#条命令;

2. 相关环境参数,实现定制环境变量的功能

HISTSIZE:shell进程可保留的命令历史的条数;

HISTFILE:持久保存命令历史的文件,默认为.bash_history

HISTFILESIZE:命令历史文件的存储历史命令数量条数;

HISTCONTROL:控制命令历史记录的方式

ignoredups:忽略重复的命令;

ignorespace:忽略以空白字符开头的命令;

ignoreboth:以上两者同时生效;

3. 调用命令历史列表中的命令

!#:再一次执行历史列表中的第#条命令;

!-#:执行倒数第几条命令;

!!:再一次执行上一条命令;

!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;

注:命令的重复执行有时候需要依赖于幂等性;

4. 调用上一条命令的最后一个参数:

快捷键:ESC, .

ALT+.  远程终端可能不支持该方法

字符串:!$

二、BASH补全特性

1. 命令查找和补全机制:

(1) 查找内部命令;

(2) 根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;

(3) 给定开头的部分字符串如果能惟一标识某命令程序文件,则直接补全;

不能惟一标识某命令程序文件,再击tab键一次,会给出列表;

2.路径补全

在给定起始路径下,以对应路径下的打头字串逐一匹配起始路径下每个文件:

TAB按键;

如果能惟一标识,则直接补全;

否则,再一次tab,给出列表;

3.命令行展开

~:自动展开为用户的家目录,或指定的用户的家目录;

{}:花括号展开。可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;

三、命令执行状态结果特性

1.bash通过状态返回值来输出此结果:

成功:0

失败:1-255

注意:命令正常执行时,有的还会有命令返回值:

根据命令及其功能不同,结果各不相同;

2.状态返回值保存于bash的特殊变量:$?

3.引用命令的执行结果:$(COMMAND)    或  `COMMAND`

四、命令行编辑特性(快捷键)

Ctrl+a:跳转至命令行行首

Ctrl+e:跳转至命令行行尾

Ctrl+u:删除行首至光标所在处之间的所有字符;

Ctrl+k:删除光标所在处至行尾的所有字符;

Ctrl+l:清屏,相当于clear

五、文件名通配(globbing)特性

1.globbing:整体文件名匹配,而非匹配部分文件名

[[email protected] ~]# whatis  glob

glob          (3)  - find pathnames matching a pattern, free memory from glob

glob          (3p)  - generate pathnames matching a pattern

glob          (7)  - Globbing pathnames

glob.h [glob]      (0p)  - pathname pattern-matching types

[[email protected] ~]# man 7 glob

2. 匹配模式:元字符(一组代替一个或多个字符的字符)

元字符:具有特殊意义的专用字符,可以用来规定其前导字符在目标对象的出现模式

*:匹配任意长度的任意字符,包括空字符

?:匹配任意单个字符

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

例如[abc]、[a-z]、[A-Z]、[a-zA-Z]、[A-Z]、[0-9]、[a-z0-9]

特殊格式:

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

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

[[:alpha:]]:所有字母

[[:digit:]]:所有数字

[[:alnum:]]:所有的字母和数字

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

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

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

例如:[^[:upper:]]、[^0-9]、[^[:alnum:]]

六、IO重定向及管道

1. IO重定向:一切皆文件,包括设备都可以作为IO重定向文件

(1) 程序IO设备

可用于输入的设备:文件。键盘设备、文件系统上的常规文件、网卡等;

可用于输出的设备:文件。显示器、文件系统上的常规文件、网卡等;

(2) 数据流种类:

输入的数据流;<-- 标准输入(stdin),键盘;

输出的数据流:--> 标准输出(stdout),显示器;

错误输出流:  --> 错误输出(stderr),显示器;

(3) 文件描述符, fd : file  descriptor

标准输入:0

标准输出:1

错误输出:2

(4) 用法说明

1) 覆盖输出重定向:>

2) 追加输出重定向:>>

3) 错误输出重定向:2>(错误覆盖)  2>>(错误追加)

4) 合并正常输出流和错误输出流:

方法一:&>, &>>

方法二:COMMAND > /path/to/somefile 2>&1

COMMAND >> /path/to/somefile 2>&1

5) 输入重定向:<

6) Here Document:<<

cat << EOF

cat > /PATH/TO/SOMEFILE << EOF

7)  特殊设备:/dev/null    数据黑洞

# set 命令:

[[email protected] ~]# type set

set is a shell builtin

[[email protected] ~]# help set

set: set  [--abefhkmnptuvxBCHP]  [-o option-name]  [arg ...]

Set or unset values of shell options and positional parameters.

Change the value of shell attributes and positional parameters, or display the names and values of shell variables.

# set -C     禁止覆盖输出重定向至已存在的文件;

此时可使用强制覆盖输出:>|

# set +C    关闭上述特性

2.管道:组合小程序完成重要任务

连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流

格式:COMMAND1 | COMMAND2 | COMMAND3 | …

七、命令hash特性

1.hash命令定义:缓存此前命令的查找结果(命令位置,不包括内置命令)

hash缓存---->发起新的额请求

2.命令的缓存结果和命令的参数无关

3.hash不是外部命令,所以记录不了自己的位置

确定并记住每一个给定NAME名称的命令的完整路径

hash:查看hash

-d :忘记每一个已经记住的命令位置,删除指明的命令

不用给定完整路径,只要给定命令名称即可

-r :忘记所有的位置

注意:当把命令程序位置改变之后,再次调用该命令程序,系统会先调用现在hash缓存中前一次已经记录下来的命令位置,此时出错。需要清空hash -r

缓存此命令此前的查找结果:key-value键值格式数据

4.bash查询命令顺序

命令行模式直接输入、history命令(记录过去所输入过的命令)调用输入

---->hash缓存命令路径(加速、一切皆缓存思想)

---->若未找到,从左向右遍历PATH环境变量所定义的各路径下文件

八、多命令执行控制

1.并行控制:~]# COMMAND1; COMMAND2; COMMAND3; …

执行次序:从左到右,

命令间没有逻辑关系,完成一个之后再进行下一个

2.逻辑控制执行:与&& 、或||、非!

==========状态结果做逻辑运算,给多个命令之间建立执行时的逻辑关系==========

==========控制语句的执行的逻辑能减少语句的运行==========

(1)逻辑运算

1)运算数:真(true, yes, on, 1)

假(false, no, off, 0)

2)与:只有两者为真结果才为真,否则都为假

1 && 1 = 1

1 && 0 = 0

0 && 1 = 0

0 && 0 = 0

3)或:一个为真就为真

1 || 1 = 1

1 || 0 = 1

0 || 1 = 1

0 || 0 = 0

4)非:取反

! 1 = 0

! 0 = 1

(2)短路法则:

1)~]# COMMAND1 && COMMAND2

COMMAND1为“假”,则COMMAND2不会再执行;

否则,COMMAND1为“真”,则COMMAND2必须执行;

2)~]# COMMAND1 || COMMAND2

COMMAND1为“真”,则COMMAND2不会再执行;

否则,COMMAND1为“假”,则COMMAND2必须执行;

示例:~]# id $username || useradd $username

九、bash的配置文件

1.登录类型

(1)交互式登录shell进程:

直接通过某终端输入账号和密码后登录打开的shell进程;

使用su命令:su - USERNAME, 或者使用 su -l USERNAME执行的登录切换;

(2)非交互式登录shell进程:

su USERNAME执行的登录切换;

图形界面下打开的终端;

运行脚本

2.配置文件类型:仅管理员可修改全局配置文件

(1)profile类:为交互式登录的shell进程提供配置

功用:用于定义环境变量;运行命令或脚本;

全局:/etc/profile 、/etc/profile.d/*.sh

用户个人:~/.bash_profile

(2)bashrc类:为非交互式登录的shell进程提供配置

功用:定义本地变量;定义命令别名;

全局:/etc/bashrc

用户个人:~/.bashrc

3.bash路径搜索

交互式登录shell进程:

/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登录shell进程:

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*

4.定义生效方法

(1)命令行中定义的特性,例如变量和别名作用域为当前shell进程的生命周期;

(2)配置文件定义的特性,只对随后新启动的shell进程有效;

让通过配置文件定义的特性立即生效:

1) 通过命令行重复定义一次;

2) 让shell进程重读配置文件;

~]# source /PATH/FROM/CONF_FILE

~]# .  /PATH/FROM/CONF_FILE

时间: 2024-10-08 10:04:27

BASH基础特性的相关文章

谢烟客---------Linux之Bash基础特性条件测试&&自定义退出状态码(6)

条件测试 判断某需求是否满足,需要由测试机制来实现. 根据命令的执行状态结果,表达不同的测试条件 1.根据id命令的执行状态结果,判断用户是否存在 [[email protected] ~]# id root uid=0(root) gid=0(root) groups=0(root) [[email protected] ~]# echo $? 0 [[email protected] ~]# id help id: help: no such user [[email protected] 

0823第三课-2 Linux的文件系统 bash基础特性

1.linux文件系统 绝对路径:/ LSB: FHS(文件系统层级结构标准) FHS: /boot: 引导文件存放目录,例如kernel(vmlinuz).bootloader(grub, grub2): 包含开机菜单以及开机所需要的配置文件等等 [[email protected] boot]# lsconfig-2.6.32-504.el6.x86_64         lost+foundefi                                  symvers-2.6.3

2017-11-5Linux基础知识(10)bash基础特性

在上一章中我们讲述了bash基础特性之命令补全和路径补全以及它的命令引用,以及讲了文件管理命令,例如:复制.移动和删除,然后我们也讲述了变量,主要围绕着存储格式.数据范围和参与运算.那么这次我们继续讲述bash的基础特性,这一次我们讲述的是文件的通配符和IO重定向等. 一.globbing:文件名通配 我们在查询某些文件的时候,通常是在该目录下进行查找,有的时候文件繁多,想找一些特定的文件就得从该目录下逐个匹配进行查找进行通配,如果没找到则显示为空,找到的话就在下面显示该匹配结果的文件或目录,那

linux文件系统及bash基础特性

linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重要,整个文件系统统一访问入口. Linux引导启动时,默认使用的文件系统是根文件系统.其中一般都包括这样一些子目录: /boot 系统引导文件存放目录 /bin 供所有用户使用的命令(不能关联到独立分支)不能关联到独立分区,os启动即会用到的程序. /sbin 管理员使用特权命令.root-only

Bash基础特性 -- 卷一

 Linux Bash的基础特性 一.history(命令历史记录) 1.语法与常用参数 history 列出当前shell的所有history history [-c] 将当前shell的所有 history 清除 history [n] n为数字,列出最近的n条记录 history [-raw] histfiles -a [HISTFILES] :手动追加当前会话缓冲区的命令历史至文件中,如果histfiles事先不存在,则创建, 如果不指定histfiles文件,则默认写入~/.bash_

bash基础特性(1)

所有的环境变量可以通过 ehco $# 查看 #为环境变量 bash的基础特性: (1)命令历史 history 环境变量: HISTSIZE:命令历史记录的条数 HISTFILE:~/.bash_history HISTFILESIZE:命令历史文件记录历史的条数 history -d offset 删除某条历史命令 history -c 清空历史命令 history #:显示历史中最近的#条命令 history -a:手动追加当前回话缓冲区的命令历史至历史文件中 调用历史中的命令: !#:重

Linux的文件系统、系统管理类命令、bash基础特性

Linux的文件系统根文件系统(rootfs) root fileysystem LSB,FHS(Filesystem Heirache Standard)文件系统层级结构标准,如:/etc./usr./var./root./home./dev /boot:引导文件存放目录,内核文件(vmlinuz).引导加载器(bootloader,grub)都存放于此目录: /bin:供所有用户使用的基本命令:不能关联至独立分区,OS启动即会用到的程序: /sbin:管理类的基本命令:不能关联至独立分区,O

Linux自学笔记(7):bash基础特性及基础命令

bash的基础特性(1)命令历史history调用上一条命令的最后一个参数!$ESC,.atl+.控制命令历史的记录方式环境变量:HISTCONTROLignoreedups:忽略重复的命令:连续且相同为"重复"ignorespace:忽略所有以空白开头的命令ignoreboth:ignoreedups,ignorespace 修改环境变量的方式:export 变量名为"值"变量赋值:把赋值符号后面的数据存储于变量名指向内存空间:(2)命令补全bash执行命令:内部

谢烟客---------Linux之Bash基础特性算术运算(5)

算术运算 算术:数学中最古老,最基础和最初等的部分.它研究数的性质及其运算.把数和数的性质,数和数之间的四则运算在应用过程中的经验积累起来,并加以整理,就形成了最古老的一门数学--算术 算术运算:数的加.减.乘.除以及乘方开方等数学运算,区别于几何运算. 算术运算的符号 完成基本的算术运算 (arithmetic operators) 符号,就是用来处理四则运算的符号 1)加法:同类事物的重复或累计,是数字运算的开始,不同类比如一个苹果+一个橘子其结果只能等于二个水果就存在分类与归类的关系 公式