Ubuntu命令技巧

tolenthui1發表於2010-11-06

Ubuntu命令技巧

前言

下面的命令大都需要在 控制檯 終端 / shell 下輸入。

控制檯終端和 shell 意味著同樣一件事 一個命令列介面, 他可以用來控制系統。

開啟一個控制檯:

應用程式 --> 附件 --> 終端

任何一個使用 'sudo' 作為字首的命令都需要擁有管理員 (或 root) 訪問許可權。 所以你會被提示輸入你自己的密碼。

 

安裝升級

檢視軟體xxx安裝內容

dpkg -L xxx 

查詢軟體庫中的軟體

apt-cache search 正規表示式

aptitude search 軟體包

顯示系統安裝包的統計資訊

apt-cache stats

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

apt-cache pkgnames

顯示包的資訊

apt-cache show k3b

查詢檔案屬於哪個包

apt-file search filename

檢視已經安裝了哪些包

dpkg -l

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

檢視包在伺服器上面的地址

apt-get -qq --print-uris install ssh | cut -d/' -f2

 

徹底刪除Gnome

apt-get --purge remove liborbit2

徹底刪除KDE

apt-get --purge remove libqt3-mt libqtcore4

一鍵安裝 LAMP 服務

sudo tasksel install lamp-server

刪除舊核心

sudo aptitude purge ~ilinux-image-.*/(/!`uname -r`/)

匯入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

增加一個ppa

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

系統升級

  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的位數,返回3264
getconf LONG_BIT
#檢視檔案資訊,包含32-bit就是32位,包含64-bit就是64
file /sbin/init

檢視Ubuntu版本

cat /etc/issue
cat /etc/lsb-release 
lsb_release -dsc

檢視核心載入的模組

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

獲取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

硬碟

檢視硬碟的分割槽

sudo fdisk -l

硬碟分割槽

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

硬碟格式化

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

硬碟檢查

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

分割槽掛載

sudo mount -t 檔案系統型別 裝置路經 訪問路經 
#常用檔案型別如下: iso9660 光碟機檔案系統, vfat fat/fat32分割槽, ntfs ntfs分割槽, smbfs windows網路共享目錄, reiserfsext3xfs 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/hda

檢視軟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 [選項]... [檔案]...顯示每個<檔案>所在的檔案系統的資訊,預設是顯示所有檔案系統。

長選項必須用的引數在使用短選項時也是必需的。
  -a, --all             包括大小為 0 個塊的檔案系統
  -B, --block-size=大小 塊以指定<大小>的位元組為單位
  -h, --human-readable  以容易理解的格式印出檔案系統大小 (例如 1K 234M 2G)
  -H, --si              類似 -h,但取 1000 的次方而不是 1024
  -i, --inodes          顯示 inode 資訊而非塊使用量
  -k                    --block-size=1K
  -l, --local           只顯示本機的檔案系統
      --no-sync         取得使用量資料前不進行同步動作 (預設)
  -P, --portability     使用 POSIX 相容的輸出格式
      --sync            取得使用量資料前先進行同步動作
  -t, --type=型別       只印出指定檔案系統為指定<型別>的資訊
  -T, --print-type      印出檔案系統型別
  -x, --exclude-type=型別   只印出檔案系統不是指定<型別>資訊
  -v                    (忽略)
      --help     顯示此幫助資訊並離開
      --version  顯示版本資訊並離開

檢視目錄佔用空間

du -hs 目錄名

優盤沒法解除安裝

sync
fuser -km /media/usbdisk

使用檔案來增加交換空間

#建立一個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

程式

檢視當前的記憶體使用情況

free

usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]

  -b,-k,-m,-g show output in bytes, KB, MB, or GB
  -l show detailed low and high memory statistics
  -o use old format (no -/+buffers/cache line)
  -t display total for RAM + swap
  -s update every [delay] seconds
  -c update [count] times
  -V display version information and exit

連續監視記憶體使用情況

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

動態顯示程式執行情況

top
top指令執行時輸入H或?開啟幫助視窗,輸入Q退出指令。

檢視當前有哪些程式

ps -AFL

檢視目前登入使用者執行的程式

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

cpu利用率從大到小排列程式

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

檢視當前程式樹

pstree

中止一個程式

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

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

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

圖形方式中止一個程式

xkill 出現骷髏標誌的滑鼠,點選需要中止的程式即可

 

檢視程式開啟的檔案

lsof -p 程式的pid

顯示開啟檔案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  #恢復
#熱鍵,同時按下Ctrla鍵結束後,再按下功能鍵
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   #殺掉當前視窗

詳細顯示程式的執行資訊

strace -f -F -o outfile <cmd>

增加系統最大開啟檔案個數

echo 4096 > /proc/sys/fs/file-max
#或者
ulimit -n 4096

清除殭屍程式

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檔案。

ADSL

配置 ADSL

sudo pppoeconf

ADSL手工撥號

sudo pon dsl-provider

啟用 ADSL

sudo /etc/ppp/pppoe_on_boot

斷開 ADSL

sudo poff

檢視撥號日誌

sudo plog

如何設定動態域名

#首先去 http://www.3322.org 申請一個動態域名
#然後修改 /etc/ppp/ip-up 增加撥號時更新域名指令
sudo vim /etc/ppp/ip-up
#在最後增加如下行
w3m -no-cookie -dump 'http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=yourdns.3322.org'

網路

根據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}'

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

#在網路卡eth0上增加一個1.2.3.4IP
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

統計當前20000IP包中大於100IP包的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

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 

禁止一個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

如何安裝防毒軟體

sudo apt-get install clamav
clamscan -r ~/

Linux下可以使用的商業防毒軟體

卡巴斯基(deb)http://www.kaspersky.com/productupdates?chapter=146274389
avast!(免費/deb)http://www.avast.com/eng/download-avast-for-linux-edition.html
小紅傘(gz)http://www.avira.com/en/downloads/avira_antivir_professional.html
BitDefender(位元梵德/run):http://download.bitdefender.com/SMB/Workstation_Security_and_Management/BitDefender_Antivirus_Scanner_for_Unices/Unix/Current/EN_FR_BR_RO/Linux/

申請位元梵德的KEYhttp://www.bitdefender.com/site/Products/ScannerLicense/

服務

新增一個服務

sudo update-rc.d 服務名 defaults 99

刪除一個服務

sudo update-rc.d 服務名 remove

臨時重啟一個服務

/etc/init.d/服務名 restart

臨時關閉一個服務

/etc/init.d/服務名 stop

臨時啟動一個服務

/etc/init.d/服務名 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

apt設定代理

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

修改系統登入資訊

sudo vim /etc/motd

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

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

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

對於Java JDK1.5

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

中文

切換輸入法引擎

im-switch -c

轉換檔名由GBKUTF8

sudo apt-get install convmv
convmv -r -f cp936 -t utf8 --notest --nosmart *

批量轉換src目錄下的所有檔案內容由GBKUTF8

find src -type d -exec mkdir -p utf8/{} /;
find src -type f -exec iconv -f GBK -t UTF-8 {} -o utf8/{} /;
mv utf8/* src
rm -fr utf8

轉換檔案內容由GBKUTF8

iconv -f gbk -t utf8 $i > newfile

批量轉換檔案內容由GBKUTF8

for i in `find . *`; do if [ -f "$i" ]; then iconv -f gb2312 -t utf8 $i > "./converted/$i" fi ; done

轉換 mp3 標籤編碼

sudo apt-get install python-mutagen
find . -iname '*.mp3' -execdir mid3iconv -e GBK {} /;

或者使用圖形介面工具“K,具體請參考解決檔名mp3標籤和文字檔案內容的亂碼問題

控制檯下顯示中文

sudo apt-get install zhcon
使用時,輸入zhcon即可

更具體的輸入:zhcon --utf8 --drv=vga
如果在/etc/zhcon.conf中指定了解析度,可以去掉--drv=vga以指定的解析度啟動。

zhcon是個外掛的控制平臺,也就是像US-DOS那樣是額外安裝的軟體,裝完後是需要驅動才能進去的,不然有可能當機當然驅動什麼的在你sudo apt-get install zhcon的時候就已經安裝了你所需要的是在進zhcon時要申明你所用的驅動,zhcon在安裝時,就裝了3種驅動:vga,framebuffer,libggi,而我們一般都是用的第一種驅動,因為比較方便簡單,而那2鍾驅動.很麻煩,我也就沒改過.好了說了這麼多該告訴各位怎麼進入zhcon了; 執行時需輸入:zhcon --utf8 --drv=vga

lftp 登入遠端Windows中文FTP 

lftp :~>set ftp:charset GBK
lftp :~>set file:charset UTF-8

java6 的安裝和中文設定

#下面是ubuntu 10.04安裝標準的sun-java,安裝過程中需要使用tab鍵切換同意其授權協議
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin ttf-wqy-microhei
sudo apt-get remove ttf-kochi-gothic ttf-kochi-mincho ttf-unfonts ttf-unfonts-core
sudo mkdir -p /usr/lib/jvm/java-6-sun/jre/lib/fonts/fallback
sudo ln -s /usr/share/fonts/truetype/arphic/wqy-microhei.ttc /usr/lib/jvm/java-6-sun/jre/lib/fonts/fallback

openjdk6 的安裝和中文設定

sudo apt-get install openjdk-6-jdk ttf-wqy-microhei
#有兩種解決辦法,第一種關閉JavaAA
echo "export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'" >> ~/.profile
#第二種直接修改Java字型配置
echo "allfonts.umingcn=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "allfonts.uminghk=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "allfonts.umingtw=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "allfonts.wqy-zenhei=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "allfonts.shanheisun=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "filename.WenQuanYi_Microhei_Hei=/usr/share/fonts/truetype/wqy/wqy-microhei.ttc" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties

程式顯示有些字大,有些小

 sudo apt-get remove ttf-kochi-gothic ttf-kochi-mincho ttf-unfonts ttf-unfonts-core

PDF 檔案亂碼

sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional poppler-data

Flash中文亂碼

sudo gedit /etc/fonts/conf.d/49-sansserif.conf 
將倒數第四行 <string>sans-serif</string>
改為 <string>sans</string>
儲存即可,重啟firefox

增加農曆

sudo apt-get install lunar-applet
滑鼠點選皮膚右鍵 -> 新增到皮膚 -> 農曆日期

unzip 中文檔名亂碼

sudo apt-get install p7zip-full
export LANG=zh_CN.GBK  #臨時在控制檯修改環境為zh_CN.GBK,然後解壓縮即可
7za e docs.zip

ibus跟隨

安裝ibus-gtk即可,最好另外安裝:ibus-qt4

檔案管理

一屏檢視檔案內容

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檔案。

快速查詢某個檔案

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

建立兩個空檔案

touch file1 file2

遞迴式建立一些巢狀目錄

mkdir -pv /tmp/xxs/dsd/efd

遞迴式刪除巢狀目錄

rm -fr /tmp/xxs

回當前使用者的宿主目錄

cd ~
# 或者更簡單的
cd

回到上一次的目錄

cd -

檢視當前所在目錄的絕對路經

pwd

獲得檔案的字尾名

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

去除檔案的字尾名

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

列出當前目錄下的所有檔案,包括以.開頭的隱含檔案

ls -a

移動路徑下的檔案並改名

mv 路徑/檔案  /新路徑/新檔名

複製檔案或者目錄

cp -av 原檔案或原目錄 新檔案或新目錄

檢視檔案型別

file filename

對比兩個檔案之間的差異 

diff 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 -" #壓縮傳輸一個目錄並解壓

把所有檔案的後輟由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 zcvpf 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 -mtime -3600 -exec rm {} /;

刪除建立時間在30天之前的所有檔案

find . -type f -ctime +30 -ctime -3600 -exec rm {} /;

查詢guest使用者的以avi或者rm結尾的檔案並刪除掉

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

查詢不以javaxml結尾,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 {} /;

統計當前檔案個數

ls /usr/bin|wc -w

統計當前目錄下所有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 filename | tr -d "^M" > newfile;
或者
sed -e "s/^M//g" filename > newfile;
或者
ex "+:%s/[Ctrl+V][Enter]//g" "+:wq"  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/cueiso檔案

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

轉換目錄到iso檔案

mkisofs -o isofile.iso  dirname

轉換CDiso檔案

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

影像

播放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.5chrome直接支援播放,無需安裝任何解碼器,注意不支援rmvbrmvb會出現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 來進行轉化。

壓制DVDH264,支援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 touchmp4的方法

先確保有zenitymemcoder

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

nautilus裡對視訊檔案點右鍵,選擇"指令碼"-"toIpod".

詳情請檢視出處

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 -

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
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

ape/flac 轉換為 mp3

#sudo apt-get install flac shntool lame 
#ape 需要安裝  monkeys 
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 'cust ext=mp3 lame --r3mix -b 320 --quiet - %f' example.ape -d mp3OutputDir

批量將 ape 轉為 mp3

for i in *.ape; do shnconv -i ape -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; 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

批量轉換jpgpng

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

如何壓縮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

壓縮

增加 7Z 壓縮軟體

#支援 7Z,ZIP,Zip64,CAB,RAR,ARJ,GZIP,BZIP2,TAR,CPIO,RPM,ISO,DEB 壓縮檔案格式
sudo apt-get install p7zip p7zip-full p7zip-rar

增加 rar 軟體壓縮和解壓縮支援

sudo apt-get install rar unrar

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

sudo apt-get install zip unzip

解壓縮 xxx.tar.gz

tar -zxvf xxx.tar.gz

解壓縮 xxx.tar.bz2

tar -jxvf xxx.tar.bz2

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

tar -zcvf xxx.tar.gz aaa bbb

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

tar -jcvf xxx.tar.bz2 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
nautilus的位址列裡輸入”fonts:///“,就可以檢視本機所有的fonts  (這個似乎不行)

日期和時間

顯示日曆

cal # 顯示當月日曆
cal 2 2007 # 顯示20072月的日曆

設定日期

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 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

XP 和 Ubuntu 相差了 小時的時差

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

工作區

不同工作區間切換

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

控制檯

指定控制檯切換

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

控制檯下滾屏

SHIFT + pageUp/pageDown

控制檯抓圖

setterm -dump n(n:1~7)

只是支援tty1-7。沒中文。沒顏色程式碼序列。

資料庫

mysql的資料庫存放路徑

/var/lib/mysql

mysql中匯出和匯入資料

mysqldump 資料庫名 > 檔名 #匯出資料庫
mysqladmin create 資料庫名 #建立資料庫
mysql 資料庫名 < 檔名 #匯入資料庫

忘了mysqlroot口令怎麼辦

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

修改mysqlroot口令

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 變數

控制

如何使用命令關閉顯示器

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 刪除直到工作快取區開始的內容

如何配置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中文亂碼的解決

gconftool-2 --set /apps/gedit-2/preferences/encodings/auto_detected "[UTF-8,CURRENT,GB18030,BIG5,ISO-8859-15,UTF-16]" --type list --list-type string

編譯和打包

安裝通用編譯環境

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

其它

把終端加到右鍵選單

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

基於 OpenVZ 的 VPS 支援 OpenVPN 對外訪問設定

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
#
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source VPS-IP-ADDRESS

GNOME登入時自動執行程式

系統 -> 首選項 -> 會話 ->

啟動程式 

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


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

如何命令列燒錄

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秒抓當前啟用視窗

回收站在哪裡

Ubuntu8.04 Gnome 2.22.2 以後在 $HOME/.local/share/Trash/
Ubuntu8.04 之前在 $HOME/.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 去申請免費一年的許可證號

轉自:http://wiki.ubuntu.org.cn/UbuntuSkills#.E6.9F.A5.E7.9C.8BPCI.E8.AE.BE.E5.A4.87

相關文章