Linux Shell编程之Shell命令行

2025-07-06 16:32:39

标准输入输出:

a)shell将键盘作为标准输入,屏幕作为标准输出。

b)通过>可以重定向脶巴躔炒输出,<重定向输入,比如

<a>bcat#表示以a为输入,b文件输出执行cat命令

需要特别注意的是标准输出的定向文件会覆盖原来的文件,如果是>>在某个文件末尾追加输出。

管道

shell用管道将一个命令的输出直接连接到另一个命令的输入。符号:|。如

cattest.c|grep“printf”

管道可以很好的连接多个命令来完成一个功能。

tee:tee可以将一个输入输出到两个输出,如

who|teewho.out|greproot#将命令who的输出定位到who.out文件,同时作为grep的输入,查找root项。

在后台运行程序

将一个任务后台运行可以通过命令行加&符号

cattest.c|lpr&#后台打印test.c

bg:首先用CONTROL+Z将任务挂起,输入bg+%jobnum命令可以使任务在后台运行,如果只有一个任务被挂起,可不指定任务号。注意后台运行的程序标准输入和键盘断开,如果任务需要充键盘输入,则任务被阻塞。

fg:将某个后台运行的任务切换到前台运行,如果只有一个后台运行的任务,可以不指定任务号。

特殊字符

字符?:?表示单个字符匹配,注意的是?无法在文件名开头匹配句号“.”。如.cache就不能用?chache进行匹配。

字符*:字符*可以匹配0到任意多个连续的字符。如*abc,表示以abc结尾的所有文件

字符[]:[]表示与括号内的单独一个字符进行匹配。如[abc]*表示以a,b,c中任一字母开头的所有文件。字符号还可以跟!和^组合表示否定,如[^abc]*表示不以a,b,c中任一字符开头的所有文件。

任何shell命令都会在执行之前进行上述的shell展开,比如下面的命令可能无法找到所有的c文件

find–name*.c

因为*.c在命令执行之前,shell展开成当前目录的c文件,如果当前目录确实有.c文件,展开后命令格式出错,应该写成

find–name“*.c”

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢