【missing-semester】The shell

文章目录

    • shell 是什么
    • shell 怎么用
      • 执行基本程序
    • Shell中的路径
    • 重定向输入输出
    • 管道pipe
    • root用户的使用
    • 课后练习
    • 参考资料

我的操作环境:Windows11下的WSL2(Ubuntu20.04),之后的所有操作都是基于这个前提的

shell 是什么

命令行操作语言,文本界面:The Shell
功能:以半结构化的方式运行程序(重定向输入、输出)
Bourne Again Shell,即bash

shell 怎么用

windows+rcmd,打开终端,wsl进入Linux子系统
image.png
当前用户(dy)在名为"DESKTOP-K1E7FOE"的计算机上,位于"~/classes/missing-semester"目录下
~指home目录,$表示当前用户不是root,root用户的提示符是#

执行基本程序

date:打印当前日期时间
echo:打印输入
image.png
注意
shell是通过空格来分割解析命令,将分割结果中第一个单词作为待运行的程序,将后续单词作为程序参数
如果提供的参数里包含空格或其他特殊字符,需要使用''""引用该参数,或者使用\将空格或特殊字符进行转义
image.png
说明:这里shell就将"Hello World"作为mkdir的两个参数,于是新建了两个文件夹
shell的环境变量
$PATH即shell接收命令后应该搜索程序的目录
which 程序名打印出给定程序名执行的文件
image.png

Shell中的路径

/表示文件系统中的根目录,以/开头的路径是绝对路径,其他的为相对路径
pwd:打印当前路径
cd:切换路径
.:表示当前目录
..:父级目录
image.png
image.png
ls:展示目录内容,默认展示当前目录
--help:当前命令的使用说明
image.png
image.png
ls-l打印结果说明:
第一个d说明当前行展示的为一目录
紧接着的三个字母组每个组由三个字母组成(rwx),分别指文件所有者,所属组(用户)和其他人对当前文件拥有的权限
-表示没有指定权限
w:写权限,修改该文件夹,添加或者删除其中的文件
x:执行权限,针对文件可执行,针对文件夹即是搜索。举个例子,当一个用户想要进入一个文件夹时,他必须拥有该文件夹及其父文件夹上的x搜索权限
r:读权限,针对文件夹即是使用ls命令等展示文件夹内容

mv:修改文件名/移动文件
image.png

cp:复制文件
image.png

mkdir:新建一个文件夹
image.png

man 程序名:查询程序的使用手册

重定向输入输出

shell中每个程序都有一个input stream和一个output stream,默认情况下input和output均为terminal,即从键盘获得input,在屏幕上打印output
使用重定向运算符
> file:将output重定向到file,>>表示追加内容
< file:将input重定向到file
image.png
cat:连结文件,接收文件名为参数,将文件内容打印到其output stream

管道pipe

|
pipe的亮点:使用一个程序链,将shell中一个program的output作为另一个program的input
image.png

说明:
第一个命令将根目录下ls -l的最后一行打印出来了
第二个命令将hitwh.edu.cnresponse的content-length字段内容打印出来了

root用户的使用

sudo su:输入密码切换为root用户进行操作
在这一部分的讲解中,the teacher使用root用户修改挂载在/sys下系统文件修改如屏幕亮度的硬件内核参数。但由于Windows子系统的Linux不提供此功能,这里将不进行操作演示
image.png
说明:这条命令不能执行的原因在于程序连接是由shell来做的,而非某个程序。这条命令在shell看来是将sudo echo 3的output写到brightness中,但在写入之前shell需要打开brightness文件,打开文件时,shell的权限是当前的user不是root因而无法打开
image.png
说明:tee:读取input显示在终端和写入指定的文件中,这里即是将echo的output打印在屏幕上并输出到brightness文件中

课后练习

  1. 查看当前使用的shell
    image.png
  2. /tmp文件夹下创建一个名为missing的新文件夹
    image.png
  3. 查看touch命令的使用
    image.png
  4. 使用 touchmissing文件夹下创建一个名为semeter的新文件
    image.png
  5. 将下面的内容写入该文件,一次写一行
#!/bin/sh
curl --head --silent https://missing.csail.mit.edu

image.png
不知道用cat怎么处理第一行,直接vim
ps:自己开始的时候用错了命令,cat是将指定文件内容输出,echo才能将指定内容输出
正确的姿势:
image.png
说明
bash中的单引号(‘’)和双引号(“”)是不同的

单引号('):在单引号内的内容会被当作纯文本处理,不会对其中的变量、命令等进行解析
双引号("):在双引号内的内容会被当作命令或变量来解析、

举个例子:
image.png

  1. 输入semester脚本路径以执行该文件
    image.png
    通过ls -l查询发现其没有x权限
  2. 使用sh解释器执行该semester文件
    image.png
  3. 使用man查看chmod命令的使用
    image.png
  4. 使用chmod命令修改semester文件的模式位使得能够用./semester来执行
    这里采用的方案是chmod += rx semester即给所有用户添加读r和执行x的权限
    另外还可以使用 chmod 555 semester达到同样的效果

在Linux系统中,文件或目录的权限通常以三位八进制数表示,每一位数字分别代表所有者、所属组和其他用户的权限

image.png

Shebang: #!这个符号标识了当前文件应该用什么解释器执行,比如这里的Shebang标识#!bin/sh,则shell知道应该去找到sh执行此脚本,并将此脚本作为sh程序的input,而此Shebang行会被interpreter忽略,因为#表示注释

  1. 使用 |> ,将 semester 文件输出的最后更改日期信息,写入主目录下的 last-modified.txt 的文件中
    我的失败操作
    image.png
    别人的正确解法
    image.png
  2. 写一段命令来从 /sys 中获取笔记本的电量信息
    image.png

参考资料

  1. MIT-Missing-Semester chapter1讲义
  2. MIT-Missing-Semester chapter1学习视频
  3. Shebang
  4. MIT-Missing-Semester chapter1 exercise solution

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/178006.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Harmony SDK API 版本 与 Harmony OS 版本对照表,及如何查看鸿蒙手机Harmony SDK Api 版本

Harmony SDK API 版本 与 Harmony OS 版本对照表 Harmony OSHarmony SDK APIHarmony 4.09Harmony 3.19Harmony 3.08Harmony 3.0 pre7Harmony 2.2.06Harmony 2.1.05Harmony 2.04 具体到真机上可能会有差异&#xff0c;如我的手机OS版本是2.0&#xff0c;按照上面表应该是4&…

循环链表1

循环链表的结构设计 循环链表就是——链表的头和尾连在一起 即最后一个数据&#xff08;尾巴结点&#xff09;的next由单链表的NULL&#xff0c;变为现在循环链表的存储头结点plist的地址200&#xff0c;尾巴结点指向头结点 现在来建立循环链表clist 先写结构设计 现在看对于…

动态获取填充表格数据时的特定值的赋值

1、如图 <el-tablev-loading"loading":data"columnList"bordertooltip-effect"dark":size"tableSize":height"tableHeight"style"width: 100%; margin: 15px 0"><el-table-column type"selection…

上机实验三 图的最小生成树算法设计 西安石油大学数据结构

二叉树设计 实验名称&#xff1a;二叉树设计 &#xff08;1&#xff09;实验目的&#xff1a; 1&#xff09; 掌握二叉树的逻辑结构。 2&#xff09; 掌握二叉树的二叉链表存储结构&#xff1b; 3&#xff09; 掌握基于二叉链表存储的二叉树的遍历等操作的实现。 &#x…

windows版:TensorRT安装教程

查看版本对应cuda与TensorRT&#xff1a;https://blog.csdn.net/weixin_41540237/article/details/131589929 TensorRT 下载地址&#xff1a;https://developer.nvidia.com/nvidia-tensorrt-7x-download cudnn下载地址&#xff1a;https://developer.nvidia.com/rdp/cudnn-ar…

CV计算机视觉每日开源代码Paper with code速览-2023.11.13

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构&#xff1a;Transformer】PolyMaX: Gener…

【蓝桥杯软件赛 零基础备赛20周】第3周——填空题

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 文章目录 00. 2023年第14届参赛数据0. 上一周答疑1. 填空…

ICC2/innovus merge gds

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 calibre merge gds的方法示例参考往期文章: Calibre Merge GDS ICC2: write_gds -merge_files "std.gds sram.gds io.gds ip.gds ... ..." innovus: streamout -…

Ubuntu 搜狗输入法无法输入中文解决方案(不需要重装,不需要重启服务器)

Ubuntu 搜狗输入法突然无法输入中文&#xff0c;上午还好用&#xff0c;下午就不好用了&#xff0c;直接上解决方案 1.终端输入pidof fcitx找到搜狗的进程&#xff0c;如下图红框中的就是进程 2.直接杀掉这个进程 3.其实到第二步&#xff0c;如果搜狗输入法自动重启了&#xf…

【案例】由coredump引起的思考:程序的加载流程

背景 小米项目的同事&#xff0c;最近遇到了一个crash问题&#xff0c;困扰较久&#xff0c;向我请求帮助。&#xff08;其实是客户指定要求我来分析这个问题&#xff0c;该项目之前是由我负责的&#xff0c;帮客户解决很多较多crash问题。估计是实力得到了客户认可吧&#xff…

OSG编程指南<一>:OpenSceneGraph 概述

1. OpenSceneGraph 简介 OSG 是一个开源的场景图形管理开发库,主要为图形图像应用程序的开发提供场景管理和图形渲染优化功能。它使用可移植的 ANSI C++编写,并使用已成为工业标准的 OpenGL 底层渲染 API。因此,OSG 具备跨平台性,可以运行在Windows、Mac OS X 和大多数类型…

Power Apps-使用power Automate流

创建&#xff1a;Power Automate-创建power Apps使用的流-CSDN博客 打开Power Apps&#xff0c;创建页面&#xff0c;添加三个输入框&#xff08;分别是换算前单位、换算后单位、货币数&#xff09;&#xff0c;和一个文本框&#xff08;输出结果&#xff09;以及一个按钮 在…