这是一篇读书笔记

拜读传统意义上的神作,CSAPP,我不会很体系的去整理这份笔记,我将拿出那些平时我没有关注到的细节记录下来

编码 字符集 之流

字符集 这个概念其实早就应该走入我的视野,但是之前没有特别留意
现在明白了一直在将的ASCLL和unicode都是所谓的字符集
而所谓的utf-8,utf-16是不同的编码方式,本质上是不同的字符映射到不同的”码“,看看图就好了

upload successful

而同时书本告诉我我们日常打开的文件就分俩种:

  • xxx.c xxx.java 为代表的文本文件
  • xxx.mp4 xxx.svg 为代表的二进制文件

文本文件就是和编码方式有着关系,所以书里面会说这是关于位和上下文的世界,就像同样是一串数字,不同的上下文就规定着他们是不同的内容

shell

有趣的事实, shell 接收到的第一个单词不是内置命令的话 就会把它当成可执行的文件 所以 ./ 输入的其实是 什么是 文件地址吗 原来

在 shell 中,当你输入一个命令时,shell 首先会查看这个命令是否是一个内置的命令,比如 cdecho 等。如果不是内置命令,shell 会尝试找到一个匹配的可执行文件来运行。

在输入命令时使用 ./ 前缀,如 ./myscript,是一个指定当前目录为查找目录的方式。这告诉 shell 直接在当前目录中查找名为 myscript 的可执行文件,而不是去 PATH 环境变量指定的目录中查找。这样做可以提高命令的安全性,确保运行的是你期望的那个程序,而不是同名的其他程序。所以,./ 是当前目录的路径表示,用来确保命令执行的是当前目录下的文件。

直接输入 myscript 是否能成功运行,取决于你的系统的 PATH 环境变量设置。PATH 环境变量定义了 shell 查找可执行文件的目录路径。如果当前目录(通常表示为 .)没有包含在 PATH 中,仅仅输入 myscript 是无法运行位于当前目录中的脚本或程序的,因为系统不会在当前目录查找。

大多数操作系统默认配置中,出于安全考虑,当前目录通常不包括在 PATH 中。这样做是为了防止可能的安全问题,例如,防止用户无意间运行恶意程序。因此,如果你想运行当前目录下的脚本或程序,通常需要使用 ./ 前缀,如 ./myscript,这样才能确保执行的是当前目录下的文件。如果你确定要经常从任何目录运行某个目录下的程序,可以将该目录添加到 PATH 中。但请注意,这样做可能会带来安全风险。