shell基础特性1

Bash的基础特性1

1.命令历史  History

1.1环境变量:

HISTSIZE:  命令历史记录的条数;

HISTFILE:~/.bash_history;

HISTFILESIZE : 命令历史文件记录历史的条数

History -d OFFSET

-c

History # : 显示历史中最近的#条命令;

-a: 手动追加当前会话缓冲区的命令历史至历史文件中;

1.2调用历史中的命令:

!#:重复执行执行第#条指令;

!!:重复执行上一条命令;

!string:重复执行string这条命令;

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

!$ | ESC键 . | Alt+.

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

环境变量: HISTCONTROL

Ignoredups :忽略重复的命令,连续且相同方为“重复”

Ignorespace :忽略所有以空白开头的命令;

Ignoreboth  :Ignorespace   Ignoredups

3.修改环境变量值的方式: export 变量名=“值”

变量赋值:把赋值符号后面的数据存储于变量名指向内存空间;

4.命令补全:

4.1bash执行命令:

内部命令:

外部命令:bash根据PATH环境变量定义的路径,自左至右宰每个路径搜寻以给定命令;

直接补全: Tab  ,用户给定的字符串只有一条唯一对应的命令;则再次Tab会给出列表;

4.2.路径补全

把用户给出的字符串当作路径开头,并在其指定上级目录搜索以指定的字符串开头的文件名;

如果唯一,直接补全。

不唯一再次Tab,给出列表

5.命令行展开

~ : 展开为用户的主目录;

~USERNAME :展开为指定用户的主目录;

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

6.命令的执行状态结果:

成功

失败

bash 使用特殊变量$?保存最近一条命令的执行状态结果;

0 :成功;

1-255 : 失败

程序执行有两类结果:  1〉程序的返回值;

2> 程序的执行状态结果;

7.命令别名(alias)

(1).alias

显示当前shell进程所有可用的命令别名:

(2). alias  NAME=’VALUE’

定义别名NAME,其相当于执行命令VALUE

注意:在命令行中定义的别名,进程当前shell进程有效;如果想永久有效,要定义在配置文件中:

仅对当前用户: ~/.bashrc

对所有用户:/etc/bashrc

定义完想要生效需要做一下操作bash进程重新读取配置文件:

source   /path/to/config_file

. /path/to/config_file

(3).撤销别名: unalias

unalias  [-a]  name  [name.....]

Note:如果别名同原命令的名称,则如果要执行原命令,可使用“\COMMAND”;

8.glob(globbing)bash中用于实现文件名“通配“用于文件名或目录名的匹配,不要与grep混淆

通配符 :  *, ?,[]

(1) *

任意长度的任意字符

a*b:

aab,  ab, a1122b

(2) . ?

任意单个字符

a?b

a1b.aab

(3)   []

匹配制定范围内的任意单个字符

[abc]  : a,b,c   中选一个

[0-9]  :  0-9任意其中一个数字

[a-z]  :  不区分字符的大小写

[A-Z]  : 大写

(4)  [^]

匹配制定范围之外的任意单个字符

专用字符集合:

[:digit:]  : 任意数字,相当于[0-9]

[:alnum:] : 任意数字或字母

[:lower:] : 任意小写字母,相当于[^A-Z]

[:upper:] : 任意大写字母

[:alpha:] : 任意大小写字母

[:alnum:] : 任意字母或数字

[:space:] : 空白

[:punct:] : 标点符号

练习1:

1.显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录:

[[email protected] ~]# ls -d /var/l*[0-9]*[[:lower:]]

2.显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录:

[[email protected] ~]# ls -d /etc/^[0-9]*[^0-9]

3.显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或目录:

[[email protected] ~]# ls /etc/[^[:alpha:]][[:alpha:]]*

4.复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/chang目录下:

[[email protected] ~]# cp -a  /etc/m*[^0-9]  /tmp/chang

5.复制/etc目录次啊,所有以.d结尾的文件或目录至/tmp/chang.com目录中:

[[email protected] ~]# cp -a /etc/*.d  /tmp/chang.com

6.复制/etc目录次啊,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/cc目录中:

[[email protected] ~]# cp -a /etc/[mnrp]*.conf /tmp/cc

9.bash 的快捷键:

ctrl+l:  清屏,相当于clear;

ctrl+a: 跳转至命令开始处

ctrl+e : 跳转至命令结尾处

ctrl+c : 取消命令的执行

ctrl+u :  删除命令行首至光标所在处的所有内容;

ctrl+k : 删除光标所在处至命令行尾部的所有内容;

10.bash的I/O重定向及管道

程序: 指令+数据

读入数据: input

输出数据: output

打开的文件都有一个fd: file descrtptor (文件描述符)

标准输入:keyboard , 0

标准输出:monitor,   1

标准错误输出: monitor,  2

11.I/O重定向: 改变标准位置

11.1输出冲定向: COMMAND > NEW_POS, COMMAND >> MEW_POS

>: 覆盖重定向,目标文的原有无内容会被清除;

>>: 追加重定向,新内容会追加至目标文件尾部;

11.2 #  set  –C: 禁止将内容覆盖输出至已有文件中;(只对当前进程有效)

强制覆盖: >|

#  set  +C:

11.3 (1) 2>: 覆盖重定向错误输出数据流:

2>>: 追加重定向错误输出流;

(2)标准输出和错误输出各自定向至不同位置:

COMMAND >  /PATH/to/file.out   2> /path/to/error.out

11.4合并标准输出和错误输出同一个数据流进行重定向:

&> : 覆盖重定向       &>> :追加重定向

COMMAND > /path/to/file.out 2> &1

COMMAND >> /path/to/file.out 2>> &1

11.5输入重定向: <

显式使用:tr

隐式使用:….

12.Tr命令:转换或删除字符

tr [option ]… SET1 [SET2]

HERE Documentation :   <<EOF :end  off  file

#  cat  <<EOF

#  cat   > /path/to/somefile  <<EOF

管道:

COMMAND1  |  COMMAND2  |COMMAND3 …

Note : 最后一个命令会在当前shell进程的子进程中执行Tee命令:

tee [OPTION]... [FILE]...

练习2

1.将/etc/passwd文件中的前5行内容转换为大写保存至/tmp/passwd.out文件中:

[[email protected] ~]# tail -n 2 /etc/passwd | tr‘a-z‘ ‘A-Z‘ >/tmp/passwd.out

2.将登录至当前用户信息的后3位的信息转换为大写后保存至/tmp/who.out中:

[[email protected] ~]# who | tail -n 3 | tr ‘a-z‘ ‘A-Z‘ >/tmp/who.out

时间: 2024-10-18 05:17:58

shell基础特性1的相关文章

bash shell基础特性之三(数组)

bash shell基础特性之三(数组) 一.数组定义 数组指连续的多个独立内存空间,每个内存空间相当于一个变量. bash shell只支持一维数组,但参数个数没有限制. 数组元素:数组名+索引(从0开始编号) 声明数组:declare -a ARRAR_NAME(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组) 关联数组:declare -A ARRAY_NAME 数组元素的赋值:一次赋值全部元素.指定索引进行赋值.一次只赋值一个元素 (1) array=(var1 va

shell基础特性2

Bash 的 基 础 特 性 2 1.提供了编程环境 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令: 对象式:以数据为中心,指令服务于数据: 2.Shell程序: 提供了编程能力,解释执行 3.程序的执行方式: 3.1计算机: 运行二进制指令: 编程语言: 低级: 汇编 高级: 编译:高级语言->编译器-à目标代码 C .C++ 解释: 高级语言-à解释器--à机器代码 Shell  ,perl, python 3.2过程式编程语言: 顺序执行: 循环执行: 选择执行

Bash shell 基础特性 理论+案例详解

1.命令历史:history 环境变量: HISTFILE:命令历史记录的条数 HISTSIZE:~/.bash.history HISTFILESIZE:命令历史文件记录历史的条数 history:默认显示10条历史纪录 history -n:显示后n条历史记录 history -d n:删除第n条历史纪录 history -c:删除所有历史记录 history -a:手动追加当前会话缓冲区中的历史命令至历史文件中 !n:重复执行第n条命令 !!:重复执行上一条命令 !加命令的开头几个字母:重

bash shell基础特性之二

(1) globbing 文本名通配:元字符 *:匹配任意长度的任意字符: ?:匹配任意单个字符: 示例:a*b: aab, ab, a123b; a?b: []: 匹配指定范围内的任意单个字符: 示例:[0-9] [^]:匹配范围外的任意单个字符: 示例:[^a-b] 字符集合: [:lower:]  匹配小写字母. 等同于a-z [:upper:]  匹配大写字母. 等同于A-Z [:alnum:]  匹配字母和数字.等同于A-Za-z0-9 [:digit:]  匹配(十进制)数字. 等同

Bash Shell脚本编程-基础特性知识

Bash Shell的基础特性: 命令历史: history:shell内建命令 环境变量HISTFILE定义用户退出命令历史列表的存储位置 #echo $HISTFILE /root/.bash_history # echo $HISTFILESIZE   HISTFILE指向的文件持久留存的历史命令条目 1000 # echo $HISTSIZE           当前bash进程所留存的历史命令条目数 1000 # history -d 123            删除历史列表中的第1

CentOS系统Shell编程语言基础之Bash的基础特性简介

bash的基础特性之命令历史: 命令历史:shell进程会在其会话中保存此前用户提交执行过的命令~]#history定制history的功能,可通过环境变量实现HISTSIZE:shell进程可保留的命令历史的条数HISTFILE:持久保存命令历史的文件, ".bash_history"HISTFILESIZE:命令历史文件的大小 命令用法: history [-c] [-d offset] [n]or history -anrw [filename]or history -ps ar

运维基础--Linux中bash的基础特性

bash 的基础特性如下: 一.命令的别名--alias 命令 用来定义和显示命令的别名,unalias撤销定义的别名:但是要注意以下几点: 1.alias的效果仅限于当前shell的生命期: 2.如果修改.bashrc配置文件,其中保存的别名不会立即生效,只有在重新加载该文件的内容后,才会生效且永久生效: 3.为了能够保证设置的别名有效,通常两种操作都要做: 二.命令历史 shell进程会其会话中保存此前用户提交执行过的命令,history是shell的内置命令   1.命令语法格式: his

Linux目录结构、bash的基础特性、I/O重定向及管道

Linux目录结构 LSB(Linux StandardsBase)是一套核心标准,它保证了LINUX发行版同LINUX应用程序之间的良好结合规定了一系列标准,其中包括文件系统层级结构标准(FHS Filesystem Hierarchy Standard) Linux系统根目录下有众多子目录,这些目录都参照了FHS协定 / ├── bin ├── boot ├── dev ├── etc ├── home ├── lib ├── lib64 ├── lost+found ├── media ├

一、Linux Shell基础

1.1.shell基础 Bash 是一个与Bourne Shell兼容的.执行从标准输入设备文件读取的命令的语言解释器.Bash是Bournae-Again Shell的缩写.Bash与原来的Unix sh Shell向后兼容,并且融合了一些有用的Korn Shell和C Shell的特性.它相对于sh在编程和交互式使用两方面都有功能改进.另外,大部分的sh脚本可以在不修改的情况下由Bash直接运行. Linux环境由以下几部分构成: 内核-------------------Linux操作系统