• Linux基础-01常用命令


    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相关命令

    # 查询包版本
    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-JSON
    1.2.1
    urlgrabber3.10
    urllib3
    1.10.2
    urwid==1.1.1

  • 相关阅读:
    【概念】构造函数和析构函数
    【概念】使用Fixed创建固定大小的缓冲区
    Sqoop
    Flume组件
    Hive节点及原理
    Yarn
    Hive数据倾斜
    单例
    工厂设计模式
    JVM对象创建
  • 原文地址:https://www.cnblogs.com/superscfan/p/12256971.html
Copyright © 2020-2023  润新知