CSAPP-01-漫游一遍找找感觉
这是一篇读书笔记
拜读传统意义上的神作,CSAPP,我不会很体系的去整理这份笔记,我将拿出那些平时我没有关注到的细节记录下来
编码 字符集 之流
字符集 这个概念其实早就应该走入我的视野,但是之前没有特别留意
现在明白了一直在将的ASCLL和unicode都是所谓的字符集
而所谓的utf-8,utf-16是不同的编码方式,本质上是不同的字符映射到不同的”码“,看看图就好了
而同时书本告诉我我们日常打开的文件就分俩种:
- xxx.c xxx.java 为代表的文本文件
- xxx.mp4 xxx.svg 为代表的二进制文件
文本文件就是和编码方式有着关系,所以书里面会说这是关于位和上下文的世界,就像同样是一串数字,不同的上下文就规定着他们是不同的内容
shell
有趣的事实, shell 接收到的第一个单词不是内置命令的话 就会把它当成可执行的文件 所以 ./
输入的其实是 什么是 文件地址吗 原来
在 shell 中,当你输入一个命令时,shell 首先会查看这个命令是否是一个内置的命令,比如 cd
、echo
等。如果不是内置命令,shell 会尝试找到一个匹配的可执行文件来运行。
在输入命令时使用 ./
前缀,如 ./myscript
,是一个指定当前目录为查找目录的方式。这告诉 shell 直接在当前目录中查找名为 myscript
的可执行文件,而不是去 PATH 环境变量指定的目录中查找。这样做可以提高命令的安全性,确保运行的是你期望的那个程序,而不是同名的其他程序。所以,./
是当前目录的路径表示,用来确保命令执行的是当前目录下的文件。
直接输入 myscript
是否能成功运行,取决于你的系统的 PATH 环境变量设置。PATH 环境变量定义了 shell 查找可执行文件的目录路径。如果当前目录(通常表示为 .
)没有包含在 PATH 中,仅仅输入 myscript
是无法运行位于当前目录中的脚本或程序的,因为系统不会在当前目录查找。
大多数操作系统默认配置中,出于安全考虑,当前目录通常不包括在 PATH 中。这样做是为了防止可能的安全问题,例如,防止用户无意间运行恶意程序。因此,如果你想运行当前目录下的脚本或程序,通常需要使用 ./
前缀,如 ./myscript
,这样才能确保执行的是当前目录下的文件。如果你确定要经常从任何目录运行某个目录下的程序,可以将该目录添加到 PATH 中。但请注意,这样做可能会带来安全风险。