美文网首页
读书学习Linux(一)

读书学习Linux(一)

作者: xuyiran | 来源:发表于2019-01-22 17:20 被阅读0次

基本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 询问是否覆盖
  1. 重命名
    mv file_name new_file_name
    不改变文件inode

  2. 移动文件位置

删除文件

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参数允许在挂载文件系统时添加一些以逗号分隔的额外选项

  1. ro:以只读的形式挂载
  2. rw:以读写的形式挂载
  3. user:允许普通用户挂载文件系统
  4. check=none:挂载文件系统时不进行完整性校验
  5. loop:挂载一个文件

umount命令
移除一个可移动设备

umount [directory | device]

# umount /home/rich/mnt 

用任何程序使用设备上的文件时 ,系统不允许卸载

df命令
查看所有已挂载磁盘使用情况

命令输出结果:

  1. 设备的设备文件位置
  2. 能容纳多少个1024字节大小的块
  3. 已使用多少个1024字节大小的块
  4. 还有多少个1024字节大小的块可用
  5. 已用空间所占的比例
  6. 设备挂载到了哪个挂载点上

-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脚本编程大全
转载请标明出处

相关文章

网友评论

      本文标题:读书学习Linux(一)

      本文链接:https://www.haomeiwen.com/subject/yghrjqtx.html