网站二维码链接怎么做的,合肥网站建设报价,wordpress安装新主题,地方网站如何做竞价《The Linux Command Line》读书笔记 文章目录《The Linux Command Line》读书笔记第一章 略第二章 Shell第三章 文件系统第四章 探究OS第五章 操作文件和目录第六章 使用命令第七章 重定向第八章 Shell第九章 快捷键第十章 权限第十一章 进程第一章 略
第二章 Shell
Shell: …《The Linux Command Line》读书笔记 文章目录《The Linux Command Line》读书笔记第一章 略第二章 Shell第三章 文件系统第四章 探究OS第五章 操作文件和目录第六章 使用命令第七章 重定向第八章 Shell第九章 快捷键第十章 权限第十一章 进程第一章 略
第二章 Shell
Shell: 一个程序接受键盘输入的命令传递给OS执行。 bashBourne Again SHell 终端 #su$u即使终端没有运行在后台仍然有几个终端会话运行着。它们叫做虚拟终端 或者是虚拟控制台
第三章 文件系统
类 Unix 操作系统总是只有一个单一的文件系统树不管有多少个磁盘或者存储设备连接到计算机上。cd pwd ls
第四章 探究OS 选项和参数 命令名经常会带有一个或多个用来改变命令行为的选项 更进一步选项后面会带有一个或多个参数这些参数是命令作用的对象大多数命令使用的选项是由一个中划线加上一个字符组成例如“-l”但是许多命令包括来自于 GNU 项目的命令也支持长选项长选项由两个中划线加上一个字组成当然 许多命令也允许把多个短选项串在一起使用 file filename // 描述文件信息 less filename // 阅读文本文件b 上一页 space 下一页 目录 目录内容/根目录万物起源。/bin包含系统启动和运行所必须的二进制程序。/boot包含 Linux 内核、初始 RAM 磁盘映像用于启动时所需的驱动和 启动加载程序。/dev这是一个包含设备结点的特殊目录。“一切都是文件”也适用于设备。 在这个目录里内核维护着所有设备的列表。/etc这个目录包含所有系统层面的配置文件。它也包含一系列的 shell 脚本 在系统启动时这些脚本会开启每个系统服务。这个目录中的任何文件应该是可读的文本文件。/home在通常的配置环境下系统会在 /home 下给每个用户分配一个目录。普通用户只能 在自己的目录下写文件。这个限制保护系统免受错误的用户活动破坏。/lib包含核心系统程序所使用的共享库文件。这些文件与 Windows 中的动态链接库相似。/lostfound每个使用 Linux 文件系统的格式化分区或设备例如 ext3文件系统 都会有这个目录。当部分恢复一个损坏的文件系统时会用到这个目录。这个目录应该是空的除非文件系统 真正的损坏了。/media在现在的 Linux 系统中/media 目录会包含可移动介质的挂载点 例如 USB 驱动器CD-ROMs 等等。这些介质连接到计算机之后会自动地挂载到这个目录结点下。/rootroot 帐户的home目录。/sbin这个目录包含“系统”二进制文件。它们是完成重大系统任务的程序通常为超级用户保留。/tmp这个/tmp 目录是用来存储由各种程序创建的临时文件的地方。系统每次 重新启动时都会清空这个目录。/usr在 Linux 系统中/usr 目录可能是最大的一个。它包含普通用户所需要的所有程序和文件。/usr/bin/usr/bin 目录包含系统安装的可执行程序。通常这个目录会包含许多程序。/usr/lib包含由/usr/bin 目录中的程序所用的共享库。/usr/local这个/usr/local 目录是非系统发行版自带程序的安装目录。 通常由源码编译的程序会安装在/usr/local/bin 目录下。新安装的 Linux 系统中会存在这个目录 并且在管理员安装程序之前这个目录是空的。/usr/sbin包含许多系统管理程序。/usr/share/usr/share 目录包含许多由 /usr/bin 目录中的程序使用的共享数据。 其中包括像默认的配置文件、图标、桌面背景、音频文件等等。/usr/share/doc大多数安装在系统中的软件包会包含一些文档。在/usr/share/doc 目录下 我们可以找到按照软件包分类的文档。/var除了/tmp 和/home 目录之外相对来说目前我们看到的目录是静态的这是说 它们的内容不会改变。/var 目录存放的是动态文件。各种数据库假脱机文件 用户邮件等等都位于在这里。/var/log这个/var/log 目录包含日志文件、各种系统活动的记录。这些文件非常重要并且 应该时时监测它们。其中最重要的一个文件是 /var/log/messages。注意为了系统安全在一些系统中 你必须是超级用户才能查看这些日志文件。 软链接一个文件被多个文件名所指向 作用一个程序要求使用某个包含在名为“foo”文件中的共享资源但是“foo”经常改变版本号。 这样在文件名中包含版本号会是一个好主意因此管理员或者其它相关方会知道安装了哪个“foo”版本。 这会导致另一个问题如果我们更改了共享资源的名字那么我们必须跟踪每个可能使用了 这个共享资源的程序当每次这个资源的新版本被安装后都要让使用了它的程序去寻找新的资源名。 符号链接避免了这种情况。比方说我们安装了文件 “foo” 的 2.6 版本它的 文件名是 “foo-2.6”然后创建了叫做 “foo” 的符号链接这个符号链接指向 “foo-2.6”。 这意味着当一个程序打开文件 “foo” 时它实际上是打开文件 “foo-2.6”。 现在每个人都很高兴。依赖于 “foo” 文件的程序能找到这个文件并且我们能知道安装了哪个文件版本。 当升级到 “foo-2.7” 版本的时候仅添加这个文件到文件系统中删除符号链接 “foo” 创建一个指向新版本的符号链接。这不仅解决了版本升级问题而且还允许在系统中保存两个不同的文件版本。 假想 “foo-2.7” 有个错误该死的开发者那我们得回到原来的版本。 一样的操作我们只需要删除指向新版本的符号链接然后创建指向旧版本的符号链接就可以了。
第五章 操作文件和目录 虽然 GUI 能轻松地实现简单的文件操作但是对于复杂的文件操作任务则使用命令行程序比较容易完成。 例如拷贝一个目录下的 HTML 文件到目标目录保证只拷贝目标目录不存在或者版本比目标目录文件更新的文件. cp -u *.html destination 通配符shell 特性帮助快速指定一组文件名 通配符意义*匹配任意多个字符包括零个或一个?匹配任意一个字符不包括零个[characters]匹配任意一个属于字符集characters中的字符[!characters]匹配任意一个不是字符集中的字符[[:class:]]匹配任意一个属于指定字符类中的字符普遍使用的字符类 字符类意义[:alnum:]匹配任意一个字母或数字[:alpha:]匹配任意一个字母[:digit:]匹配任意一个数字[:lower:]匹配任意一个小写字母[:upper:]匹配任意一个大写字母 举例 *所有文件g*文件名以“g”开头的文件b*.txt以b开头中间有零个或任意多个字符并以.txt结尾的文件Data???以“Data”开头其后紧接着3个字符的文件[abc]*文件名以a,“b”,或c开头的文件BACKUP.[0-9][0-9][0-9]以BACKUP.开头并紧接着3个数字的文件[[:upper:]]*以大写字母开头的文件[![:digit:]]*不以数字开头的文件*[[:lower:]123]文件名以小写字母结尾或以 “1”“2”或 “3” 结尾的文件 Mkdir dirName // 创建目录 cp复制文件 目录 copy // cp xxName .复制到当前目录 选项 选项意义-a, --archive复制文件和目录以及它们的属性包括拥有者和所有权。 通常情况下文件拷贝具有执行拷贝操作的用户的默认属性。-i, --interactive在覆盖已存在文件之前提示用户确认。如果这个选项不指定 cp 命令会默认覆盖文件。-r, --recursive递归地复制目录及目录中的内容。当复制目录时 需要这个选项或者 -a 选项。-u, --update当把文件从一个目录复制到另一个目录时仅复制 目标目录中不存在的文件或者是文件内容新于目标目录中已经存在文件的内容的文件。-v, --verbose显示翔实的命令操作信息 例子 命令运行结果cp file1 file2复制文件 file1 内容到文件 file2。如果 file2 已经存在 file2 的内容会被 file1 的内容覆盖。如果 file2 不存在则会创建 file2。cp -i file1 file2这条命令和上面的命令一样除了如果文件 file2 存在的话在文件 file2 被覆盖之前 会提示用户确认信息。cp file1 file2 dir1复制文件 file1 和文件 file2 到目录 dir1。目录 dir1 必须存在。cp dir1/* dir2使用一个通配符在目录 dir1 中的所有文件都被复制到目录 dir2 中。 dir2 必须已经存在。cp -r dir1 dir2复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在 创建目录 dir2操作完成后目录 dir2 中的内容和 dir1 中的一样。 如果目录 dir2 存在则目录 dir1 (和目录中的内容)将会被复制到 dir2 中。 mv移动文件 or 重命名 move 选项 -i --interactive在覆盖一个已经存在的文件之前提示用户确认信息。 如果不指定这个选项mv 命令会默认覆盖文件内容。-u --update当把文件从一个目录移动另一个目录时只是移动不存在的文件 或者文件内容新于目标目录相对应文件的内容的文件。-v --verbose当操作 mv 命令时显示翔实的操作信息。例子 mv file1 file2移动 file1 到 file2。如果 file2 存在它的内容会被 file1 的内容覆盖。 如果 file2 不存在则创建 file2。 这两种情况下file1 都不再存在。mv -i file1 file2除了如果 file2 存在的话在 file2 被覆盖之前用户会得到 提示信息外这个和上面的选项一样。mv file1 file2 dir1移动 file1 和 file2 到目录 dir1 中。dir1 必须已经存在。mv dir1 dir2如果目录 dir2 不存在创建目录 dir2并且移动目录 dir1 的内容到 目录 dir2 中同时删除目录 dir1。如果目录 dir2 存在移动目录 dir1及它的内容到目录 dir2 rm 删除文件 目录 remove -i, --interactive在删除已存在的文件前提示用户确认信息。 如果不指定这个选项rm 会默默地删除文件-r, --recursive递归地删除文件这意味着如果要删除一个目录而此目录 又包含子目录那么子目录也会被删除。要删除一个目录必须指定这个选项。-f, --force忽视不存在的文件不显示提示信息。这选项覆盖了“–interactive”选项。-v, --verbose在执行 rm 命令时显示翔实的操作信息。痛苦案例 ln: 创造链接软硬皆可 硬链接最初 Unix 创建链接的方式每个文件默认会有一个硬链接 这个硬链接给予文件名字。 局限性1不能关联另一磁盘上的文件不能跨越物理设备局限性2不能关联一个目录 符号链接用于克服上面的局限性。有点类似win的快捷方式 坏链接不指向任何东西。ls 命令会用不同颜色来展示坏链接 如何判断不同硬链接指向同一个文件 ls -i 查看文件索引节点图左方框图右方框则是硬链接数量 查看符号链接第一个字符‘l’说明这是符号链接 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RuA4K0AD-1659514250958)(/Users/fuweiyan/Library/Application Support/typora-user-images/image-20220802155921589.png)] 执行的大多数文件操作是针对链接的对象而不是链接本身
第六章 使用命令 type commandName // 显示命令的类型 which commandName // 显示一个可执行程序的位置 大型服务器中常有不只安装可执行程序的一个版本的情况 help commandName // 得到帮助文档 或者 commandName --help man 显示用户手册 alias 创建自己的命令 同一行可以写多个命令用 ‘;’ 分开 创建新命令之前可以用 type commandName 来确定是否已存在 alias namexxName // 新建别名
unalias xxName // 删除别名命令行中定义alias在shell会话结束后会消失。可以添加到文件中每当开机就会建立
第七章 重定向 重定向可以将命令的输入来源以及输出地点重定向为文件。也可以把多个命令连接起来组成一个强大的命令管道。 与 Unix 主题“任何东西都是一个文件”保持一致像 ls这样的程序实际上把他们的运行结果输送到一个叫做标准输出的特殊文件经常用 stdout 表示而它们的状态信息则送到另一个叫做标准错误输出的文件stderr。默认情况下标准输出和标准错误输出都连接到屏幕而不是保存到磁盘文件。除此之外许多程序从一个叫做标准输入stdin的设备得到输入默认情况下 标准输入连接到键盘。 I/O 重定向允许我们更改输出地点和输入来源。一般来说输入来自键盘输出送到屏幕。 但是通过 I/O 重定向我们可以做出改变。 使用 “” 重定向符后接文件名将标准输出重定向到除屏幕以外的另一个文件 使用 “” 重定向符来重定向输出结果时目标文件总是从开头被重写使用 “” 重定向符来重定向输出结果时把重定向结果追加到文件内容后面而不是从开头重写文件 标准输入、标准输出和标准错误输出shell 内部分别将其称为文件描述符0、1和2 错误输出重定向2 ll output.txt 21 // 重定向标准错误输出到标准输出【 21 】标准错误输出的重定向必须总是出现在标准输出重定向之后否则不起作用 ll 21 output.txt // 反例如今提供更精简合理的方法 ll output.txt // 【 重定向stdout stderr 】数字存储桶/dev/null 【接受输入而且对输入不做任何处理】 cat 连接文件也常被用于显示简短的文件 比如下载大型文件分离成多个部分如今要链接起来movie.mpeg.001 movie.mpeg.002 … cat movie.mpeg.0* movie.mpeg // 连接成一个文件重定向标准输入 管道拥有将命令从标准输入读取数据并输送到标准输出的能力 ll | less // 让less读取ll的输入然后输出到控制台过滤器对数据完成复杂操作几个命令放在一起组成一个管道线。 Sort排序 ls . /usr | sort | less // 加了一个sort作为过滤uniq去重 ls . /usr | sort | uniq | less // 添加去重wc: 行数、字数和字节数 wc README.md grep打印匹配行 grep能够匹配的模式可以很复杂 -i忽略大小写-v只打印不匹配行 Head / tail - 打印文件头/尾 -n 调整行数head -n 5 README.md tee: 从 Stdin 读取数据同时输出到 Stdout 和文件三通水管件
第八章 Shell 花括号展开从一个包含花括号的模式中创建多个文本字符串 echo AOC-{A,B,C}AOC-A AOC-B AOC-C逗号. echo Nu-{1..5}
Nu-1 Nu-2 Nu-3 Nu-4 Nu-5花括号可以嵌套 命令替换echo ${ls}允许把一个命令作为另一个命令的一部分来使用 展开和引用
第九章 快捷键 光标移动命令 按键行动Ctrl-a移动光标到行首。Ctrl-e移动光标到行尾。 Ctrl-k剪切从光标位置到行尾的文本。Ctrl-u剪切从光标位置到行首的文本。
第十章 权限 Unix 多用户系统多个用户可以在同一时间使用同一台计算机 ls -l 时列表的前十个字符是文件的属性。这十个字符的第一个字符表明文件类型 -一个普通文件d一个目录l一个符号链接。注意对于符号链接文件剩余的文件属性总是rwxrwxrwx而且都是 虚拟值。真正的文件属性是指符号链接所指向的文件的属性。c一个字符设备文件。这种文件类型是指按照字节流来处理数据的设备。 比如说终端机或者调制解调器b一个块设备文件。这种文件类型是指按照数据块来处理数据的设备例如一个硬盘或者 CD-ROM 盘。 chmod: 更改文件或目录的权限有两种表示法八进制数字 符号 八进制表示法举例 “ chmod 600 out.txt ” OctalBinaryFile Mode0000—1001–x2010-w-3011-wx4100r–5101r-x6110rw-7111rwx 符号表示法 如果没有指定字符则假定使用”all”。执行的操作可能是一个“”字符表示加上一个权限 一个“”表示删掉一个权限或者是一个“”表示只有指定的权限可用其它所有的权限被删除。 优点允许设置文件模式的某个属性而不影响其他的属性。 举例 ux为文件所有者添加可执行权限。u-x删除文件所有者的可执行权限。x为文件所有者用户组和其他所有人添加可执行权限。 等价于 ax。o-rw除了文件所有者和用户组删除其他人的读权限和写权限。gorw给文件所属的组和文件所属者/组以外的人读写权限。如果文件所属组或其他人已经拥有执行的权限执行权限将被移除。ux,gorw给文件拥有者执行权限并给组和其他人读和执行的权限。多种设定可以用逗号分开。 uuser的简写意思是文件或目录的所有者。g用户组。oothers的简写意思是其他所有的人。a“all的简写是u”, g和“o”三者的联合。passwd: 修改用户密码要求为强密码
第十一章 进程 系统启动 初始化内核活动为进程 运行 init 程序 运行 init 脚本 》启动所有的系统服务许多为守护线程 系统分配给每个进程一个数字 PID。 PID 号按升序分配init 进程的 PID 总是1。 像文件一样进程也有所有者和用户 ID有效用户 ID等等。 命令 psprocess status查看进程快照 ps // 比较少的信息
ps aux // 显示属于每个用户的进程信息top: 动态查看进程 kill -9 pid: 终止进程