Linux-基础命令
NeedTODO
数据清洗 -大规模数据清洗的利器 文字解析、文字替换等, 速度远快于replace
https://flashtext.readthedocs.io/en/latest/
文件处理
split
split 文件切割软件
# 按照大小切割文件
split -b 10M a.csv a.csv.
切割后得到
a.csv.aa a.csv.ab
# 字符串分割函数split
str.split(str="", num=string.count(str))
- str :分隔符,默认为空格。
- num :分割次数。
ls 文件长度统计
# 统计当前文件夹下文件的个数:
ls -l |grep "^-"|wc -l
# 统计当前文件夹下目录的个数:
ls -l |grep "^d"|wc -l
# 统计当前文件夹下文件的个数,包括子文件夹里的 :
ls -lR|grep "^-"|wc -l
# 统计文件夹下目录的个数,包括子文件夹里的:
ls -lR|grep "^d"|wc -l
# 统计输出信息的行数
wc -l
sed
sed 文件替换
# 在文件的首行插入指定内容:
sed -i "1i#! /bin/sh -" a
执行后,在a文件的第一行插入#! /bin/sh -
# 在文件的指定行(n)插入指定内容:
sed -i "niecho "haha"" a
执行后,在a文件的第n行插入echo "haha"
# 在文件的末尾行插入指定内容:
echo “haha” >> a
执行后,在a文件的末尾行插入haha
# 删除正文首行的#号注释
sed 's/#//g' /etc/crontab
# 替换文件中字符串
sed -i "s/str1/str2/g" filname
# 删除a.txt中含"abc"的行,但不改变a.txt文件本身,操作之后的结果在终端显示
sed -e '/abc/d' a.txt
# 删除a.txt中含"abc"的行,将操作之后的结果保存到a.log
sed -e '/abc/d' a.txt > a.log
# 删除含字符串"abc"或“efg"的行,将结果保存到a.log
sed '/abc/d;/efg/d' a.txt > a.log
# 查找多个空格
/s+
# 删除第1000行输出 a不变 b删除一条数据
sed -e '/1000/d' a> b
# 获取第二行到末尾
sed -n '2,$p' filename > new_filename
# 删除Linux文件重复行
sort -n filename | uniq
### 删除空行 删除空格/回车组成的空行
sed -i '/^ *$/d' file
# 将目录下所有文件 替换字符串
sed -i "s/d3b387c031dd/1000db7324ff/g" `grep "d3b387c031dd" -rl /u01 `
软件安装
rpm
资源链接:
- rpm镜像网:http://rpmfind.net/
rpm相关命令
# 查询包版本
rpm -qa | grep vim
# 安装包
rpm -ivh xxxxx.rpm
# 卸载
rpm -e --nodeps vim-minimal-7.4.629-5.el6_8.1.x86_64
yum
yum相关命令
# 安装
yum install -y vim
# 卸载
yum remove vim
# 重置缓存
yum clean all
yum makecache
# yum配置目录
/etc/yum.repos.d/xx.repo
# 只下载安装包 方法1
yum install yum-plugin-downloadonly -y # centos6之前需要此命令
yum install mysql-server --downloadonly --downloaddir=/data/packages
# 只下载安装包 方法2
yum install yum-utils -y # 专门的下载工具
yum downloader lsof --resolve --destdir=/data/mydepot/ # 默认不会下载对应的依赖文件,需要添加 resolve参数
# 查看可用的rpm包
yum list available 'graphviz*'
# yum 下载 rpm 包
yum install --downloaddir=/tmp/whj/ --downloadonly glibc-devel.i686
pip
pip相关常用命令
# 搜索包
pip search xlrd
# 查看包版本
pip list
# 生成环境依赖文件
pip freeze > requirement.txt
# 下载安装包 方式1
pip --downloadonly --downloaddir=/tmp/ xlrd
# 下载安装包 方式2 - 会下载对应依赖
pip download xx
# 查看可更新包:
pip list --outdated --format=columns
# 批量下载并更新:
pip install pip-review
pip-review --local --interactive
# 寻找pip中是否存在此安装包
pip search file
# 查看安装包时安装了哪些文件:
pip show --files SomePackage
# 查看哪些包有更新:
pip show --files SomePackage
# 更新一个软件:
pip install --upgrade SomePackage
# 安装
pip install xlrd
# 卸载
pip uninstall xlrd
配置国内pip源
# 配置 国内pip源 ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
解压压缩
tar
# 压缩常用命令
tar -zcf xxx.tar.gz xxx_dir_xxx
-v 显示详细的处理文件
# 解压常用命令
tar -zxvf xxx.tar.gz
# 解压 xz 压缩包
tar xvJf node-v6.10.1-linux-x64.tar.xz
zip/unzip
zip -P qwe123 a.zip -r ssss
# zip 参数说明
-P 加密
-r 压缩目录
# 压缩并指定目录
zip -r /home/kms/kms.zip /home/kms/server/kms
# 解压并指定目录
unzip /home/kms/kms.zip -d /home/kms/server/kms
基础命令
配置alias
# ~/.bash_profile
alias pip=" pip --trusted-host mirrors.aliyun.com "
wget
wget参数解释、用法: https://blog.csdn.net/endall/article/details/1571220
# 做站点镜像
wget xxxx -r -np 下载整个目录,不包含上层目录
grep
grep -r 递归查询子目录
grep -i 查询不区分大小写
grep -n 显示查询出来的文件行号
grep -w 精准匹配
grep -l 只显示(包含文件内容的)文件名
grep -rn xxx . “.” 只查询本目录以及其下的目录—公司电脑只有这样才能查询,具体原因,可能是设置了相关权限等
find
忽略大小写 -iname
find / -iname ‘csv’
vim
vim键盘图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XcjoyuJM-1580569244503)(https://github.com/fansichao/file/blob/master/picture/Linux%20vi.png?raw=true)]
vim使用技巧
vim使用技巧
# 全局替换
%s/old/new/g
# 指定行数替换
100,120/old/new/g
# 文字字符
格式化字符,
换行符
/g 全局替换
%s 全局查找
+ 表重复一次或多次 x+
/c 确认替换
# 删除文章中的空行
g/^s*$/d
^s*$ :匹配空行,其中^表示行首,s表示空字符,包括空格和制表符,*重复0到n个前面的字符,$表示行尾。连起来就是匹配只有空字符的行,也就是空行。
/d :删除该行
# 删除行尾空格:
:%s= *$==
%s全局查找替换
=为%s命令的分隔符,如果把=换为/,则该命令可以写为:%s/ *$//
” *$”, $表示行尾,*匹配前面0个到n个字符,*前面是空格,因此此正则表达式匹配行尾的0个到n个字符。
==,分隔符没有中间没有内容,表示删除匹配空格, 在这里表示删除行尾空格。
# 去掉文件中^M
^M = Ctrl v + Ctrl m
# 删除换行符:
:%s/
//g
# 将连续的两个空行替换成一个空行:
:%s/
/
/g
# 删除三行空行:
:%s/^
{3}//
# 合并行
命令J使两行合并为一行,同时用空格分隔这两行。
# 替换str为str+回车
回车在vim的输入方法是ctrl+V,会得到^,此时再按回车.会得到^M这个就是回车了
因此把全文件所有str换成str回车的语句是:
: 1,$ s/str/str^M/g
^M用上面的方法输入
1,$表示从1到最后一行,s是switch,g是global
### vim删除包含指定字符串的所有行
:g/something/d # 删除包含something的所有行
.vimrc配置
set nu
set ts=4 # 设置 长度为四个空格
set expandtab # tab键设置为空格
set paste # 智能粘贴
set shiftwidth # 程序自动缩进
set softtabstop=4/8/16 # tab键为四个空格或者制表符,8为制表符,4为空格,可以同时产生制表符和空格
vim-set
Vim中的一些设置
:set fileformat 设置文件格式
:set endofline 设置文件结束符
:set noendofline 取消文件结束符
:%s/
//g 删除换行符
:set textwidth 设置行宽
:set textwidth 设置行边距
:join 合并多行J合并两行
Tips大全
- env 查看当前环境变量
- history 查看输入的历史命令
- chmod 文件授权 需要一层层授权, 或者 chmod -R xxx 授权其下的所有文件以及文件夹
注意:不要拿Decimal和str进行比较,会导致结果完全错误。
注意:字段的格式
- ctrl + w 回退输入的单词
- pstree 进程树
- time python xxxx sh脚本中加time执行可以显示执行的时间详细情况
- nohup time xxx sh文件中 使用nohup调度多个文件,可以多个文件同时执行,(文件之间不能存在依赖)
Linux文件比对
vimdiff a.txt b.txt # 效果 左右分割 颜色标记显示 (需要安装vim包)
diff -wy --suppress-common-lines a.txt b.txt # 效果 左右分割 推荐使用
查看端口
netstat -lntp | grep 5000
Linux命令去重
常用命令:sort -u xxx
uniq # 去重重复连续出现的记录
sort -u 等价于 sort xxx | uniq
# 删除Linux文件重复行
sort -n test.txt | uniq
删除用户数据
userdel -r xxx # 完全删除用户
userdel xxx # 只能删除部分用户,像/home/xxx等需要手动删除
Linux去重
Linux 查看当前占用CPU或内存最多的几个进程:
1. ps命令
1. ps -aux | sort -k4nr | head -10
2. top工具
1. top之后,大写M,按照内存倒序排序
2. top之后,大写C,按照CPU倒序排序
3. ps -aux | sort -k4,4n
切换用户运行sh脚本
su - fdm -c “Command”
电源关机
poweroff
reboot
shutdown
Linux 登录或注销时执行脚本
分别使用~.bash_profile 和 ~.bash_logout可以做到
tailf、tail -f、tail -F三者区别
tail -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F 等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
tailf 等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电
程序转入前台或者后台运行 Linux ctrl组合命令
jobs //查看任务,返回任务编号n和进程号
free 查看当前内存使用情况
bg %n //将编号为n的任务转后台运行
fg %n //将编号为n的任务转前台运行
ctrl+z //挂起当前任务
ctrl+c //结束当前任务 发送Terminal到当前的程序,强制结束当前程序,比较暴力
ctrl+d //结束当前任务或退出shell, 发送exit信号
ctrl+|
ctrl+s 暂停屏幕输出
ctrl+q 恢复屏幕输出
ctrl+a 切换到命令行开始
ctrl+e 切换到命令行末尾
ctrl+y 在光标处粘贴剪切的内容
Linux查看系统安转的所有源包
rpm -qa
pcp-pmda-kvm-3.10.6-2.el7.x86_64
unoconv-0.6-7.el7.noarch
texlive-fp-svn15878.0-38.el7.noarch
abrt-python-2.1.11-36.el7.centos.x86_64
libcanberra-gtk3-0.30-5.el7.x86_64
Linux查看virtualenv的所有包
pip freeze
效果如下:
tornado4.3
Tornado-JSON1.2.1
urlgrabber3.10
urllib31.10.2
urwid==1.1.1