基本bash shell命令
浏览文件系统
遍历目录
1.切换到另一个目录
cd destination
绝对路径
相对路径 单点符( . )--当前目录 双点符( .. ) --上一级目录(父目录)
2.查看当前目录
pwd
文件和目录列表
基本列表功能
ls命令:
-F 区分文件和目录 ->目录后加正斜线(/)
-i 查看文件inode编号
-a 显示隐藏文件
-R 递归选项 -> 列出当前目录子目录中文件
-l 显示文件的详细信息
--------------------
| 文件类型
| 文件权限
| 文件的硬链接总数
| 文件属主用户名
| 文件属组组名
| 文件大小
| 文件上次修改时间
| 文件名或目录名
---------------------
--time=atime 查看文件的访问时间
过滤输出列表
文件扩展匹配
元字符通配符
问号( ? ) 代表一个字符
星号( * ) 代表零个或多个字符
中括号( [] ) 代表一个字符位置并给出多个可能的选择
感叹号( ! ) 将不需要的内容排除在外
文件处理
创建文件
创建空文件
touch filename
touch可改变文件的修改时间,不改变文件内容;
-a 改变文件的访问时间
复制文件
cp source(目标文件) destination(目标文件夹)
-i 询问是否覆盖,防止目标文件存在被覆盖
-R 递归复制整个目录内容
可以利用cp命令重命名,保留两个文件,不同修改时间
目标目录可以使用相对路径
利用通配符批量复制
制表键自动补全
利用Tab键自动补全易错命令、长目录名和文件名
链接文件
符号链接 一个文件,指向某个地方的另一个文件
ln -s data-file sl-data-file
data-file 原始数据文件
sl-data-file 符号链接文件
符号链接与数据文件大小不同
每个独立文件都有inode编号
硬链接 创建独立的虚拟文件,包含原始文件的信息及位置
ln code-file hl-code-file
code-file 原始数据文件
hl-code-file 硬链接
硬链接共享inode编号,是同一文件
重命名文件
mv命令
-i 询问是否覆盖
-
重命名
mv file_name new_file_name
不改变文件inode -
移动文件位置
删除文件
rm命令
-i 提示是否删除
-f 强制删除
处理目录
创建目录
mkdir directory_name
目录长列表以d开头
-p 递归创建目录
删除目录
rmdir命令
rmdir directory_name
只删除空目录
用rm -r 删除非空目录里面所有文件,使目录成为空目录
使用rm -rf 彻底强制删除目录
查看文件内容
查看文件类型
file命令
file file_name
探测文件内部,决定文件类型
查看整个文件
cat命令
cat file_name
-n 给所用行加行号
-b 只给文本行加行号
-T 不让制表符出现,以“^I”代替
more命令
more file_name
无法上翻页
less命令
more升级版
less file_name
可以上下翻页
查看部分文件
tail命令
tail file_name
-n 数字 修改显示的行数
-f 在其他进程中查看该文件时查看文件内容
显示文件最后几行,默认10行
head命令
head file_name
用法与tail类似
更多的Bash shell命令
检测程序
探查进程
ps命令
-A 显示所有进程
-N 显示与指定参数不符的所有进程
-a 显示所有除控制进程和无终端进程外的所有进程
-d 显示除控制进程外的所有进程
-e 显示所有进程
-C cmdlist 显示包含在cmdlist列表中的进程
-G grplist 显示组ID在grplist列表中的进程
-U userlist 显示属主的用户ID在userlist列表中的进程
-g grplist 显示会话或组ID在grplist中的进程
-p pidlist 显示PID在pidlist列表中的进程
-s sesslist 显示会话ID在sesslist列表中的进程
-t ttylist 显示终端ID在ttylist列表中的进程
-u userlist 显示有效用户ID在userlist列表中的进程
-F 显示更多额外输出(相对-f参数而言)
-O format 显示默认的输出列以及format列表指定的特定列
-M 显示进程的安全信息
-c 显示进程的额外调度信息
-f 显示完整格式的输出
-j 显示任务信息
-l 显示长列表
-o format 仅显示有format指定的列
-y 不要显示进程标记(process flag, 表明进程状态的标记)
-Z 显示安全标签(security context)信息
-H 用层级格式来显示进程(树状)
-n namelist 定义WCHAN列显示的值
-w 采用宽输出模式,不限宽度显示
-L 显示列表中的线程
-V 显示PS命令的版本号
常用参数
-ef 显示所有运行在系统上的进程并扩展相关输出
name | annotation |
---|---|
UID | 启动这些进程的用户 |
PID | 进程的进程ID |
PPID | 父进程的进程号 |
C | 进程生命周期中CPU的利用率 |
STIME | 进程启动时的系统时间 |
TTY | 进程启动时的终端设备 |
TIME | 运行进程需要的累积CPU时间 |
CMD | 启动的程序名称 |
-l 长格式输出
列 | 解释 |
---|---|
F | 内核分配给进程的系统标记 |
S | 进程的状态(O代表正在进行;S代表在休眠;R代表可运行,正等待运行;Z代表僵化,进程已结束但父进程已不存在;T代表停止) |
PRI | 进程的优先级(越大的数字代表越低的优先级s) |
NI | 谦让度值用来参与决定优先级 |
ADDR | 进程的内存地址 |
SZ | 假如进程被换出,所需交换空间的大致大小 |
WCHAN | 进程休眠的内核函数的地址 |
BSD风格参数
GNU长参数
--deselect 显示所有进程,命令行列出的进程
--Group grplist 显示组ID在grplist列表中的进程
--User userlist 显示用户ID在userlist列表中的进程
--group grplist 显示有效组ID在grplist中的进程
--pid pidlist 显示PID在pidlist列表中的进程
--ppid pidlist 显示父PID在pidlist列表中的进程
--sid sidlist 显示会话ID在sidlist列表中的进程
--tty ttylist 显示终端ID在ttylist列表中的进程
--user userlist 显示有效用户ID在userlist列表中的进程
--context 显示额外的安全信息
--format format 仅显示由format指定的列
--cumulative 包含已停止的子进程的信息
--forest 用层级格式来显示出进程和父进程之间的关系
--headers 在每页输出中显示列的头
--no-headers 不显示列的头
--lines n 将屏幕高度设置为n行
--rows n 将屏幕高度设置为n排
--cols n 将屏幕宽度设置为n列
--columns n 将屏幕宽度设置为n列
--width n 将屏幕宽度设置为n列
--sort order 指定将输出按哪列排序
--help 显示帮助信息
--info 显示调试信息
--version 显示ps命令的版本号
可以将GNU长参数与Unix风格混用来定制输出,--forest参数可以显示系统层级,并用ASCII字符绘出图表,让显示跟踪子进程和父进程变得十分容易。
实时监控进程
top命令
第一行显示了当前时间、系统运行时间、登录的用户数以及系统的平均负载
平均负载有3个值:最近1分钟的、最近5分钟的以及最近15分钟的平均负载
第二行显示进程的概要信息
第三行显示CPU的概要信息
第四行五行显示系统的内存状态
最后一行显示当前运行中的进程的详细列表
列 | 解释 |
---|---|
PID | 进程的ID |
USER | 进程属主的名字 |
PR | 进程的优先级 |
NI | 进程的谦让度值 |
VIRT | 进程占用的虚拟内存总量 |
RES | 进程占用的物理内存总量 |
SHR | 进程和其他进程共享的内存总量 |
S | 进程的状态(D代表可中断的休眠状态;S代表休眠状态;R代表在运行状态;Z代表僵化状态;T代表跟踪状态或停止状态) |
%CPU | 进程使用的CPU时间比例 |
%MEM | 进程使用的内存占可用内存的比例 |
TIME+ | 自进程启动到目前为止的CPU时间总量 |
COMMAND | 进程所对应的命令行名称,也就是启动的程序名 |
top命令在启动时按照%CPU值对进程排序
结束进程
kill命令
kill PID
只能用进程的PID
强制停止 -s参数 支持指定其他信号
必须是进程的属主或登录为root用户
kill命令不会有任何输出,可运行ps或top命令查看进程是否停止
killall命令
支持通过进程名而不是PID结束进程
支持通配符,在系统负载过大很慢时很有用
# killall http*
killall使用通配符时需要注意避免结束重要的系统进程,这可能会破坏文件系统
监测磁盘空间
挂载存储媒体
Linux文件系统将所有磁盘都并入一个虚拟目录下,在使用新的存储媒体之前,需要把它放到虚拟目录下。该工作称为挂载
大多数Linux发行版能自动挂载特定类型的可移动存储媒体(CD-ROM、软盘和U盘)
mount命令
mount默认输出当前系统上挂载设备列表
mount会提供四部分信息
1.媒体的设备文件名
2.媒体挂载到虚拟目录的挂载点
3.文件系统类型
4.已挂载媒体的访问状态
要挂载媒体设备。需要root用户登录
mount -t type device directory
# mount -t vfat /dev/sdb1 /media/disk
type参数指定磁盘被格式化的文件类型
Windows pc常用文件系统类型
vfat:Windows长文件系统
ntfs:Windows NT、XP、Vista以及Windows 7广泛使用的高级文件系统
iso9660:标准CD-ROM文件系统
-a 挂载/etc/fstab文件中指定的所有文件系统
-f 使mount命令模拟挂载设备,但并不是真的挂载
-F 和-a参数一起使用时,会同时挂载所有文件系统
-v 详细模式,将会说明挂载设备的每一步
-I 不启用任何/sbin/mount.filesystem下的文件系统帮助文件
-l 给ext2、ext3或XFS文件系统自动添加文件系统标签
-n 挂载设备,但不注册到/etc/mtab已挂载设备文件中
-p num 进行加密挂载时,从文件描述符num中获得密码短语
-s 忽略该文件系统不支持的挂载选项
-r 将设备挂载为只读
-w 将设备挂载为可读写的(默认参数)
-L label 将设备按指定的label挂载
-U uuid 将设备按指定的uuid挂载
-O 和-a参数一起使用,限制命令只作用到特定的一组文件系统上
-o 给文件系统添加特定选项
-o参数允许在挂载文件系统时添加一些以逗号分隔的额外选项
- ro:以只读的形式挂载
- rw:以读写的形式挂载
- user:允许普通用户挂载文件系统
- check=none:挂载文件系统时不进行完整性校验
- loop:挂载一个文件
umount命令
移除一个可移动设备
umount [directory | device]
# umount /home/rich/mnt
用任何程序使用设备上的文件时 ,系统不允许卸载
df命令
查看所有已挂载磁盘使用情况
命令输出结果:
- 设备的设备文件位置
- 能容纳多少个1024字节大小的块
- 已使用多少个1024字节大小的块
- 还有多少个1024字节大小的块可用
- 已用空间所占的比例
- 设备挂载到了哪个挂载点上
-h参数可以将磁盘空间按照用户易读形式显示
已删除但未释放文件,这个值不会算进闲置空间
du命令
显示某个特定目录的磁盘使用情况
-c 显示所有已列出文件总的大小
-h 按用户易读的格式输出大小
-s 显示每个输出参数的总计
处理数据文件
排序数据
sort命令
默认情况下,按照会话指定的默认语言的排序规则对文本文件的数据行排序
默认情况下,会把数字当做字符来执行标准字符的排序,可用-n参数解决这个问题,告诉sort命令把数字识别成数字而不是字符
-M参数,按月排序,sort命令可以识别三字符的月份名
--------------------------------
单破折线 双破折线 描述
--------------------------------
-b --ignore-leading-blanks 排序时忽略起始的空白
-C --check=quiet 不排序,如果数据无序也不要报告
-c --check 不排序,但检查输入数据是不是以排序,未排序报告
-d --dictionary-order 仅考虑空白和字母,不考虑特殊字符
-f --ignore-case 默认情况下,会将大写字母排在前面,这个参数会忽略大小写
-g --general-number-sort 按通用数值来排序(把值当浮点数来排序,跟-n不同)
-i --ignore-nonprinting 在排序时忽略不可打印字符
-k --key=POS1[,POS2] 排序从POS1位置开始,如果指定了POS2,到POS2结束
-M --month-sort 用三字符月份名按月份排序
-m --merge 将两个已排序的数据文件合并
-n --numeric-sort 按字符串数值(并不转换为浮点数)
-o --output=file 将排序结果写入指定的文件中
-R --random-sort 按随机生成的散列表的键值排序
-r --reverse 反序排序(升序变降序)
-S --buffer-size=SIZE 指定使用的内存大小
-s --stable 禁用最后重排序比较
-T --temporary-directory=DIR 指定一个位置来存储临时工作文件
-t --field-separator=SEP 指定一个用来区分键位置的字符
-u --unique 和-c参数一起使用时,检查严格排序;不一起时,仅输出第一例相似的两行
-z --zero-terminated 用NULL字符作为行尾,而不是用换行符
-k(指定排位行数)和-t(指定分隔字符)参数在对按字段分隔的数据进行排序时非常有用
搜索数据
grep [options] pattern [file]
pattern 匹配模式,要查找的内容
file 要查找的文件名
-v 反向搜索
-n 显示匹配模式所在的行数
-c 显示有多少行含有匹配的模式
-e 指定多个匹配模式
#grep -e a -e b file1 输出含有字符a或b的所有行
grep命令用基本的Unix风格正则表达式来匹配模式
压缩数据
工具 | 文件扩展名 | 描述 |
---|---|---|
bzip2 | .bz2 | 采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码 |
compress | .Z | 最初的Unix文件压缩工具 |
gzip | .gz | GNU压缩工具,用Lempel-Ziv编码 |
zip | .zip | Windows上PKZIP工具的Unix实现 |
gzip用来压缩文件
gzcat用来查看压缩过的文本文件的内容
gunzip用来解压文件
gzip file
gzip file* 用通配符批量压缩文件
归档数据
tar命令
格式
tar function [options] object1 object2 ....
---------------------------------------
功能 长名称 描述
---------------------------------------
-A --concatenate 将一个已有tar归档文件追加到另一个已有tar归档文件
-c --create 创建一个新的tar归档文件
-d --diff 检查归档文件和文件系统的不同之处
--delete 从已有tar归档文件中删除
-r --append 追加文件到已有tar归档文件末尾
-t --list 列出已有tar归档文件内容
-u --update 将比tar归档文件中已有的同名文件追加到该tar归档文件中
-x --extract 从已有的tar归档文件中提取文件
常见选项
-C dir 切换到指定目录
-f file 输出结果到文件或设备file
-j 将输出重定向给bzip2命令来压缩内容
-p 保留文件所有权限
-v 在处理文件时显示文件
-z 将输出重定向给gzip命令来压缩内容
tar -cvf test.tar test/ test2/ 创建一个归档文件
tar -tf test.tar 列出tar文件test.tar的内容
tar -xvf test.tar 从tar文件test.tar提取内容
tar -zxvf filename.tgz 解压.tgz文件-gzip压缩过的tar文件
书籍:Linux命令行与shell脚本编程大全
转载请标明出处
网友评论