首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

bash的基础特性(2)

bash的基础特性(2):

1、命令别名(alias)

通过alias命令实现:

(1) alias

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

(2) alias NAME='VALUE'

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

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

仅对当前用户:~/.bashrc

对所有用户有效:/etc/bashrc

Note: 编辑配置给出的新配置不会立即生效;

bash进程重新读取配置文件:

source /path/to/config_file

. /path/to/config_file

撤消别名:unalias

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

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

2、glob (globbing)

bash中用于实现文件名“通配”

通配符:*, ?, []

(1) *

任意长度的任意字符

a*b:

aab, ab, a123b,

abc

(2) ?

任意单个字符

a?b:

aab

ab, a12b, abc

(3) []

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

[0-9]

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

(4) [^]

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

[^0-9]

专用字符集合:

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

[:lower:]:任意小写字母

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

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

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

[:space:]:

[:punct:]:标点符号

练习:

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

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

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

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

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

# ls /etc/[^[:alpha:]][[:alpha:]]*

4、复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/mageedu目录中;

# cp -a /etc/m*[^0-9] /tmp/mageedu

5、复制/etc目录下,所有以.d结尾的文件或目录至/tmp/magedu.com目录中;

# cp -a /etc/*.d /tmp/magedu.com

6、复制/etc目录下,所以有.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/mageedu.com目录中;

# cp -a /etc/[mnrp]*.conf /tmp/mageedu.com

3、bash的快捷键

Ctrl+l: 清屏,相当于clear命令;

Ctrl+a:跳转至命令开始处;

Ctrl+e:跳转至命令结尾处;

Ctrl+c:取消命令的执行;

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

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

4、bash的的I/O重定向及管道

程序:指令+数据

读入数据:Input

输出数据:Output

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

标准输入:keyborad, 0

标准输出:monitor, 1

标准错误输出:monitor, 2

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

输出重定向:COMMAND > NEW_POS, COMMAND >> NEW_POS

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

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

# set -C: 禁止将内容覆盖输出至已有文件中;

强制覆盖:>|

# set +C:

2>: 覆盖重定向错误输出数据流;

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

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

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

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

&>:覆盖重定向

&>>:追加重定向

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

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

输入重定向:

tr命令:转换或删除字符

tr [OPTION]... SET1 [SET2]

HERE Documentation:

# cat

# cat > /path/to/somefile

管道:

COMMAND1 | COMMAND2 | COMMAND3 |...

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

tee命令:

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

练习:

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

2、将登录至将前系统上用户信息中的后3行的信息转换为大写后保存至/tmp/who.out文件中;

# who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out

文本处理工具:wc, cut, sort, uniq

wc命令:

wc [OPTION]... [FILE]...

-l: lines

-w: words

-c: characters

cut命令:

cut [OPTION]... [FILE]...

-d DELIMITER: 指明分隔符

-f FILEDS:

#: 第#个字段

#,#[,#]:离散的多个字段,例如1,3,6

#-#:连续的多个字段, 例如1-6

混合使用:1-3,7

--output-delimiter=STRING

sort命令:

sort [OPTION]... [FILE]...

-f: 忽略字符大小写

-r: 逆序

-t DELIMITER: 字段分隔符

-k #:以指定字段为标准排序

-n: 以数值大小进行排序

-u: uniq,排序后去重

uniq命令:

uniq [OPTION]... [FILE]...

-c: 显示每行重复出现的次数;

-d: 仅显示重复过的行;

-u: 仅显示不曾重复的行;

Note: 连续且完全相同方为重复

练习:以冒号分隔,取出/etc/passwd文件的第6至第10行,并将这些信息按第3个字段的数值大小进行排序;最后仅显示的各自的第1个字段;

回顾:

文件管理命令、bash的基础特性、文件本管理命令

文件管理命令:cp, mv, rm

bash基础特性:alias/unalias, glob (*, ?, [], [^]), 快捷键

IO重定向、管道:

标准输出重定向:>, >>

标准错误重定向:2>, 2>>

&>, &>>

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

输入重定向:

显式使用:tr

隐式使用:...

管道:COMMAND1 | COMMAND2 | ...

文本处理命令:wc, cut, sort, uniq

关注“农夫运维” 一起成长!

“我们进步,因为我们分享!”

“分享是一种精神,感恩是一种品德。”

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180506G02LOU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券