【Missing Semester】课程概览与Shell
2022/2/18 7:12:04
本文主要是介绍【Missing Semester】课程概览与Shell,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文为计算机教育中缺失的一课 The Missing Semester of Your CS Education 笔记
Shell
Shell 是什么:
- Shell(计算机壳层)。
- “为使用者提供操作界面” 的软件(command interpreter,命令解析器)。
- 接收用户命令,然后调用相应的应用程序。
Shell 的种类:
-
zsh:很多人的 Mac 中会使用 zsh 而不是 bash,一大半是因为 oh-my-zsh 这个配置集。兼容 bash,有自动补全等好用的功能。
-
sh:全称 Bourne shell,由 AT&T 公司的 Steve Bourne开发。sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh,是第一个流行的 shell。
-
csh:sh 之后另一个广为流传的 shell,由柏克莱大学的 Bill Joy 设计的,语法有点类似 C 语言,所以才得名为 C shell ,简称为 csh。
-
tcsh:tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
-
ash:一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,与 bash 完全兼容。
-
bash:由 GNU 组织开发,保持了对 sh 的兼容性,是各种 Linux 发行版默认配置的 shell。
终端
打开终端的几种方法(Mac):
- 启动台 - 其它 - 终端。
- 选择一个文件夹 - 右键 - 新建位于文件夹位置的终端窗口
- 选择一个文件夹 - option command X(自定义快捷键)
- 系统偏好设置 - 键盘 - 快捷键 - 服务 - 文件和文件夹 - 新建位于文件夹位置的终端窗口
终端样式设置:
- 待补充
第一个命令:
echo
:打印。date
:显示系统时间。cat
:打印文件内容。
bogon:Missing Semester wangxinyuan$ echo "Hello World" Hello World bogon:Missing Semester wangxinyuan$ date 2022年 2月17日 星期四 10时55分59秒 CST # 查看当前使用的Shell bogon:Missing Semester wangxinyuan$ echo $SHELL /bin/bash # 查看安装的Shell bogon:Missing Semester wangxinyuan$ cat /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh
命令是如何执行的:
当你在 Shell 中执行命令时,实际上是在执行一段 Shell 可以解释执行的简短代码。如果你要求 Shell 执行某个指令,但是该指令并不是 Shell 所了解的编程关键字,那么它会去咨询环境变量 $PATH
,它会列出当 Shell 接到某条指令时,进行程序搜索的路径。
bogon:Missing Semester wangxinyuan$ echo $PATH /usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/3.0.0/bin:/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/3.0.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Mono.framework/Versions/Current/Commands # 定位echo bogon:Missing Semester wangxinyuan$ which echo /bin/echo bogon:Missing Semester wangxinyuan$ which ruby /usr/bin/ruby # 等价于echo “Hello World” bogon:Missing Semester wangxinyuan$ /bin/echo "Hello World" Hello World
文件
路径:
pwd
:显示当前工作目录。cd
:切换工作目录。.
表示当前目录。..
表示上级目录。cd
:Go to the home directory of the current user。cd -
:Go to the previously chosen directory。- 如果某个路径以
/
开头,那么它是一个绝对路径,其他的都是相对路径 。
ls
:查看指定目录下包含哪些文件。
bogon:Missing Semester wangxinyuan$ pwd /Users/wangxinyuan/Desktop/Missing Semester # 绝对路径 bogon:Missing Semester wangxinyuan$ cd /Users/wangxinyuan/Desktop # . bogon:Desktop wangxinyuan$ cd ./Missing\ Semester # .. bogon:Missing Semester wangxinyuan$ cd .. # 相对路径 bogon:Desktop wangxinyuan$ cd "Missing Semester" # previously bogon:Missing Semester wangxinyuan$ cd - /Users/wangxinyuan/Desktop # home bogon:Desktop wangxinyuan$ cd bogon:~ wangxinyuan$ ls Applications Library Pictures a.out bt.plist Desktop Movies Public ap.plist history.plist Documents Music PycharmProjects apps.plist Downloads OneDrive Users brew_install
一些文件操作命令:
mkdir
:新建文件夹。touch
:新建文件或更改文件访问修改时间。rm
:删除文件或文件夹。mv
:移动或重命名文件或文件夹。cp
:拷贝文件或文件夹。
# 在当前文件夹创建"名未命文件夹" bogon:tmp wangxinyuan$ mkdir 名未命文件夹 # 在"名未命文件夹"中新建"笔记文件" bogon:tmp wangxinyuan$ touch ./名未命文件夹/笔记.txt # 删除"名未命文件夹"中"笔记文件" bogon:tmp wangxinyuan$ rm ./名未命文件夹/笔记.txt # 删除"名未命文件夹" bogon:tmp wangxinyuan$ rm -r 名未命文件夹 # 将"missing文件夹"中"semester.txt文件"移动到"名未命文件夹" bogon:tmp wangxinyuan$ mv missing/semester.txt 名未命文件夹 # 将"名未命文件夹"文件夹中"semester.txt文件"移动到"missing文件夹"并重命名为"hhh.txt" bogon:tmp wangxinyuan$ mv 名未命文件夹/semester.txt missing/hhh.txt # 将"missing文件夹"中"hhh.txt文件"复制到"名未命文件夹" bogon:tmp wangxinyuan$ cp missing/hhh.txt 名未命文件夹
查看帮助信息:
man 程序名
,如man ls
,按下键盘q
退出。- 一个神秘网站:>tldr_
流
流的重定向:
< file
:将程序的输入流重定向到文件。> file
:将程序的输出流重定向到文件。
>
与 >>
:
- 当 out.txt 不存在时,
>
与>>
都会默认创建 out.txt,并将Hello World
保存到 out.txt 中。 - 当 out.txt 存在时,
>
会将 out.txt 中的内容清空,并将Hello World
存入;而>>
会将Hello World
追加保存到 out.txt 的末尾。
bogon:tmp wangxinyuan$ echo "Hello World" > out.txt bogon:tmp wangxinyuan$ cat out.txt Hello World # out.txt中内容如下 # Hello World bogon:tmp wangxinyuan$ echo "Hello WXY" >> out.txt # out.txt中内容如下 # Hello World # Hello WXY bogon:tmp wangxinyuan$ echo "hhh" > out.txt # out.txt中内容如下 # hhh
|
操作符:
- 将一个程序的输出和另外一个程序的输入连接起来
bogon:tmp wangxinyuan$ ls -l total 8 drwxr-xr-x 3 wangxinyuan staff 96 2 17 14:25 missing -rw-r--r--@ 1 wangxinyuan staff 251 2 17 14:44 out.txt drwxr-xr-x 4 wangxinyuan staff 128 2 17 14:27 名未命文件夹 bogon:tmp wangxinyuan$ ls -l | tail -n1 drwxr-xr-x 4 wangxinyuan staff 128 2 17 14:27 名未命文件夹
根用户
-
根用户(root user)几乎不受任何限制,他可以创建、读取、更新和删除系统中的任何文件。
-
sudo
命令:以根用户的身份执行一些操作。 -
Mac 没有
/sys
,咕咕咕~
课后练习
5 ~ 8 题:
# 创建exercise bogon:tmp wangxinyuan$ touch exercise # 写入exercise bogon:tmp wangxinyuan$ echo '#!/bin/sh' >> exercise bogon:tmp wangxinyuan$ echo "curl --head --silent https://baidu.com" >> exercise # 打印exercise内容 bogon:tmp wangxinyuan$ cat exercise #!/bin/sh curl --head --silent https://baidu.com # 使用./exercise执行exercise,失败 bogon:tmp wangxinyuan$ ./exercise -bash: ./exercise: Permission denied # 使用sh执行exercise bogon:tmp wangxinyuan$ sh exercise HTTP/1.1 302 Moved Temporarily Server: bfe/1.0.8.18 Date: Thu, 17 Feb 2022 07:20:58 GMT Content-Type: text/html Content-Length: 161 Connection: keep-alive Location: http://www.baidu.com/ # 失败原因:没有执行权限 bogon:tmp wangxinyuan$ ls -l exercise -rw-r--r-- 1 wangxinyuan staff 49 2 17 15:20 exercise # 使用chmod修改权限 bogon:tmp wangxinyuan$ chmod a+rx exercise bogon:tmp wangxinyuan$ ls -l exercise -rwxr-xr-x 1 wangxinyuan staff 49 2 17 15:20 exercise # 使用./exercise执行exercise,成功 bogon:tmp wangxinyuan$ ./exercise HTTP/1.1 302 Moved Temporarily Server: bfe/1.0.8.18 Date: Thu, 17 Feb 2022 07:21:56 GMT Content-Type: text/html Content-Length: 161 Connection: keep-alive Location: http://www.baidu.com/
参考
- 简书:shell有哪些?Zsh和Bash的区别是什么?
- 一个神秘网站:>tldr_
- Bash 文档
这篇关于【Missing Semester】课程概览与Shell的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-13怎么通过 JavaScript 或其他编程语言来实现监听屏幕高度变化功能?-icode9专业技术文章分享
- 2024-11-12聊聊我们那些年用过的表达式引擎组件
- 2024-11-12让项目数据更有说服力:五款必备数据可视化管理工具推荐
- 2024-11-12人到一定年纪,要学会远离多巴胺
- 2024-11-12解读:精益生产管理的目的是什么?如何操作?
- 2024-11-12Sku预研作业
- 2024-11-12文心一言API密钥:分步申请指南
- 2024-11-12初学者指南:轻松掌握后台交互
- 2024-11-12从零开始学习:封装基础知识详解
- 2024-11-12JSON对象入门教程:轻松掌握基础用法