欢迎来到科站长!

红旗Linux

当前位置: 主页 > 操作系统 > 红旗Linux

Linux命令基础使用

时间:2024-09-23 16:36:41|栏目:红旗Linux|点击:

1.基础知识

当我们打开终端时,终端软件会为我们打开一个shell软件,这个shell会显示一个提示符,然后等待用户输入命令,类似下面这个:

然后我们就可以在这个界面中执行Linux命令了,shell做为一个命令解释器,它会解释并执行用户输入的命令。
这种shell有多种,如sh、csh、tcsh、zsh、fish、bash,而目前Linux环境中使用得最广泛的就是bash。

2.命令参数与选项 

Linux命令基本都是如下的形式:

1
cat -n temp.txt

这个命令表示输出temp.txt的内容,同时包含行号,其中,cat是命令程序,-n是选项,而temp.txt则是命令参数。
一般来说,选项用来控制命令的行为,参数用来给命令输入数据。

3.标准输入、标准输出、标准错误

命令除了参数与选项外,还有标准输入、标准输出与标准错误这3个概念,如下:

标准输入

同样是用来给命令输入数据,它与命令参数的区别是,参数一般是一个(或多个)简短的文本值,而标准输入是一个输入流,命令可从其中读取大量数据,类似java的System.in。

1
cat < temp.txt

它等效于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

标准输出

每个命令都有一个标准输出,这个类似标准输入,也是一个流,不过它是用来给命令向外部输出数据的,默认是屏幕,它类似javaSystem.out。如下:

# 命令默认写出内容到标准输出
echo hello | cat  
# 显示指定写到标准输出文件
echo hello | cat > /dev/stdout

另外,在有些命令中,也会使用-来代表标准输出文件。

标准错误 

标准错误概念上和标准输出类似,不过它是用来程序报告错误的,类似javaSystem.err

如下:

1
2
# 显示指定写到标准错误文件
echo hello | cat > /dev/stderr

4.管道

管道的作用是把命令之间连接起来,让它们之间可以传递数据,上面其实已经见过管道,如下:

1
echo hello | cat

echo程序将hello写到标准输出,| 将echo的标准输出与cat的标准输入连接起来,前面标准输出写出什么数据,| 就会将这个数据传到后面程序的标准输入,行为就像管道一样。

默认情况下,管道只能将前面的标准输出传递给后面的程序,如果想将标准错误也传递给后面程序,可以使用|&

1
2
3
4
# 标准输出与标准错误都通过管道传递给cat
echo hello |& cat
# 与上面等价
echo hello 2>&1 | cat

5.重定向

输入重定向,将文件内容重定向为程序的标准输入

1
cat < temp.txt

也是输入重定向,可即时输入多行文本,bashHere Document语法

1
2
3
4
5
cat <<EOF
hello,java
hello,bash
EOF
<<<

也是输入重定向,可即时输入一行文本,bashHere String语法

1
2
cat <<<hello
>

标准输出内容重定向到文件,覆盖写入

1
2
echo hello | cat > temp.txt
>>

标准输出内容重定向到文件,追加写入

1
2
echo hello | cat >> temp.txt
>&2

标准输出内容重定向到标准错误

1
2
3
4
echo hello >&2
# 其实也可以写成这样
echo hello 1>&2
2>&1

标准错误重定向到标准输出

1
2
3
4
# 标准输出与标准错误都重定向到app.log,注意2>&1要放在后面
echo hello | cat > app.log 2>&1
# 简写形式,与上面等价
echo hello | cat &> app.log

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下的如何快速安装Hadoop

栏    目:红旗Linux

下一篇:Linux系统能使用网银吗?Linux网银使用方法介绍

本文标题:Linux命令基础使用

本文地址:https://www.fushidao.cc/system/1099.html

广告投放 | 联系我们 | 版权申明

申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:1205677645 | 邮箱:1205677645@qq.com

Copyright © 2018-2024 科站长 版权所有冀ICP备14023439号