由于个人长期在linux从事LOG分析工作,因此除了必要的代码书写以外,有时还会使用一些常用的shell命令,今天在这里书写一些常用的命令,方便以后自己查阅的同时,希望对同为初学者朋友们有些许帮助!
一、关键字
显示:[ls、ll、cat]
查找:[find、grep]
常用功能:
删除:rm
拷贝:cp
移动:mv
创建文件夹:mkdir
创建文件:touch
打开编辑:vim
路径显示:pwd
计算文件的MD5:md5sum
文件头操作:head
逻辑操作:
排序:sort
去重:uniq
大小写转换:tr
文本处理工具:[awk、xargs]
代码运行情况:[top、ps aux]
注:命令块之间用管道分割 管道就是 |
二、细化解释
-
显示
- ls、ll: 最常用的查看文件夹中文件的命令ls横版展开,ll竖版展开 常用组合命令: ls [path] |wc -l 查看文件夹中文件个数(包括文件夹) [path] 为空即:ls |wc -l 查看当前文件夹文件个数(包括文件夹)
- cat : cat [file] 可以查看文件中的内容,有的内容很少,不需要vim打开查看时,用这个命令还是很方便的。当然cat更多的是配和其他命令进行文件操作。
- 查找
- find : 常用在通过文件名查找文件,命令为:find [path] -name [str],这里面-name可以不区分大小写,只需要写成-iname,[str]也可以批量查找,比如我们找文件加下的所有.c文件,可以用"*.c"
- grep : 常用在文件内容方面的查找,命令为:grep [str] -rn [path|file],-r的作用可以显示所在文件的行数,方便我们去定位。
- 常用功能
- rm : 用在文件或者文件夹的删除:
- 文件的删除 :rm [file]
- 文件夹的删除 :rm [path] -r
- cp : 用在文件或者文件夹的拷贝:
- 文件的拷贝 :cp [file] [path] 例如
- 文件夹拷贝 :cp [path] [path] -r 例如:cp /home/dir1 /home -r
- mv : 用在文件或者文件夹的移动:
- 文件的移动 :mv [file] [path] 例如:mv /home/dir1/file.log /home
- 文件夹的移动 :mv [path] [path] 例如:mv /home/dir1 /home
- mkdir:用在文件夹的创建:
- 创建一个文件夹 :mkdir [dir_name] 例如:mkdir dir1
- 创建一组文件夹 :mkdir -p [dir_name]/[dir_name]/... 例如:mkdir -p dir1/dir2
- touch:用于文件的创建:
- 创建一个文件 :touch [file_name] 例如:touch file1.log
-
vim:用于打开并编辑一个文件:
- 打开文件:vim [file_name] 例如: vim file1.log
-
打开文件后的操作:
- i:vim进入文件后按i可以进入插入模式
- w:文件写完后点击Esc退出插入模式,与此同时按冒号(:)在按w最后回车确定,就可以将我们插入的内容保存下来,在阻止我们保存的情况下我们可以在后面加个!再回车,可以强行保存
- q:退出vim打开的文件,用法与w类似,加!可以强行退出.[注:wq可以一起使用,作用是保存并退出]
- y:拷贝 非模式下双击Y可以拷贝一行
- p:粘贴
- d:删除 非模式下双击D可以删除一样
-
v:vim进入文件后按v可以进入视图模式
-
试图模式下的常用操作:
- Shift+G 进入文件最底部
- gg 双击两下G 返回文件顶部
- Shift+8 可以对相同变量向下追踪
- Shift+3 可以对相同变量向上追踪
- Shift+v 可以选中一行,
- Ctrl+v 可以选中行开头,一般和Shift+i联合使用,将Ctrl+v选中的行都进行相同操作,更多用于在vim下代码格式的调节。[注:Shift+i操作一行后,点击Esc 下面的所有行将会和第一行做相同的相应]
-
常用组合操作:
- Shift+V->Shift+G|gg->d|s 大面积删除时候使用。[注:最后使用s可以直接进入插入模式]
- Ctrl+v->上下选中要操作的行->Shift+i->操作(如:space)->Esc 整理代码格式使用.
-
试图模式下的常用操作:
- pwd:显示当前所在的全路径
- md5sum:计算文件的MD5 例如:md5sum file1.log
- head:文件头部操作:
- 常用在获取文件开头多少行: head -n [num] [file_name] 例如 :head -n 10 file1.log ,也可以 head file1.log 默认显示10行
- 逻辑操作:
- sort:常用于排序:
- 常用命令按数值的大小进行排序:sort -n 例如:cat aa.log|sort -n
- uniq: 常用于去重:
- 常用命令显示重复个数:uniq -c 例如:cat aa.log|sort|uniq -c
- tr: 常用于大小写转换:
- 常用命令大写转小写:tr ‘[A-Z]‘ ‘[a-z]‘ 例如:cat aa.log | tr ‘[A-Z]‘ ‘[a-z]‘
- 文本处理工具:
- awk:我常用于字符串分割,类似py里面的split
- 常用命令:awk -F "标志" ‘{print $num}‘ 例如:cat aa.log|awk -F "," ‘{print $1}‘ 解释:将aa.log中的内容以逗号分隔 并打印出第一列的东西,还可以和grap配合,例如:grep -rn "," aa.log | awk -F "," ‘{print $1}‘ 解释:查找aa.log中所有带逗号的行并以逗号进行分割,打印第一列的内容
- xargs:我常用于对文件的每一行进行操作,类似与for循环读取文件中的每一行
- 常用命令:xargs -i "命令" {}:例如:假设aa.log里面存放的是文件路径 cat aa.log|xargs -i mv {} ../ 解释将文件都移动到上一级目录,如果是MD5 cat aa.log |xargs -i cp ./sample/{} ../ 解释 将sample目录下的所有MD5移动到上级目录
- awk:我常用于字符串分割,类似py里面的split
- 代码运行情况:
- top:查看当前linux系统资源占用情况
- ps aux:可以查看当前linux系统都运行了那些进程
下面我列出一些常用命令组合:
查询文件内关键字的个数:
cat aa.log | grep "JS" | wc -l
字符串替换:
sed -i ‘s/原字符串/新字符串/g‘ ab.txt
找指定大小文件并拷贝到指定目录:
find -size -190k | xargs -i cp {} ../
挪指定文件到指定位置aa.log 中空格分割的第二列是路径
cat aa.log | grep "XML" | awk -F " " ‘{print $2}‘ | xargs -i mv {} ../
大小写转换
cat aa.log | tr ‘[A-Z]‘ ‘[a-z]‘ > bb.log
拆分文件
find ./sample -name ‘*‘ -type f | head -n 496 | xargs -i mv {} ./sample_1/
文本行去重并排序
sort bb.log | uniq -c | sort -rn > cc.log
文件循环查找关键字并追加到指定文件(-w 忽略大小写 -i全词匹配)
for line in $(cat yes_url.log);do cat top_url.log |grep -wi "$line$"; done|sort -rn|wc -l
按列算累加和
awk ‘{sum += $1};END {print sum}‘ test
获取目录下(包括子目录)所有文件的大小
find ./ -type f | xargs -i ls -lh {} | awk ‘{print $5}‘ > ../
获取两个文件不同的行:
cat aaa.txt bbb.txt | sort -r |uniq -u
bbb中存在,aaa中不存在
grep -wvf aaa.txt bbb.txt