文本處理html
替換:sed 's/被替換字符/替換字符/g' file_namejava
刪除文件全部空行:sed '/^$/d' file_namepython
刪除文件全部註釋:sed '/*#/d' file_namegit
查看第一行的第一欄:echo a b c | awk '{print $1}'vim
查看一行的第一和第三欄:echo a b c | awk '{print $1,$3}'安全
合併兩個文件或兩欄的內容:paste file1 file2less
合併兩個文件或兩欄的內容用「+」號區分:paste -d '+' file1 file2ssh
排序兩個文件的內容:sort file1 file2 fetch
取出兩個文件的並集(重複的行只保留一份):sort file1 file2 | uniq 取出兩個文件的並集(重複的行只保留一份)線程
刪除交集,留下其餘的行:sort file1 file2 | uniq -u 刪除交集,留下其餘的行
取出兩個文件的交集(只留下同時存在於兩個文件中的文件):sort file1 file2 | uniq -d
比較兩個文件的內容只刪除 'file1' 所包含的內容:comm -1 file1 file2
比較兩個文件的內容只刪除 'file2' 所包含的內容:comm -2 file1 file2
比較兩個文件的內容只刪除兩個文件共有的部分:comm -3 file1 file2
字符設置和文件格式轉換
將一個文本文件的格式從MSDOS轉換成UNIX:dos2unix filedos.txt fileunix.txt
將一個文本文件的格式從UNIX轉換成MSDOS:unix2dos fileunix.txt filedos.txt 將一個文本文件的格式從UNIX轉換成MSDOS
將一個文本文件轉換成html:recode ..HTML < page.txt > page.html 將一個文本文件轉換成html
顯示全部容許的轉換格式:recode -l | more
各類備份命令
製做一個 '/home' 目錄的完整備份:dump -0aj -f /tmp/home0.bak /home
製做一個 '/home' 目錄的交互式備份:dump -1aj -f /tmp/home0.bak /home
還原一個交互式備份:restore -if /tmp/home0.bak
同步兩邊的目錄:rsync -rogpav --delete /home /tmp
經過SSH通道rsync:rsync -rogpav -e ssh --delete /home ip_address:/tmp
經過ssh和壓縮將一個遠程目錄同步到本地目錄:rsync -az -e ssh --delete ip_addr:/home/public /home/local
經過ssh和壓縮將本地目錄同步到遠程目錄:rsync -az -e ssh --delete /home/local ip_addr:/home/public
經過ssh在遠程主機上執行一次備份本地磁盤的操做:dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz'
備份磁盤內容到一個文件:dd if=/dev/sda of=/tmp/file1
作一個將 MBR (Master Boot Record)內容複製到軟盤的動做:dd if=/dev/hda of=/dev/fd0 bs=512 count=1
從已經保存到軟盤的備份中恢復MBR內容:dd if=/dev/fd0 of=/dev/hda bs=512 count=1
執行一次對 '/home/user' 目錄的交互式備份操做:tar -Puf backup.tar /home/user
經過ssh在遠程目錄中複製一個目錄內容:( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p'
經過ssh在遠程目錄中複製一個本地目錄:( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p'
本地將一個目錄複製到另外一個地方,保留原有權限及連接:tar cf - . | (cd /tmp/backup ; tar xf - )
從一個目錄查找並複製全部以 '.txt' 結尾的文件到另外一個目錄:find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents
查找全部以 '.log' 結尾的文件並作成一個bzip包:find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2
文件的特殊屬性
使用 "+" 設置權限,使用 "-" 用於取消
只容許以追加方式讀寫文件:chattr +a file1
容許這個文件能被內核自動壓縮/解壓:chattr +c file1
在進行文件系統備份時,dump程序將忽略這個文件:chattr +d file1
設置成不可變的文件,不能被刪除、修改、重命名或者連接:chattr +i file1
容許一個文件被安全地刪除:chattr +s file1
一旦應用程序對這個文件執行了寫操做,使系統馬上把修改的結果寫到磁盤:chattr +S file1
若文件被刪除,系統會容許你在之後恢復這個被刪除的文件:chattr +u file1
顯示特殊的屬性:lsattr
用戶設置
設置用戶口令的失效期限:chage -E 2016-4-22 user1
檢查 '/etc/passwd' 的文件格式和語法修正以及存在的用戶:pwck
檢查 '/etc/passwd' 的文件格式和語法修正以及存在的羣組:grpck
登錄進一個新的羣組以改變新建立文件的預設羣組:newgrp group_name
工做經常使用
檢查進程運行狀態:ps -ef | grep 進程名稱
殺死進程:kill -9 進程號 如:ps aux|grep zabbix |awk '{print $2}' |xargs kill -9
查看某個時間段到如今日誌:sed -n '/2016-04-23 09:00:00/,$p' system.log.2016-04-23 | less
根據條件查找文件:grep server_name *.conf --color=auto
批量替換:find . -type f -name "*.conf"|xargs perl -pi -e 's|listen 80|#listen 80|g'
a,b機器之間文件傳輸:
a機器:python -m SimpleHTTPServer(默認端口是8000) #須要在當前文件執行
b機器:wget http://ip_add:8000/文件的名字
獲取Java堆棧信息:
sudo -u user1 /usr/local/java/bin/jstack 進程號(top查看最高的java進程) > a.txt
找到最高的JAVA線程
top -H -p 進程號
把線程號轉成16進制
printf "%x" 327
147
去a.txt裏面查找147
vim a.txt /147
jstat -gcutil 23116 1000 5
git經常使用
查看版本:git remote -v
拉取用戶的代碼:git fetch user1
切換並建立新的分支:git checkout -b 建立的分支名 分支
刪除分支:git branch -D 分支
查看分支:git branch
切換分支:git checkout 分支名稱