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
# 文字字符
\ 格式化字符,
\r 換行符
/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/\n//g
# 將連續的兩個空行替換成一個空行:
:%s/\n\n/\r/g
# 刪除三行空行:
:%s/^\n\{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/\n//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