shell知识汇总

shell 是以C语言编写的程序,是用户和操作系统内核之间通信的桥梁

1.shell命令的格式

commond  [options]  [arguments]

commond: 表示命令的名称

options: 表示命令的选项

arguments: 表示命令的参数

一般在选项钱有一个"-"符号,用于区别参数.

命令的规则:

一个命令行中,可以输入多个命令,各个命令之间用分号隔开;

多行中输入一个命令时,用"\"将一个命令持续到下一行.

2.shell的通配符

bash中常用的通配符有"*","?","[]"

  • "*"---匹配任意一个或多个字符
#列出当前目录中所有以.txt结尾的文件(不包含"."开头的文件)

[root@iZ2zegaforshlunfo6xw8qZ ~]# ls *.txt 


#将doc 目录下的所有文件复制到/opt目录下

[root@iZ2zegaforshlunfo6xw8qZ ~]# cp doc/*  /opt

# 列出/etc目录下的子目录中所有以".conf"结尾的文件,在/etc目录下以".conf"结尾的文件将不会列出

[root@iZ2zegaforshlunfo6xw8qZ ~]# ls -la /etc/*/*.conf 
  • "?"---匹配任意单一字符
//列出当前目录下以ab开头,随后一个字母是任意字符,接着以".txt"结尾的文件

[root@iZ2zegaforshlunfo6xw8qZ ~]# ls ab?.txt

//列出当前目录下以ab开头,随后两个个字母是任意字符,接着以".txt"结尾的文件

[root@iZ2zegaforshlunfo6xw8qZ ~]# ls ab??.txt
  • "[]"---匹配任何包含在方括号内的单字符
//列出在/dev目录下以sda开头,第四个字符是1,2,3,4或5的所有文件

[root@iZ2zegaforshlunfo6xw8qZ ~]# ls /dev/sda[1-5]

  • 通配符的组合使用
//列出当前目录下以数字开头,随后一个是任意字符,接着以".conf"结尾的文件

[root@iZ2zegaforshlunfo6xw8qZ ~]# ls [0-9]?.conf

//列出当前目录下以x,y或z开头,最后以".txt"结尾的文件

[root@iZ2zegaforshlunfo6xw8qZ ~]# ls [xyz]*.txt

3.shell的重定向

shell 是根据重定向操作符来决定重定向操作的.

  • 输入重定向("<"和"<<"):用于改变命令的输入源,将文件的内容作为命令的输入
// 用wc命令统计输入给它的文件/etc/shadow的行数\单词书和字符数
[root@iZ2zegaforshlunfo6xw8qZ ~]# wc < /etc/shadow

//"<<":当前命令的标准输入来自命令行中一对分隔符之间的内容,分隔符可以是任何内容

[root@iZ2zegaforshlunfo6xw8qZ ~]# wc << aa
> ls -la
> aa
1 2 7
  • 输入重定向(">"和">>"):将命令的结果输出到一个指定文件中
//将ps -ef输出的系统运行信息全部输入到text.txt文件中.
[root@iZ2zegaforshlunfo6xw8qZ test1]# ps -ef >test.txt


//将text1.txt和text2.txt的内容全部输出到file中,类似于文件的合并
[root@iZ2zegaforshlunfo6xw8qZ test1]# more test1.txt test2.txt > test.txt

如果在">"后面指定的文件不存在,shell就会自动创建一个;

如果存在,那么这个文件原有的内容将被覆盖;

如果不想覆盖存在的文件,可以使用">>"操作符

  • 错误重定向("2>"和"2>>"):实现对错误输出的重定向
# 解压text.tar.gz文件.如果出现错误,则将会把错误信息输出到error.log
[root@iZ2zegaforshlunfo6xw8qZ ~]# tar zxvf text.tar.gz 2> error.log文件

4.shell 的管道(把一个命令的输出当作下一个命令的输入)

//将/etc目录以及子目录的所有文件分屏显示
[root@iZ2zegaforshlunfo6xw8qZ ~]# ls -al /etc/* | more


//查看系统中正在运行httpd进程,并统计httpd的进程数
[root@iZ2zegaforshlunfo6xw8qZ ~]# ps -ef |grep httpd |wc -l

5.shell中的引用

shell中用于引用的字符有转义字符"\",单引号" ' ",双引号" " " 

  • 转义字符"\"

将"\"放到特殊字符前面,shell就忽略这些特殊字符的原有含义,把它们当作普通字符对待


[root@iZ2zegaforshlunfo6xw8qZ ~]# ls
abc?* C:\backup

//将abc?* 重命名为abc
[root@iZ2zegaforshlunfo6xw8qZ ~]# mv abc\?\* abc

//将C:\backup重命名为backup
[root@iZ2zegaforshlunfo6xw8qZ ~]# mv C\:\\backup backup
  • 单引号" ' "

将字符串放到一对单引号之间,那么字符串中所有字符的特殊含义将被忽略

[root@iZ2zegaforshlunfo6xw8qZ ~]# mv C\:\\backup backup
[root@iZ2zegaforshlunfo6xw8qZ ~]# mv 'C:\backup backup'

上面两条命令等价

  • 双引号" " "

双引号的引用于单引号基本相同,大部分特殊字符可以当作普通字符处理.

但部分特殊字符即使使用双引号,也仍然保留自己的特殊含义,比如:"$","\","`"

[root@iZ2zegaforshlunfo6xw8qZ ~]# str = "The \$SHELL Current shell is $SHELL"

[root@iZ2zegaforshlunfo6xw8qZ ~]# echo $str

The $SHELL Current shell is /bin/bash


[root@iZ2zegaforshlunfo6xw8qZ ~]# str = "This hostname is `hostname`"

[root@iZ2zegaforshlunfo6xw8qZ ~]# echo $str

This hostname is iZ2zegaforshlunfo6xw8qZ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值