linux系统terminal输入一个命令到输出结果整个过程系统做了什么
Posted 狼太白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统terminal输入一个命令到输出结果整个过程系统做了什么相关的知识,希望对你有一定的参考价值。
当你在Linux终端输入一个命令并按下回车键时,系统将执行以下操作:
-
Shell解析: 终端窗口将命令传递给Shell,Shell将解析命令并确定需要执行的程序。在解析过程中,Shell将检查命令的拼写是否正确,并检查它是否存在于系统的可执行路径中。
-
创建子进程:Shell会创建一个子进程来运行命令。子进程是一个独立的执行环境,它将从父进程中继承一些属性,如环境变量和文件描述符。
-
执行命令:子进程开始执行命令。具体来说,它将加载程序并分配所需的系统资源(如内存和CPU时间),并将控制权转移到程序的代码。
-
输出结果:程序将输出结果,这些结果将被发送回终端窗口并显示给用户。如果命令需要读取文件或从网络下载数据,子进程将执行这些操作。
-
子进程终止:一旦命令完成执行并输出结果,子进程将终止。在终止之前,它将释放所占用的系统资源,并向Shell返回一个退出状态码,表示命令的执行结果。
-
Shell处理:一旦子进程终止,Shell将接收到退出状态码并决定如何继续执行。如果命令执行成功,Shell将显示提示符并等待下一个命令。如果命令执行失败,Shell可能会显示一条错误消息并等待下一个命令。
Linux学习笔记 -- stdin/stdout 重定向
输入/输出重定向
Linux系统通常从一个叫标准输入的地方读取输入并且将一个命令的结果以写入到标准输出反馈给我们;默认情况下,这也是我们使用的终端(命令行)。如果我们想改变输入和输出的方式,就需要使用重定向。通常重定向命令有如下几种方式:
命令 | 说明 |
---|---|
command > file | 将输出重定向到 file。 |
command < file | 将输入重定向到 file。 |
command >> file | 将输出以追加的方式重定向到 file。 |
n > file | 将文件描述符为 n 的文件重定向到 file。 |
n >> file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n >& m | 将输出文件 m 和 n 合并。 |
n <& m | 将输入文件 m 和 n 合并。 |
<< tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
需要注意的是:
文件描述符 0 通常是标准输入(STDIN)
1 是标准输出(STDOUT)
2 是标准错误输出(STDERR)
例1:输出重定向
!/bin/bash echo "stdout redirection" > myfile #将标准输出 "stdout redirection" 重定向的文件 “myfile” echo "stdout redirection again" >> myfile # ">>" 表示将重定向的内容附加到文件,不会覆盖掉之前的内容
例2:输入重定向
!/bin/bash echo < myfile #将输出“myfile” 文件的内容
Here Document
它的作用是将两个 EOF 之间的所有内容当成一个整体文本进行处理,语法:
command << EOF
document
EOF
举例:
#!/bin/bash cat << EOF my name is Jim, I am 22 years old!! EOF
output: my name is Jim, I am 22 years old!!
以上是关于linux系统terminal输入一个命令到输出结果整个过程系统做了什么的主要内容,如果未能解决你的问题,请参考以下文章