听说你入行好几年还只会cd和ls,麻省理工开了这门课……

大家好,日拱一卒,我是梁唐。本文始发于公众号Coder梁

不知道大家有没有这样一种体验,在实际写代码或者是工作、做项目的过程当中经常被一些简单的问题难住。比如vim的一些命令不熟悉,或者是git的一些操作不知道怎么弄,命令行除了ls cd之外一无所知。总觉得书到用时方恨少。

别说是还没毕业的学生了,即使是一些毕业多年的程序员老鸟也难免会查查谷歌或者Stack Overflow。我每次遇到这样问windows怎么激活题的时候总会忍不住想, 要是上学的时候学git命令校里能专门开一门课程讲一讲这些基本工具的使用,给学生做一个深度的科普,该有多好。

也许是听到了众多程序员的心声,2020年的时候,MIT开设了一门公开课。它的标题很有意思,叫笔记本电脑开不了机做《missing smester》,消命令行参数失的学期。课程当中收录的正是这些大部分学笔记本电脑什么牌子好校课程当中不会专门涉及,但是又至关重要的基础知识。

课程量不算大,算上最后的答疑部分,一共也只有十一节课。但这十一节课当中包含了命令行、git、v命令行如何切换到d盘im等许多非常重要的知识和技能,非常非常值得一看。

虽然课程里讲的内容非常基础,但温故知新,我也收获了非常多。因此强烈推荐给大家。

B站课程链接

课程笔记

动机

作为计算机科学家,我们知道计算机非常擅长处理高重复性的任务。

然而我们尝尝忽略,我们使用计算机的过变量名程其实和计算机处理程序时类似,也一样充满了重复。我们在处理计算机相关的问题上拥有大量的工具可以使用,只需giti要动动手指输入命令或程序,就可以完成一些高度复杂的任务。

然而,我们当中的很多人,只使用了这些windows许可证即将过期怎么办工具的很小一部分。有时候仅仅是死记硬背了一些命令,或者是在遇到困难的时候,盲目地从网上复制粘贴命令。

这门课视图解决这个问题,我们希望教会你如何最大限度地使用这些工具,给你展示一些新的工具丰富你的技能树,给你更多的鼓舞和兴趣,让你勇敢地探github索。这就是我们对计算机科学领域中消失的学期的定义。

课程结构

这门课包含了11个长度约1小时的课程,每一节课都有一个特定的主题。

每节课之间都是高度独立的,但在课程进行的过程当中,我们还是会假设你已经windows7怎么重装系统学会了之前的内容。我们会把课程的笔记公开在网上,但也有很多课上变量的内容是笔记里没有的。上课的视频也同样会放在网上。

我们尝试着在11小变量值时的课程当中尽可能多地包含基础知识,所以课程的内容会比较密集。为了保证你们能顺利地跟上节奏,每节课后都会有变量之间的关系针对要点的一系列练习。

由于时间的限制,所以没办法对所有的工具都进行深入的探讨。可能的话,我们会试着提windows系统供继续钻研和学习的资源。

Topic 1: The Shel变量泵l

什么是 shell?

现代的计算机拥有大量的方式和用户进行交互,美观的用户界面、声变量泵音甚至是AR或笔记本电脑者是VR都已经逐渐普及。

对于80%的用户命令行窗口来说,这已经足够了,但这也意味着很多基本功能的限制。因为你没办法进行图形界面中没有的操作,也没办命令行删除文件法声控一个没有开发的github中文官网网页变量名能。为了充分应用计算机的功能,解除图形界面的限制,我们需要回到上古时期,使用文windows11有必要升级吗本界面来控制计算机,这个就是shell。

几乎所有的平台都有shell,只不过它们的形式可能不同。尽管细节上有所区别,但核心都变量是一样的:允许你运行程序,输入指命令行怎么打开令,显示结果。

在这节课当中,我们将聚焦在Bourne Agitlabgain Shell上,简称bash。这也是使用最广泛的shell,它的语法和其他的shell也非常接近。为了打开shell界面,你需要一个termigithubnGital(终端)。一般来说,计算机当中都会自带,你也可以自己安装一个。

使用shell

当你打开terminal,你会看到一个光标,大概长这样:

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

windows怎么激活个是shell的主要文本界面,它告诉你,你当前的工作路径是机器上missing,并且你当前所在的地方是~,这是home的简称。

$符号说明你不是一个超级用户(root user),我们将会详细解释root us变量泵er。你可以在光标处输入指令,它会被shell解读并运行。最基础的命令是运行一个程序:

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

现在我们运行了date程序,它会打印当前的日期和时间。之后shell会继续让我们输入指令,我们可windows许可证即将过期怎么办以输入一个带参数的指令:

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

在这个例子当中,我们告诉sh笔记ell运行一个叫做echo的程序,参数是hello

echo程序会把参数进行输出,shell会按照空格对命令进行拆分。以第一个单词作为程序名进行运行,将剩余的单词作为参数。如果你想要传递一个带有空格或者其他特殊字符的参数,需要使用引号(如”My Photos”)或者是取义符(My Photos)。笔记

但shell是怎么知道去哪里git教程寻找date笔记本电脑性价比排行2020echo程序的呢?

windows10实shell只是一个编程环境,就像是Python和Ruby一样,所以它也有变量、条件、循环和函数。当你在shell中运行命令的时候,你其实是编写了一个简易的代码交给了shell来解释运行。

当shell被要求运行一个不是git命令shell中的关键字的命令时命令行,它会去gitee环境变量$PATH中进行查找。$PATH中包含了一系列文件夹路径以:分隔,s笔记本电脑开不了机hell会在这些路径当中找到名称匹配的程序进行运行。

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

当我们运行echo命令时,shell发现它不在shell的关键字中之后,会先在$PATH路径当中进行查找。

当找到之后,就会进行运行(假设有权限运行命令行进入指定目录,权限这部分之后讲解)。我们可以使用命令which找到我们运行的程序所在的路径。我们也可以自己给定我们要运行的程序的路径来绕过path机制。

shell中的指变量之间的关系

shell中的path是一系列文件夹组成的list,在Linux和macOS当中以/分隔,在Windows当中以分隔。

在Linux和macOS当中,/路径表示系统的根目录,是所有文命令行如何切换到d盘件和路径的根节点。而Windows当中磁盘的根目录笔记会有多个分区,比命令行窗口怎么打开C:。我们会假设你在这门课程中使用的是Linux文件系统。

/开头的路径被称为绝对路径,其他的路径都是相对路径。相对github中文官网网页路径是相对于当前路径而言的路径,我们可以通过命令pwd来查命令行参数看当前路径,通过cd命令来笔记修改当前路径。.代表命令行怎么打开当前路径,..windows7怎么重装系统表当前路径的父路径。

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

注意,图中的shell提示了我们当前所在的路径,这是可以配置的。你可以修改你的终端的配置,显示所giticomfort是什么轮胎有你需要的信giti息,这也会在之后的课程当中提及。

总的来说,当我们运行一个程序时,除非指定,它会在当前目录运行。

查看当前路径中的内容,可以使用ls命令:

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

除非我们在第一个参数中输笔记本电脑排名前十入一个路径,否则它会列出当前路径下的内容。

大多数命令都会有flags和options,通过-接收参数来指定行为。通常运行程序时加上-h--help flag可以得到一些帮助信息告诉我们每个flag命令行常用命令和options如何使用。

比如ls --help告诉我们:

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

加上参数-l之后会windows许可证即将过期怎么办得到关于文件的更多的信息。我们看一下输出结果:

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

开头的d表示missing是一个文件夹,然后紧跟着一系列字符(rwx),这些表明了这个文件/文件变量泵夹的权限。权限一共有9个字母,分成三组。变量与函数

第一组rwx表示表示笔记本显卡天梯图文件owner的权限,r表示可读,gitiw表示可写,x表示可运行。

第二组r-x表示所属群组(users)的权限,每笔记本电脑排名前十个字母表示的含义和owner相同,-表示没有这一项权限。比如r-x表示可读可运行,但不可写。

第三组r-x表示其它用户的权限。所以只有owner拥有修改missing文件夹的权笔记本电脑限,包括添加、删除文件夹内的文件的权限。

要进入一个路径,用户必命令行须拥有这笔记个文件夹以及它所有父路径的search(运行)权限,要列出文件夹中的内命令行删除文件容,用户需变量名要有文件夹的读权限。

需要注意/windows7旗舰版bin路径命令行怎么打开下几乎所有文件对其它用户都只有运行权限,这样保证了所有的用户都可以运行这些程序。

其他一些很有用的命令还有mv(重git教程命名、移github中文官网网页动文件),命令行cp(拷贝文件),mkdiGitr(创建文件夹)。

如果你想要知道一个程序参数、输入、输出的更多信息,你可以使用man程序。它接收另外一个程序名作为参数,然后展示它的使用菜单,输入q进行退出。

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

Connecting programs

在shell当中,程序拥有两个流,即输入流和输出流。当程windows7怎么重装系统序试着读入数据时,它是从输入流获取的。当它试着输出gitlab时,也是向输出流进行传输。

一般来说,程序的输入和输出设备都是你的终端,也就是以我笔记本电脑开不了机们的键盘作为输入,以屏幕作为输出。然而,我们可以修改变量的定义这些流。

最简单的方式就是重定向流,比如< file> file,表示我们以一个文件作为输入,或者是以一个文件作为输出:

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

像是上面例子所演示的,cat程序可以输出文件中的内容。当我们给定一个文件作为参数,它会输出文件中的内容到它的输出流上。当cat没有任何参数的时候,它会将输入流中的内容输出到输出流中(上面第三个样例)。

你也可以使用>>代替>,它们的区别是>>不会替换文件中的内容,而是添加在文件末尾。这些特性结合管道一起使giticomfort是什么轮胎用的时候会非常有用,|命令可以让我们在程序之间构建管道。让一个程序的输出作为另外一个的输入:

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

在本节课中,不会太过深入管道的细节,以及它的优势,这部笔记本电脑排名前十分放在之后的课程中。

多功能且强大的工具

在大多数类Unix系统当中,有一种用户是特殊的,它就是root。

root用户超命令行删除文件越了所有权限的限制,它可以创建、读入、更新、删除git命令系统中的任何windows10激活密钥文件。然而,你不能一直使用root,因为这会非常危险,可能破坏你的系统或者是导致不可逆伤害。

你可以使用sudo命令代替,就像是它的名称暗示的一样,它允许你像root一样执行某些操作。有时候你会获得permission denied错误,这表示你没有权限。你可以使用sudo来强行执行,不过在执行之前,一定要确保你的命令是正确的。

有一件你必须要是root才可以做的事情:修改系统文件笔记本电脑

系统文件通常挂载在/sys路径下,当中将一些内核参数以文件的形式存储。所以你可以很轻易地修改一些内核参数。需要注意的是,/sgit教程ys文件在windows和macOS中没有。

比如,你可以通过修改一个名叫brightness的文件来调整你笔记本屏幕的亮度:

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

通过往文件中写入一个笔记本电脑一直充电好吗特定的值,你可以修改屏幕的亮度。windows更新有必要吗

你的整个执行过程可能是这样的(你可能需要先通过find命令找到对应的文件):

$ sudo find -L /sys/class/backlight -maxdepth 2 -name '*brightness*'
/sys/class/backlight/thinkpad_screen/brightness
$ cd /sys/class/backlight/thinkpad_screen
$ sudo echo 3 > brightness
An error occurred while redirecting file 'brightness'
open: Permission denied

出乎我们意料的是,虽然我们使用命令行删除文件sudo命令,但仍然报错了。

这是shell中一个我们需要了解非常重要的信息,像是|这样的管道命令,windows更新有必要吗或者是>, <分隔的命令,并不是一个单独的程序。echo并不知github永久回家地址|命令的存在,它仅仅是读入和输出。

在上面的例子中,sgiti轮胎hell在echo 3时以root执行,而打开bri变量类型有哪些ghtness文件时没有,仍然是普通用户。所以被拒绝了,如果我们想要以root执行写入,我们可以这样改写命令:

$ echo 3 | sudo tee brightness

tee程序笔记本电脑什么牌子好可以同时写入/sys文件,并且以root身份运行,所以不会受到权限限制。

你可以控制/sys下的一些文件来娱乐或实现一些功能。比如说开启一些LED指示灯,下列代码会开启scrolllock指示灯。

$ echo 1 | sudo tee /sys/class/leds/input6::scrolllock/brightness

Next steps

现在你已经了解github永久回家地址了shell的一些基本应用,可以来完成一些基础功能了。

你应该可以跳转到任何你感兴趣的路径下,并且能够使用基础命git教程令的绝大多数功能了。在下节课当中,我们将会接触到更多有趣的命令,并且使用shell来实现更加复杂的一些任务。

Exercises

这门课每节课后都会附带一些练习,有一些是给定了指定的任务giti轮胎去完成,也有一些是开放式的任务,比如说尝试使用X或Y程序。我们强烈推荐你能亲自尝试。

  1. 这门课我们需要使用Unix shgitiell,比如Bash或者Zsh。如果你使用Linux或者是macOS,那你并不需要为此烦恼。如果你使用的是Windows,你需要确保你运行的不是cmd.exe或者PowerShell。你可以使用Windows Subsystem for Linux或者使用Linux虚拟机来使用Unix风格的命令行。为了确保你使用了正确的shell,你可以尝试运行命令echo $SHELL,如果显示的结果是/bin/bash或者/usrgit教程/bin/zsh,那么久说笔记明你处git命令在了正确的环境
  2. /tmp路径下创建missing文件夹
  3. 使用man程序来调研touch程序
  4. 使用touchmissing下创建semester文件
  5. 在文件当中写入以下两行,一次写入一行笔记本插电用好还是不插电
#!/bin/sh
curl --head --silent https://missing.csail.mit.edu

第一行是Bas变量泵h中的注释,Bash中以#开启注释。!即使在双引号当中也有特变量殊含义。在Bas笔记本插电用好还是不插电h当中,单引号变量英语和双引号是有区别的,你可以调研一下它们的区别

  1. 尝试运行这个文件,你可以使用./semester来运行。使用ls命令来探究不能运行的原因
  2. 使用sh命令,将semester变量泵作为参数传入运行程序,如sh sem命令行如何切换到d盘ester,为什么这样可以运行,为什么./semester不行?
  3. 调研chmod笔记本电脑开不了机序,使用man chmod
  4. 使用chmod来让./semester可行。你的shell怎么会知道这个文件应该用sh运行呢?了解一下s笔记本显卡天梯图hebang笔记本电脑得更多信windows更新有必要吗
  5. 使用|>semest笔记er输出结果中 “last modiwindows10激活密钥fied” 日期写入到你home下的last-modified.txt
  6. 编写命令读取/sys中你笔记本电源的电量或者笔记本CPU的温度,如果你是macOS用户,你的操作系统可能没有/sys文件,你可以跳过本题

答案

前六题的命令为:

cd /tmp
mkdir missing
touch semester
echo '#!/bin/sh' > semester
echo 'curl --head --silent https://missing.csail.mit.edu' >> semester
./semester

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

直接运行会报错,因为没有运行权限。

听说你入行好几年还只会cd和ls,麻省理工开了这门课……

使用命令给semester添加运行权限:

chmod +x semester

shell能知道这个文件使用什么程序执行是因为我笔记本电脑排名前十们在第一行加上了特殊的注释:#!/bin/sh,这是指笔记本电脑一直充电好吗定了该文件执行的程序。

最后,将筛选数据写入文件:变量之间的关系

./semester | grep 'last-modified' > ~/last-modified.txt

评论

发表回复