Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >程序员需要知道的8个Linux命令

程序员需要知道的8个Linux命令

作者头像
猿人谷
发布于 2018-01-17 07:32:54
发布于 2018-01-17 07:32:54
86200
代码可运行
举报
文章被收录于专栏:猿人谷猿人谷
运行总次数:0
代码可运行

每个程序员,在职业生涯的某个时刻,总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家,我的意思是,当面对linux命令行任务时,你应该能很熟练的完成。事实上,学会了下面8个命令,我基本上能完成任何需要完成的任务。

注意:下面的每个命令都有十分丰富的文档说明。这篇文章并不是来详尽的展示每个命令的各种功用的。我在这里要讲的是这几个最常用的命令的最常见用法。如果你对linux命令并不是很了解,你想找一些这方面的资料学习,那这篇文章将会给你一个基本的指导。

让我们从处理一些数据开始。假设我们有两个文件,分别记录的订单清单和订单处理结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
order.out.log
  8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
  8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
  8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

  order.in.log
  8:22:20 111, Order Complete
  8:23:50 112, Order sent to fulfillment
  8:24:20 113, Refund sent to processing

cat

cat – 连接文件,并输出结果

cat 命令非常的简单,你从下面的例子可以看到。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ cat order.out.log 
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

就像它的说明描述的,你可以用它来连接多个文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ cat order.* 
8:22:20 111, Order Complete
8:23:50 112, Order sent to fulfillment
8:24:20 113, Refund sent to processing
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

如果你想看这些log文件的内容,你可以把它们连接起来并输出到标准输出上,就是上面的例子展示的。这很有用,但输出的内容可以更有逻辑些。

sort

sort – 文件里的文字按行排序

此时sort命令显然是你最佳的选择。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ cat order.* | sort
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:22:20 111, Order Complete
8:23:45 112, 1, Joy of Clojure, Hardcover, 29.99
8:23:50 112, Order sent to fulfillment
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:20 113, Refund sent to processing

就像上面例子显示的,文件里的数据已经经过排序。对于一些小文件,你可以读取整个文件来处理它们,然而,真正的log文件通常有大量的内容,你不能不考虑这个情况。此时你应该考虑过滤出某些内容,把cat、sort后的内容通过管道传递给过滤工具。

grep

grep, egrep, fgrep – 打印出匹配条件的文字行

假设我们只对Patterns of Enterprise Architecture这本书的订单感兴趣。使用grep,我们能限制只输出含有Patterns字符的订单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ cat order.* | sort | grep Patterns
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

假设退款订单113出了一些问题,你希望查看所有相关订单——你又需要使用grep了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ cat order.* | sort | grep ":\d\d 113, "
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:20 113, Refund sent to processing

你会发现在grep上的匹配模式除了“113”外还有一些其它的东西。这是因为113还可以匹配上书目或价格,加上额外的字符后,我们可以精确的搜索到我们想要的东西。

现在我们已经知道了退货的详细信息,我们还想知道日销售和退款总额。但我们只关心Patterns of Enterprise Architecture这本书的信息,而且只关心数量和价格。我现在要做到是切除我们不关心的任何信息。

cut

cut – 删除文件中字符行上的某些区域

又要使用grep,我们用grep过滤出我们想要的行。有了我们想要的行信息,我们就可以把它们切成小段,删除不需要的部分数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ cat order.* | sort | grep Patterns
8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.99
8:24:19 113, -1, Patterns of Enterprise Architecture, Kindle edition, 39.99

jfields$ cat order.* | sort | grep Patterns | cut -d"," -f2,5
 1, 39.99
 -1, 39.99

现在,我们把数据缩减为我们计算想要的形式,把这些数据粘贴到Excel里立刻就能得到结果了。

cut是用来消减信息、简化任务的,但对于输出内容,我们通常会有更复杂的形式。假设我们还需要知道订单的ID,这样可以用来关联相关的其他信息。我们用cut可以获得ID信息,但我们希望把ID放到行的最后,用单引号包上。

sed

sed – 一个流编辑器。它是用来在输入流上执行基本的文本变换。

下面的例子展示了如何用sed命令变换我们的文件行,之后我们在再用cut移除无用的信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ cat order.* | sort | grep Patterns \
>| sed s/"[0-9\:]* \([0-9]*\)\, \(.*\)"/"\2, '\1'"/
1, Patterns of Enterprise Architecture, Kindle edition, 39.99, '111'
-1, Patterns of Enterprise Architecture, Kindle edition, 39.99, '113'

lmp-jfields01:~ jfields$ cat order.* | sort | grep Patterns \
>| sed s/"[0-9\:]* \([0-9]*\)\, \(.*\)"/"\2, '\1'"/ | cut -d"," -f1,4,5
1, 39.99, '111'
-1, 39.99, '113'

我们对例子中使用的正则表达式多说几句,不过也没有什么复杂的。正则表达式做了下面几种事情

  • 删除时间戳
  • 捕捉订单号
  • 删除订单号后的逗号和空格
  • 捕捉余下的行信息

里面的引号和反斜杠有点乱,但使用命令行时必须要用到这些。

一旦捕捉到了我们想要的数据,我们可以使用 \1 & \2 来存储它们,并把它们输出成我们想要的格式。我们还在其中加入了要求的单引号,为了保持格式统一,我们还加入了逗号。最后,用cut命令把不必要的数据删除。

现在我们有麻烦了。我们上面已经演示了如何把log文件消减成更简洁的订单形式,但我们的财务部门需要知道订单里一共有哪些书。

uniq

uniq – 删除重复的行

下面的例子展示了如何过滤出跟书相关的交易,删除不需要的信息,获得一个不重复的信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ cat order.out.log | grep "\(Kindle\|Hardcover\)" | cut -d"," -f3 | sort | uniq -c
   1  Joy of Clojure
   2  Patterns of Enterprise Architecture

看起来这是一个很简单的任务。

这都是很好用的命令,但前提是你要能找到你想要的文件。有时候你会发现一些文件藏在很深的文件夹里,你根本不知道它们在哪。但如果你是知道你要寻找的文件的名字的话,这对你就不是个问题了。

find

find – 在文件目录中搜索文件

在上面的例子中我们处理了order.in.log和order.out.log这两个文件。这两个文件放在我的home目录里的。下面了例子将向大家展示如何在一个很深的目录结构里找到这样的文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ find /Users -name "order*"
Users/jfields/order.in.log
Users/jfields/order.out.log

find命令有很多其它的参数,但99%的时间里我只需要这一个就够了。

简单的一行,你就能找到你想要的文件,然后你可以用cat查看它,用cut修剪它。但文件很小时,你用管道把它们输出到屏幕上是可以的,但当文件大到超出屏幕时,你也许应该用管道把它们输出给less命令。

less

less – 在文件里向前或向后移动

让我们再回到简单的 cat | sort 例子中来,下面的命令就是将经过合并、排序后的内容输出到less命令里。在 less 命令,使用“/”来执行向前搜索,使用“?”命令执行向后搜索。搜索条件是一个正则表达式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jfields$ cat order* | sort | less

如果你在 less 命令里使用 /113.*,所有113订单的信息都会高亮。你也可以试试?.*112,所有跟订单112相关的时间戳都会高亮。最后你可以用 ‘q’ 来退出less命令。

linux里有很丰富的各种命令,有些是很难用的。然而,学会了前面说的这8个命令,你已经能处理大量的log分析任务了,完全不需要用脚本语言写程序来处理它们。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-05-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
30个高效的Linux命令技巧
# tar tf data.tar.gz #t是列出存档文件目录,f是指定存档文件
菲宇
2019/06/12
1.1K0
程序员应该掌握的一些 Linux 命令
作为一名后端开发,跟服务器的交流必不可少,刚好最近跟服务器打交道比较多,所以就汇总整理一下 Linux 下那些程序员经常需要使用的命令,掌握这些命令基本上可以在 Linux 系统里面横着走了(我明显是说大话了)
phoenix.xiao
2021/06/29
6110
提升开发效率N倍的20+命令行神器!(附 demo)
读者福利:点这里送几本我们部门出的新书——《弹性计算:无处不在的算力》,免费包邮到家,欢迎大家来抽奖,也帮忙 review 下抽奖的代码。
程序猿石头
2020/09/10
1.1K0
提升开发效率N倍的20+命令行神器!(附 demo)
Linux 运维必备的 40 个命令总结,收好了~
6、 sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config sed 在这个文里 Root 的一行,匹配 Root 一行,将 no 替换成 yes。
后端码匠
2020/12/08
4750
【整理】Linux Shell 命令速查表 三十条实用Shell 命令
使用 awk 从 Nginx 日志中逐行统计 URL 访问计数,然后使用 sort 对结果进行排名
huofo
2022/03/17
4750
程序员必备的21个Linux命令
作为一个后端开发者,Linux常用是必备的,不管是面试还是实际工作中,都是非常有用的。
田维常
2021/04/22
8460
程序员必备的21个Linux命令
每个程序员都应该阅读的最有影响力的书是什么?
该问题来自于 stackoverflow[1]。目前状态已经关闭,排名第一的答案获得了 1745 的投票,给出的书单非常的经典,供 94 本,虽然是英文,但是你很容易知道是哪本书。
somenzz
2021/12/21
4650
程序员最全的Linux命令,不全来找我随时更新!
    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器操作系统方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。目前Linux存在着许多不同的Linux发行版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。
上分如喝水
2021/08/16
6900
程序员最全的Linux命令,不全来找我随时更新!
Java程序员最常用的Linux命令
大家都知道,Linux系统提供了非常多非常多的命令或工具,这些命令都各有所长,都是系统需要的。但我们精力有限,要掌握全部的命令不太现实,所以只需要掌握其中部分常用的命令即可。这里,我就从一个Java程序员的角度,总结出我常用的一些Linxu命令,供大家参考。 文件目录基本操作 ls 命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。 常用选项: ls(选项)(参数) -a 显示所有档案及目录(ls默认不会列出隐藏文件); -l 所有输出信
精讲java
2018/07/05
1.4K0
linux命令行文本操作一文就够
主要是 awk/grep/sed这三驾马车,加上vi这个神器,最后辅助一些小工具,包括 wc,cat,diff,join,paste,cut,uniq 这里 简要地整理下Linux用来处理数据文本的工
生信技能树
2018/03/09
4K0
Java后端?面试官真问了Linux命令!
把test/profile文件移动到boy文件夹下:mv profile boy/
行百里er
2020/12/02
8860
Java后端?面试官真问了Linux命令!
常用Linux命令整理
1、匹配文本内容,常用grep -E '查找的内容' 文件名。更多用法参考:https://www.cnblogs.com/leo-li-3046/p/5690613.html 参数: --color 把匹配的内容显示为红色 -E 使用正则匹配 -A10 显示匹配行后面10行 -B10 显示匹配行前面10行 -C10 显示匹配行前后10行 -c 显示匹配行的计数 2、grep实现and语义:grep 'pattern1' filename | grep 'pattern2',不过一般情况下,搜索日志需要搜索整个文件,因此使用cat和grep搭配使用:cat filename | grep 'pattern1' | grep 'pattern2' 3、假如一页无法显示完,需要grep、cat、more结合使用,例如 cat install.log | grep “i686”| more。 (1)在more 文件名下,空格向后一页,ctrl + B往前一页。在cat install.log | grep “i686”| more情况下,无法使用ctrl + B往前一页 (2)在这种情况下,推荐使用cat test.text | grep -C100 '2' | less,可以达到more一样的效果,d往后翻页,b往前翻页
用户5325874
2020/01/16
7290
常用Linux命令整理
《Linux命令宝典:从初学者到专家的100个核心技巧》
猫头虎博主在此为大家带来了《Linux系统常用命令100条速记指南》。在Linux系统操作中,掌握基础命令对于优化工作效率至关重要。为了帮助初学者和老手们更快捷地掌握这些命令,这篇文章精心总结了Linux系统中的常用命令,并为大家提供了丰富的实例演示。本文涵盖了文件操作、系统查询、网络工具等多方面内容,同时为了搜索引擎优化,特地加入了Linux、速记、命令等 ,让大家更容易找到这篇宝典!
猫头虎
2024/04/09
2110
程序员必备的21条Linux 命令,值得收藏!
1.cd命令,用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。
小明互联网技术分享社区
2021/12/08
2670
Java 程序员须知道和掌握的 Linux 命令
作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服
美的让人心动
2018/06/14
8130
常用Linux命令集锦
常用linux命令: 随机数 时间 ip 日志分析 硬件信息 进程端口 调整分区大小 随机数 生成10以内的随机数 echo $RANDOM%10 | bc 生成11-20之间的随机数 echo $(($(date +%s)%11+20-11)) 时间 获取当前系统的时间 date|cut -c 1-26 # 2016年 07月 23日 星期六 19:12:40 查看硬件时间 hwclock 修改系统时间 date -s "2019-03-29 13:58:00" 将系统时间同步到硬件时间 hwclock
职场亮哥
2020/10/10
5670
必须掌握的Linux命令
一台完整的计算机是由运算器、控制器、存储器、输入/输出等多种硬件设备共同组成的,而能让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务,对系统的正常运行起着十分重要的作用。
张旭博客
2022/12/27
1.5K0
必须掌握的Linux命令
50个最常用的Unix/Linux命令
当你将Dos系统中的文件复制到Unix/Linux后,这个文件每行都会以\r\n结尾,sed可以轻易将其转换为Unix格式的文件,使用\n结尾的文件
海拥
2021/08/23
6950
大厂程序员必知的排错调试方法
更多请参考:Linux sed 命令在新窗口打开 或者 Linux sed命令详解在新窗口打开
鲁大猿
2024/03/13
1130
大厂程序员必知的排错调试方法
4.文本文件编辑命令
cat命令用于查看纯文本文件(内容较少的),英文全称为“concatenate”,语法格式为“cat [参数] 文件名称”。
用户8006012
2022/05/07
1.1K0
相关推荐
30个高效的Linux命令技巧
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验