Linux命令基础使用
1.基础知识
当我们打开终端时,终端软件会为我们打开一个shell软件,这个shell会显示一个提示符,然后等待用户输入命令,类似下面这个:
然后我们就可以在这个界面中执行Linux命令了,shell做为一个命令解释器,它会解释并执行用户输入的命令。
这种shell有多种,如sh、csh、tcsh、zsh、fish、bash,而目前Linux环境中使用得最广泛的就是bash。
2.命令参数与选项
Linux命令基本都是如下的形式:
这个命令表示输出temp.txt的内容,同时包含行号,其中,cat是命令程序,-n是选项,而temp.txt
则是命令参数。
一般来说,选项用来控制命令的行为,参数用来给命令输入数据。
3.标准输入、标准输出、标准错误
命令除了参数与选项外,还有标准输入、标准输出与标准错误这3个概念,如下:
标准输入
同样是用来给命令输入数据,它与命令参数的区别是,参数一般是一个(或多个)简短的文本值,而标准输入是一个输入流,命令可从其中读取大量数据,类似java的System.in。
它等效于cat temp.txt
,但本质却是不同的,cat temp.txt
是cat这个程序内部会去读取temp.txt
文件的内容,cat是知道它在读取temp.txt
的,而cat < temp.txt是cat这个程序在读取标准输入中的数据,至于标准输入中的数据从何而来,cat是不知道的。
同时,Linux命令中也经常使用 - 这个特殊的文件名来表示标准输入文件,如下四个命令是等效的:
# cat不指定输入文件时,默认就读取标准输入 cat # cat认为 - 代表标准输入文件 cat - # /dev/stdin是具体的标准输入文件 cat /dev/stdin # 指定读取0(标准输入)这个文件描述符 cat <&0
标准输出
每个命令都有一个标准输出,这个类似标准输入,也是一个流,不过它是用来给命令向外部输出数据的,默认是屏幕,它类似java
的System.out
。如下:
# 命令默认写出内容到标准输出 echo hello | cat # 显示指定写到标准输出文件 echo hello | cat > /dev/stdout
另外,在有些命令中,也会使用-来代表标准输出文件。
标准错误
标准错误概念上和标准输出类似,不过它是用来程序报告错误的,类似java
的System.err
。
如下:
4.管道
管道的作用是把命令之间连接起来,让它们之间可以传递数据,上面其实已经见过管道,如下:
echo
程序将hello写到标准输出,| 将echo的标准输出与cat的标准输入连接起来,前面标准输出写出什么数据,| 就会将这个数据传到后面程序的标准输入,行为就像管道一样。
默认情况下,管道只能将前面的标准输出传递给后面的程序,如果想将标准错误也传递给后面程序,可以使用|&
5.重定向
输入重定向,将文件内容重定向为程序的标准输入
也是输入重定向,可即时输入多行文本,bash
的Here Document
语法
也是输入重定向,可即时输入一行文本,bash
的Here String
语法
标准输出内容重定向到文件,覆盖写入
标准输出内容重定向到文件,追加写入
标准输出内容重定向到标准错误
标准错误重定向到标准输出
6.管道与重定向揭秘
程序中使用文件描述符来引用一个文件,类似java中的File对象,但它是一个数字,又有点像指针,这个指针指向具体的文件。
而linux中,0就是标准输入的文件描述符,1就是标准输出的文件描述符,2就是标准错误的文件描述符
重定向本质是改变文件描述符的指向,如下:
1、执行cat命令后,在另一个shell中查看此cat的文件描述符,发现1标准输出指向/dev/pts/1。
2、结束cat,我们再执行cat > temp.txt,在另一个shell中查看此cat的文件描述符,发现1标准输出这个文件描述符指向了/tmp/temp.txt,所以,懂了么~
管道本质是创建一个临时管道文件,将前面程序的1标准输出指向这个临时文件,后面程序的0标准输入也指向这个临时文件,如下:
1、执行cat|cat命令
2、不要退出,在另一个shell中查看这两个cat的文件描述符,如下:
注:shell会默认为管道符 | 创建临时管道文件,如果有需要你也可以通过mkfifo显示创建管道文件。
注:只执行一个cat后,命令在等待输入流的数据,所以看起来卡住了,这时可以使用Ctrl + d来退出,这和Ctrl + c是不同的,Ctrl + d作用类似于EOF信号,而Ctrl + c是中断了进程。
栏 目:红旗Linux
下一篇:Linux系统能使用网银吗?Linux网银使用方法介绍
本文标题:Linux命令基础使用
本文地址:https://www.fushidao.cc/system/1099.html
您可能感兴趣的文章
- 09-23如何在红旗Linux系统redflag6.0上安装QQ
- 09-23更改红旗Linux6.0sp1系统分辨率让看起来更舒服
- 09-23红旗Linux上配置FTP 允许root用户登录
- 09-23Linux系统能使用网银吗?Linux网银使用方法介绍
- 09-23Linux命令基础使用
- 09-23Linux下的如何快速安装Hadoop
阅读排行
推荐教程
- 09-23Linux下的如何快速安装Hadoop
- 09-23更改红旗Linux6.0sp1系统分辨率让看起来更舒服
- 09-23Linux命令基础使用
- 09-23如何在红旗Linux系统redflag6.0上安装QQ
- 09-23Linux系统能使用网银吗?Linux网银使用方法介绍
- 09-23红旗Linux上配置FTP 允许root用户登录