Linux 第17天 bash,find,正则,命令历史

Linux 第17天

时间: 20180803

目录

脚本测试

$-变量作用

bash的配置文件

忘记的内容回顾

命令历史

命令历史调用

bash算术运算help let

管道重定向

正则表达式和扩展表达式元字符

find命令的使用

脚本测试

[ X"$var = X"$var" ] 此种方式可以避免变量出现空值时提示语法错误

[ "$name" = "$test"] 此种方式也是为了避免变量出现空值,但是如果两个变量都空时会为真

[[ "$var" =~ EXPR ]] 支持扩展正则表达式匹配,后边的正则不可加引号

脚本不支持别名: 脚本内不可以执行命令的别名

read 和用户交互式为某变量赋值

-p 在为变量赋值时,增加一个提示字符串

-n 指定变量的字符长度,当用户输入字符长度达到时自动保存至变量,而不是等到用户按回车

-s 用户输入时不会显示用户所输入的字符,一般用于设置密码

-d 指定结束符号,当输入所指定的结束字符时,自动保存字符串至变量中

-t 指定等待时间,当用户长时间未输出字符时,自动退出交互界面,变量为空值

$-变量作用

此变量是一个监控变量,可以显示当前bash的配置情况

echo $- 会显示一个字符串,每个字符代表bash开启的功能

h hashall 有此字符表示shell会将命令所在的路径hash下来,避免每次都要搜索硬盘路径

通过set +h 将h选项关闭

i interactive-comments 包含这个选项说明当前的shell是一个交互式的shell。所谓的交互

式shell,在脚本中, i选项是关闭的

m monitor 打开监控模式,就可以通过job control来控制进程的停止、继续、后台或前台

执行 bg fg

B braceexpand 大括号{}展开,如果关闭后则大括号将会被当作普通的字符串来识别

H history H选项打开,可以展开历史列表中的命令,可以通过!执行其历史命令,

如果关闭后则不可以执行。 set +|- H

bash的配置文件

按生效范围划分,存在两类

全局配置:

/etc/profile

/etc/profile.d/*.sh

/etc/bashrc

个人配置:

~/.bash_profile

~/.bashrc

按功能划分存在两类

profile类: 为交互式登录的shell提供配置

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

个人: ~/bash_profile

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

bashrc类: 为非交互式和交互式登录的shell提供配置

全局: /etc/bashrc

个人: ~/.bashrc

功用: 定义命令别名和函数 定义本地变量

shell登录时读取配置文件的顺序

交互式登录

1) 直接通过终端输入账号密码登录

2) 使用"su - User" 切换的用户

执行顺序: /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile

--> ~/.bashrc --> /etc/bashrc

非交互式登录

1) su UserName

2) 图形界面下打开的终端

3) 执行脚本

4) 任何其它的bash实例

执行顺序 ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

bash退出任务

当用户退出登录时会读取并执行此文件~/.bash_logout

功用: 创建自动备份 清除临时文件等

locate 通过数据库来查找系统里的文件cent7最小安装已经废弃此软件包mlocate

-i ignore case 忽略字符大小写

-n 后边跟一个数值表示显示所匹配到的前#个文件

-r 后边可以跟一个基本正则表达式来搜索文件

updatedb 此命令用来更新文件查询数据库,如果系统有生成新文件时可以使用此命令来更新

数据库

忘记的内容回顾

命令历史

!! 执行上一条命令

!-1 执行上一条命令

!n 执行history命令输出对应序号n的命令

!-n 执行history命令历史中倒数每n个命令

!string 重复前一个以"string"开头的命令

!?string 重复前一个包含"string"的命令

!string:p 仅打印命令,而不执行

!$:p 打印出!$(上一条命令的最后一个参数)的内容

!*:p 打印输出!*(上一条命令的所有参数)的内容

^string 删除上一条命令中第一个string

^string^string2 将上一条命令中的第一个string1替换为string2

!:gs/string1/string2 将上一条命令中所有所有string1都替换为string2

历史命令调用

Ctrl+r 可以搜索包含某个字符串的历史命令

Ctrl+g 从命令历史搜索模式退出

command !^ 调用上一条命令的第一个参数作为command的参数

command !$ 调用上一条命令的最后一个参数作为command的参数

command !* 调用上一条命令的全部参数作为command的参数

command !:n 调用上一条命令的第n个参数作为command的参数

command !n:^ 调用第n条命令的第一个参数作为command的参数

command !n:$ 调用第n条命令的最后一个参数作为command的参数

command !n:m 调用第n条命令的第m个参数作为command的参数

command !n:* 调用第n条命令的所有参数作为command的参数

bash算术运算help let

+, -, *, /, %取模, **乘方

实现算术运算的语法

a=5 b=8

1) let c=$a+$b

2) c=$[$a+$b]

3) c=$(($a+$b))

4) c=$(expr $a + $b)

5) echo $a+$b|bc

乘法符号有些场景中需要转义在其前方加\

管道重定向

> 将标准输出重定向至文件中覆盖其原有内容

>> 将标准输出重定向至文件中但不会覆盖其原有内容,追加在其之后

2> 将错误输出重定向至文件中覆盖其原有内容

2>> 将错误输出重定向至文件中但不会覆盖其原有内容,追加在其之后

&> 将标准和错误输出重定向至文件中覆盖其原有内容

&>> 将标准和错误输出重定向至文件中但不会覆盖其原有内容,追加在其之后

2>&1 将错误输出转至标准输出

1>&2 将标准输出转至错误输出

示例 ls abc >f1 2>&1

正则表达式和扩展表达式元字符

标准正则表达式

字符匹配

. 任意单个字符

[] 匹配括号内任一单个字符

[^] 匹配除了括号内的任一单个字符

[:alnum:] 字母和数字

[:alpha:] 大小写字母

[:upper:] 大写字母

[:lower:] 小写字母

[:digit:] 数字

[:punct:] 标点符号

[:print:] 可打印字符

[:space:] 空格

[:blank:] 空白字符

次数匹配

* 匹配前方字符任意次包含0次

\? 匹配前方字符0或1次

\+ 匹配前方字符至少1次

\{n\} 匹配前方字符n次

\{n,\} 匹配前方字符至少n次

\{n,m\} 匹配前方字符至少n次,最多m次

\{,m\} 匹配前方字符最多m次

位置锚定

^ 行首

$ 行尾

\< or \b 词首

\> or \b 词尾

\| 表示匹配前边或后边的模式之一

分组

\(\) 将一组表达式括起来可以将其用来后向引用

需要注意后向引用是引用前方的分组括号中的模式所匹配的字符,非模式本身

扩展正则表达式

字符匹配

. 匹配任一单个字符

[] 匹配括号内任一单个字符

[^] 匹配除了括号内任意单个字符

次数匹配

* 匹配前方字符任意次包含0次

? 匹配前方字符0或1次

+ 匹配前方字符至少1次

{n} 匹配前方字符n次

{n,} 匹配前方字符到少n次

{n,m} 匹配前方字符至少n次,最多m次

{,m} 匹配前方字符最多m次

位置锚定

^ 匹配行首

$ 匹配行尾

\< or \b 匹配词首

\> or \b 匹配词尾

| 表示匹配前边或后边的模式之一

分组

() 将一组表达式括起来可以将其用来后向引用

基本正则和扩展正则区别

In  basic  regular  expressions  the  meta-characters ?, +, {, |,

(, and ) lose their special meaning; instead use the backslashed

versions \?, \+, \{, \|, \(, and \).

默认的基本正则?, +, {, |, (, ),在shell中有特殊意义所以在其前方加上\将其

转义,即不被shell所识别为特殊字符。而扩展正则做了优化使其可以直接使用这些

字符,而不会被shell所识别为特殊含义的字符。

find 搜索文件系统上的文件或文件夹

-maxdepth LEVEL 最大搜索目录深度,指定目录为第1级

-mindepth LEVEL 最小搜索目录深度

-iname 搜索文件名时不区分大小写

-regex "pattern" 以pattern匹配整个文件路径字符串,而不仅仅是文件名称

-empty 搜索空文件或空目录

fine /app -type d -empty

-perm +|-#

# 表示精确匹配所给的权限

如 -perm 644 则精确匹配文件权限为644的文件或文件夹

/# 表示匹配所给权限中的一组即可

如 -perm /644 则匹配文件权限属主大于6或属组大于4或其它大于4的文件或

文件夹

-# 表示匹配所给权限中的每一位

如 -perm -644 则匹配文件权限属主至少6并且属组至少为4其它为4的文件或

目录

/|- 664 110 110 100

/ 110 110 100 表示1关心0不关心有无都可以 每1组之间为或关系

可以匹配的有 777, 600, 060, 004等只要有一组满足即可

- 110 110 100 表示1关心0不关心有无都可以 每1组之间为与关系

可以匹配的有664, 764, 667, 665等三组权限同时大于664就满足

-atime # 单位是天

# 表示 [#,#+1) 此种方式用的不多,一般+-用的比较多

如 -atime 5 表示5天前到6天之内被访问的过的文件

+# 表示 [#+1,无穷大)

如 -atime +5 表示6天(包含每6天)之前被访问过的文件

-# 表示 (#,now)

如 -atime -5 表示6天之内被访问过的文件

-ctime

-mtime

-amin # 单位是分钟

-cmin

-mmin

-size +|- #UNIT

#UNIT (#-1,#]

如5K 表示 (4K,5] 匹配4k-5K大小的文件

-#UNIT [0,#-1]

如-5K 表示 [0,4K] 表示匹配小于等于4K大小的文件

+#UNIT

如+5K 表示 (5K,无穷大) 表示匹配大于5K大小的文件

-prune

查找/etc/下,除/etc/sane.d和/etc/fonts两个目录的所有.conf后缀的文件

find /etc \(–path '/etc/sane.d' –o –path '/etc/fonts' \) \

-a -prune –o -name "*.conf"

原文地址:http://blog.51cto.com/winthcloud/2154650

时间: 2024-10-12 03:38:12

Linux 第17天 bash,find,正则,命令历史的相关文章

Linux目录结构、bash的基础命令学习

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

Bash基础特性-命令历史

shell进程会在其会话中保存此前用户提交并执行过的命令 可以使用-]# history进行查看,history命令本身属于shell的内嵌命令 命令历史可分为内存中的历史命令以及历史文件中的历史命令,其容量默认大小均为1000条(可修改),从主机开机到关机的这段时间中所用到的命令会保存在内存中,关机后系统会自动将内存中的历史命令写入命令历史文件中(/root/.bash_history),若此时历史文件容量不够时会自动清除过去的命令.执行history-r后执行history的操作时,历史文件

linux命令历史详解

概念:顾名思义,我们在linux终端输过的命令,系统都会将他们加载到内存中,以便我们快速调用命令.另外,Bash拥有自动记录命令历史的功能,用户所执行的命令会在注销时自动记录到自己的家目录下的.bash_history隐藏文件中,这样方便我们了解用户的对系统的整个操作过程,查询可能出错的原因. 查看命令历史记录的方法: 可以通过直接打开文件来查看 命令 [[email protected] ~]$ cat .bash_history 2.通过键盘的上下键来上翻或下翻历史记录 3.通过histor

【Linux相识相知】bash的基础特性

命令历史 shell进程会记录用户提交执行过的命令 可以是用history查看: [[email protected] dev]# history 1 ss -tnl 2 ifconfig 3 vi /etc/sysconfig/network-scripts/ifcfg-ens33 4 reboot 5 systemctl stop firewalld 6 systemctl disable firewalld 7 ifconfig 8 ifconfig 9 startx 10 ping 11

mysql的命令历史如何查看

有时,我们在linux服务器通过mysql连接指令登陆数据库,然后运行一些命令或查询sql,之后我们按键盘向上方向键会一一列出来.如何查看命令历史呢,就像在linux下的shell中查看shell命令历史.mysql 有这样一个机制,就是,在用户的主目录下会生成一个.mysql_history 的文件,这个文件会记录用户登录mysql后,在mysql中敲过的每条命令.cat  ~/.mysql_history 即可以看到以前的命令历史.

Linux Bash内置命令大全详细介绍

转自:http://os.51cto.com/art/201006/207329.htm 主要Shell内置命令 Shell有很多内置在其源代码中的命令.这些命令是内置的,所以Shell不必到磁盘上搜索它们,执行速度因此加快.不同的Shell内置命令有所不同. A.2.1  bash内置命令 .:执行当前进程环境中的程序.同source. . file:dot命令从文件file中读取命令并执行. : 空操作,返回退出状态0. alias:显示和创建已有命令的别名. bg:把作业放到后台. bin

Linux中bash的一些命令

Linux--bash的简单使用 bash及其特性: 1.bash实质上是一个可执行的程序,一个用户的工作环境. 2.每一个shell下可以再打开一个shell,新打开的shell称为子shell,每一个shell之间相互独立. 3.可以使用pstree命令查看当前shell下的子shell个数 使用: 1.光标跳转: Crtl + a : 跳到命令行行首 Crtl + e : 跳到命令行行尾 Crtl + d : 删除光标所在字符 Crtl + u : 删除光标到命令行行首的字符 Crtl +

Linux 基础知识:Bash Shell 内置命令

bash内置命令无须搜寻环境变量$PATH中提供的路径,直接可以执行,因此速度很快. 以下介绍几个简单.必备的命令用法. 1. help 用途:显示所有bash内置命令的列表,或某一个内置命令的用法. 用法: 4help 执行结果:显示所有内置命令的列表. 4help –s 内置命令 执行结果:显示内置命令的语法格式. 用例: help cd 显示cd命令的详细用法. help –s printf printf: printf [-v var] format [arguments] 显示prin

Linux学习笔记:bash特性之多命令执行,shell脚本

今天我们学习了bash特性多命令执行包括各个命令之间的逻辑关系.其中包含"与""或""非"命令的执行.下面即为我们所学习的这些逻辑命令关系之间的关系. 选择执行结构: 逻辑运算: 与:逻辑乘法,&& 0:成功执行 -->true 1-255:失败 -->false true && true =true true && false = false false && true