MIT-Missing Semester01-课程概述 + Shell
这节课来自MIT的The Missing Semester of Your CS Education (2020),旨在教会学生如何更有效地使用计算机工具,以改善开发工作流程。
课程亮点
本课程将涵盖广泛的工具和技术,帮助学生更高效地工作。重点不仅仅是软件开发,还包括如何将计算机作为学习和研究的工具。关键点包括:
- Shell 和终端基础:课程将介绍如何使用Shell和终端与计算机交互,逐步掌握更高级的工具和技术。
- 命令行的重要性:命令行工具和基于文本的界面能够提供极大的灵活性和效率,课程对此进行了重点强调。
Shell 概述
Shell提供了一个基于文本的接口,用户可以通过输入命令来执行程序。以下是一些简单的命令示例:
1 | # 输出文本 |
命令参数与参数传递
命令可以接受参数和选项来改变其行为,例如:
1 | echo "这是一个测试" |
对于包含空格的参数,可以使用引号确保参数作为一个整体被传递:
1 | echo "This is a string with spaces" |
环境变量和 PATH
Shell具有内置的环境变量,其中最重要的是PATH
变量。PATH
定义了Shell查找可执行程序的路径。例如,当你输入命令时,Shell会在PATH
中定义的目录中寻找该命令的可执行文件。
要查看当前的PATH
变量,可以使用以下命令:
1 | echo $PATH |
文件路径
在命令行操作中,理解文件路径非常重要。路径可以是绝对路径或相对路径:
1 | pwd |
目录浏览与管理
使用cd
命令可以更改当前工作目录:
1 | cd /home/user/documents |
查看当前目录的文件:
1 | ls |
一些特殊符号可以简化目录导航:
~
表示用户的主目录,例如:/home/user
-
表示上一个目录
文件与目录权限
理解文件和目录权限是非常重要的,这关系到文件的访问权限以及系统安全。Linux中的权限分为三种用户组:
- 文件拥有者
- 文件所属组
- 其他用户
权限分为读、写、执行三种类型。例如,要查看文件的权限,可以使用以下命令:
1 | ls -l |
移动与复制文件
使用mv
和cp
命令可以分别移动和复制文件。例如:
-
移动文件:
1
mv file.txt /new/directory/
-
复制文件:
1
cp file.txt /new/directory/
文件和目录的创建与删除
创建新目录使用mkdir
命令:
1 | mkdir new_directory |
删除文件和目录使用rm
命令:
-
删除文件:
1
rm file.txt
-
递归删除目录及其内容:
1
rm -r directory_name
输入和输出重定向
Shell支持输入和输出流的重定向。例如,使用>
将命令输出保存到文件中:
1 | echo "Hello, World!" > output.txt |
使用<
从文件中读取输入:
1 | wc -l < input.txt |
管道操作
管道符号(|
)可以将一个命令的输出作为另一个命令的输入。例如:
1 | ls -l | grep ".txt" |
这个例子会列出当前目录中所有以.txt
结尾的文件。
超级用户权限 (sudo)
有时普通用户没有权限执行某些系统级别的操作,这时可以使用sudo
命令获得超级用户权限。例如:
1 | sudo apt-get update |
tee 命令
tee
命令可以同时将输出写入文件和终端:
1 | echo "Hello, World!" | tee output.txt |
这种方式非常有用,尤其是在需要记录命令输出的同时保持在终端中可见。