Contents
学习目标:从认识Linux命令行基础开始,一直到写出自己的shell脚本
bash
大多数Linux发行版的默认shell都是GNU bash shell,它能提供对LInux系统的交互式访问。
用户登录时系统启动的shell依赖于用户账户的配置,/etc/passwd文件包含了所有系统用户账户列表以及每个用户的基本配置信息。以下是一个基本样例:
christine:x:501:501:Christine Bresnahan:/home/christine:/bin/bash
最后一个字段指定了用户使用的shell程序。这意味着用户christina使用/bin/bash作为自己的默认shell程序,及该用户登录系统后,bash shell会自启动。
一旦启用了终端仿真软件或者登录Linux虚拟控制台,就会看到shell CLI提示符,提示符是进图shell世界的大门,是输入shell命令的地方。
默认bash shell提示符是美元符号($),这个符号表明等待用户输入。
大多数linux发行版自带用以查找shell命令以及其他GNU工具信息的在线手册;使用man命令用来访问存储在Linux系统上的手册页面,在想要查找的工具的名称前面输入man命令,就可以找到那个工具相应的手册条目。当使用man命令查看命令手册页面时,这些手册是由分页程序(Pager)来显示的。分页程序是一种实用工具,能够逐页显示文本。可以通过点击空格键进行翻页,或是使用回车键逐行查看。
手册页面并不是唯一的参考资料,还可以使用info页面或者–help选项来查看更多信息。
浏览文件系统
linux文件系统目录结构,常见的目录名均基于文件系统层级标准(filesystem hierarchy standard,FHS)。很多发行版本都遵循FHS
遍历目录
cd命令进行目录切换
绝对文件路径以 / 开始
~ 表示shell会话位于主目录中
pwd命令可以显示shell会话的当前目录
相对路径中. 表是当前目录 … 表示上级父目录
文件和目录列表
ls命令最基本的形式会显示当前目录下的文件和目录(按字母排序)
-F 参数的ls命令可以区分文件和目录
-a 参数可以显示隐藏文件
-R参数作为递归选项
-l 参数可以显示长列表,包含详细信息
【文件扩展匹配】过滤方式:?表示一个字符;*表示0个或多个字符
文件处理
touch命令用于创建指定的新文件
cp命令用于复制文件或目录
mv命令可以将文件和目录移动到另一个位置或者重新命名
rm命令用于删除文件
链接文件
链接文件是Linux文件系统的一个优势。如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为链接。
- 符号链接:使用ln -s创建,符号链接是一个实在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件,这两个通过符号链接在一起的文件,彼此的内容并不相同。要为一个文件创建符号链接,原始文件必须事先存在。
- 硬链接:创建独立的虚拟文件,其中包含了原始文件的信息和位置。但是他们从根本上而言是同一个文件。引用了硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须事先存在,只不过这次使用ln命令时不需要加入额外的参数。
处理目录
mkdir创建目录 -p参数可以根据需要创建缺失的父目录
rmdir删除目录
文件内容
file查看文件类型
cat查看文本内容 -n加上行号 -b仅在有文本的行上加行号
more命令会显示文本文件的内容,但会在显示每页数据之后停下来
less命令的操作和more命令基本一样,一次显示一屏的文件文本,还支持更高级的选项,less命令能够识别上下键以及上下翻页键
tail命令会显示文件最后几行的内容(文件的“尾部”)。默认情况下,它会显示文件的末尾10行。-n 参数来修饰所显示的行数
head没给你了那个会显示文件开头的那些行的内容。默认情况下,会显示文件前10行的文本。-n 参数用来修饰所显示的行数
进阶bash shell命令
监测程序
ps命令输出运行在系统上的所有程序的信息,默认情况下只会显示运行在当前控制台下的属于当前用户的进程。ps命令Unix风格的参数如下:
- UID:启动进程的用户
- PID:进程ID
- PPID:父进程ID
- C:进程生命期中的CPU利用率
- STIME:进程启动时的系统时间
- TTY:进程启动时的终端设备
- TIME:运行进程需要的累计CPU时间
- CMD:启动的程序名称
使用top命令可以观察那些频繁换进换出的内存的进程趋势,它与ps命令相似,能够显示进程信息,但它是实时显示的。
- PID:进程ID
- USER:进程属主的名字
- PR:进程的优先级
- NI:进程的谦让度值
- VIRT:进程占用的虚拟内存总量
- RES:进程占用的物理内存总量
- SHR:进程和其它进程共享的内存总量
- S:进程的状态
- %CPU:进程使用的CPU时间比例
- %MEM:进程使用的内存占可用内存的比例
- TIME+:自进程启动到目前为止的CPU时间总量
- COMMAND:进程所对应的命令行名称,也就是启动的程序名。
kill命令可以通过进程ID(PID)结束进程运行
killall命令支持使用进程名来结束进程
监测磁盘空间
Linux上用来挂载媒体的命令叫作mount。默认情况下,mount命令会输出当前系统上挂载的设备列表。
mount命令提供如下四部分信息
- 媒体的设备文件名
- 媒体挂载到虚拟目录的挂载点
- 文件系统类型
- 已挂载媒体的访问状态
mount命令参数
-o 参数允许在挂载文件系统时添加一些以逗号分隔的额外选项,以下为常用的选项
- ro:以只读形式挂载
- rw:以读写形式挂载
- user:允许普通用户挂载文件系统
- check=none:挂载文件系统时不进行完整性校验
- loop:挂载一个文件
从Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。卸载设备的命令是umount
当需要知道在某个设备商还有多少磁盘空间时,df命令可以很方便地查看所有已挂载磁盘的使用情况。df命令会显示每个有数据的已挂载文件系统,命令输出如下: [-h参数 把输出中的磁盘空间按照用户易读的形式显示]
- 设备的文件位置
- 能容纳多少个1024字节大小的块
- 已用多少个1024字节大小的块
- 还有多少个1024字节大小的块可用
- 已用空间所占的比例
- 设备挂载到了那个挂载点
du命令可以显示某个特定目录的磁盘使用情况。这一方法可以用来快速判断系统上某个目录下是不是有超大文件。默认情况下,du命令会显示当前目录下所有的文件、目录和子目录的磁盘使用情况,它会以磁盘块为单位来表明每个文件或目录占用了多大存储空间。对标准大小的目录来说,这个输出会是一个比较长的列表。
处理数据文件
使用sort命令对数据进行排序。默认情况下,sort命令会按照会话指定的默认语言的排序规则对文本文件中的数据进行排序。
-n参数,会告诉sort命令把数字识别成数字而不是字符,并且按值排序
-M,按月排序
其他可用命令参数
-k和-t参数在对按字段分隔的数据进行排序时非常有用,例如/etc/passwd文件。可以用-t 参数来指定字段分隔符,然后用-k参数来指定排序的字段
使用grep命令进行数据搜索,grep命令会在输入或指定的文件中查找包含匹配指定模式的字符的行。grep的输出就是包含匹配模式的行。具体参数可以使用man grep
Linux包含了多种文件压缩工具 gzip、zip等命令
Unix和Linux上最广泛使用的归档工具是tar命令,其命令参数为: