【shell】shell的输入与输出

希望各位不要白piao,点个赞或者刷个评论再走,还有【禁止转载】我个人觉得写的比较细,话不多说讲什么我会先列出来,如果会了可以忽略本文章,省下时间去学习别的知识~
本文讲三件事:shell的输入输出,管道以及文件的重定向

shell输入输出

echo这个命令大家应该很熟悉,如果不熟悉百度各种各样的资源,在这里你就可以把它理解成print与System.out.println(),本意上是没有什么区别的。但是shell的语法上可以用echo以及|(管道命令)进行值得传递(echo显示文本行或变量,或者把字符串输入到文件)

echo [option] string

这个option是可以是-e或者 -n。
-e 解析转义字符 -n 不回车换行。
默认情况echo回显的内容后面跟一个回车换行。

echo -e "hello\n\n"
echo "hello\n\n"
echo "hello"
echo -n "hello"    

在这里我多嘴一句,有些人不知道怎么查命令的使用方法天天在那百度,其实shell相对来说真的很简单,文档也特别的全,我也不建议你们天天去百度,指不定哪个人就写错了就把你误导了,最简单的方式也是最好的办法有两种:

  1. 通过man 你想要查询的命令比如 man echo
    在这里插入图片描述
  2. 通过你要查询的命令 --help比如ls --help

管道|

可以通过管道把一个命令的输出传递给另一个命令做输入。管道用竖线表示。

# 把myfile这个文件的每一行实时传送给more玲玲
cat myfile | more
# 把ls -l的命令的结果传给 grep命令
ls -l | grep "myfile"
# grep -v message 是过滤掉包含message的行
df -k | awk '{print $1}' | grep -v "文件系统")
# df -k 查看磁盘空间,找到第一列,去除“文件系统”,并输出
# tee命令把结果输出到标准输出,另一个副本输出到相应文件。
df -k | awk '{print $1}' | grep -v "文件系统" | tee a.txt
# tee -a a.txt表示追加操作。
df -k | awk '{print $1}' | grep -v "文件系统" | tee -a a.txt
# tee 命令可以将结果同时输入到多个文件中
cat "文件名" | tee a.txt b.txt
# tee命令可以将结果一次输出两次或者多次
cat  "文件名" | tee - a.txt  
cat  "文件名" | tee -b.txt

我已经在开头的地方说明了怎么去看官方文档,大家一定要学着去看,如果你不是运维其实你涉及不到那么多的命令,不过你想当高T尤其是在工程代码这个领域,在你通往高T的这段路这些东西必会的。以后遇到什么不懂得命令一定要先强迫自己通过官方文档去理解这些含义,是在搞不懂再去看大家写好的东西。肯定有的人会说这不是浪费时间么?那这就由你选择,你想要的是能力还是永远添着人家写好的东西。

文件重定向

首先要知道>>>以及<<<的区别,大区别是一个大于号或者小于号代表覆盖之前的文本,两个大于号和小于号表示不覆盖之前的文本,只是追加文本。第二个区别就是数据流动方向,数据总是从大口向尖尖的那个口进行流动的
至于下文说到的标准输出,错误输出,大家感兴趣可以去查一下,早期阶段用不到,我后续的文章会把这块单独拉出来讲。对于文件重定向前期只需要掌握我说的两点就好了,如果不是运维我觉得错误输出重定向一般真用不到。(毕竟我也是工程系程序员出身)
cmd > file 把标准输出重定向到新文件中
cmd >> file 追加
cmd > file 2>&1 标准出错也重定向到1所指向的file里
cmd >> file 2>&1
cmd < file1 > file2 输入输出都定向到文件里
cmd < &fd 把文件描述符fd作为标准输入
cmd > &fd 把文件描述符fd作为标准输出
cmd < &- 关闭标准输入

发布了25 篇原创文章 · 获赞 25 · 访问量 2247

猜你喜欢

转载自blog.csdn.net/weixin_43071838/article/details/104569406