1.本文知识结构

2.文件的查询与检索

2.1. cd 目录切换

  • 找到文件/目录位置:cd
  • 切换到上一个工作目录: cd -
  • 切换到home目录: cd or cd ~
  • 显示当前路径: pwd
  • 更改当前工作路径为path: $cd path

2.2. locate 查找目录及文件

  • find 实时查找
  • locate 为文件系统建立索引数据库,如果有文件更新,需要定期执行更新命令来更新索引库,在查找文件之前要先更新数据库
# 搜寻文件或目录:
$find ./ -name "core*" | xargs file # 查找目标文件夹中是否有obj文件:
$find ./ -name '*.o' # 递归当前目录及子目录删除所有.o文件
$find ./ -name "*.o" -exec rm {} \; # 寻找包含有string的路径
$updatedb
$locate string

2.3. chown 文件与目录权限修改

  • 改变文件的拥有者 chown
  • 改变文件读、写、执行等属性 chmod
  • 递归子目录修改: chown -R tuxapp source/
  • 增加脚本可执行权限: chmod a+x myscript

2.4. 管道和重定向

  • 批处理命令连接执行,使用 |
  • 串联: 使用分号 ;
  • 前面成功,则执行后面一条,否则,不执行:&&
  • 前面失败,则后一条执行: ||
  • 重定向: >

3.文本处理

3.1. find 文件查找

find命令用来在指定目录下查找文件。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。

一般来说,其语法格式为:

find path -option [ -print ] [ -exec -ok command ] {} \;

find 后分为两部分: path 和 expression ,以 第一个 - 为分隔线。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

常用的expression选项

选项 含义
-mount, -xdev 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n 在过去 n 分钟内被读取过
-anewer file 比文件 file 更晚被读取过的文件
-atime n 在过去 n 天内被读取过的文件
-cmin n 在过去 n 分钟内被修改过
-cnewer file 比文件 file 更晚被更新过的文件
-ctime n 在过去 n 天内被修改过的文件
-empty 空的文件
-gid n , -group name gid 是 n 或是 group 名称是 name的文件
-ipath p , path p 路径名称符合 p 的文件,ipath 会忽略大小写
-name name , -iname name 文件名称符合 name 的文件。iname 会忽略大小写
-size n 文件大小 是 n 单位。b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组
-type c 文件类型是 c 的文件。d 代表目录,c 代表字型装置文件,b 代表区块装置文件,p 代表具名贮列,f 代表一般文件,l 代表符号连结,s 代表socket
-pid n process id 是 n 的文件

另外,在find查找文件也是可以使用正则表达式的。

使用正则表达式查询需要的选项有两个:-regextype 和 -regex。----regextype 指定正则匹配的类型,可用的选项有很多,常见的有:'awk' , 'egrep' , 'ed', 'emacs', 'grep', 'sed' 等,不同匹配模式匹配的结果不一样。默认是emacs。

-regex pattern 表示文件名与正则表达式 pattern 匹配。这是对整个路径的匹配,不是搜索文件。即书写正则表达式时要考略前面的路径。

3.2. grep 文本搜索

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。

其一般语法为:

grep [ options ] pattern [file]

常见的 options 选项

短命令 长命令 含义
-a --text 不要忽略二进制的数据
-A --after-context = 行数 除了显示符合范本样式的那一行之外,并显示该行之后的内容
-b --byte-offset 在显示符合样式的那一行之前,标示出该行第一个字符的编号
-c --count 计算符合样式的列数
-C --context = 行数 除了显示符合样式的那一行之外,并显示该行之前后的内容
-d --directories = 动作 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作
-e --regexp = 范本样式 指定字符串做为查找文件内容的样式
-E --extended-regexp 将样式为延伸的正则表达式来使用
-f --file = 规则 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式
-F --fixed-regexp 将样式视为固定字符串的列表
-G --basic-regexp 将样式视为普通的表示法来使用
-h --no-filename 在显示符合样式的那一行之前,不标示该行所属的文件名称
-H --with-filename 在显示符合样式的那一行之前,表示该行所属的文件名称
-i --ignore-case 忽略字符大小写的差别
-l --file-with-match 列出文件内容符合指定的样式的文件名称
-L --file-without-match 列出文件内容不符合指定的样式的文件名称
-n --line-number 在显示符合样式的那一行之前,标示出该行的列数编号
-o --only-matching 只显示匹配 pattern 部分
-q --quiet , --silent 不显示任何信息
-r --recursive 此参数的效果和指定"-d recurse"参数相同
-s --no-messages 不显示错误信息
-v --revert-match 显示不包含匹配文本的所有行
-V --version 显示版本信息
-w --word-regexp 只显示全字符合的列
-x --line-regexp 只显示全列符合的列
-y 此参数的效果和指定 -i 参数相同

3.3. xargs 命令行参数转换

xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令。xargs 一般是和管道一起使用。

其一般语法为:

somecommand | xargs -item command

常见的item选项

选项 含义
-a file 从文件中读入作为sdtin
-e flag 当xargs分析到含有flag这个标志的时候就停止,默认为'_'
-p 当每次执行一个argument的时候询问一次用户
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的
-t 先打印命令,然后再执行
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数
-L num 从标准输入一次读取 num 行送给 command 命令
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符
-x exit的意思,主要是配合-s使用
-P 修改最大的进程数,默认是1,为0时候为as many as it can

3.4. uniq 删除重复

uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

# 消除重复行
$ sort unsort.txt | uniq # 统计各行在文件中出现的次数
$ sort unsort.txt | uniq -c # 找出重复行
$ sort unsort.txt | uniq -d

3.5. tr 字符转换

tr 命令用于转换或删除文件中的字符。它从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

其一般语法为:

tr [options]  SET1 [SET2]

常见options选项

短命令 长命令 含义
-c --complement 反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d --delete 删除指令字符
-s --squeeze-repeats 缩减连续重复的字符成指定的单个字符
-t --truncate-set1 削减 SET1 指定范围,使之与 SET2 设定长度相等

常见SET字符含义

字符 含义
\NNN 八进制值为NNN的字符
\\ 反斜杠
\a 终端鸣响
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
char1-char2 从char1到char2的升序递增过程中经历的所有字符
[:alnum:] 所有的字母和数字
[:alpha:] 所有的字母
[:blank:] 所有呈水平排列的空白字符
[:cntrl:] 所有的控制字符
[:digit:] 所有的数字
[:graph:] 所有的可打印字符,不包括空格
[:lower:] 所有的小写字母
[:print:] 所有的可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有呈水平或垂直排列的空白字符
[:upper:] 所有的大写字母
[:xdigit:] 所有的十六进制数
[=char=] 所有和指定char相等的字符

3.6. cut、paste 裁剪与拼接

cut命令用于显示每行从开头算起 num1 到 num2 的文字。

  • cut 取的范围

    N- 第N个字段到结尾

    -M 第1个字段为M

    N-M N到M个字段

  • cut 取的单位

    -b 以字节为单位

    -c 以字符为单位

    -f 以字段为单位(使用定界符)

paste 指令会把每个文件以列对列的方式,一列列地加以合并。

其一般语法为:

$ paste [-s] [-d <间隔字符>] [文件...]

参数:

  • -d<间隔字符>或--delimiters=<间隔字符>  用指定的间隔字符取代跳格字符。
  • -s或--serial  串列进行而非平行处理。
  • --help  在线帮助。
  • --version  显示帮助信息。
  • [文件…] 指定操作的文件路径

3.7. sed 文本替换

sed 命令可依照脚本的指令来处理、编辑文本文件,它主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。sed 命令是一行一行的处理文件内容的,一般在动作前加数字以确定对应的行。

其一般语法为:

$ sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数说明

  • -e script 或--expression=script 以选项中指定的script来处理输入的文本文件。
  • -f script文件 或--file=script文件 以选项中指定的script文件来处理输入的文本文件。
  • -h或--help 显示帮助。
  • -n或--quiet或--silent 仅显示script处理后的结果。
  • -V或--version 显示版本信息。
  • -r或--regexp-extended 在脚本中使用扩展的正则表达式

动作说明

  • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
  • d :删除,因为是删除啊,所以 d 后面通常不接任何东西
  • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
  • s :取代,可以直接进行字符级的替换的工作
# sed 命令需要多练习,可参考菜鸟教程实例

3.8. awk 数据流处理

awk 是一种处理文本文件的语言,是一个强大的文本分析工具。

其一般语法为:

awk [选项参数] 'script' var=value file(s)

awk [选项参数] -f scriptfile var=value file(s)

选项参数说明:

  • -F fs or --field-separator fs

    指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
  • -v var=value or --asign var=value

    赋值一个用户定义变量。
  • -f scripfile or --file scriptfile

    从脚本文件中读取awk命令。
  • -mf nnn and -mr nnn

    对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
  • -W compact or --compat, -W traditional or --traditional

    在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
  • -W copyleft or --copyleft, -W copyright or --copyright

    打印简短的版权信息。
  • -W help or --help, -W usage or --usage

    打印全部awk选项和每个选项的简短说明。
  • -W lint or --lint

    打印不能向传统unix平台移植的结构的警告。
  • -W lint-old or --lint-old

    打印关于不能向传统unix平台移植的结构的警告。
  • -W posix

    打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符=不能代替=;fflush无效。
  • -W re-interval or --re-inerval

    允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
  • -W source program-text or --source program-text

    使用program-text作为源代码,可与-f命令混用。
  • -W version or --version

    打印bug报告信息的版本。

4.进程管理

4.1. lsof 查看进程状态

lsof 命令的全称是 list open files ,它是一个列出当前系统打开文件的工具。在 Linux 环境中,所有的事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

其一般语法为:

$ lsof [options] filename

常用参数列表:

选项 含义
lsof filename 显示打开指定文件的所有进程
lsof -a 表示两个参数都必须满足时才显示结果
lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件
lsof -u username 显示所属user进程打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 显示目录下被进程打开的文件,它会搜索目录下的所有目录,时间相对较长
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -i 用以显示符合条件的进程情况
$ lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

# 46 –> IPv4 or IPv6
# protocol –> TCP or UDP
# hostname –> Internet host name
# hostaddr –> IPv4地址
# service –> /etc/service中的 service name (可以不只一个)
# port –> 端口号 (可以不只一个)

4.2. pmap 分析线程栈

Pmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息

其一般语法为:

$ pmap [options] PID

常见的options选项为:

  • -x:显示扩展格式;
  • -d:显示设备格式;
  • -q:不显示头尾行;
  • -V:显示指定版本。

5.性能监控

5.1. sar 性能监控

sar 命令是系统维护的重要工具,主要帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况。

其一般语法为:

$ sar [options] [-A] [-o file] t [n]

其中:t为采样间隔,n为采样次数,默认值是1;-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。

常见的options选项有:

选项 含义
-A 所有报告的总和
-u 输出CPU使用情况的统计信息
-v 输出inode、文件和其他内核表的统计信息
-d 输出每一个块设备的活动信息
-r 输出内存和交换空间的统计信息
-b 显示I/O和传送速率的统计信息
-a 文件读写情况
-c 输出进程统计信息,每秒创建的进程数
-R 输出内存页面的统计信息
-y 终端设备活动情况
-w 输出系统交换活动信息

参考材料:

Linux教程|菜鸟教程

Linux Tools Quick Tutorial

Linux 命令帮助文档

Linux Shell 基础知识(二)的更多相关文章

  1. Linux shell基础知识(上)

    Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...

  2. Linux Shell 基础知识(一)

    1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 ​ GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...

  3. Linux Shell基础知识

    一.文件系统和安全 chmod命令 chmod命令有两种模式,一种是符号模式,用ugo执行用户,用rwx执行权限:另一种是绝对模式,用八进制不同位置的不同值来代表不同用户的不同权限. 符号模式 chm ...

  4. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  5. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  6. Linux Shell基础(下)

    Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...

  7. 运维 04 Shell基础命令(二)

    Shell基础命令(二)   查看Linux的发行版 cat /etc/redhat-release cat /etc/os-release 查看系统用户的id信息 id 用户名 id root id ...

  8. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  9. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

随机推荐

  1. 2017福建省赛 FZU 2278 YYS 数学 大数

    Yinyangshi is a famous RPG game on mobile phones. Kim enjoys collecting cards in this game. Suppose ...

  2. lightoj 1248-G - Dice (III) (概率dp)

    题意:给你n个面的骰子,问扔出所有面的期望次数. 虽然这题挺简单的但还是要提一下.这题题目给出了解法. E(m)表示得到m个不同面的期望次数. E(m+1)=[((n-m)/n)*E(m)+1]+(m ...

  3. hdu 2895 01背包 Robberies

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. kmp算法学习 与 传参试验(常回来看看)

    之前在codeforces上做了一道类似KMP的题目,但由于之前没有好好掌握,现在又基本忘记,并没能解答.下面是对KMP算法的一点小总结. 首先KMP算法的核心是纸在匹配过程中,利用模式串的前后缀来加 ...

  5. webapi 参数传递详解

    原因 经常有朋友遇到webapi参数传递问题,自己也碰到过一些坑,在此记录下正确的姿势,简单参数传递相信没有人会有问题,容易出现问题的是对象参数和表单参数. 1.WebApi5.2.3有FromBod ...

  6. briup_jdbc自建工具类终极版

    总结:此次构建工具类,难点在于查询,所需要的功能是 不管是 oracle还是mysql 都可以连接,并且 提供所需要的实体类,都可以将查询内容封装到实体类中去 遇到的难点  连接时,是从prppert ...

  7. 通过脚本实现将服务器的Log实时传送到Telegram群组

    首先说下需求,IT老大提出的一个需求,实现将php-laravel的应用日志实时传送到telegram的监控群组中,不用登陆服务器就可以实时查看应用的日志. 具体思路是: 先要将日志切割,并实时更新这 ...

  8. Python 之父的解析器系列之六:给 PEG 语法添加动作

    原题 | Adding Actions to a PEG Grammar 作者 | Guido van Rossum(Python之父) 译者 | 豌豆花下猫("Python猫"公 ...

  9. 时间复杂度big-O、Big-Omega和big-Theta

    我们有三种曲线:   A curve that we know is "above" the running time function when n is large. ( Bi ...

  10. kubernetes搭建Harbor无坑及Harbor仓库同步

    一.helm搭建harbor 1.安装helm 1.1.安装helm客户端 tar -zxvf helm-v2.14.3-linux-amd64.tar.gz mv linux-amd64/helm ...