目录

  • 前言
  • 实例
    • 1. 删除文件,文件名中可能含各种特殊字符
    • 2. 递归找出大文件
    • 3. 后台运行一个任务
    • 4. 进程查看
    • 5. 递归搜索和替换
    • 6. 查看哪些端口在监听
    • 7. 身份切换
    • 8. 杀进程
    • 9. post请求
    • 10. 一行for语句遍历
  • 总结
    • Shell之核心语法while/if/until速记
    • awk/sed/cut用例速记
  • 再补充一些其它例子
    • 11、统计字符出现次数
    • 12、统计代码行数
    • 13、文件传输

前言

在Linux下,完成一个事情往往有N种方法。Linux的一大哲学就是"一个工具只做一样事情",通过不同工具的组合使用,完成不同的需求。熟练掌握好常用命令,有时事半功倍,起到出其不意的效果。不仅大大提升你的工作效率,同时也带来喜悦感和成就感。学会下面这些命令,Linux老手也不敢小瞧你。

实例

1. 删除文件,文件名中可能含各种特殊字符

递归删除以“._”开头的文件:

find . -type f -name “._*” -print0 | xargs -0 rm -f

注意,加上-print0和xargs 的-0参数能解决文件中出现各种特殊字符导致命令失败的问题。

  • find命令如果输出到管道上,建议用-print0代替print,以防止输出中包含特殊字符。
  • xargs中的-0参数也是起到对特殊字符(如引号和斜杠)转义的作用。

OSX下经常要删除.DS_Store文件:

find . -type f -name “.DS_Store” -print0 | xargs -0 rm -f

也可以用awk命令。删除所有pyc文件:

find . -name “*.pyc” |awk ‘{cmd="rm "$0;system(cmd)}’

删除文件名乱码的文件, 先找到文件的inode编号,再删除之:

ls -li
find ./* -inum 1442583 -exec rm -f {} ;

2. 递归找出大文件

经常需要查看磁盘空间被哪些文件占用了,可以用:

du -a /dir/ | sort -n -r | head -n 20

只查找第一级目录:

du -h --max-depth=1 /var

于是,递归查找最大文件,可以这么写:

find / -type f -printf “%s\t%p\n” | sort -n | tail -1
find $HOME -type f -printf ‘%s %p\n’ | sort -nr | head -10

当前目录下的文件/文件夹大小排序:

du -hs * | sort -n -r

查看inode大小:

find . -xdev -type f | cut -d “/” -f 2 | sort | uniq -c | sort -n

3. 后台运行一个任务

nohup 命令 >/dev/null 2>&1 &

将正常输出和错误重定向到/dev/null

当然,Linux后台执行一个任务还有多种方式,例如screen和tmux命令,还有其它进程管理器,如supervisor和monit,nodejs世界里有pm2。

采用screen命令后台执行一个任务,执行完后脱离会话(detach session):

screen -S $session_name -dm <your_script>

4. 进程查看

显示进程完整的命令语句,尤其对查看Java进程有用:

ps auxwww | grep java

按内存使用率查看:

ps aux | sort -nk 4

按CPU使用率查看:

ps aux | sort -nk 3

5. 递归搜索和替换

在当前目录下递归搜索所有包含__call__的python文件:
可以用下面三个命令之一:

find . -name "*.py" | xargs grep "__call__"
rgrep __call__ *.py *.js
find . -name  '*.py' -exec grep '__call__'  {}  \;

如果要做替换,可以:

grep -rl 查找字段 路径|xargs sed -i “s/查找字段/替换字段/g”
sed -i “s/garden/myGarden/g” ls
find . -type f -name ‘*.html’ | xargs perl -pi -e ‘s|北京|上海|g’

删除无用的docker镜像:

docker rmi $(docker images | grep “^” | awk ‘{print $3}’)

6. 查看哪些端口在监听

查看某个进程监听的端口号:

netstat -lnp | grep xxx

查看某个端口号谁在监听, 例如查看监听8080的进程

lsof -i:8080

7. 身份切换

sudo -i bash //切换到root
sudo bash -c bash //切换到root
sudo su admin # 切换为admin身份
sudo -u admin kill -9 xxx # 以admin身份执行kill命令

前两条命令在docker容器环境下很实用,经常不为人知。

8. 杀进程

kill $(pgrep 进程名)
另:
killall -9 webstorm

杀掉所有webstorm进程

杀掉占用端口8888的进程

kill -9 $(lsof -i:8888 -t)

9. post请求

采用curl命令可以发送各种HTTP请求,程序员必备技能。

curl -H “Content-Type: application/json” -d @/data/my.json http://localhost:8080/api/service/registry/add

如果不指定content-type, 默认是:application/x-www-form-urlencoded

10. 一行for语句遍历

可以直接在命令行写一行for语句,无需写到脚本。

for p in ls /home/mini-rds/mysql/; do echo KaTeX parse error: Expected 'EOF', got '&' at position 3: p &̲& mysql -h127.0…p -uroot -e ‘show slave status\G’ | grep ‘Master_Host’; done

一行语句查找满足条件的某个docker容器:

for conId in $(docker ps -q|grep Up);do docker inspect conId∣grep170.1.80.12;if["conId | grep 170.1.80.12 ;if [ "conId∣grep170.1.80.12;if["?" -eq “0” ];then echo $conId; fi; done

总结

本文通过实际例子展示了Linux基本命令的用法。要想熟练使用Linux,掌握下列命令是必不可少的。

  • 包管理: apt, yum, dpkg
  • 搜索: find和grep
  • 文件处理: cat, more, less
  • 进程:ps, top, htop
  • 网络: netstat, lsof, ip, ifconfig, curl
  • xargs: 构建一条可执行命令,将标准输入作为待构建命令的参数
  • 文本处理:sed、awk、cut
  • 基本的shell语法: for, if
  • 注意shell中几个特殊字符的作用: 单引号和双引号都将剥夺其中的所有字符的特殊含义,而双引号中的’$‘(参数替换)和’`'(命令替换)是例外,而反引号和$()将执行里面的命令,以返回结果替换所在的字符串的相应部分。

Shell之核心语法while/if/until速记

while [ 1 ]; do sleep 1; ll; done # 无限循环
while [ $i -lt 10 ]; do echo $i;let "i=$i+1"; done # 有限循环
cat raw.txt | while read line; do echo $line; done # readline
until [ 1 = 0 ]; do sleep 1; ll; done # 无限循环,另一中语义
for i in /media/m* ; do ls -l $i; done  # 与目录资源结合
if [ 1 -eq 1 ]; then ll ;fi # test常用判断
if [[ 0 -eq 0 && 1 -eq 0 ]]; then ll ;fi  ## || or 多条件test的写法1 && and (注意2层中括号)
if [ 0 -eq 0 -a 1 -eq 0 ]; then ll ;fi    ## -o or 多条件test的写法2 -a and
if [ ! -e /tmp/111 -a -z "$a" ]; then ll ;fi   ## 不存在111文件 且a变量长度为0 则执行ll(对应的否定是)

awk/sed/cut用例速记

ps -ef | grep java | grep -v eclipse # 查看进程,筛选出java的,排除eclipse的
echo helloworld | tr -d "o"  # 删除字符o,输出 hellwrld
echo 'a:b:c' | tr -s ':' '*'  # 替换字符:为*,输出 a*b*c
echo 'a:b:c' | awk -F ':' '{print $1 "+" $3 "+" $2}' # 按:切分后,按下标调整顺序,空格分割输出。a+c+b
awk -F':' '{print $1}' temp2.log | awk '{ arr[$1]++ } END { for( no in arr) { print no , arr[no] } }' | sort -n -t" " -k 2 -r # 一句话实现group by,这条不细说,自己研究
echo 'a:b:c' | sed -e 's#:#*#g'  # 替换字符:为*,输出 a*b*c

再补充一些其它例子

本文浏览量比较高,说明Linux实用命令对大家帮助还是挺大的,继续补充:

11、统计字符出现次数

#如下输出统计所有数字出现次数
#grep -E 表示用正则匹配,-o 表示只输出匹配部分
#END表示最终执行代码块
find -name *.txt | xargs grep -E -o “[0-9]+” | awk ‘{count++} END{print count}’

12、统计代码行数

awk ‘{if(N /.+ N / . + /) count++} END{print count}’ ./demo.txt

N为当前行字符,正则/.+ N 为 当 前 行 字 符 , 正 则 / . + /表示该行中有任意字符则count++

13、文件传输

ssh -p 1022 root@192.168.1.200  # 从1022端口,以root身份登录到远程
scp -P 1022 openwrt-*  root@192.168.1.200:/tmp/  # 通过1022端口,把openwrt开头的多个文件,传输到远程机器上的tmp目录,以root做为鉴权
rsync -avz -e 'ssh -p 1022' openwrt-* root@192.168.1.200:/tmp/ # 效果基本同上,但是只是增量同步

掌握这十个Linux命令,秒变Linux老手相关推荐

  1. Linux命令篇 linux命令大全简洁明了 linux学习笔记

    Linux命令篇 linux命令大全简洁明了 linux学习笔记 Linux 命令大全 文章目录 Linux 命令大全 一. 常用的基础命令 查看目录: 切换目录: 创建和删除: 拷贝和移动文件: 查 ...

  2. 每天一个linux命令(25):linux文件属性详解

    每天一个linux命令(25):linux文件属性详解 Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下 ...

  3. Linux命令集(Linux文件管理命令--rm指令篇)

    Linux命令集(Linux文件管理命令--rm指令篇) Linux文件管理命令集(rm指令篇) 3. rm(remove) 1. 删除文件 2. 强制删除文件 3. 提示确认,删除前需逐一询问是否确 ...

  4. Linux命令集(Linux文件管理命令--rmdir指令篇)

    Linux命令集(Linux文件管理命令--rmdir指令篇) Linux文件管理命令集(rmdir指令篇) 5. rmdir(remove directory) 1. 删除空的目录 folder1 ...

  5. linux 命令run road,linux命令进阶

    Though unconsciously,peple are indeed moving towards their destination.Slow as the progress seen fro ...

  6. 使用linux命令查看进程,Linux查看进程命令有哪些

    我们在使用Linux系统的过程中,有的时候会需要查看后台进程,并选择性的关闭一些不用的进程,那么Linux中有哪些查看进程的命令呢?今天小编就来为大家总结整理一些常用的Linux查看进程命令. Lin ...

  7. Linux命令集(Linux常用命令集--CD指令篇)

    Linux命令集(Linux常用命令--CD指令篇) Linux常用命令集(CD指令篇) 1.CD(change directory) Linux常用命令集(CD指令篇) 如下为笔者总结出在linux ...

  8. linux 命令连接符,Linux 中命令链接操作符的十个最佳实例

    Linux 中命令链接操作符的十个最佳实例 日期:2017-12-14 浏览:1416次 评论:0条 侧边栏 英文:Tecmint,翻译:Linux中国/geekpi https://linux.cn ...

  9. 把手机变成linux桌面,秒变PC!骁龙835手机终于塞入完整桌面OS

    原标题:秒变PC!骁龙835手机终于塞入完整桌面OS 从Galaxy S8开始,三星推出了DeX.它以扩展坞的形式存在,在手机连接后,可以投屏到PC显示器上一个定制化的桌面系统,很多安卓APP都进行了 ...

  10. python中执行linux命令(调用linux命令)_Python调用Linux bash命令

    import subprocess as sup  # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了 # 3.5版本之后官方推荐使用sup.run ...

最新文章

  1. 教你创建高大上的多边形字体
  2. empire-web可视化
  3. 架构学习优秀网站整理
  4. 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 如果客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置 文件内容的对象,则在系统运行中,有 很多地方都需
  5. malloc coredump(宕)的问题
  6. 完全卸载Oracle方法(超详细)
  7. Oracle JDE计划BOM应用
  8. matlab 交互效应三维图,【MATLAB】使用MATLAB绘制心理学中的交互作用图
  9. 众所周知B站(哔哩哔哩)是一个学习软件
  10. 如何利用家谱制作软件快速修谱录入
  11. 电容或电感的电压_阻碍电流流通的“双子星”,电容与电感
  12. 淘宝违规考试软件1.0
  13. STEP2——《数据分析:企业的贤内助》重点摘要笔记(四)——数据清洗
  14. 圈叉棋、套娃圈叉棋、嵌套圈叉棋、九个井字棋
  15. 【算法】Sunday算法(模式匹配)
  16. 计算机夏令营英语自我介绍,夏令营英文自我介绍
  17. 达梦数据库全文索引使用示例
  18. 【FPGA——工具篇】:Xilinx_ISE_12.4安装包下载百度云网盘
  19. 广州.NET俱乐部的活动
  20. 习题42 对象、类及从属关系

热门文章

  1. Susan角点检测python实现 (边缘检测、角点检测、重心计算、非极大值抑制)
  2. 路西法及堕落天使相关资料
  3. layUI 表格中1:0转换成男女 if else数字转对应中文显示
  4. Tkinter实现人员管理系统(mongodb版)
  5. 前端性能优化(二)01-页面性能优化之浏览器——浏览器的主要作用 浏览器的组成结构
  6. 【陈工笔记】# 多模态 # 多模态在图像配准方面的简单认知
  7. ISO14443标准详细介绍
  8. 在招股书中编概念、讲故事,将通过内核审批的申报文件大幅删减后报送
  9. (转)回溯法-算法框架及基础
  10. 新走遍美国(一)---故事梗概