分享

什么是Shell? 以及文件格式解析

Turbo 2023-11-10 15:40:51 发表于 经验分享 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 264
引用:Shell是Linux/Unix的一个外壳,你理解成衣服也行。它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序。----池建强 著. “MacTalk·人生元编程
解释:
Shell 是负责与Linux系统进行文字交互的接口,不同的产品平台对Shell的命名不同,但功能都大同小异,核心即为“与系统进行文字交互”。比如:Bash (Bourne Again SHell)是一种广泛应用的Shell。我们可以视为Shell是发行版Linux中的一个功能软件,负责与Linux内核交互。
Shell 的特点:
  • 使用Shell:
  1. <div class="highlight" style="margin-top: 1em; margin-bottom: 1em;" helvetica="" neue",="" "pingfang="" sc",="" "microsoft="" yahei",="" "source="" han="" sans="" "noto="" cjk="" "wenquanyi="" micro="" hei",="" sans-serif;="" font-size:="" medium;"=""><pre style="overflow-wrap: initial; background: rgb(245, 245, 245); border-radius: 4px; font-size: 0.9em; overflow: auto; padding: calc(0.888889em); word-break: initial;"><code class="language-bash" style="background-color: inherit; border-radius: 0px; font-family: Menlo, Monaco, Consolas, " andale="" mono",="" "lucida="" console",="" "courier="" new",="" monospace;="" font-size:="" inherit;"="">name:~$</code></pre></div><p data-pid="_z2StwGF" style="margin-top: 1.4em; margin-bottom: 1.4em;" helvetica="" neue",="" "pingfang="" sc",="" "microsoft="" yahei",="" "source="" han="" sans="" "noto="" cjk="" "wenquanyi="" micro="" hei",="" sans-serif;="" font-size:="" medium;"=""></p>
复制代码

上面是我们打开Shell后经常看到的命令提示符

name:主机名
~:路径名 (这里是值在home)
$: 表示身份不是root用户(root用户的标识为#)

2. Shell 基于空格分割命令并进行解析,执行的第一个单词代表程序,将后续的单词作为程序可以访问的参数:
  1. <div class="highlight" style="margin-top: 1em; margin-bottom: 1em;" helvetica="" neue",="" "pingfang="" sc",="" "microsoft="" yahei",="" "source="" han="" sans="" "noto="" cjk="" "wenquanyi="" micro="" hei",="" sans-serif;="" font-size:="" medium;"=""><pre style="overflow-wrap: initial; background: rgb(245, 245, 245); border-radius: 4px; font-size: 0.9em; overflow: auto; padding: calc(0.888889em); word-break: initial;"><code class="language-text" style="background-color: inherit; border-radius: 0px; font-family: Menlo, Monaco, Consolas, " andale="" mono",="" "lucida="" console",="" "courier="" new",="" monospace;="" font-size:="" inherit;"="">name:~$ echo $PATH</code></pre></div><p data-pid="0nsylwDx" style="margin-top: 1.4em; margin-bottom: 1.4em;" helvetica="" neue",="" "pingfang="" sc",="" "microsoft="" yahei",="" "source="" han="" sans="" "noto="" cjk="" "wenquanyi="" micro="" hei",="" sans-serif;="" font-size:="" medium;"=""></p>
复制代码

echo: 程序

$PATH: 参数

3. Shell 是如何找到程序并执行的?
shell在基于$PATH路径搜索到的目录中寻找程序,按照顺序寻找,执行第一个找到相同名字的程序
(技巧:可以使用which程序来检查具体是用的哪一个,也可以直接指定需要执行程序的路径来执行程序)
  1. name:~$ which echo
复制代码


(注意,对于echo My Photo这种是错误的,应该用反引号 \ 来标记空格!即My\ Photo! 或者用单/双引号包裹)
4. 绝对路径和相对路径:
以 / 开头的为绝对路径,其他的都是相对路径,. 表示当前目录路径,..表示上一层目录路径,当运行一个程序时,如没有指定运行路径,则会在当前目录中运行。

5. 命令标记:
大多数命令接受标记和选项(带值标记),以 -开头
  1. name:~$ ls -l
复制代码


-l 指使用长格式打印

6. 文件格式解析 (重要!!):
  1. <code class="language-text" style="background-color: inherit; border-radius: 0px; font-family: Menlo, Monaco, Consolas, " andale="" mono",="" "lucida="" console",="" "courier="" new",="" monospace;="" font-size:="" inherit;"="">name:~$ ls -l /home #显示在home目录下的文件信息
  2. drwxr-xr-x 1 name users</code>引用:Shell是Linux/Unix的一个外壳,你理解成衣服也行。它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序。----池建强 著. “MacTalk·人生元编程
复制代码

解释:
Shell 是负责与Linux系统进行文字交互的接口,不同的产品平台对Shell的命名不同,但功能都大同小异,核心即为“与系统进行文字交互”。比如:Bash (Bourne Again SHell)是一种广泛应用的Shell。我们可以视为Shell是发行版Linux中的一个功能软件,负责与Linux内核交互。
Shell 的特点:
  • [/        discuz_code_4        ][/        discuz_code_3        ][/        discuz_code_2        ][/        discuz_code_1        ][/        discuz_code_0        ][/*][/*]

试读已结束,请付费阅读全文。

  本文只能试读34%,付费后可阅读全文。 

版权说明:论坛帖子主题均由合作第三方提供并上传,若内容存在侵权,请进行举报

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系在线客服