UNIX Shell 编程(2)

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4072516 UNIX Shell 编程(2) 字符匹配星号(*)匹配0个以上的字符;而问号(?)则匹配1个字符。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4072516

UNIX Shell 编程(2)

 

字符匹配
星号(*)匹配0个以上的字符;而问号(?)则匹配1个字符。
如:
ls [a-z]*[0-9]
表示显示文件名以小写字母开始,且以数字结尾的文件列表。

输出重定向
命令的输出一般是提交到标准输出设备,可以转向到文件内,这叫输出重定向。
在有标准输出的命令后,添加>file符号后,命令的输出就会写入文件file。
如:
[root@localhost misc]# who
root pts/1 2009-04-14 09:39 (10.3.34.117)
fedora tty7 2009-04-14 10:44 (:0)
[root@localhost misc]# who >users
[root@localhost misc]# ls
collect mon users wb wbb2 wbx writeback
[root@localhost misc]# cat users
root pts/1 2009-04-14 09:39 (10.3.34.117)
fedora tty7 2009-04-14 10:44 (:0)

另一种类型的输出重定向,由字符>>表示,它意思是命令的输出从标准输出追加到指定的文件后面。因此,文件以前的内容不会丢失,新的输出添加到最后。
如:
[root@localhost misc]# cat users
root pts/1 2009-04-14 09:39 (10.3.34.117)
fedora tty7 2009-04-14 10:44 (:0)
[root@localhost misc]# ls
collect mon users wb wbb2 wbx writeback
[root@localhost misc]# ls >>users
[root@localhost misc]# cat users
root pts/1 2009-04-14 09:39 (10.3.34.117)
fedora tty7 2009-04-14 10:44 (:0)
collect
mon
users
wb
wbb2
wbx
writeback

Shell能识别一种特别格式的输出重定向,如果输入:
> file
前面没有命令,shell会创建一个空文件(长度为0字符),如该文件以前存在,其内容会丢失。
如:
[root@localhost misc]# >file4
[root@localhost misc]# wc file4
0 0 0 file4
[root@localhost misc]# cat file3
This is in file1.
This is in file2.
This is in file1.
[root@localhost misc]# >file3
[root@localhost misc]# wc file3
0 0 0 file3


输入重定向
同输出重定向,命令的输入也可重定向为来自于文件。用大于号>表示输出重定向,用小于号表示输入重定向。
如:
[root@localhost misc]# wc -l users
9 users
[root@localhost misc]# wc -l < users
9

管道
统计当前登陆进系统的用户数:
[root@localhost misc]# who >users
[root@localhost misc]# wc -l < users
2
表明有2个用户登陆了系统。在任何适合如果想知道有多少登陆用户,都可以使用此命令序列。
还有一种方法来判断登陆用户数而不需要使用文件。
Unix系统可以把两条目录的效果连接起来,这种连接称为管道。
管道可以把一条命令的输出直接作为另一条命令的输入。
管道效果由字符 | 实现,它必须在两条命令之间。
故统计登陆用户数可以这么实现:
[root@localhost misc]# who | wc -l
2
在两条命令间建立管道后,第一条命令的标准输出就直接连接到第二条命令的标准输入。
如统计当前目录的文件数:
[root@localhost misc]# ls | wc -l
11

过滤器
Unix所指的过滤器是指能够从标准输入中接受输入,对输入进行处理后,把结果写入标准输出的任何程序。
命令cat和sort是过滤器,而who、date、cd、pwd、echo、rm、mv及cp都不是。

标准错误
除标准输入和标准输出之外,还有一种标准设备,称之为标准错误。
标准错误默认也是终端。
如:
[root@localhost misc]# ls n*
ls: cannot access n*: No such file or directory
见上面,“cannot access...”信息实际上是由ls命令写入标准错误,而非标准输出。
[root@localhost misc]# ls n* > foo
ls: cannot access n*: No such file or directory
尽管输出重定向到文件foo,该信息仍然在终端显示了。且:
[root@localhost misc]# wc foo
0 0 0 foo
foo文件为空。
标准错误也可重定向到文件,格式为:
命令 2> 文件
注意:2和>之间不能有空格。
如:
[root@localhost misc]# ls n* 2> foo
[root@localhost misc]# cat foo
ls: cannot access n*: No such file or directory

一行可以键入多条命令,命令间用分号分隔。
比如既查看当前时间又查看当前工作目录:
[root@localhost misc]# date;pwd
Tue Apr 14 11:29:15 CST 2009
/tools/test/misc


命令发送到后台
有些命令执行时间很长,可以放到后台执行。在键入的命令之后跟一个&符号,该命令就发送到后台执行。
如:
[root@localhost misc]# sort file3 > out & #sort发往后台执行
[2] 30584 # 进程id
此时,终端可立即做其它工作。
[2] 30584 解释:第一个称为该命令的工作号,第二个是进程标识号。
可以用ps命令查看:
[root@localhost misc]# ps
  PID TTY TIME CMD
 2303 pts/1 00:00:00 bash
30354 pts/1 00:00:00 sort
30589 pts/1 00:00:00 ps
[2]- Done sort file3 > out
ps可以显示系统中正运行的进程的信息。
PID进程标识号,TTY进程终端号,TIME进程已运行的时间,CMD进程名。
如果加上-f选项,将显示更详细内容。
[root@localhost test]# ps -f
UID PID PPID C STIME TTY TIME CMD
root 30665 30657 0 12:30 pts/2 00:00:00 -bash
root 30775 30665 0 13:17 pts/2 00:00:00 ps -f
注:PPID父进程的标识号,STIME进程启动时间,以及命令参数。

目录
相关文章
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
19天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
Shell
Shell编程(下)
Shell编程(下)
88 1
|
1月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
40 1
|
1月前
|
Shell Linux 开发工具
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
66 12
|
1月前
|
算法 Unix 数据安全/隐私保护
Python编程--UNIX口令破解机
Python编程--UNIX口令破解机
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
2月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
45 12