ubuntu基礎知識與技巧


root用戶與超級用戶的切換

(1)  sudo -i

(2)  sudo su

(3)  su root

安裝升級

查看軟件xxx安裝內容

dpkg -L xxx 

查找軟件庫中的軟件

apt-cache search 正則表達式
或
aptitude search 軟件包

顯示系統安裝包的統計信息

apt-cache stats

顯示系統全部可用包的名稱

apt-cache pkgnames

顯示包的信息

apt-cache show k3b

查找文件屬於哪個包

dpkg -S filename
apt-file search filename

查看已經安裝了哪些包

dpkg -l

也可用

dpkg -l | less

翻頁查看

查詢軟件xxx依賴哪些包

apt-cache depends xxx

查詢軟件xxx被哪些包依賴

apt-cache rdepends xxx

增加一個光盤源

sudo apt-cdrom add

系統更新

sudo apt-get update (這一步更新包列表)
sudo apt-get dist-upgrade (這一步安裝所有可用更新)
或者
sudo apt-get upgrade (這一步安裝應用程序更新,不安裝新內核等)

清除所有已刪除包的殘餘配置文件

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 

如果報如下錯誤,證明你的系統中沒有殘留配置文件了,無須擔心。


dpkg: --purge needs at least one package name argument

Type dpkg --help for help about installing and deinstalling packages [*];
Use `dselect' or `aptitude' for user-friendly package management;
Type dpkg -Dhelp for a list of dpkg debug flag values;
Type dpkg --force-help for a list of forcing options;
Type dpkg-deb --help for help about manipulating *.deb files;
Type dpkg --license for copyright license and lack of warranty (GNU GPL) [*].

Options marked [*] produce a lot of output - pipe it through `less' or `more' !

 


編譯時缺少h文件的自動處理

sudo auto-apt run ./configure

查看安裝軟件時下載包的臨時存放目錄

ls /var/cache/apt/archives

備份當前系統安裝的所有包的列表

dpkg --get-selections | grep -v deinstall > ~/somefile

從上面備份的安裝包的列表文件恢復所有包

dpkg --set-selections < ~/somefile
sudo dselect

清理舊版本的軟件緩存

sudo apt-get autoclean

清理所有軟件緩存

sudo apt-get clean

刪除系統不再使用的孤立軟件

sudo apt-get autoremove

如果使用

sudo apt-get autoremove --purge

的話會把這些孤立軟件的殘留配置文件也一並移除

查看包在服務器上面的地址

apt-get -qq --print-uris download 軟件包名稱 | cut -d\' -f2

徹底刪除Gnome

sudo apt-get --purge remove liborbit2

徹底刪除KDE

sudo apt-get --purge remove libqt3-mt libqtcore4

一鍵安裝 LAMP 服務

sudo tasksel install lamp-server

刪除舊內核

sudo aptitude purge ~ilinux-image-.*\(\!\(`uname -r`\|generic-.*\)\)

導入ppa源的key值

#W: GPG簽名驗證錯誤: http://ppa.launchpad.net jaunty Release: 由於沒有公鑰,下列簽名無法進行驗證: NO_PUBKEY 5126890CDCC7AFE0
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 5126890CDCC7AFE0 #5126890CDCC7AFE0替換為你需要導入的Key值

增加 add-apt-repository 命令

sudo apt-get install software-properties-common

增加一個ppa源

sudo add-apt-repository ppa:user/ppa-name  
#使用 ppa 的地址替換 ppa:user/ppa-name

添加163鏡像源

sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ `lsb_release -cs` main restricted universe multiverse"
sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ `lsb_release -cs`-updates main restricted universe multiverse"
sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ `lsb_release -cs`-security main restricted universe multiverse"

系統升級

  1. 這里指的是版本間的升級,例如 9.04=>10.04。
  2. 使用該升級方式通常需要使用 backports 源。
sudo apt-get update
sudo apt-get install update-manager-core
sudo do-release-upgrade

系統

查看內核

uname -a

查看系統是32位還是64位

#查看long的位數,返回32或64
getconf LONG_BIT
#查看文件信息,包含32-bit就是32位,包含64-bit就是64位
file /sbin/init

或者使用

uname -m

查看Ubuntu版本

lsb_release -a
或 cat /etc/lsb-release

查看內核加載的模塊

lsmod

查看PCI設備

lspci

查看USB設備

lsusb 

#加參數 -v 可以顯示USB設備的描述表(descriptors)
lsusb -v

查看網卡狀態

sudo apt-get install ethtool 
sudo ethtool eth0

激活網卡的 Wake-on-LAN

sudo apt-get install wakeonlan
或 sudo ethtool -s eth0 wol g

查看CPU信息

cat /proc/cpuinfo

顯示當前硬件信息

sudo lshw

查看內存型號

sudo dmidecode -t memory

獲取CPU序列號或者主板序列號

#CPU ID
sudo dmidecode -t 4 | grep ID
#Serial Number
sudo dmidecode  | grep  Serial
#CPU
sudo dmidecode -t 4
#BIOS
sudo dmidecode -t 0
#主板:
sudo dmidecode -t 2
#OEM:
sudo dmidecode -t 11

顯示當前內存大小

free -m |grep "Mem" | awk '{print $2}'

查看硬盤溫度

sudo apt-get install hddtemp
sudo hddtemp /dev/sda

顯示系統運行時間

uptime

查看系統限制

ulimit -a

查看內核限制

ipcs -l

查看當前屏幕分辨率

xrandr

硬盤

查看塊設備

lsblk

查看硬盤的分區

sudo fdisk -l

硬盤分區

#危險!小心操作。
sudo fdisk /dev/sda

硬盤格式化

#危險!將第一個分區格式化為 ext3 分區, mkfs.reiserfs mkfs.xfs mkfs.vfat
sudo mkfs.ext3 /dev/sda1

硬盤檢查

#危險!檢查第一個分區,請不要檢查已經掛載的分區,否則容易丟失和損壞數據
sudo fsck /dev/sda1

硬盤壞道檢測

sudo badblocks -s  -v -c 32 /dev/sdb
#得到壞的塊后,使用分區工具隔離壞道。

分區掛載

sudo mount -t 文件系統類型 設備路經 訪問路經 
#常用文件類型如下: iso9660 光驅文件系統, vfat fat/fat32分區, ntfs ntfs分區, smbfs windows網絡共享目錄, reiserfs、ext3、xfs Linux分區
#如果中文名無法顯示嘗試在最後增加 -o nls=utf8 或 -o iocharset=utf8 
#如果需要掛載後,普通用戶也可以使用,在 -o 的參數後面增加 ,umask=022 如:-o nls=utf8,umask=022

分區卸載

sudo umount 目錄名或設備名

只讀掛載ntfs分區

sudo mount -t ntfs -o nls=utf8,umask=0 /dev/sdb1 /mnt/c

可寫掛載ntfs分區

sudo mount -t ntfs-3g -o locale=zh_CN.utf8,umask=0 /dev/sdb1 /mnt/c

掛載fat32分區

sudo mount -t vfat -o iocharset=utf8,umask=0 /dev/sda1 /mnt/c

掛載共享文件

sudo mount -t smbfs -o  username=xxx,password=xxx,iocharset=utf8 //192.168.1.1/share /mnt/share

掛載ISO文件

sudo mount -t iso9660 -o loop,utf8 xxx.iso /mnt/iso

查看IDE硬盤信息

sudo hdparm -i /dev/sda

查看軟raid陣列信息

cat /proc/mdstat

參看硬raid陣列信息

dmesg |grep -i raid
cat /proc/scsi/scsi

查看SATA硬盤信息

sudo hdparm -I /dev/sda
或
sudo apt-get install blktool
sudo blktool /dev/sda id

查看硬盤剩余空間

df

df --help 顯示幫助

查看目錄占用空間

du -hs 目錄名

閃盤沒法卸載

sync
fuser -km /media/閃盤卷標

使用文件來增加交換空間

#創建一個512M的交換文件 /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=512 
sudo mkswap /swapfile
sudo swapon /swapfile
#sudo vim /etc/fstab #加到fstab文件中讓系統引導時自動啟動
/swapfile swap swap defaults 0 0

查看硬盤當前讀寫情況

# 首先安裝 sysstat 包
sudo apt-get install sysstat
#每2秒刷新一次
sudo iostat -x 2

測試硬盤的實際寫入速度

dd if=/dev/zero of=test bs=64k count=512 oflag=dsync

進程

查看當前的內存使用情況

free

連續監視內存使用情況

watch  -d free
# 使用 Ctrl + c 退出

動態顯示進程執行情況

top
top指令運行時輸入H或?打開幫助窗口,輸入Q退出指令。

查看當前有哪些進程

ps -AFL

查看進程的啟動時間

ps -A -opid,stime,etime,args

查看目前登入用戶運行的程序

w

查看當前用戶程序實際內存占用,並排序

ps -u $USER -o pid,rss,cmd --sort -rss

統計程序的內存耗用

ps -eo fname,rss|awk '{arr[$1]+=$2} END {for (i in arr) {print i,arr[i]}}'|sort -k2 -nr

按內存從大到小排列進程

ps -eo "%C  : %p : %z : %a"|sort -k5 -nr

列出前十個最耗內存的進程

ps aux | sort -nk +4 | tail

按cpu利用率從大到小排列進程

ps -eo "%C  : %p : %z : %a"|sort  -nr
ps aux --sort -pcpu |head -n 20

查看當前進程樹

pstree

中止一個進程

kill 進程號(就是ps -A中的第一列的數字)
或者 killall 進程名

強制中止一個進程(在上面進程中止不成功的時候使用)

kill -9 進程號
或者 killall -9 進程名

圖形方式中止一個程序

xkill 出現骷髏標志的鼠標,點擊需要中止的程序即可

 

查看進程打開的文件

lsof -p 進程的pid

統計進程打開的文件數並排序

lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr

顯示開啟文件abc.txt的進程

lsof abc.txt 

顯示22端口現在運行什么程序

lsof -i :22 

顯示nsd進程現在打開的文件

lsof -c nsd

在後台運行程序,退出登錄後,並不結束程序

nohup 程序 &
#查看中間運行情況 tail nohup

在后台運行交互式程序,退出登錄后,並不結束程序

sudo apt-get install screen
screen vim a.txt
#直接退出后使用 
screen -ls   # 1656.pts-0.ubuntu   (Detached)
screen -r 1656  #恢復
#熱鍵,同時按下Ctrl和a鍵結束后,再按下功能鍵
C-a ?	#顯示所有鍵綁定信息
C-a w	#顯示所有窗口列表
C-a C-a	#切換到之前顯示的窗口
C-a c	#創建一個新的運行shell的窗口並切換到該窗口
C-a n	#切換到下一個窗口
C-a p	#切換到前一個窗口(與C-a n相對)
C-a 0..9	#切換到窗口0..9
C-a a	#發送 C-a到當前窗口
C-a d	#暫時斷開screen會話
C-a k	#殺掉當前窗口

在后台運行交互式程序,退出登錄后,並不結束程序

tmux 進入后再運行其它命令
tmux attach #恢復
#熱鍵,同時按下Ctrl和b鍵結束后,再按下功能鍵
C-b c	#創建一個新的運行shell的窗口並切換到該窗口
C-b n	#切換到下一個窗口
C-b p	#切換到前一個窗口(與C-a n相對)
C-b 0..9	#切換到窗口0..9
C-b d       #暫時斷開會話
C-b &	#殺掉當前窗口

詳細顯示程序的運行信息

strace -f -F -o outfile <cmd>

增加系統最大打開文件個數

#ulimit -SHn
sudo vim /etc/security/limits.conf
文件尾追加 
* hard nofile 4096
* soft nofile 4096
sudo vim /etc/pam.d/su
將 pam_limits.so 這一行注釋去掉 
重起系統

清除僵屍進程

ps -eal | awk '{ if ($2 == "Z") {print $4}}' | xargs sudo kill -9

將大於120M內存的php-cgi都殺掉

ps -eo pid,fname,rss|grep php-cgi|grep -v grep|awk '{if($3>=120000) print $1}' | xargs sudo kill -9

Linux系統中如何限制用戶進程CPU占用率

renice +10 `ps aux | awk '{ if ($3 > 0.8 && id -u $1 > 500) print $2}'` 
#或直接編輯/etc/security/limits.conf文件。

網絡

根據IP查網卡地址

arping IP地址

根據IP查電腦名

nmblookup -A IP地址

查看當前IP地址

ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'

查看當前外網的IP地址

w3m -no-cookie -dump www.ip138.com/ip2city.asp|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
curl ifconfig.me

查看當前監聽80端口的程序

lsof -i :80

查看當前網卡的物理地址

ifconfig eth0 | head -1 | awk '{print $5}'

或者

cat /sys/class/net/eth0/address

同一個網卡增加第二個IP地址

#在網卡eth0上增加一個1.2.3.4的IP:
sudo ifconfig eth0:0 1.2.3.4 netmask 255.255.255.0
#刪除增加的IP:
sudo ifconfig eth0:0 down

立即讓網絡支持nat

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -I POSTROUTING -j MASQUERADE

查看路由信息

netstat -rn
sudo route -n

手工增加一條路由

sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

手工刪除一條路由

sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

修改網卡MAC地址的方法

sudo ifconfig eth0 down #關閉網卡
sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址
sudo ifconfig eth0 up #然后啟動網卡

永久改地址方法

sudo gedit /etc/network/interfaces

在 iface eth0 inet static 后面添加一行:

pre-up ifconfig eth0 hw ether 01:01:01:01:01:01

配置文件應該像如下

iface eth0 inet static
pre-up ifconfig eth0 hw ether 01:01:01:01:01:01
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1

最后是 logout 或者reboot

統計當前IP連接的個數

netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

統計當前所有IP包的狀態

netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n

統計當前20000個IP包中大於100個IP包的IP地址

tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 100 '

屏蔽IPV6

echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6

察看當前網絡連接狀況以及程序

sudo netstat -atnp

查看網絡連接狀態

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

查看當前系統所有的監聽端口

nc -zv localhost 1-65535

查看網絡的當前流量

#安裝 ethstatus 軟件
sudo apt-get install ethstatus
#查看 ADSL 的速度
sudo ethstatus -i ppp0
#查看 網卡 的速度
sudo ethstatus -i eth0
#或安裝 bwm-ng 
sudo apt-get install bwm-ng
#查看當前網絡流量
bwm-ng

查看域名的注冊備案情況

whois baidu.cn

查看到某一個域名的路由情況

tracepath baidu.cn

重新從服務器獲得IP地址

sudo dhclient

從當前頁面開始鏡像整個網站到本地

wget -r -p -np -k http://www.21cn.com
· -r:在本機建立服務器端目錄結構;
· -p: 下載顯示HTML文件的所有圖片;
· -np:只下載目標站點指定目錄及其子目錄的內容;
· -k: 轉換非相對鏈接為相對鏈接。

如何多線程下載

sudo apt-get install axel
axel -n 5 http://xxx.xxx.xxx.xxx/xxx.zip
或者
lftp -c "pget -n 5 http://xxx.xxx.xxx.xxx/xxx.zip“

如何查看HTTP頭

w3m -dump_head http://www.example.com
或 curl --head http://www.example.com

快速使用http方式共享目錄

#進入需要共享的目錄后運行: 
python -m SimpleHTTPServer
#其它電腦使用http://ip:8000 來訪問
#自定義端口為8080: 
python -m SimpleHTTPServer 8080

SSH 遠程端口轉發

ssh -v -CNgD 7070 username@sshhostipaddress

監控網絡所有的tcp數據

sudo apt-get install snort #安裝snort入侵檢測程序
sudo snort -vde

監控TCP/UDP連接的流量

sudo apt-get install iftop 
sudo iftop
#或
sudo apt-get install iptraf
sudo iptraf

掃描某個IP的端口

nc -v -w 1 192.168.1.1 -z 1-1000

壓縮

增加 7Z 壓縮軟件

#支持 7Z,ZIP,Zip64,CAB,RAR,ARJ,GZIP,BZIP2,TAR,CPIO,RPM,ISO,DEB 壓縮文件格式
sudo apt-get install p7zip p7zip-full p7zip-rar
#將所有已txt結尾的文件都加入到files.7z
7z a -t7z files.7z *.txt
#解壓縮files.zip
7z x files.zip
#刪除 files.zip中所有已bak結尾的文件
7z d -r files.zip *.bak 
#列出file.7z中所有的文件信息
7z l files.7z
#測試files.zip中所有doc結尾文件的正確性
7z t -r files.zip *.doc 
#更新files.zip中的所有doc結尾的文件(不是所有的壓縮格式都支持更新這一選項)
7z u files.zip *.doc

增加 rar 格式解壓和壓縮支持

#解壓
sudo apt-get install unrar
#壓縮
#源里的rar包有文件名亂碼問題,不建議使用。
#如果確實需要rar壓縮功能,請到以下網址直接下載RAR for Linux
#http://www.rarlab.com/download.htm

增加 zip 格式解壓和壓縮支持

#解壓
sudo apt-get install unzip
#壓縮
sudo apt-get install zip

解壓縮 xxx.tar.gz

tar -xf xxx.tar.gz

解壓縮 xxx.tar.bz2

tar -xf xxx.tar.bz2

解壓縮 xxx.tar.xz

tar -Jxf xxx.tar.xz

壓縮aaa bbb目錄為xxx.tar.gz

tar -zcvf xxx.tar.gz aaa bbb

壓縮aaa bbb目錄為xxx.tar.bz2

tar -jcvf xxx.tar.bz2 aaa bbb

壓縮aaa bbb目錄為xxx.tar.xz

tar -Jcvf xxx.tar.xz aaa bbb

增加 lha 支持

sudo apt-get install lha

增加解 cab 文件支持

sudo apt-get install cabextract

Nautilus

顯示隱藏文件

Ctrl+h

顯示地址欄

Ctrl+l

特殊 URI 地址

* computer:/// - 全部掛載的設備和網絡
* network:/// - 瀏覽可用的網絡
* burn:/// - 一個刻錄 CDs/DVDs 的數據虛擬目錄
* smb:/// - 可用的 windows/samba 網絡資源
* x-nautilus-desktop:/// - 桌面項目和圖標
* file:/// - 本地文件
* trash:/// - 本地回收站目錄
* ftp:// - FTP 文件夾
* ssh:// - SSH 文件夾
* fonts:/// - 字體文件夾,可將字體文件拖到此處以完成安裝
* themes:/// - 系統主題文件夾

查看已安裝字體

fc-list |grep 文
獲取安裝的中文字體信息

文件管理器(比如nautilus)的地址欄里輸入 ~/.fonts ,就可以查看當前用戶擁有的fonts——而系統通用字體位於 /usr/share/fonts

日期和時間

顯示日歷

cal # 顯示當月日歷
cal 2 2007 # 顯示2007年2月的日歷

顯示農歷

#sudo apt-get install lunar
date '+%Y %m %d %H' |xargs lunar --utf8

設置日期

date -s mm/dd/yy

設置時間

date -s HH:MM

將時間寫入CMOS

hwclock --systohc

查看CMOS時間

 hwclock --show

讀取CMOS時間

hwclock --hctosys

從服務器上同步時間

sudo ntpdate ntp.ubuntu.com
sudo ntpdate time.nist.gov

設置電腦的時區為上海

sudo dpkg-reconfigure tzdata

然后根據提示選擇 Asia/Shanghai。這樣在升級了 tzdata 包之后時區也是對的。

XP 和 Ubuntu 相差了 8 小時的時差

#關閉UTC,將當前時間寫入CMOS。
sudo sed -ie 's/UTC=yes/UTC=no/g' /etc/default/rcS
sudo hwclock --systohc

將時間截轉為時間

date -d@1234567890

工作區

不同工作區間切換

Ctrl + ALT + ←
Ctrl + ALT + →
或者,將滾輪鼠標放在工作區圖標上滾動

控制台

指定控制台切換

Ctrl + ALT + Fn(n:1~7)

控制台下滾屏

SHIFT + pageUp/pageDown

控制台抓圖

setterm -dump n(n:1~7)

只是支持tty1-7。沒中文。沒顏色代碼序列。

回到上一次的目錄

cd –

以root的身份執行上一條命令

sudo !!

數據庫

mysql的數據庫存放路徑

/var/lib/mysql

從mysql中導出和導入數據

mysqldump 數據庫名 > 文件名 #導出數據庫
mysqladmin create 數據庫名 #建立數據庫
mysql 數據庫名 < 文件名 #導入數據庫

忘了mysql的root口令怎么辦

sudo /etc/init.d/mysql stop
sudo mysqld_safe --skip-grant-tables &
sudo mysqladmin -u user password 'newpassword
sudo mysqladmin flush-privileges

修改mysql的root口令

sudo mysqladmin -u root -p password '你的新密碼'

 

如何優化mysql

wget  http://www.day32.com/MySQL/tuning-primer.sh
chmod +x tuning-primer.sh
./tuning-primer.sh

mysql命令行中文顯示?號

mysql> set names utf8;

常用mysql管理語句

show table status;  #查詢表狀態
show full processlist;  #查詢mysql進程
alter table site_stats engine=MyISAM;   #轉換表為MyISAM類型,轉表鎖為行鎖。
show variables;  #查看mysql 變量

mysql的自動備份

#備份 forum myweb 數據庫到 /backup/mysql 目錄,並刪除7天之前的備份記錄
mysqldump --opt --skip-lock-tables -u root forum | gzip -9 > /backup/mysql/forum.`date +%Y%m%d`.sql.gz
mysqldump --opt --skip-lock-tables -u root myweb | gzip -9 > /backup/mysql/myweb.`date +%Y%m%d`.sql.gz
find /backup/mysql/ -type f -ctime +7 -exec rm {} \;

控制

如何使用命令關閉顯示器

xset dpms force off

設置CPU的頻率

sudo apt-get install cpufrequtils 
#查看cpu當前頻率信息
sudo cpufreq-info 
設置模式,對應於{最省電(最低頻率),用戶控制,最高或最低,正常,最大性能} 
cpufreq-set -g {powersave, userspace, ondemand, conservative, performance}

命令關機

sudo halt
sudo shutdown -h now              #現在關機

定時關機

sudo shutdown -h 23:00           #晚上11點自動關機
sudo shutdown -h +60          #60分鍾后關機

命令重啟電腦

sudo reboot
sudo shutdown -r now

如何修改ssh登錄提示

sudo gedit  /etc/motd

如何關閉ssh登錄提示

sudo gedit  /etc/ssh/sshd_config 修改這一行為: PrintLastLog no

如何使用命令關閉筆記本的觸摸板

synclient touchpadoff=1
那么開啟觸摸板就是:
synclient touchpadoff=0

從命令行通知桌面消息

#sudo apt-get install libnotify-bin
notify-send "hello world"

統計

統計最常用的10條命令

history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10 

統計每個單詞的出現頻率,並排序

awk '{arr[$1]+=1 }END{for(i in arr){print arr[i]"\t"i}}' FILE_NAME | sort -rn

統計80端口的連接個數並按照從大到小排列

netstat -na|grep :80|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n

編輯器

vim中刪除技巧

:%s/[Ctrl-v][Enter]//g         刪除DOS方式的回車^M
:%s= *$==                      刪除行尾空白
:%!sort -u                     刪除重復行
:%s/^.{-}pdf/new.pdf/          只是刪除第一個pdf
:%s///                         刪除多行注釋
:g/^$/d                        刪除所有空行 
:g!/^dd/d                      刪除不含字符串'dd'的行
:v/^dd/d                       刪除不含字符串'dd'的行
:g/str1/,/str2/d               刪除所有第一個含str1到第一個含str2之間的行
:v/./.,/./-1join               壓縮空行
:g/^$/,/./-j                   壓縮空行
ndw 或 ndW                     刪除光標處開始及其后的 n-1 個字符。
d0                             刪至行首。
d$                             刪至行尾。
ndd                            刪除當前行及其后 n-1 行。
x 或 X                         刪除一個字符。
Ctrl+u                         刪除輸入方式下所輸入的文本。
D                              刪除到行尾
x,y                            刪除與復制包含高亮區
dl                             刪除當前字符(與x命令功能相同)
d0                             刪除到某一行的開始位置
d^                             刪除到某一行的第一個字符位置(不包括空格或TAB字符)
dw                             刪除到某個單詞的結尾位置
d3w                            刪除到第三個單詞的結尾位置
db                             刪除到某個單詞的開始位置
dW                             刪除到某個以空格作為分隔符的單詞的結尾位置
dB                             刪除到某個以空格作為分隔符的單詞的開始位置
d7B                            刪除到前面7個以空格作為分隔符的單詞的開始位置
d)                             刪除到某個語句的結尾位置
d4)                            刪除到第四個語句的結尾位置
d(                             刪除到某個語句的開始位置
d)                             刪除到某個段落的結尾位置
d{                             刪除到某個段落的開始位置
d7{                            刪除到當前段落起始位置之前的第7個段落位置
dd                             刪除當前行
d/text                         刪除從文本中出現“text”中所指定字樣的位置,一直向前直到下一個該字樣所出現的位置(但不包括該字樣)之間的內容
dfc                            刪除從文本中出現字符“c”的位置,一直向前直到下一個該字符所出現的位置(包括該字符)之間的內容
dtc                            刪除當前行直到下一個字符“c”所出現位置之間的內容
D                              刪除到某一行的結尾
d$                             刪除到某一行的結尾
5dd                            刪除從當前行所開始的5行內容
dL                             刪除直到屏幕上最后一行的內容
dH                             刪除直到屏幕上第一行的內容
dG                             刪除直到工作緩存區結尾的內容
d1G                            刪除直到工作緩存區開始的內容
ci{                            刪除修改光標所在的{}中的所有內容,change in { 的簡寫
ca{                            刪除修改光標所在的{}中的所有內容,包括{}
ci"                            刪除修改光標所在的""中的所有內容,change in " 的簡寫
ca"                            刪除修改光標所在的""中的所有內容,包括{}
ci(                            刪除修改光標所在的()中的所有內容,change in ( 的簡寫
ca(                            刪除修改光標所在的()中的所有內容,包括{}

vim一個遠程文件

vim scp://username@host//path/to/somefile

如何配置Emacs

打開新立得或者命令行,查找emacs, 選擇你想要的版本,比如emacs22或者emacs21.

之后的配置參考Emacs 常見問題及其解決方法

vim 如何顯示彩色字符

sudo cp /usr/share/vim/vimcurrent/vimrc_example.vim /usr/share/vim/vimrc

讓 vim 直接支持編輯 .gz 文件

sudo apt-get install vim-full

vim 如何顯示行號,在~/.vimrc中加入

set number

如果沒有~/.vimrc文件,則可以在/etc/vim/vimrc中加入

set number

vim配色方案 (~/.vimrc)

colorscheme scheme
可用的 scheme 在 /usr/share/vim/vim71/colors/ 

解決vim中文編碼問題,在~/.vimrc中加入

let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
#再提供一個實踐中覺得不錯的配置:
" Encoding related
set encoding=UTF-8
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set fileencoding=utf-8

gedit中文亂碼的解決

gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16']"

編譯和打包

安裝通用編譯環境

sudo apt-get install build-essential

通用的編譯安裝步驟

./configure && make && sudo make install

如何編譯安裝軟件 kate

sudo apt-get install apt-build
sudo apt-build install kate

獲得源代碼包

sudo apt-get source mysql-server

解壓縮還原源代碼包

dpkg-source -x mysql-dfsg-5.1_5.1.30-1.dsc

安裝編譯打包環境

sudo apt-get build-dep mysql-server

重新編譯並打包Debian化的源碼

dpkg-buildpackage -rfakeroot

獲得源碼並重新打包

apt-get source php5-cgi  
#或手工下載源碼后使用 dpkg-source -x  php5_5.2.6.dfsg.1-3ubuntu4.1.dsc 解開源碼
sudo apt-get build-dep php5-cgi
cd php5-5.2.6.dfsg.1
dpkg-buildpackage -rfakeroot -uc -b

給源代碼打補丁

patch -p0 < mysql.patch

安裝 gtk+ 編譯環境

sudo apt-get install build-essential libgtk2.0-dev

其它

把終端加到右鍵菜單

sudo apt-get install nautilus-open-terminal 

如何刪除Totem電影播放機的播放歷史記錄

rm ~/.recently-used

清除桌面掛載硬盤圖標

gconftool-2 --set /apps/nautilus/desktop/volumes_visible 0 --type bool

恢復:

gconftool-2 --set /apps/nautilus/desktop/volumes_visible 1 --type bool

如何更換gnome程序的快捷鍵

點擊菜單,鼠標停留在某條菜單上,鍵盤輸入任意你所需要的鍵,可以是組合鍵,會立即生效;
如果要清除該快捷鍵,請使用backspace

man 如何顯示彩色字符

vim ~/.bashrc
#增加下面的內容:
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
#生效文件
#source .bashrc

如何在命令行刪除在會話設置的啟動程序

cd ~/.config/autostart
rm 需要刪除啟動程序

如何提高wine的反應速度

sudo sed -ie '/GBK/,/^}/d' /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE


可能造成某些游戲幀數降低 

 

iptables

防止外網用內網IP欺騙

#eth0 為外網網卡
sudo iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
sudo iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
sudo iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP 

查看nat規則

sudo iptables -t nat -L

查看filter規則

sudo iptables -L -n

取消nat規則

sudo iptables -t nat -F

取消filter規則

sudo iptables -F

阻止一個IP連接本機

#規則位於最后
sudo iptables -t filter -A INPUT -s 192.168.1.125 -i eth0 -j DROP 

關閉 1234 端口

sudo iptables -A OUTPUT -p tcp --dport 1234 -j DROP

開啟 80 端口

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

限制訪問80端口的外部IP最大只有50個並發

sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 --connlimit-mask 32 -j DROP

禁止一個IP或者一個IP段訪問服務器端口服務

#80端口 ,規則插入到前面
sudo iptables -t filter -I INPUT -s 192.168.2.0/24 -p tcp --dport http -j DROP
#21端口,規則插入到前面
sudo iptables -t filter -I INPUT -s 192.168.1.23 -p tcp --dport ftp -j DROP

安全

檢查本地是否存在安全隱患

sudo apt-get install rkhunter
sudo rkhunter --checkall
 
        

防止服務器被暴力破解ssh密碼

sudo apt-get install denyhosts

查看系統的登錄情況

last

查看所有帳號的登錄情況

lastlog

服務

查看全部服務狀態

service --status-all

添加一個服務

sudo update-rc.d 服務名 defaults 99

刪除一個服務

sudo update-rc.d 服務名 remove

臨時重啟一個服務

service 服務名 restart

臨時關閉一個服務

service 服務名 stop

臨時啟動一個服務

service 服務名 start

用戶管理

增加用戶

sudo adduser 用戶名

刪除用戶

sudo deluser 用戶名

修改當前用戶的密碼 

passwd

修改用戶密碼 

sudo passwd 用戶名

修改用戶資料

sudo chfn userid

如何禁用/啟用某個帳戶

sudo usermod -L 用戶名 #鎖定用戶
sudo usermod -U 用戶名 #解鎖
或
sudo passwd -l 用戶名 #鎖定用戶
sudo passwd -u 用戶名 #解鎖

增加用戶到admin組,讓其有sudo權限

sudo usermod -G admin -a 用戶名

如何切換到其他帳號(需要該用戶的密碼)

su 用戶名

如何切換到root帳號

sudo -s
sudo -i
sudo su

設置

配置默認Java環境

sudo update-alternatives --config java

設置系統http代理

export http_proxy=http://xx.xx.xx.xx:xxx

設置系統https代理

export https_proxy=http://xx.xx.xx.xx:xxx

修改系統登錄信息

sudo vim /etc/motd

使用eclipse等其他自帶java編譯器的軟件,換回sun的編譯器方法

對於Java JDK6 (就是1.6,sun縮短Java的版本名字了):

sudo update-java-alternatives -s java-6-sun

對於Java JDK1.5

sudo update-java-alternatives -s java-1.5.0-sun
 
        

文件管理

創建一個空文件

> file.txt
touch file.txt

一屏查看文件內容

cat 文件名

不顯示以#開頭的行

cat /etc/vsftpd.conf |grep -v ^#

分頁查看文件內容

more 文件名

可控分頁查看文件內容

less 文件名

帶行號顯示文件的內容

nl 文件名
cat -n 文件名

去除文件中的行號

cut -c 5- a.py

刪除文件中的重復行

cat file.txt |sort -u

根據字符串匹配來查看文件部分內容

grep 字符串 文件名

顯示包含或者不包含字符串的文件名

grep -l -r 字符串 路徑 #顯示內容包含字符串的文件名
grep -L -r 字符串 路徑 #顯示內容不包含字符串的文件名
find . -path './cache' -prune -o -name "*.php" -exec grep -l "date_cache[$format]['lang']" {} \; #顯示當前目錄下不包含cache目錄的所有含有“date_cache[$format]['lang']”字符串的php文件。
find . -type f -name \*.php -exec grep -l "info" {} \;

快速查找某個文件

whereis filename
find 目錄 -name 文件名
locate 文件名 # 注意,為了得到更好的效果,運行前可以更新下數據庫,運行 sudo updatedb 即可,但這個命令每隔一段時間會自動運行,所以不用太在意

創建兩個空文件

touch file1 file2

遞歸式創建一些嵌套目錄

mkdir -pv /tmp/xxs/dsd/efd

遞歸式刪除嵌套目錄

rm -fr /tmp/xxs

回當前用戶的宿主目錄

cd ~ # 這個是波浪線,在 Tab 鍵的上面
# 或者更簡單的
cd

回到上一次的目錄

cd -  # 這個是連字符,在退格鍵的左邊兩個

查看當前所在目錄的絕對路經

pwd

獲得文件的后綴名

echo xxx.xxx.rmvb |sed 's/.*\(\..*$\)/\1/'

去除文件的后綴名

echo xxx.xxx.rmvb |sed 's/\(.*\)\..*$/\1/'

列出當前目錄下的所有文件,包括以.開頭的隱含文件的具體參數

ls -al

或(在 Ubuntu 中)

ll

移動路徑下的文件並改名

mv 路徑/文件  /新路徑/新文件名

復制文件或者目錄

cp -av 原文件或原目錄 新文件或新目錄

查看文件類型

file filename

查看文件的時間

stat filename

對比兩個文件之間的差異 

diff file1 file2

一邊比較一邊編輯還是彩色的:(需要安裝 Vim)

vimdiff file1 file2

顯示xxx文件倒數6行的內容

tail -6 xxx

讓tail不停地讀取最新的內容

tail -10f /var/log/apache2/access.log

或者

tailf /var/log/apache2/access.log

查看文件中間的第五行(含)到第10行(含)的內容

sed -n '5,10p' /var/log/apache2/access.log

 

查找關於xxx的命令

apropos xxx
man -k xxx

通過ssh傳輸文件

scp -rp /path/filename username@remoteIP:/path #將本地文件拷貝到服務器上
scp -rp username@remoteIP:/path/filename /path #將遠程文件從服務器下載到本地
tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; cat -> path.tar.gz" #壓縮傳輸
tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; tar xvzf -" #壓縮傳輸一個目錄並解壓
rsync -avh /path/to/file/or/dir user@host:/path/to/dir/or/file
rsync -avh user@host:/path/to/file/or/dir /path/to/file/or/dir

把所有文件的後輟由rm改為rmvb

rename 's/.rm$/.rmvb/' *

把所有文件名中的大寫改為小寫

rename 'tr/A-Z/a-z/' *

刪除特殊文件名的文件,如文件名:--help.txt

rm -- --help.txt 或者 rm ./--help.txt

查看當前目錄的子目錄

ls -d */ 或 echo */

將當前目錄下最近30天訪問過的文件移動到上級back目錄

find . -type f -atime -30 -exec mv {} ../back \;

查找當前目錄下最近30天訪問過的文件打包備份

find . -type f -atime -30 | xargs tar zrvpf backup.tar.gz
find . -type f -atime -30 -print -exec tar rvpf backup.tar {} \;

顯示系統服務器一小時以內的包含 xxxx 的所有郵件

find /home/ -path "*Maildir*" -type f -mmin -60|xargs -i  grep -l xxxx '{}'

將當前目錄下最近2小時到8小時之內的文件顯示出來

find . -mmin +120 -mmin -480 -exec more {} \;

刪除修改時間在30天之前的所有文件

find . -type f -mtime +30 -exec rm -v {} \;

刪除訪問時間在30天之前的所有文件

find . -type f -atime +30 -exec rm -v {} \;

查找guest用戶的以avi或者rm結尾的文件並刪除掉

find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} \;

查找不以java和xml結尾,並7天沒有使用的文件刪除掉

find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} \;

查找目錄下所有有包含abcd文字的文本文件,並替換為xyz

grep -rIl "abcd" ./* --color=never | xargs sed -i "s/abcd/xyz/g" #注意grep的一個參數是大寫的i,一個參數是小寫的L

刪除當前目錄里面所有的 .svn 目錄

find . -name .svn -type d -exec rm -fr {} \;

刪除當前目錄所有以“~”結尾的臨時文件

find . -name "*~" -exec rm {} \;

刪除包含 aaa 字符串的所有文件

grep -rl "aaa" * |xargs rm -fv

統計當前文件個數

echo $(($(ll|wc -l)-3));

統計當前目錄下所有jpg文件的尺寸

find . -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'

統計當前目錄個數

ls -l /usr/bin|grep ^d|wc -l

統計當前目錄下占空間最大的前10名文件或目錄

du -sm * | sort -nr | head -10

顯示當前目錄下2006-01-01的文件名

ls -l |grep 2006-01-01 |awk '{print $8}'

備份當前系統到另外一個硬盤 

sudo rsync -Pa / /media/disk1 --exclude=/media/* --exclude=/home/* --exclude=/sys/* --exclude=/tmp/* --exclude=/proc/* --exclude=/mnt/*

使用ssh方式同步遠程數據到本地目錄

rsync -Pa -I --size-only --delete --timeout=300 Remote_IP:/home/ubuntu/back /backup

使用ftp方式同步遠程數據到本地目錄

lftp -c "open Remote_IP;user UserName Password;set cache:enable false;set ftp:passive-mode false;set net:timeout 15;mirror -e -c /back /backup;"

去掉文件中的^M

#注意不要使用同樣的文件名,會清空掉原文件
cat -A filename| tr -d "^M$" > newfile
或者

cat -A word|sed -e 's/\^M\$//g' > newfile

直接修改文件

ex "+:%s/[Ctrl+V][Enter]//g" "+:wq"  filename 

或者

dos2unix filename

轉換Dos文本文件到Unix文本文件

tr -d '\15\32' < dosfile.txt > unixfile.txt                         #dos = > unix
awk '{ sub("\r$", ""); print }' dosfile.txt > unixfile.txt   #dos = > unix
awk 'sub("$", "\r")' unixfile.txt > dosfile.txt                  #unix = > dos

轉換bin/cue到iso文件

#sudo apt-get install bchunk
bchunk image.bin image.cue image

轉換目錄到iso文件

mkisofs -o isofile.iso  dirname

轉換CD到iso文件

dd if=/dev/cdrom of=isofile.iso

將一個文件作為附件發到郵箱

#sudo apt-get install mailutils sharutils
uuencode xxx.tar.gz xxx.tar.gz |mail xxx@xxx.com
(echo "hello, please see attached file"; uuencode xxx.tar.gz xxx.tar.gz)| mail xxx@xxx.com

合並多個pdf文件到一個pdf文件

#apt-get install gs pdftk
gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=output.pdf -dBATCH input1.pdf input2.pdf

比較兩個目錄里面的文件是否有相同

diff -r dir1 dir2

比較一個遠程文件和一個本地文件

ssh user@host cat /path/to/remotefile | diff /path/to/localfile -

當file.log里出現Finished: SUCCESS時候就退出tail

tail -f /path/to/file.log | sed '/^Finished: SUCCESS$/ q'

統計py代碼行數,不包括空行

find . -name "*.py" | xargs grep '^.' | wc -l
find . \( -path '*migrations*' -prune -o -name '*.py' \) -type f | xargs grep '^.' | wc -l

統計java代碼行數,不包括空行和公共目錄

find . -path './src/java/com/xxx/common' -prune -o -name '*.java' -print  | xargs grep '^.' | wc -l

給文件增加行號

nl HelloWorld.java > HelloWorldCode.java

影像

播放swf文件

安裝swf解碼器

 sudo apt-get install swfmill

如何保存串流視頻(mms/rtsp)

mplayer -dumpfile dump.rm -dumpstream rstp://....

批量將rmvb轉為avi

#ipod touch可用
for i in *.rmvb; do mencoder -vf harddup -oac mp3lame -lameopts vbr=3 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/rmvb$/avi/'`; done

批量將DVD轉為avi

for i in *.VOB; do mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 44100 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/VOB$/avi/'`; done

批量將任何格式的電影轉為ogv

#sudo apt-get install ffmpeg2theora   
#firefox3.5或chrome直接支持播放,無需安裝任何解碼器,注意不支持rmvb,rmvb會出現a/v不同步問題
for i in *; do ffmpeg2theora --optimize --deinterlace $i; done

批量將rmvb格式的電影轉為ogv

#!/bin/bash
for i in *; do
   mkfifo "/tmp/$i"
   mencoder -quiet -vf harddup -ovc raw -oac pcm -o "/tmp/$i" "$i" &
   ffmpeg2theora --optimize --deinterlace "/tmp/$i" -o "`echo $i | sed 's/\(.*\)\..*$/\1/'`.ogv"
   rm "/tmp/$i"
done

利用gst來轉換任意電影為ogv

#!/bin/bash
for i in *; do
   gst-launch-0.10 filesrc location="$i" ! decodebin name=demux \
   { oggmux name=mux ! filesink location="`echo $i | sed 's/\(.*\)\..*$/\1/'`.ogv" } \
   { demux. ! queue ! audioconvert ! vorbisenc ! queue ! mux. } \
   { demux. ! queue ! ffmpegcolorspace ! videorate ! theoraenc ! mux. } 
done

 

批量轉換任意文件為ipod touch使用的mp4

#!/bin/bash
#ubuntu10.04自帶的mencoder由於版權問題,不支持h264編碼,需要重新編譯;也可以直接參考下面的壓縮方法。
#sudo apt-get install mencoder mplayer
find . -name '*.avi' -o -name '*.rm' -o -name '*.rmvb' -o -name '*.wmv' -o \
      -name '*.vob' -o -name '*.asf' -o -name '*.mpg' -o -name '*.ts' -o \
      -name '*.flv' -o -name '*.mpeg' -o -name '*.ogv' -o -name '*.mov' -o \
      -name '*.mkv' -o -name '*.dat' | while read i; do
  basename=`echo $i | sed 's/\(.*\)\..*$/\1/'`
  font="WenQuanYi Zen Hei"

  if [ -f "${basename}.srt" ] ; then
     cp "${basename}.srt" $$.srt
     m0="-vf scale=480:-10,harddup -sub $$.srt -unicode -subcp GB18030 -subfont-text-scale 3"; 
  else
     m0="-vf scale=480:-10,harddup"; 
  fi
 
  x0="-lavfopts format=mp4 -faacopts mpeg=4:object=2:raw:br=160 -oac faac -ovc x264 -sws 9 -x264encopts nocabac:level_idc=30:bframes=0:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh:bitrate=500 -of lavf -ofps 24000/1001";
  mencoder $m0 -fontconfig -font "${font}" $x0 -o "$$.mp4" "$i"
  mv "$$.mp4" "${basename}.mp4"
  if [ -f "${basename}.mp4" ] ; then
     rm "$i"
  fi
done

轉換任意格式的視頻到H264

#!/bin/bash
#sudo apt-get install faac x264 gpac mplayer mencoder
basename=`echo $1 | sed 's/\(.*\)\..*$/\1/'`
#獲得視頻的長寬和幀數
mplayer -vo null -ao null -identify -frames 0 "$1" 2>/dev/null > video.info
FPS=`cat video.info | grep ID_VIDEO_FPS | cut -d = -f 2`
#FPS=23.976
W=`cat video.info | grep ID_VIDEO_WIDTH | cut -d = -f 2`
H=`cat video.info | grep ID_VIDEO_HEIGHT | cut -d = -f 2`
WIDTH=480
HEIGHT=`expr $WIDTH \* $H \/ $W`
echo $1 FPS=$FPS WIDTH=$WIDTH HEIGHT=$HEIGHT
mkfifo audio.wav video.yuv
faac -o audio.aac audio.wav &
mplayer -ao pcm:file=audio.wav:fast -vc null -vo null "$1" 
x264 --profile baseline --fps $FPS -o video.264 video.yuv ${WIDTH}x${HEIGHT} &
mencoder -vf scale=$WIDTH:$HEIGHT,harddup,pp=fd,format=i420 -nosound -ovc raw -of rawvideo -ofps $FPS -o video.yuv "$1"
MP4Box -new -add video.264 -add audio.aac -fps $FPS "$basename.mp4"
rm video.info audio.aac video.264 audio.wav video.yuv
#使用方法將上面的腳本保存為 x264.sh , x264.sh xxx.avi 來進行轉化。

壓制DVD到H264,支持ipod

#sudo apt-get install faac x264 gpac mplayer
FPS=29.970
mkfifo audio.wav
cat VTS_01_1.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_03_1.VOB VTS_04_1.VOB | mplayer -nocorrect-pts -vo null -vc null -ao pcm:file=audio.wav:fast - &
faac audio.wav -o audio.aac
mkfifo video.y4m
cat VTS_01_1.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_03_1.VOB VTS_04_1.VOB | mplayer -vo yuv4mpeg:file=video.y4m -vf scale=480:-3,harddup,pp=fd -nosound - &
x264 --profile baseline --muxer mp4 --demuxer y4m video.y4m -o video.mp4
MP4Box -add video.mp4 -add audio.aac -fps $FPS video.mp4

圖形界面為ipod touch轉mp4的方法

先確保有zenity和memcoder

wget http://linuxfire.com.cn/~lily/toIpod -O ~/.gnome2/nautilus-scripts/toIpod && chmod +x ~/.gnome2/nautilus-scripts/toIpod

在nautilus里對視頻文件點右鍵,選擇"腳本"-"toIpod".

詳情請查看出處

轉換flv到MP4

#sudo apt-get install ffmpeg
ffmpeg -i 矜持.flv -ar 22050 矜持.mp4

mencoder/mplayer 反拉絲參數

-vf lavcdeint

合並多個 rm 文件為一個 avi 文件

mencoder -ovc lavc 1.rm -oac mp3lame -o 1.avi
mencoder -ovc lavc 2.rm -oac mp3lame -o 2.avi
mencoder -idx 1.avi -ovc copy -oac copy -o o1.avi
mencoder -idx 2.avi -ovc copy -oac copy -o o2.avi
cat o1.avi o2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -

合並視頻到一個文件

mencoder -ovc copy -oac copy -idx  -o 目標文件名 文件名1 文件名2

CD 抓軌為 mp3 (有損)

#sudo apt-get install abcde
abcde -o mp3 -b

CD 抓軌為 Flac (無損)

#sudo apt-get install abcde
abcde -o flac -b

ape 轉換為 flac

#sudo apt-get install flac shntool iconv mac
#iconv -f GB2312 -t UTF-8 example.cue -o example_UTF-8.cue
#shntool split -t "%n.%p-%t" -f example_UTF-8.cue -o flac example.ape -d flacOutputDir

#sudo apt-get install libav-tools
ffmpeg -i example.ape example.flac

ape/flac 轉換為 mp3

#sudo apt-get install shntool iconv libav-tools
ffmpeg -i CDImage.ape CDImage.flac
iconv -f gbk -t utf-8 CDImage.cue | shntool split -t "%n.%p-%t" -o 'cust ext=mp3 lame --quiet - %f' CDImage.flac

批量將 ape 轉為 flac

find . -name "*.ape" -exec bash -c 'avconv -i "$0" "${0/%ape/flac}"' {} \;
#此命令將當前目錄(包括子目錄)的所有ape文件轉換為flac

批量將 ape 轉為 mp3

for f in *.ape; do gst-launch-0.10 filesrc location="$f" ! decodebin ! audioconvert ! lame vbr=0 bitrate=320 ! id3mux ! filesink location="${f%.ape}.mp3"; done
#需要安裝 shntool
for i in *.ape; do shnconv -i ape -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done

批量將 ape 轉為 m4a

for f in *.ape; do ffmpeg -i  "$f" -acodec alac "${f%.ape}.m4a"; done

批量將 ape 轉為 aac

for f in *.ape; do ffmpeg -i  "$f" -acodec aac -strict experimental -ab 256k "${f%.ape}.aac"; done

批量將 flac 轉為 mp3

for i in *.flac; do shnconv -i flac -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done

批量將svg轉為png

for i in *.svg; do inkscape $i --export-png=`echo $i | sed -e 's/svg$/png/'`; done

批量轉換格式到mp3

#sudo apt-get install lame mplayer
for i in *; do base=${i%.*}; mplayer -quiet -vo null -vc dummy -af volume=0,resample=44100:0:1 -ao pcm:waveheader:file="$i.wav" "$i" ; lame -V0 -h -b 192 -vbr-new "$i.wav" "$base.mp3"; rm -f "$i.wav" ; done

批量縮小圖片到30%

for i in *.jpg; do convert -resize 30%x30% "$i" "sm-$i"; done

批量轉換jpg到png

for i in *.jpg; do convert $i `echo $i | sed -e 's/jpg$/png/'`; done

將文字轉為圖片

convert -size 200x30 xc:transparent -font /usr/share/fonts/truetype/wqy/wqy-microhei.ttc -fill red -pointsize 16 -draw "text 5,15 '測試中文轉為圖片'" test.png

如何壓縮png圖片

#sudo apt-get install optipng
optipng -o7 old.png new.png
#或 sudo apt-get install pngcrush
#pngcrush -brute old.png new.png

將多張圖片合並到一個PDF文件

convert *.jpg out.pdf

批量把pdf轉換為txt並格式化

sudo apt-get install poppler-utils poppler-data
find ./ -name '*.txt' | while read i; do cat $i | awk '{if ($0 ~ "^space:”) {printf “\n”$0} else {printf $0}}’ | sed ‘/^space:*digit:*$/d’ | sed ’s/^space:\+/    /’ | sed ’s/"/”/g’ > “../txt/$i”; done

轉換 pdf 到 png

#sudo apt-get install imagemagick
convert -density 196 FILENAME.pdf  FILENAME.png

獲取jpg的擴展信息(Exif)

identify -verbose xxx.jpg

獲取視頻文件 xxx.avi 的信息

mplayer -vo null -ao null -frames 0 -identify "xxx.avi" 2>/dev/null | sed -ne '/^ID_/ { s/[]()|&;<>`'"'"'\\!$" []/\\&/g;p }'

查看MKV視頻文件 xxx.mkv 的信息

#sudo apt-get install mkvtoolnix
mkvinfo -v xxx.mkv

 

抓取桌面操作的視頻

ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

命令行讀出文本

espeak -vzh "從前有座山"

命令行抓屏

 scrot -s screenshot.png

 

如何命令行刻錄

mkisofs -o test.iso -Jrv -V test_disk /home/carla/
cdrecord -scanbus
scsibus1:
 1,1,0 101) 'HL-DT-ST' 'CD-RW GCE-8481B ' '1.04' Removable CD-ROM
cdrecord -v -eject speed=8 dev=1,1,0 test.iso

http://www.ibm.com/developerworks/cn/linux/l-cdburn/index.html

延遲抓圖

gnome-screenshot -d 10 #延遲10秒抓圖
gnome-screenshot -w -d 5 #延遲5秒抓當前激活窗口

回收站在哪里

~/.local/share/Trash/

強制清空回收站

sudo rm -fr $HOME/.local/share/Trash/files/

默認打開方式的配置文件在哪里

#全局
/etc/gnome/defaults.list 
#個人
~/.local/share/applications/mimeapps.list

Firefox 的緩存目錄在哪里

ls ~/.mozilla/firefox/*.default/Cache/

查看samba的用戶

sudo pdbedit -L

增加一個用戶到samba

sudo pdbedit -a username

從samba賬戶中刪除一個用戶

sudo pdbedit -x username

顯示samba賬戶信息

sudo pdbedit -r username

測試samba賬戶是否正常

smbclient -L 192.168.1.1 -U username -d 3

samba的數據庫存在哪里

/var/lib/samba/passdb.tdb

samba用戶Windows下無法登錄

在Windows的運行輸入 cmd ,進入終端,輸入 net use 命令,將顯示已經連接的帳號如 \\192.168.1.1\username
再輸入 net use  \\192.168.1.1\username /delete 刪除現有的共享連接,再嘗試進入另外一個目錄就可以正常登錄了。

Pidgin 的聊天記錄在哪里

~/.purple/logs/

安裝PDF打印機

sudo apt-get install cups-pdf
#打印生成的pdf文件在 ~/PDF 文件夾里面

nvidia快速重設顯示設置及配置多顯示器

sudo dpkg-reconfigure xserver-xorg
sudo nvidia-xconfig
#nvidia-settings 用於設置分辨率和多顯示器
sudo nvidia-settings

kacpid進程大量占用CPU

硬件驅動中不要激活無線網卡驅動即可

替換上一條命令中的一個短語

^foo^bar^
!!:s/foo/bar/

AMD64位系統安裝免費的殺毒軟件 avast!

wget http://files.avast.com/files/linux/avast4workstation_1.3.0-2_i386.deb
sudo dpkg --force-architecture -i avast4workstation_1.3.0-2_i386.deb
sudo apt-get install ia32-libs
#然后打開 http://www.avast.com/registration-free-antivirus.php 去申請免費一年的許可證號

應用合適的字體顯示尺寸

獲取信息

xdpyinfo | grep -B1 dot

例如

 dimensions:    1440x900 pixels (333x212 millimeters)
 resolution:    110x108 dots per inch

獲取X server信息

grep DPI /var/log/Xorg.0.log

例如

[    19.244] (--) NVIDIA(0): DPI set to (110, 108); computed from "UseEdidDpi" X config

這里設置的X DPI會被桌面的頂替,找到你自己的替換,如上的DPI從默認的96改為109。

重新配置鍵盤類型

sudo dpkg-reconfigure keyboard-configuration

重新載入聲卡驅動模塊

有時候折騰系統突軟聲卡無法發聲了,又不想重啟系統,直接重啟聲卡驅動模塊:

pulseaudio -k && sudo alsa force-reload

或者

sudo service pulseaudio restart


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM