linux 输出命令 linux 输出到文件

详解Linux中的cat文本输出命令用法

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档案内容

在linux shell脚本中我们经常见到类似于cat<< EOF的语句,不熟悉的童鞋可能觉得很奇怪:EOF好像是文件的结束符,用在这里起到什么作用?

EOF是“end of file”,表示文本结束符。复制代码代码如下:

<<EOF

(内容)

EOF

首先必须要说明的是EOF在这里没有特殊的含义,你可以使用FOE或OOO等(当然也不限制在三个字符或大写字符)。

可以把EOF替换成其他东西,意思是把内容当作标准输入传给程

结合这两个标识,即可避免使用多行echo命令的方式,并实现多行输出的结果。

接下来,简单描述一下几种常见的使用方式及其作用:

(1)、cat<<EOF,以EOF输入字符为标准输入结束:

(2)、cat>filename,创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束:

注意:输入时是没有'>'的。

(3)、cat>filename<<EOF,以EOF作为输入结束,和ctrl+d的作用一样:

二、使用

看例子是最快的熟悉方法:

复制代码代码如下:

# cat< EOF> test.sh

>#!/bin/bash#“shell脚本”

>#you Shell script writes here.

> EOF

结果:

引用

复制代码代码如下:# cat test.sh

#!/bin/bash

#you Shell script writes here.

可以看到,test.sh的内容就是cat生成的内容。

cat<test.sh内容 EOF

---就是将内容写入test.sh,之前存在的内容会被覆盖掉。EOF可以换成其他符号比如EEE:cat<test.sh内容 EEE

三、其他写法

1、追加文件

复制代码代码如下:# cat< EOF>> test.sh内容 EOF

---将内容追加到 test.sh的后面,不会覆盖掉原有的内容

2、换一种写法

复制代码代码如下:# cat> test.sh<< EOF内容 EOF

3、EOF只是标识,不是固定的

复制代码代码如下:

# cat< HHH> iii.txt

> sdlkfjksl

> sdkjflk

> asdlfj

> HHH

这里的“HHH”就代替了“EOF”的功能。结果是相同的。

引用

复制代码代码如下:

# cat iii.txt

sdlkfjksl

sdkjflk

asdlfj

4、非脚本中

如果不是在脚本中,我们可以用Ctrl-D输出EOF的标识

复制代码代码如下:

# cat> iii.txt

skldjfklj

sdkfjkl

kljkljklj

kljlk

Ctrl-D

结果:

引用

复制代码代码如下:

# cat iii.txt

skldjfklj

sdkfjkl

kljkljklj

kljlk

四、基本用法实例演示

例1

复制代码代码如下:

[root@localhost~]# cat test#普通输出

1111111111

2222222222

3333333333

[root@localhost~]# cat-n test#开头显示行号

1 1111111111

2

3

4 2222222222

5

6 3333333333

[root@localhost~]# cat-E test#以$结束

1111111111$

$

$

2222222222$

$

3333333333$

[root@localhost~]# cat-s test#超过二个空行,合并成一个

1111111111

2222222222

3333333333

[root@localhost~]# cat-ns test#去空行,加行号

1 1111111111

2

3 2222222222

4

5 3333333333

例2

复制代码代码如下:

[zhangy@BlackGhost awksed]$ cat x*> google_bak.tar.gz#合并文件

例3复制代码代码如下:

# cat> aa#从键盘录入内容到文件,回车是保存,退出Ctrl+z

4234234

234234

^Z

[4]+ Stopped cat> aa

# cat file1 file2> file#合并二个文件为一个

例4

复制代码代码如下:

# cat test.tar.gz_??> test.tar.gz#可以用cat命令将被切割的多个压缩包合并成一个

# tar-xvzf test.tar.gz#再用tar命令解压

“linux print”命令是什么

printf是linux下的格式化输出命令。

有点儿类似于python和c语言的printf命令,但是应该没有c语言的那么强大.。printf命令常用于linux下的awk编程,平时使用输出时用 echo即可。pintf命令不能接受管道符参数,也不能之直接跟文件名,但是可以跟系统命令执行的结果,如`df`或者$(cat/etc/passwd)。

一、命令格式: printf'输出类型转义符'输出内容。

二、常用输出格式:

1、%ns:输出字符串;输出n位的字符串;

2、%ni:输出整数:输出n位的整数;

3、%m.nf:输出浮点数: m位整数和 n位小数;

三、常用转义符:

1、\t水平tab键;

2、\v垂直tab键;

3、\n换行;

4、\r回车, Enter键;

5、\f清除屏幕;

6、\b输出退格键;

7、\a输出警告声音。

Linux Shell脚本系列教程:终端打印命令详解

这篇文章主要介绍了Linux Shell脚本系列教程(二):终端打印命令详解,本文着重讲解了echo终端打英printf终端打印两个打印出输出命令,需要的朋友可以参考下

终端打印

终端是交互式工具,用户可以通过它与shell环境进行交互。在终端中打印文本是大多数shell脚本和工具日常需要执行的基本任务。通过终端打印,人们可以知道系统的运行状态,这对用户来说是至关重要的。

echo终端打印

代码如下:

echo"Welcome to Bash"

echo'Welcome to Bash'

echo Welcome to Bash

以上三种方法的效果是一样的,输出内容都是“Welcome to Bash”,并在末尾添加换行符。在默认情况下,echo在每次调用后会添加一个换行符,而无需手动输入换行符。此处,建议养成一种习惯,对于其他的方法了解即可。

使用双引号时的限制

使用双引号输出字符串时,字符串内不能含有特殊字符(!),或者要在特殊字符前加转义字符/。使用单引号或者不使用引号,也可以正常输出特殊字符。

代码如下:

echo"cannot include!"#这种情况下将会报错

echo"cannot include/!"#这种情况下可以正常输出!

echo cannot include!#这种情况下可以正常输出!

echo'cannot include!'#这种情况下可以正常输出!

使用单引号的限制

在使用单引号输出字符串时,变量替换将会失效。使用双引号或者不使用引号可以正常输出被替换的变量。

代码如下:

var="abcd"

echo'1234$var'#这种情况下将输出 1234$var

echo 1234$var#这种情况下将输出 1234abcd

echo"1234$var"#这种情况下将输出 1234abcd

不使用引号时的限制

在不使用引号输出字符串的情况下,无法显示分号(;),因为分号在Bash中被用作命令定界符。使用单引号或者双引号可以输出分号。

代码如下:

echo hello;hello#第一个hello被当成字符串输出,第二个被当成命令

printf终端打印

printf使用的参数和C语言中的printf函数一样,使用引用文本或由空格分隔的参数。在printf函数中,我们可以使用格式化字符串,指定字符串的宽度、左右对齐方式等。在默认情况下,printf不会在行尾添加换行符,需要手动添加。

代码如下:

printf"Hello world"#使用引用字符

printf"%-5s%-10s%-4s/n" No Name Mark#指定宽度及左对齐方式

printf"%-5s%-10s%-4s/n" 1 Sarath 80.3456

工作原理

%s,%c,%d,%f都是格式替换字符,其所对应的参数可以置于带引号的格式字符串之后。

%-5s指明了一个格式为左对齐且宽度为5的字符串替换,-表示左对齐,若不指定对齐方式,则默认采用右对齐方式。宽度指定了保留给某个变量的字符数,如果要输出的内容宽度不足,则用空格填充,若多于指定宽度,则超出部分被丢弃。

%4.2f表示指定小数可以保留两个小数位,要注意的是4并不代表整数部分的位数,也不代表整数位和小数位的和。

注意:使用echo和printf的命令选项时,要保证选项出现在命令行内所有字符串之前,否者Bash会将选项视为另一个字符串。

补充内容

在echo中使用转义字符

在默认情况下,echo会自动在输出字符串末尾添加换行符,可以使用-n选项来忽略结尾的换行符。echo同样接受双引号字符串内的转义序列作为参数。如果需要使用转义序列,则采用echo-e“包含转义序列的字符串”这种形式,在ubuntu14.04中,不需要添加-e选项,若添加,则-e选项会被作为字符串的一部分输出。

代码如下:

echo"Hello World"#将在末尾添加换行符

echo-n"Hello Wordl"#末尾不会添加换行符

echo-e"1/t2/t3"#将输出-e 1 2 3

echo"1/t2/t3"#将输出1 2 3

打印彩色输出

在终端中生成颜色输出,有助于我们从大量文本中快速定位特定的信息,我们可以使用转义序列来实现颜色输出。

每种文本颜色都有对应的颜色码。

   代码如下:

echo-e"/e[1;31m This is red text/e[0m"

echo-e"/e[1;41m This is red background/e[0m"

#ubuntu14.04不支持这种方式改变文本或者背景颜色

阅读剩余
THE END