案例+解读,来自有道大神的17个常用Linux命令深度解析

命令后带(Mac)标记的,表示该命令在Mac OSX下测试,其它的在Debian下测试。

1. grep命令

文本查找命令, 能够使用正则表达式的方式搜索文本,其搜索对象可以是单个或则多个文件 基本格式 grep [option] [regex] [path] -o 只按行显示匹配的字符 -c 只输出匹配行的数目 -n 显示匹配行的行号 -v 显示不包含匹配文本的行 -i 不区分大小写 (grep是大小写敏感的) -R 文件夹下递归搜索 -l 只显示匹配的文件名 -H 显示文件名 -A NUM(after)显示匹配的后几行 -B NUM(before)显示匹配的前几行 -C NUM显示匹配的前后几行 –color 标出颜色

范例四:grep -lR a ./*.yml 在文件夹下的yml文件中搜索,但只输出匹配的文件名


2. ls命令

ls是命令行中用的最多的命令之一了,用于显示目录下的文件 基本格式 ls [option] -a 列出所有文件,包括’.’开头的隐藏文件 -h 使打印结果易于使用者查看(human readable) -l 列出文件的详细信息:创建者,创建时间,读写权限等 -s 显示文件大小 -t 按时间进行文件的排序 -S 以大小进行排序 -r 当前条件逆序 -L 显示文件链接名 -R 将目录中所有文件都递归显示出来


3. find命令

文件查找命令,find命令将递归的搜索目录下符合要求的所有文件 基本格式 find [path] [option] [expression] -name 查找名为filename的文件 -perm 查找符合执行权限 -user 按照文件的所属主查找 -mtime -n +n 按照文件的更改时间查找文件,n代表天数 -ctime -n +n 按照创建时间查找 -newer f1 !f2 查更改时间在f1和f2之间的文件 -size n 查找长度为n块的文件,一块为512 bytes -depth 使得查找在进入子目录前先行查找完本目录 -prune 查找时忽略某个目录 -type 按文件类型查找,b为块设备,d为目录,f为普通文档

范例四:find . -maxdepth 2 -size 3 控制查找的深度

补充:Linux的权限模式为三元组“owner”,“group”,“other”,权限对应表如下

rwx

7

-wx

3

rw-

6

-w-

2

r-x

5

--x

1

r--

4

---

0


4. wc命令

用于统计输入中的字节数,字数,行数并输出 基本格式 wc [option] [filename] -c 统计字节数 -l 统计行数 -m 统计字符数 -w 统计字数,一个字为由空白,跳格或换行字符分隔的字符串


5. cat命令

连结命令(Concatenation),连结多个文本,或者以标准输出形式打印文件的内容 基本格式 cat [option] [filename] -n 队输出的所有行编号 -b 与-n类似,但空行不编号


6. tail命令

文本查看命令,可以看文本的最后几行。tail命令的优点在于其内容能够与输入同步更新,非常适用于查看实时日志。

基本格式 tail [option] [filename]

  • -n number 定位参数,+5表示从第五行开始显示,10或-10表示显示最后10行
  • -f 监控文本变化,更新内容
  • -k number 从number所指的KB处开始读取

范例一:tail -n -5 catalina.out 输出最后5行

范例二:tail -f catalina.out 监听catalina.out最后行的变化并显示


7. head命令

该命令与tail命令类似,默认显示文件前两行的内容

基本格式 head [option] [filename]

  • -n number 显示前几行,-5表示文件中除了最后5行之外的所有内容
  • -c number 显示前几个字节

范例一:head -n 5 server.xmlhead -n -5 server.xml


8. du命令

该命令用于查看系统中文件和目录所占用的空间

基本格式 du [option] [name]

  • -h 用human readable的方式显示
  • --max-depth=number 最大的查询层次
  • -a 显示所有文件的大小,默认只显示目录的大小

范例一:du -h 显示目录下所有文件夹的大小

范例二:du -h catalina.outdu -h ../logs 显示文件或目录的大小

范例三:du -ah --max-depth=1显示递归的层次为1,显示所有文件和文件夹大小


9. which和whereis

which命令的作用是在PATH变量制定的路径中,查找系统命令的位置。 whereis命令用于程序名的搜索,且只能搜索{二进制文件,man说明文件,源代码文件}。whereis的查询时通过查询系统的数据库文件记录,所以速度比find更快,但由于数据库的更新频率较为缓慢,其结果与实际状况并不一定一致。

  • -m 只查找说明文件
  • -b 只查找二进制文件

范例一:which命令

范例二:whereis命令


10. sort命令

sort命令用于对文本进行排序,并将结果输出。其以文本的每一行为单位,从首字符向后,依次按照ascii码值进行比较,最后升序排列。(默认是忽略每行前面空格的)

基本格式 sort [option] [filename]

  • -u 忽略重复行
  • -n 按照数字大小排序
  • -r 逆序
  • -k start,endstart为比较的起始位置,end为结束位置

范例一:sort sort.txt 排序

范例二:

  1. sort -nk 2 -t - sort.txt-进行分割,对分割后的第二个域进行排序;
  2. sort -nrk 2 -t - sort.txt 逆序排序

范例三:sort -t - -k 1.7 -nk 3,3 sort_k.txt -k start,end中end可以省略,上面的1.7表示分割后第一个域的第7个字符,由于没有end,则表示对第一个域中第7字符及其之后的字符排序。而3,3则表示在前面排序的基础上,再对第三个域进行排序。


11. netstat命令

netstat用于输出linux系统的网络情况信息,以前面试的时候还被问过:“如何查看占用某个端口的程序的pid?”,这个问题实际用netstat -anp输出,然后再grep一下即可。

基本格式 netstat [option]

  • -a 显示所有socket连接
  • -l 显示监控中(listening)的socket连接
  • -n 直接使用ip地址,而不使用域名服务器
  • -p 显示正在使用socket的程序的pid和名称
  • -r 打印路由表
  • -t 显示TCP传输协议的连线状况
  • -u 显示UDP传输协议的连线状况
  • -s 显示网络工作信息统计表

范例一:netstat -anp 显示程序的pid和名称

范例二:netstat -r 输出本机路由表

范例三:netstat -lts 输出监听状态中的tcp协议统计信息


12. more命令

more命令用于显示文件的内容,与cat和tail等命令不同的是,more命令是按页显示文件内容,同时具有搜寻字符串的功能。(由于more具有向前翻页功能,因此该命令会加载整个文件)

基本格式 more [option] [filename]

  • +n 从第n行开始显示
  • -n 定义屏幕大小为n行
  • +/pattern 再显示前按pattern匹配子串并显示
  • -s 把连续的多个空行显示为一行 常用操作命令:
    • Enter 向下n行,默认为1行
    • Ctrl+F 跳过一屏
    • Ctrl+B 返回上一屏
    • 空格键 向下滚动一屏
    • = 输出当前行的行号
    • 在more模式中回车,输入/pattern可以持续向下搜索

范例一:more +/Deploy catalina.out 在catalina.out文件中查找“Deploy字符第一次出现的位置”,并从该处的前两行开始显示输出

范例二:more +10 -10 catalina.out 从第10行开始,每页10行


13. less命令

less命令与more命令对应,既可以前后翻看文件,同时还有前后搜索功能,除此之外,less在查看前不会加载整个文件。

基本格式 less [option] [filename]

  • -N 显示每行的行号
  • -i 忽略搜索时的大小写
  • -s 将连续空行显示为一行
  • -m 显示百分比 常用操作命令:
    • /字符串 向下搜索“字符串”功能
    • ?字符串 向上搜索“字符串”功能
    • n 重复前一个搜索
    • 空格键 滚动一页
    • d 滚动半页
    • b 回溯一页
    • y 回溯一行
    • q 退出less命令

范例一:less -Nm catalina.out 显示行号和百分比

范例二:/detail或者?detail 向前向后搜索”detail”


14. ps命令

ps命令用来在Linux系统中显示进程的状态快照,其参数选项可谓非常之多。

基本格式 ps [option]

  • -a 显示所有用户的进程
  • -x 显示没有控制终端的进程
  • -u 按照用户名称查询进程
  • -f 列出全部信息,常和其它选项联用
  • -j 用任务格式来显示进程
  • -e 显示所有进程

范例一:ps -ef 用标准格式显示所有进程 显示的项目有:UID, PID, PPID(父进程ID), C(CPU资源百分比), STIME, TTY, TIME, CMD

范例二:ps aux 显示的项目有:USER, PID, %CPU, %MEM, VSZ(虚拟内存量KB), RSS(固定内存量), TTY(进程所运行在的终端机), STAT, START, TIME, COMMAND


15. tmux命令(Mac)

tmux(Terminal Multiplexer)命令是一个颇为炫酷的命令,其特点与screen命令类似。tmux通过开出窗口,分拆面板,接管和分离会话,能够让使用者在一个窗口内同时进行多项操作。 tmux在osx的安装方式:brew install tmux

基本格式 tmux [option]

  • tmux new -s sessionName 创建新的session会话
  • tmux attach -t sessionName 重新连接上某一个session
  • tmux kill-session -t sessionName 杀死某个session
  • tmux ls 显示所有会话

范例一:tmux new -s mySession 创建一个名为mySession的会话 输入CTRL+b d将从此会话脱离,如果要重新连接,则使用tmux attach -t mySession

范例二:在范例一的mySession中按下CTRL+b c则会在mySession中创建一个新的窗口 可以通过CTRL+b w来查看窗口列表,CTRL+b <窗口号>来切换窗口 CTRL+b f来查找窗口,exit来退出窗口

为了便于穿窗口的识别,还可以通过CTRL+b ,来重命名窗口

范例三:tmux还支持把窗口分割成多个面板,CTRL+b "为水平分割,CTRL+b %为垂直分割 通过CTRL+b <光标键>来进行窗口移动


16. ack命令(Mac)

ack(better than grep)命令的作用和grep类似,但效果更好。

基本格式 ack [option] [pattern]

  • -w 按单词匹配
  • --ingore-dir 忽略某些目录

范例一:ack -w 测试 与grep搜索的对比


17. kill命令

kill命令用于终止指定的进程,其工作原理是通过向进程发送指定的信号。

基本格式 kill [params] [pid]

常用的是:

kill -9 pid //强制终止
  • -1 Hup 终端断线
  • -2 INT 中断(同Ctrl+c
  • -3 QUIT 退出(同Ctrl+\)
  • -15 TERM 终止,是默认的信号,如果应用本身会捕获该信号,则不能终止
  • -9 KILL 强制终止
  • -18 CONT 继续
  • -19 STOP 暂停(同Ctrl+z)

作者:黄欢 来源:http://sadwxqezc.github.io/HuangHuanBlog/linux

原文链接:http://sadwxqezc.github.io/HuangHuanBlog/linux

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JackeyGao的博客

终端操作(SHELL)技巧

本篇是一些小但是有用的终端操作技巧和一些快捷方式,可以让你在 linux 命令行有出奇的效率。一方面这些技巧可以让你的效率有所提高, 但有时候也会有隐患, 所以...

14800
来自专栏yukong的小专栏

【ssm个人博客项目实战08】博客的分页显示以及模糊查询,删除。前言1、上篇回顾2、具体编码3、测试与小结

在上一节中我们是完成了博客的回台部分,现在我需要在前台拿到回台传来的数据并且给以显示出来。 不知道大家还记得我们在博客类别管理里面,easyui的datagr...

11540
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(五):简易留言簿交互实现

努力与运动兼备~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

58080
来自专栏北京马哥教育

案例+解读,来自有道大神的17个常用Linux命令深度解析

命令后带(Mac)标记的,表示该命令在Mac OSX下测试,其它的在Debian下测试。 1. grep命令 文本查找命令, 能够使用正则表达式的方式搜索文本...

34050
来自专栏逸鹏说道

Git异常:Cannot delete the branch 'test&' which you are currently on

GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ————————————————————...

30160
来自专栏C/C++基础

g++入门教程

g++是GNU开发的C++编译器,是GCC(GNU Compiler Collection)GNU编译器套件的组成部分。另外,gcc是GNU的C编译器。

1.9K10
来自专栏ascii0x03的安全笔记

SEED缓冲区溢出实验笔记

缓冲区溢出实验(Linux 32位) 参考教程与材料:http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software...

46050
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(提示):错误贴

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

17330
来自专栏和蔼的张星的图像处理专栏

1.Win10+VsCode的C/CPP编译环境搭建

我是从开始学C++的时候就一直用的是visual studio,毕竟宇宙第一IDE,写和调试都是超级方便快捷,唯一的缺点可能就是启动慢一点。 之前电脑没有换固...

85460
来自专栏CSDN技术头条

SpringBoot 核心模块原理剖析

微服务始终一个相对热门的话题,SpringBoot 则以其轻量级、内嵌 Web 容器、一键启动、方便调试等特点被越来越多的微服务实践者所采用。 知其然还要知其所...

45990

扫码关注云+社区

领取腾讯云代金券