《Linux命令行大全》 笔记记录
- 1.Shell是什么
- 2.(文件目录)导航
- 3.Linux系统
- 4.操作文件和目录
- 5.命令的使用
- 6.重定向
- 7.透过shell看世界
- 8.高级键盘技巧
- 9.权限
- 10.进程
- 11.环境
- 12.VIM
- 13.定制提示符
- 14.软件包管理
- 15.存储介质
- 16.网络
- 17.文件搜索
- 18.归档与备份
- 19.正则表达式
- 20.文本处理
- 21.格式化输出
- 22.打印
- 23.编译程序
- 24 ~ 35. shell脚本语言相关内容
- 36.其它命令
1.Shell是什么
- 当谈到命令行的时候,我们实际上指的是shell。shell是一个接收由键盘输入的命令,并将其传递给操作系统执行的程序。一般Linux提供的shell程序叫做bash(Bourne Again Shell),即bash是sh的增强版本。
- 如果shell提示符的最后一个字符是
#
,而不是一个$
符号,那么终端会话将享有超级用户特权。 - 即使没有运行terminal,一些终端会话也会在图形桌面的后台运行,这叫做虚拟终端或者虚拟控制台。在绝大多数系统中,通过依次按下Ctrl-Alt-F1键到Ctrl-Alt-F6组合键可以访问大部分Linux发行版中的终端会话。
2.(文件目录)导航
- 以“.”字符开头的文件名是隐藏的。这仅说明
ls
命令不会列出这些文件,除非输入ls -a
。 - Linux没有文件扩展名的概念。
- Linux创建文件名的过程,最后仅使用句号,连字符和下划线这些特殊字符。
3.Linux系统
大部分命令看起来如下所示:
command -options arguments
- 命令后面跟有一个或多个选项
- 命令后面还会跟有一个或多个参数,这些参数是命令作用的对象
ls
命令的长列表字段(-l
)-rw-r-r--
:- 第一个字符表示文件的类型。在不同的类型之间,开头的"-"表示该文件是一个普通文件,d表示是一个目录。
- 紧接着的三个字符表示文件所有者的权限。
- 再接着的三个字符表示文件所属组中成员的访问权限。
- 最后三个字符,表示其他所有人的访问权限。
Linux发布了一个Linux文件系统层次标准(Linux Filesystem Hierarchy Standard)1。
4.操作文件和目录
- 类UNIX操作系统(如Linux)并不包含还原删除操作的命令。一旦使用
rm
命令,就彻底删除了。 - 当
rm
命令和通配符一起使用的时候,除仔细检查输入内容外,可使用ls
命令预先对通配符做出测试,这将显示欲删除的文件。 - 硬链接由两条重要的局限性:
- 硬链接不能引用自身文件系统以外的文件。也就是说,链接不能引用与该链接不在同一磁盘分区的文件。
- 硬链接无法引用目录
- 符号链接是为了克服硬链接的局限性而创建的。符号链接与Windows系统下的快捷方式非常相似,但是,符号链接要早于Windows的快捷方式很多年
- 由于文件名是由链接创建的,所以一个文件通常至少有一个链接。
- 创建硬链接时,实际上是创建了额外的名称,这些名称都指向同一数据部分。系统分配了一些列的盘块给所谓的索引节点(inode),该节点随后与文件名称部分建立关联。因此,每个硬链接都指向包含文件内容的具体索引节点。
- 创建符号链接时,同时也创建了一个文本用来描述目标文件在哪里与符号链接有关联。
- 大部分(对符号链接的)操作,是以链接目标作为对象的,而非链接本身。而
rm
命令是个例外。当删除一个链接的时候,链接本身被删除,但是目标文件依旧存在。
5.命令的使用
一条命令无外乎以下4种情况:
- 可执行程序
- shell内置命令
- shell函数。shell函数是合并到环境变量中的小型shell脚本。
- alias命名。
which
命令只适用于可执行程序,而不适用于内置命令和命令别名。man
命令显示的“手册文档”被分成多个部分,它不仅包括用户命令,也包括系统管理命令、程序接口、文件格式等。系统中安装的很多软件包都有自己的文档文件,它们存放在
/usr/share/doc
目录中。
6.重定向
- 程序的运行结果,一般发送到了标准输出
stdout
- 程序的状态信息,一般发送到了标准错误
stderr
- 许多程序可以从一个标准输入
stdin
的设备获得输入。默认情况下,标准输入链接到键盘 - 使用重定向操作符
>
,可以把标准输出导入文件,而不是打印在屏幕上 - 使用重定向操作符
>>
,会把重定向的标准输出追加到文件的末尾,而不是重写文件 - 因为标准错误的文件描述符的索引是2,所以标准错误的重定向操作符是
2>
- 系统提供了一个称作是位桶(bit bucket)的特殊文件,它接受输入但是不对任何输入做处理
7.透过shell看世界
扩展
- 路径名扩展,pathname expression。通过通配符来实现扩展的机制,叫做路径名扩展。
- 波浪线扩展。
- 算数扩展。
- 花括号扩展。一般用于创建一系列的文件和目录。
- 参数扩展。
- 命令替换。
引用
- 双引号。双引号使得单词分割,路径名扩展,波浪线扩展,花括号扩展都失去作用。但是参数扩展,算数扩展,命令替换仍然生效。
- 单引号。单引号会抑制所有的扩展。
- 转义字符。反斜杠称为转义字符。
8.高级键盘技巧
- shell提供了一种专门用来扩展历史记录项的功能 -- 使用
!
字符.
9.权限
- 在UNIX术语中,所有用户是指整个世界(world)。
- 用户账户定义在
/etc/passwd
文件中,用户组定义在/etc/group
文件中,文件/etc/shadow
保存了用户的密码信息。 文件类型:
属性 文件类型 - 普通文件 d 目录文件 l 符号链接。符号链接后面的文件模式属性都是 rwxrwxrwx
但是这是伪权限。符号链接的目标文件的权限才是真权限。c 字符设备文件。该文件类型表示以字节流处理数据的设备,如终端或调制解调器。 b 块设备文件。该文件类型表示以数据块方式处理数据的设备,如硬盘驱动或者光盘驱动。 常用的八进制文件模式就下面几种:
- 7(rwx)
- 6(rw-)
- 5(r-x)
- 4(r--)
- 0(---)
符号表示法
+
表示添加一种权限-
表示删除一种权限=
表示只有指定的权限可用,其它所有的权限都被删除
umask
命令设置的掩码值只能在当前shell会话中生效,在当前的shell会话结束后,则必须重新设置。
10.进程
- 一个程序的运行可以触发其它程序的运行,在进程系统中这种情况被表述为父进程创建子进程。
- TTY是teletype(电传打印机)的缩写,代表了进程的控制终端(controlling terminal)。
top
命令:x
选项,告知ps显示所有的进程,不管它运行在哪个终端。tty
列显示x
,代表没有控制终端- 输出结果中添加了一个命名为STAT(state,而不是stats)的列,代表进程的当前状态.
- 使进程在后台运行:
- 命令后面加上
&
符号即可在后台运行 jobs
命令,可以查看该终端下所有后台运行的进程fg
命令,可以让后台运行的进程回到前台来运行
- 命令后面加上
- 信号:
- 使用
kill
,向进程发送信号,可以终止进程。默认是SIGTERM(15) - 如果要强制杀死,可以使用
kill -9 pid
- 使用
11.环境
shell变量和环境变量
- shell变量是由bash存放的少量数据
- 环境变量就是除此之外的所有其它变量
set
命令会同时显示shell变量和环境变量,而printenv
命令只会显示环境变量
在用户输入命令后,shell不会搜索整个目录来寻找可执行文件,而是会搜索
PATH
变量中存储的目录列表一般来说,在
PATH
中添加目录,或者定义额外的环境变量这些操作,需要放入到.bash_profile
文件中。其它的操作应该放在.bashrc
文件.扩展名为
.bak
,.sav
,.old
,.orig
是常用的标示备份文件的方法.
12.VIM
基本操作我已经熟悉,这章略过.
13.定制提示符
- 提示符是由名为
PS1
(prompt string 1的缩写)这个环境变量来定义的。
14.软件包管理
pass
15.存储介质
etc/fstab
文件内容列出了系统启动时挂载的设备(通常是硬盘分区)- 卸载设备能确保缓存中的所有剩余数据写入设备,从而设备能够安全移除。
16.网络
ping
命令会向指定的网络主机发送特殊网络数据包IMCP ECHO_REQUEST.eh0
是以太网端口,lo
是系统用来访问自己的回环虚拟接口,也就是localhost。- SSH协议解决了于远程主机进行安全通信的两个基本问题:第一,该协议能验证远程主机的身份是否真实,从而避免中间人攻击;第二,该协议将本机于远程主机之间的通信内容全部加密。
ssh
命令除了能开启远程系统上的shell会话之外,还能直接执行单个命令。
17.文件搜索
locate
命令的搜索数据库是由另一个叫做updatedb
的程序创建,这个程序通常用cron定时执行,所以有时locate
查找的结果不是最新的locate
程序查找文件仅仅是依据文件名,而find
程序则是依据文件的各种数据在既定的目录(递归其下面的子目录)里面查找。
18.归档与备份
gzip
命令用于压缩一个或多个文件,文件后缀名一般是.gz
bzip2
是由Julian Seward开发,和gzip命令相仿,但是使用不同的压缩算法。该算法具有高质量的数据压缩能力,但是压缩的速度却降低了。使用bzip2
压缩后的文件以.bz2
为后缀名.- 归档是一个聚集众多文件并将它们组合成一个大文件的过程,它通常作为系统备份的一部分。
tar
是类UNIX系统中用于归档文件的经典工具。tar是tape archived饿缩写。- 使用
tar
进行解压缩,除非使用超级用户的名义执行命令,否则提取出来的文件和目录的所有权属于执行命令的用户,而不是文件的原始作者。 zip
命令即是压缩工具,也是文件归档工具。Linux用户主要使用zip
程序与Windows系统交换文件,而不是将其用于压缩或者归档文件。- 关于
zip
,有一点需要注意(与tar命令相反),即如果指定的归档文件已经存在,那么zip
仅仅会更新而不会取而代之。 - 针对类UNIX系统,使用
rsync
命令可以进行文件同步。该命令使用rsync远程更新协议
,这个协议允许rsync
命令快速检测到本地和远程系统上两个目录之间的不同,从而以最少数量的复制动作以完成两个目录之间的同步. rsync
命令不支持远程系统和远程系统之间的复制.
19.正则表达式
已经熟悉,略过.
20.文本处理
sort
命令可以允许多个文件作为其输入参数uniq
参数近针对已排序的输入数据进行去重diff
和patch
是代码提交更新中最主要使用的两个命令,包括git
命令也有用到.
21.格式化输出
pass
22.打印
pass
23.编译程序
./configure
其实是执行源代码树下的一个shell脚本,它的任务就是分析生成环境。大多数的源代码都包含这个脚本make
程序的作用就是输入Makefile
,该文件描述生成最后可执行程序时的各部件之间的联系和依赖关系.- 一般打包好的源代码都包含一个特殊的
make
target程序,就是make install
.这个程序的目的是把在系统目录下安装最后生成的可执行程序.
24 ~ 35. shell脚本语言相关内容
阅读了一遍书中内容,暂时没有内容学shell,只要保持大概看得懂就行了。
36.其它命令
组命令
使用花括号括起来,子shell
使用圆括号子shell
在当前shell的子拷贝中执行命令,而组命令在当前shell执行所有命令。在子shell退出的时候,复制的环境变量也就消失了。- 在一个好的设计中,脚本应该针对用户注销和关闭电脑的情况下作出反应,做一些比如删除临时文件的清理工作。
trap
命令可以针对不同的SIGNAL作出反应. wait
命令可以让父脚本暂停,直到指定的进程(比如子脚本)结束.- 命名管道,可以建立两个进程之间的通信。
《Linux命令行大全》 笔记记录的更多相关文章
- 《Linux命令行大全》系列(三、Linux 系统)
在<Linux命令行大全>一书中,第3章名称是 Linux 系统. 概念太大,不过该节内容却是 Linux 系统最为核心的基础——查看 Linux 系统. ls 命令 显示目录自身信息或目 ...
- 《Linux命令行大全》系列(一、shell是什么)
学习 Linux, 从命令开始 图形界面只是让简单事情,更简单 图形化界面能快速处理简单的事情,如打开/关闭文件 然后,随着事务复杂度的提升,图形化界面的操作也就繁琐起来 例如,word中插入一个图片 ...
- [笔记]Linux命令行大全
date 显示当前时间和日期 cal 显示当前月份的日历 df 查看磁盘剩余空间的数量 free 显示空闲内存的数量 pwd 打印当前工作目录 cd 切换目录 ls 列出文件夹内容 绝对路径:开始于根 ...
- 《Linux命令行大全》系列(二、导航)
文件系统的导航,是一个不断访问树形结构中节点的过程. 文件系统树 Linux只有一个倒立的文件系统树 不同设备可以挂载到这同一个树上 文件和子目录是此树的组成部分,最顶层的即根目录 目录 根据树节点间 ...
- linux命令行大全第四章[通配符的使用]
通配符示例 1.创建几个文件及目录 补充创建一个以大写字母开头的文件. 2.1显示所有文件及目录 2.2显示所有以1开头的文件及目录 2.3显示以a开头.txt结尾的文件 2.4显示以e开头,后跟任意 ...
- 【读书笔记】Linux命令行与Shell脚本编程大全
Linux命令行与Shell脚本编程大全 5.2 shell 的父子关系 命令分组 Command Grouping 主要有两种形式: 一种以小括号包括,命令之间以冒号分隔.也被称为 进程列表: 注意 ...
- 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- 观察数组 -vue
1.vue中的被包装的观察数组能够触发视图更新 2.有push(),pop(),shift(),unshift(),splice(),sort(),reverse() 3.不能检测到下面数组变化: 1 ...
- ssh远程连接centos7故障排除
导致故障的原因在两个方面 1.网络问题---物理链路就不通可以通过在客户端 telnet目标主机地址,例如:telnet 192.168.1.107 22 千万别忘了端口号!!!,如果通了还连不上则按 ...
- Ion-select and ion-option list styling 自定义样式
https://forum.ionicframework.com/t/ion-select-and-ion-option-list-styling/117028
- easyui datagrid 去除单击行选中事件
转:http://www.xue163.com/588880/39049/390490560.html 解决方案: onClickRow: function (rowIndex, rowData) { ...
- [Docker]docker搭建私有仓库(ssl、身份认证)
docker搭建私有仓库(ssl.身份认证) 环境:CentOS 7.Docker 1.13.1 CentOS 7相关: https://www.cnblogs.com/ttkl/p/11041124 ...
- easyUI datagrid中checkbox选中事件以及行点击事件,翻页之后还可以选中
DataGrid其中与选择,勾选相关 DataGrid属性:singleSelect boolean 如果为true,则只允许选择一行. false ctrlSelect boolean 在启用多行选 ...
- np.max() 和 np.maximum()的区别
1.np.max(a, axis=None, out=None, keepdims=False) 求序列的最值 最少接受一个参数 axis默认为axis=0即列向,如果axis=1即横向 ex: &g ...
- canvas小实验
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- HTML标签功能分类
按功能类别对HTML标签进行分类,源自HTML 参考手册 基础 标签 描述 <!DOCTYPE> 定义文档类型. html 定义 HTML 文档. title 定义文档的标题. body ...
- RTS打卡计划第四周
Algorithms: https://leetcode-cn.com/problems/subarray-sum-equals-k/comments/ 此问题开始考虑空间换时间,结果完全不用空间,不 ...