ubuntu基礎知識與技巧

root用戶與超級用戶的切換php

(1)  sudo -ihtml

(2)  sudo sujava

(3)  su rootpython

安裝升級mysql

查看軟件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

也可用linux

dpkg -l | less

翻頁查看ios

查詢軟件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 

若是報以下錯誤,證實你的系統中沒有殘留配置文件了,無須擔憂。git


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

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、ext三、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
相關文章
相關標籤/搜索