写在前面
版本发完,正好有点空闲时间,所以整理一下linux常用命令,结果打开Linux命令大全,惊呆了,居然有这么多。记这么多命令,肯定记不住的也没必要,所以这篇就整理一下,一些工作中常用的命令。
sed命令
教程中对sed命令解释如下:
Linux sed命令是利用script来处理文本文件。
sed可依照script的指令,来处理、编辑文本文件。
Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!
实践操作了一下,大致如下:
原文件内容
sed '1d' 111.txt ---删除第一行
sed '$d' 111.txt ---删除最后一行
sed '1,3d' 111.txt ---删除第一行到第三行
sed '/ddff/d' 111.txt ---删除包含ddff的行
sed -n '1p' 111.txt ---显示第一行(其他显示多行方法同删除)
sed -n '/dd/p' 111.txt ---列出所有包括关键字 dd 所在的行
sed '1a abcde' 111.txt ---第一行后增加 abcde ,即第二行为 abcde
sed '1,3a abcde' 111.txt ---一到三行每一行后面增加一行 abcde)
sed '2i first' 111.txt ---在第二行上增加first,即新的第二行为first,原来的第二行变为第三行
sed '1c abd' 111.txt ---第一行替换为 abc
sed '1,3c abd' 111.txt ---第一行到第三行替换为 abc,这时候三行变为了一行
sed -i 's/aaa/bbb/g' 111.txt ---将file中的 aaa 替换为 bbb
sed -i '2s/aaa/bbb/g' 111.txt ---将file中第二行的aaa替换为bbb,如果第二行没有aaa也不会报错
sed -i '2,5s/aaa/bbb/g' 111.txt ---将file中第二行到第五行的aaa替换为bbb
查看文件相关命令
- cat 相关命令
cat 333.txt ---打印文件内容
cat -n 333.txt ---打印文件内容并加上行号 (-b 则对空白行不编号),但是我试了没差,不知道是不是我文件的问题
cat -n 111.txt > 333.txt ---将111.txt文件加上行号,复制到333.txt中
cat /dev/null > 333.txt ---将333.txt文件清空
- nl命令
该命令较简单,基本同cat命令
nl 333.txt ------打印文件内容并加上行号,同cat -n 333.txt
- more 和 less 命令
more file ----一行一行翻动 点击space 下一页 b上一页 Enter 下一行 q 退出
less file ----一行一行翻动 可以向上翻动, ctrl + F - 向前移动一屏,ctrl + B - 向后移动一屏,ctrl + D - 向前移动半屏,ctrl + U - 向后移动半屏
- head和tail 命令
head file ----取出文件前几行 head -n20 代表取出几行
tail file ----取出文件后几行 -n20 取出20行 -f 持续输出
find命令
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
find / -name login.jsp 列出所有login.jsp的全目录(-iname会忽略大小写)
find . -name login.jsp 列出当前目录及子目录下login.jsp的文件全目录
对比一下结果,如下差异
find . -type f 列出当前目录及其子目录中所有一般文件
find . -ctime -2 列出当前目录及其子目录中所有2天内更新过的文件(如果2天以前,则改为 +2)
find . -mtime +2 列出当前目录及其子目录中所有更改时间在 2天之前的文件
反向删除文件
删除文件的命令很简单,rm -rf file就可以搞定,那么反删除怎么搞呢?
- 方法一
shopt -s extglob ---打开extglob模式
rm -rf !(file1|file2)---多个文件,删除除了file1和file2之外的所有文件
rm -rf !(file1)
- 方法二
ls | grep -v 'file' ----列出文件名包含 file 的文件
rm `ls | grep -v 'file'` ----- 注意 ` 为 1左边的符号
- 方法三
ls |grep -v ‘file' |xargs rm -rf
wc命令
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
个人在工作中这个命令用的比较少,上次见一个朋友提起过,顺便学习一下。
wc file ----查看行数 单词数 字数
wc -c file---统计字节数 -l 统计行数
cat file |wc -l ---只统计行数,不打印文件名
ls -l |wc -l ----统计当前目录下的文件数
du命令
这个命令我平时也用的相对而言不是很多,一般磁盘空间不足的时候才会用到。
du命令用于显示目录或文件的大小。
du会显示指定的目录或文件所占用的磁盘空间。
磁盘空间了满了,我一般的检查方案如下:
1.du -sh /*
先查看一下 哪个目录下的东西最多,若user文件夹较大
2.du -sh /usr/*
进入user文件夹查看
3.du -sh /usr/local/*
一层一层查看
一般是日志较多,删掉日志之后:
lsof |grep delete
重启数值较大的tomcat
性能相关的一些命令
个人对这一块相关的命令,理解的比较浅,所以不班门弄斧,就随便列几个
- uptime
uptime ---主要是一些当前时间、运行时间、用户数
load average是队列平均长度,在队列中等待执行的进程数量
该值越低,说明进程更有可能立即被CPU处理,相反越高,说明进程更有可能阻塞
-
top
主要用来统计CPU实际使用情况
第一行的信息和uptime出来的一样
第二行是进程信息,总进程数、正在运行的进程数、睡眠的进程数、停止的进程数、僵尸进程(我也不太懂这个什么意思)
第三行CPU信息
第四行内存信息
第五行交换区信息
下面就是一些进程的信息,有进程号、父进程号、用户名等信息
-
free
主要显示内存信息,和top出来的差不多
结束
linux命令实在太多太多,死记硬背没有意义,一般的mv cp mkdir...等命令,这边没有介绍,还有很多没有涉及的高级的命令,后续在工作中用到了在进一步学习