欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥03_03 _bash 特性详解【攻城狮论坛の免费分享】有大用

命令别名 它跟变量的定义一样,是shell的特性, shell 关闭了它就没有了,只在当前 shell 进程的生命周期有效 别名的有效范围作用范围为当前shell进程 

要永久有效生命 须在 bash 的配置文件中 (家目录下的 ./bashrc ) 写进去 全局,对所有用户有效

alias CMDALIAS='COMMAND [options] [arguments]'  //如果有空格,最好使用单引号引起来


unalias CMDALIAS //撤销别名


\CMD //命名别名 已经给了命令(加上参数)(例如 alias cp='cp -i') 此时加反斜杠,就是真正的原命令


# alias cls=clear

[root@ebs-22618 ~]# cls

-bash: cls: command not found

[root@ebs-22618 ~]# alias cls=clear

[root@ebs-22618 ~]# cls

[root@ebs-22618 ~]# alias    //不带任何参数 显示当前系统上的所有别名

image.png

[root@ebs-22618 ~]# type alias

alias is a shell builtin



[root@ebs-22618 ~]# unalias cls

[root@ebs-22618 ~]# cls

-bash: cls: command not found



# cd //进入家目录


# clear

 windows 中是  > cls



命令替换: $(COMMAND)        ( 美元符 左小括号 命令 右小括号 )或者 `COMMAND`  反引号

把命令中某个子命令替换为其执行结果的过程


bash支持的引号:

` `:反引号,命令替换

"":双引号,弱引号,可以实现变量替换

'':单引号,强引号,不完全变量替换



file-2013-01-28-14-53-31.txt



[root@ebs-22618 ~]# echo "The current directory /root"

The current directory /root

[root@ebs-22618 ~]# cd /etc/sysconfig/

[root@ebs-22618 sysconfig]# echo "The current directory /root"

The current directory /root

[root@ebs-22618 sysconfig]# pwd

/etc/sysconfig

[root@ebs-22618 sysconfig]# echo "The current directory is $(pwd)."

The current directory is /etc/sysconfig.

[root@ebs-22618 sysconfig]# cd

[root@ebs-22618 ~]# echo "The current directory is $(pwd)."

The current directory is /root.


image.png

#touch ./file-$(date +%F-%H-%M-%S).txt

image.png

[root@ebs-22618 x]# echo "Dir is `pwd`"

Dir is /root/x


文件名通配 globbing image.png 通配符的意思

*: 星号,通配符,任意长度的任意字符

?: 问号,通配符,任意单个字符

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

[^]:中括号里有尖号,指定范围外 (不包括)

[abc] 从a,b,c中选一个 [a-m]从a至m中选一个 [a-z] ,[A-Z] ,[0-9]

[a-zA-Z] 大写小写都包括任意一个 

[0-9a-zA-Z] (这是字母或数字)

[:space:] 表示空白字符(好像可以表示其它的非tab键的的字白字符) 表示字符集合 [[:space:]]  里面找一个

[:punct:]  表示标点符号  表示字符集合                                                                [[:punct:]]  里面找一个

[:lower:]  表示小写字母    表示字符集合                                                               [[:lower:]]   里面找一个

[:upper:]  表示大写字母      表示字符集合                                                           [[:upper:]]  里面找一个

[:alpha:]  表示大小写字母    表示字符集合                                                           [[:alpha:]]   里面找一个

[:digit:]  表示0-9的数字   表示字符集合                                                               [[:digit:]]   里面找一个

[:alnum:] 表示大写小写和数字  表示字符集合                                                     [[:alnum:]]  里面找一个

[^[:alpha:]] 表示非字母

#man 7 glob 就可以获得上面这些列表和说明


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




# touch a123 abc ab123 xyz x12 xyz123


[root@ebs-22618 z]# ls

a123  ab123  abc  x12  xyz  xyz123

[root@ebs-22618 z]# ls a*      // 以 a 开头后面跟任意字符的文件

a123  ab123  abc

[root@ebs-22618 z]# touch a

[root@ebs-22618 z]# ls a*  //包括 单a的文件

a  a123  ab123  abc

[root@ebs-22618 z]#


[root@ebs-22618 z]# ls

a  a123  ab123  abc  x12  xyz  xyz123

[root@ebs-22618 z]# ls a*3  //以a开头 3 结尾的文件

a123  ab123

[root@ebs-22618 z]#


[root@ebs-22618 z]# ls *y*  //以任意字符开头,含y,以任意字符结束

xyz  xyz123

[root@ebs-22618 z]# touch helloy123

[root@ebs-22618 z]# ls *y*

helloy123  xyz  xyz123

[root@ebs-22618 z]#

[root@ebs-22618 z]# touch y123


[root@ebs-22618 z]# ls

a  a123  ab123  abc  helloy123  x12  xyz  xyz123  y123

[root@ebs-22618 z]# ls *y*

helloy123  xyz  xyz123  y123

[root@ebs-22618 z]# ls ?y*   //以任意第一个字符开头,第二个y,后面跟任意长度的任意字符

xyz  xyz123


[root@ebs-22618 z]# ls [a-zA-Z]*[0-9]

a123  ab123  helloy123  x12  xyz123  y123


[root@ebs-22618 z]# touch 1xy6

[root@ebs-22618 z]# ls

1xy6  a  a123  ab123  abc  helloy123  x12  xyz  xyz123  y123

[root@ebs-22618 z]# ls [a-zA-Z]*[0-9]

a123  ab123  helloy123  x12  xyz123  y123


[root@ebs-22618 z]# ls [^0-9]*

a  a123  ab123  abc  helloy123  x12  xyz  xyz123  y123


[root@ebs-22618 z]# touch 'a b'   //这是建立一个文件,去掉引号的话就是建两个文件

[root@ebs-22618 z]# ls

1xy6  a  a123  a b  ab123  abc  helloy123  x12  xyz  xyz123  y123


[root@ebs-22618 z]# ls [[:alpha:]]*  //字母开头 结尾任意字

a  a123  a b  ab123  abc  helloy123  x12  xyz  xyz123  y123

[root@ebs-22618 z]# ls [[:alpha:]]*[[:alpha:]]  //字母开头且字母结尾 中间任意字符

a b  abc  xyz

[root@ebs-22618 z]#

[root@ebs-22618 z]#  ls [[:alpha:]]*[[:space:]]*[[:alpha:]]

a b

[root@ebs-22618 z]#  ls [[:alpha:]]*[[:space:]]*[^[:alpha:]]

ls: 无法访问[[:alpha:]]*[[:space:]]*[^[:alpha:]]: 没有那个文件或目录


image.png












普通分类: