课程概览与 shell 笔记

本文探讨了Shell的基本概念、使用方法,如打开方式、路径查找、目录操作、命令执行及重定向,还涉及编程环境特性,如变量、条件和函数。通过实例演示如何在shell中创建文件夹、重命名文件、使用管道和文件重定向,以及修改系统参数。
摘要由CSDN通过智能技术生成

shell 是什么?

如今的计算机有着多种多样的交互接口让我们可以进行指令的的输入,从炫酷的图像用户界面(GUI),语音输入甚至是 AR/VR 都已经无处不在。 这些交互接口可以覆盖 80% 的使用场景,但是它们也从根本上限制了您的操作方式——你不能点击一个不存在的按钮或者是用语音输入一个还没有被录入的指令。 为了充分利用计算机的能力,我们不得不回到最根本的方式,使用文字接口:Shell

使用 shell

打开时这样:$ 符号表示现在的身份不是 root 用户

当前所在的位置是 ~ (表示 “home”)

missing:~$ 

执行date程序 

missing:~$ date
Fri 10 Jan 2020 11:49:31 AM EST
missing:~$ 

执行echo程序,echo可以带参数和重定向 

missing:~$ echo hello
hello

如果希望传递的参数中包含空格(例如一个名为 My Photos 的文件夹),要么用使用单引号,双引号将其包裹起来,要么使用转义符号 \ 进行处理(My\ Photos)。 

但是,shell 是如何知道去哪里寻找 date 或 echo 的呢?其实,类似于 Python 或 Ruby,shell 是一个编程环境,所以它具备变量、条件、循环和函数.

在 shell 中执行命令时,实际上是在执行一段 shell 可以解释执行的简短代码。如果要求 shell 执行某个指令,但是该指令并不是 shell 所了解的编程关键字,那么它会去咨询环境变量$PATH,它会列出当 shell 接到某条指令时,进行程序搜索的路径

missing:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
missing:~$ which echo
/bin/echo
missing:~$ /bin/echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

 

 在shell中导航

当前工作目录可以使用 pwd 命令来获取

切换目录需要使用 cd 命令。在路径中 . 表示的是当前目录,而 .. 表示上级目录

特别的 cd~直接到home

查看指定目录下包含哪些文件,使用 ls 命令(具体可以使用man ls来看)常用的时ls -long (简写-l)来使用

missing:~$ ls -l /home
drwxr-xr-x 1 missing  users  4096 Jun 15  2019 missing

这个参数可以打印出更加详细地列出目录下文件或文件夹的信息。首先,本行第一个字符 d 表示 missing 是一个目录。然后接下来的九个字符,每三个字符构成一组。 (rwx). 它们分别代表了文件所有者(missing),用户组(users) 以及其他所有人具有的权限。其中 - 表示该用户不具备相应的权限。从上面的信息来看,只有文件所有者可以修改(w),missing 文件夹 (例如,添加或删除文件夹中的文件)。为了进入某个文件夹,用户需要具备该文件夹以及其父文件夹的“搜索”权限(以“可执行”:x)权限表示。为了列出它的包含的内容,用户必须对该文件夹具备读权限(r)。对于文件来说,权限的意义也是类似的。注意,/bin 目录下的程序在最后一组,即表示所有人的用户组中,均包含 x 权限,也就是说任何人都可以执行这些程序。

另外例如 mv(用于重命名或移动文件)、 cp(拷贝文件)以及 mkdir(新建文件夹)也很常用

在程序间创建连接

最简单的重定向是 < file 和 > file。这两个命令可以将程序的输入输出流分别重定向到文件:

missing:~$ echo hello > hello.txt
missing:~$ cat hello.txt
hello
missing:~$ cat < hello.txt
hello
missing:~$ cat < hello.txt > hello2.txt
missing:~$ cat hello2.txt
hello

 使用 >> 来向一个文件追加内容。使用管道( pipes ),我们能够更好的利用文件重定向。 | 操作符允许我们将一个程序的输出和另外一个程序的输入连接起来:

missing:~$ ls -l / | tail -n1
drwxr-xr-x 1 root  root  4096 Jun 20  2019 var
missing:~$ curl --head --silent google.com | grep --ignore-case content-length | cut --delimiter=' ' -f2
219

修改系统内核参数时注意:

|>、和 < 是通过 shell 执行的,而不是被各个程序单独执行。 echo 等程序并不知道 | 的存在,它们只知道从自己的输入输出流中进行读写。

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

 因为打开 /sys 文件的是 tee 这个程序,并且该程序以 root 权限在运行,因此操作可以进行。 

练习题

在 /tmp 下新建一个名为 missing 的文件夹。

mkdir missing

 用 man 查看程序 touch 的使用手册。

man touch

 用 touch 在 missing 文件夹中新建一个叫 semester 的文件。

touch semester

将以下内容一行一行地写入 semester 文件:

 #!/bin/sh
 curl --head --silent https://missing.csail.mit.edu

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

 使用 | 和 > ,将 semester 文件输出的最后更改日期信息,写入根目录下的 last-modified.txt 的文件中

./semester | greop last-modified > ~last-modified.txt
cat ~/last-modified.txt

 

写一段命令来从 /sys 中获取笔记本的电量信息,或者台式机 CPU 的温度。注意:macOS 并没有 sysfs,所以 Mac 用户可以跳过这一题。

cd /sys 去class里面找,每个人会不一样

cat /sys/class/power_supply/BAT1/energy_now

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值