第一章、第二章
查看运行层级
runlevel
目前有7个层级,3是有联网的多用户模式,5是配有GUI的多用户模式,等等
第三章
启动shell
查看/etc/passwd
文件,可以看到每个用户的默认shell程序,如:
christine:x:1001:1001::/home/christine:/bin/bash
表示christine这个用户登录后,GNU bash shell会自动启动
bash手册
man命令根据关键词搜索,man -k keyword
info
help,可以直接用,如help help
,也可以按参数来,大部分命令支持--help
参数,如ls --help
文件系统
/usr 是文件系统的第二层次结构,存放的是一些可共享的只读数据。
列出文件和目录
ls有个-R参数,选项不仅显示了当前目录下的内容,还显示了目录下所有子目录及其内容
链接文件
软链接
例如给data.txt创建一个软链接文件
ln -s data.txt data_txt_link.txt
此时查看data_txt_link.txt文件,此文件是链接文件:
lrwxrwxrwx 1 xiaojiao docker 11 Feb 28 15:06 data_txt_link.txt -> ../data.txt
硬链接
例如给data.txt创建一个硬链接文件
ln ../data.txt data_hard_link.txt
但是不能跨存储设备创建硬链接,否则会有如下类型的报错:
ln: failed to create hard link './sand.py' => '/mnt/d/learn/test/sand/sand.py': Invalid cross-device link
异同
1 软链接/硬链接创建链接时,原始文件都必须事先存在
2 软链接相当于创建了快捷方式, ls -i可以看到inode编号不同,硬链接创建的是一个独立的虚拟文件,其中包含了原始文件的信息以及位置。但是两者就根本而言是同一个文件,inode相同
3 软链接与原始文件文件大小一般不同,因为只是创建了一个指向原始文件的快捷方式,但硬链接与原始文件大小相同
4 硬链接只能对处于同一存储设备的文件创造,软链接没有这个限制
处理文件
创造文件
注意:touch命令创建文件时,如果文件已存在,会改变文件的时间,不会对已存在的文件内容造成任何影响
复制文件
cp复制文件时,新文件的创建时间是复制时的时间,但注意,若目标文件已存在,将不会提醒,直接覆盖,因此最好加上-i选项
移动mv
移动/重命名命令没什么好说的,已经很熟悉了,但是要注意,mv操作后,文件的时间以及inode是不变的
mv命令也可以不经过允许就覆盖已存在的文件,所以建议用-i
处理目录
略
查看文件内容
查看文件类型
file命令,如:file data.txt
查看整个文件
cat -n 可以显示行号; -b只给有内容的行加上行号
第四章 更多的bash shell命令
监测程序
探查进程
ps:选项非常多,以下只列出我自己常用的选项的含义:
选项 | 含义 |
---|---|
a | 显示与任意终端关联的所有进程(对应,T显示与当前终端关联的所有进程) |
r | 仅显示运行中的进程 |
e | 显示命令使用的环境变量 |
f | 用层级格式来显示进程,显示哪些进程启动了哪些进程 |
实时检测进程
top,平均负载三个值分别表示最近1/5/15分钟的平均负载
结束进程
kill 部分任务会忽略kill 命令,可以使用kill -9 pid 或 kill -s HUP pid
pkill 可以直接使用进程名,如pkill http*
可以kill所有进程名以http开头的进程
监测磁盘空间
mount/umount
在默认情况下,mount 命令会输出当前系统已挂载的设备列表,但是mount 命令的默认输出非常杂乱
umount 略
df
直接df -h,以易读方式显示磁盘空间,其他参数不需要记忆
du
du 命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况
让输出更清晰易读的选项:
选项 | 含义 |
---|---|
-c | 显示所有已列出文件的总大小 |
-h | 按人类易读格式输出大小 |
-s | 输出每个参数的汇总信息 |
处理数据文件
数据排序sort
sort命令将数字视为字符并按标准的字符排序,如1000
会排在2
的前面,要想按照数字排序,使用sort -n,注意,如果文件有多行,sort会按照第一列的数字排序。
常用选项:
选项 | 含义 |
---|---|
-n | 将数字按值排序 |
-c | 不排序,但检查输入数据是否有序,无序的话就报告,形如sort: test_sort1.txt:2: disorder: 2 |
-M | 用三字符的月份名按月份排序,如Jan, Feb等 |
-t | 指定字段分隔符 |
-k | 排序键从 POS1 位置开始,到 POS2 位置结束(如果指定了 POS2的话) |
-r | 逆序排序(升序变成降序) |
-u | 相当于sort | uniq |
-t -k可以结合使用,例如/etc/passwd 文件,以冒号分隔,按照第三列来排序,可以写作:
sort -t ':' -k 3 -n /etc/passwd
数据搜索grep egrep
常用选项:
选项 | 含义 |
---|---|
-v | 反向搜索 |
-n | 显示匹配到的行的行号 |
egrep 命令是 grep 的一个衍生,支持 POSIX 扩展正则表达式,其中包含更多可用于指定匹配模式的字符 | |
其他略 |
数据压缩
gzip 压缩,可以正则匹配一次压缩多个,如gzip test*
gunzip 解压
数据归档
tar,选项很多,但我一般压缩用zcvf(tar -zcvf test.tar.gz test*,这里是创建了一个名为test.tar.gz的文件,包含test开头的所有文件和目录,其实test*这里可以是空格分隔的多个参数,可包含文件或目录),解压用zxvf,目前看来够用了,且使用没出错,所以略