掌握这十个Linux命令,秒变Linux老手
目录
- 前言
- 实例
- 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老手相关推荐
- Linux命令篇 linux命令大全简洁明了 linux学习笔记
Linux命令篇 linux命令大全简洁明了 linux学习笔记 Linux 命令大全 文章目录 Linux 命令大全 一. 常用的基础命令 查看目录: 切换目录: 创建和删除: 拷贝和移动文件: 查 ...
- 每天一个linux命令(25):linux文件属性详解
每天一个linux命令(25):linux文件属性详解 Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下 ...
- Linux命令集(Linux文件管理命令--rm指令篇)
Linux命令集(Linux文件管理命令--rm指令篇) Linux文件管理命令集(rm指令篇) 3. rm(remove) 1. 删除文件 2. 强制删除文件 3. 提示确认,删除前需逐一询问是否确 ...
- Linux命令集(Linux文件管理命令--rmdir指令篇)
Linux命令集(Linux文件管理命令--rmdir指令篇) Linux文件管理命令集(rmdir指令篇) 5. rmdir(remove directory) 1. 删除空的目录 folder1 ...
- linux 命令run road,linux命令进阶
Though unconsciously,peple are indeed moving towards their destination.Slow as the progress seen fro ...
- 使用linux命令查看进程,Linux查看进程命令有哪些
我们在使用Linux系统的过程中,有的时候会需要查看后台进程,并选择性的关闭一些不用的进程,那么Linux中有哪些查看进程的命令呢?今天小编就来为大家总结整理一些常用的Linux查看进程命令. Lin ...
- Linux命令集(Linux常用命令集--CD指令篇)
Linux命令集(Linux常用命令--CD指令篇) Linux常用命令集(CD指令篇) 1.CD(change directory) Linux常用命令集(CD指令篇) 如下为笔者总结出在linux ...
- linux 命令连接符,Linux 中命令链接操作符的十个最佳实例
Linux 中命令链接操作符的十个最佳实例 日期:2017-12-14 浏览:1416次 评论:0条 侧边栏 英文:Tecmint,翻译:Linux中国/geekpi https://linux.cn ...
- 把手机变成linux桌面,秒变PC!骁龙835手机终于塞入完整桌面OS
原标题:秒变PC!骁龙835手机终于塞入完整桌面OS 从Galaxy S8开始,三星推出了DeX.它以扩展坞的形式存在,在手机连接后,可以投屏到PC显示器上一个定制化的桌面系统,很多安卓APP都进行了 ...
- python中执行linux命令(调用linux命令)_Python调用Linux bash命令
import subprocess as sup # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了 # 3.5版本之后官方推荐使用sup.run ...
最新文章
- 教你创建高大上的多边形字体
- empire-web可视化
- 架构学习优秀网站整理
- 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 如果客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置 文件内容的对象,则在系统运行中,有 很多地方都需
- malloc coredump(宕)的问题
- 完全卸载Oracle方法(超详细)
- Oracle JDE计划BOM应用
- matlab 交互效应三维图,【MATLAB】使用MATLAB绘制心理学中的交互作用图
- 众所周知B站(哔哩哔哩)是一个学习软件
- 如何利用家谱制作软件快速修谱录入
- 电容或电感的电压_阻碍电流流通的“双子星”,电容与电感
- 淘宝违规考试软件1.0
- STEP2——《数据分析:企业的贤内助》重点摘要笔记(四)——数据清洗
- 圈叉棋、套娃圈叉棋、嵌套圈叉棋、九个井字棋
- 【算法】Sunday算法(模式匹配)
- 计算机夏令营英语自我介绍,夏令营英文自我介绍
- 达梦数据库全文索引使用示例
- 【FPGA——工具篇】:Xilinx_ISE_12.4安装包下载百度云网盘
- 广州.NET俱乐部的活动
- 习题42 对象、类及从属关系