Linux常用终端命令之cat、grep、echo

时间:2022-12-18 09:20:51

这三个指令,每一个都很常用,用法也都很多。作为一个linux初学者,我还不能很好的掌握三个命令的用法,于是先在这篇博客里做一个简单的整理和总结,以加深对三个指令的理解。

grep

先说grep,Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。(摘抄过来的)

grep的一般使用方法就是:grep+[options]+pattern+filename

其中patter是要搜索的字符串或正则表达式。

参数和正则表达式的字符含义如下:

1、参数:
-i :忽略大小写
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-n:打印包含匹配项的行和行标
2、RE(正则表达式)
\ 忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
\< 从匹配正则表达式的行开始
\>; 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
* 所有字符,长度可以为0

明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip

如果有很多 输出时,您可以通过管道将其转到’less’上阅读:
$ grep magic /usr/src/Linux/Documentation/* | less

常见的示例有:

grep Aug /var/log/messages 在文件 ‘/var/log/messages’中查找关键词”Aug”
grep ^Aug /var/log/messages 在文件 ‘/var/log/messages’中查找以”Aug”开始的词汇
grep [0-9] /var/log/messages 选择 ‘/var/log/messages’ 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 ‘/var/log’ 及随后的目录中搜索字符串”Aug”

结合选项就会有更丰富的应用。

cat

接着是cat的用法,在此我参考了http://blog.csdn.net/jackalfly/article/details/7556848


cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的;
cat主要有三大功能:
1.一次显示整个文件。
$ cat   filename
2.从键盘创建一个文件。
$ cat  >  filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件。
$cat   file1   file2  > file
cat具体命令格式为 : cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案)
参数:
-n 或 –number 由 1 开始对所有输出的行数编号
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 –show-nonprinting
范例:
cat -n linuxfile1 > linuxfile2 把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
cat -b linuxfile1 linuxfile2 >> linuxfile3 把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到linuxfile3 里。
范例:
把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
cat -n linuxfile1 > linuxfile2
把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到 linuxfile3 里。
cat -b linuxfile1 linuxfile2 >> linuxfile3
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容


对上面第三点做个补充说明:
cat   file1   file2  > file表示将file1和file2的内容串接后输入到file文件中,如果已经存在,file文件被重写。
cat   file1   file2  >>file 表示将file1和file2的内容串接后输入到file文件中,如果已经存在,新内容追加在file文件原内容的后面。

cat <<EOF >file的用法:
将标准输入的内容输出到file中,如果是cat<<EOF>>file,则是追加到file中。
标准输入已EOF结尾。(此处EOF表示用键盘打出的内容)
例如:
Linux常用终端命令之cat、grep、echo

echo

关于echo命令,有一篇文章讲得很清楚,http://hi.baidu.com/yajiu/item/87c25a0795be9b10cd34ea56
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。

功能说明:显示文字。
语   法:echo [-ne][字符串]或 echo [--help][--version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参   数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
   \a 发出警告声;
   \b 删除前一个字符;
   \c 最后不加上换行符号;
   \f 换行但光标仍旧停留在原来的位置;
   \n 换行且光标移至行首;
   \r 光标移至行首,但不换行;
   \t 插入tab;
   \v 与\f相同;
   \\ 插入\字符;
   \nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息

echo示例:
示例一 打印当前的PATH设置
[root@jfht ~]# echo $PATH 
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/apache/apache-ant-1.7.1/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

示例二 打印当前的LANG设置
[root@jfht ~]# echo $LANG 
zh_CN.GB18030
 
在/etc/profile的末尾加上
export LANG=zh_CN.GB18030
然后重新登录即可。即可将linux默认语言变为中文。

 
示例三 对输出信息进行转义,比如输出换行
[root@jfht ~]# echo "hello\nworld" 
hello\nworld
[root@jfht ~]# echo -e "hello\nworld" 
hello
world
[root@jfht ~]# echo 'hello\nworld' 
hello\nworld
[root@jfht ~]# echo -e 'hello\nworld' 
hello
world
[root@jfht ~]# echo hello; echo world 
hello
world

 
示例五 输出到标准错误输出
在编写脚本时,经常会利用管道将前一个命令的输出作为后一个命令的输入,如果要打印调试信息,但不把该信息干扰后面的命令,可以将调试信息输出到标准错误输出,如下所示。
[root@jfht ~]# echo hello >&2 
hello

示例来自链接:http://codingstandards.iteye.com/blog/786101