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 (這一步安裝應用程序更新,不安裝新內核等)
查詢程序屬於哪一個debian包
如,程序名是 dh_installdeb
$dpkg -S `which dh_installdeb` debhelper: /usr/bin/dh_installdeb $dpkg -l | grep debhelper ii debhelper 7.4.15ubuntu1 helper programs for debian/rules
修復apt-get系統
根據提示進行修復,一般是apt-get install 包名 后加上 --fix-missing 或者 -f
如果還是不行,使用如下命令修復:
sudo dpkg --configure -a
修復dpkg的錯誤。如果無法修復,根據提示刪除出錯的包。
清除所有已刪除包的殘餘配置文件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
如果報如下錯誤,證明你的系統中沒有殘留配置文件了,無須擔心。
dpkg:--purge needs at least one package name argument
Typedpkg --help for help about installing and deinstalling packages[*];
Use `dselect' or `aptitude' for user-friendly packagemanagement;
Type dpkg -Dhelp for a list of dpkg debug flagvalues;
Type dpkg --force-help for a list of forcing options;
Typedpkg-deb --help for help about manipulating *.deb files;
Type dpkg--license for copyright license and lack of warranty (GNU GPL) [*].
Optionsmarked [*] 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 dselect-upgrade
安裝debian包時自動回答yes
sudo apt-get install/dselect-upgrade 等命令后,可以加上-y 表示自動回答yes。但在遇到安裝一個未驗證的deb包,或者刪除一個本質的deb包時,安裝過程會終止。如果再加上--force-yes
那么不論什么樣的情況,apt-get都會執行安裝。 但使用這個選項可能會造成系統問題。
清理舊版本的軟件緩存
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
系統升級
這里指的是版本間的升級,例如9.04=>10.04。
使用該升級方式通常需要使能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
查看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
Blocks字段表示分區的大小,它的單位是1024字節,也就是KB。
硬盤分區
#危險!小心操作。 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網絡共享目錄, 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/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 #恢復 #熱鍵,同時按下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 #殺掉當前窗口
詳細顯示程序的運行信息
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.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
在ifaceeth0 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
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/
申請比特梵德的KEY:http://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的編譯器方法
對於JavaJDK6 (就是1.6,sun縮短Java的版本名字了):
sudo update-java-alternatives -s java-6-sun
對於JavaJDK1.5
sudo update-java-alternatives -s java-1.5.0-sun
中文
切換輸入法引擎
im-switch -c
轉換文件名由GBK為UTF8
sudo apt-get install convmv convmv -r -f cp936 -t utf8 --notest --nosmart *
批量轉換src目錄下的所有文件內容由GBK到UTF8
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
轉換文件內容由GBK到UTF8
iconv -f gbk -t utf8 $i > newfile
批量轉換文件內容由GBK到UTF8
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那樣是額外安裝的軟件,裝完后是需要驅動才能進去的,不然有可能死機;當然驅動什么的在你sudoapt-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 #有兩種解決辦法,第一種關閉Java的AA 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 {} /;
查找不以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 {} /;
統計當前文件個數
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/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
影像
播放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
批量轉換任意文件為ipodtouch使用的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
圖形界面為ipodtouch轉mp4的方法
先確保有zenity和memcoder
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
批量轉換jpg到png
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
壓縮aaabbb目錄為xxx.tar.gz
tar -zcvf xxx.tar.gz aaa bbb
壓縮aaabbb目錄為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 # 顯示2007年2月的日歷
設置日期
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相差了8小時的時差
#關閉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 數據庫名 < 文件名 #導入數據庫
忘了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 變量
控制
如何使用命令關閉顯示器
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
PS:好東西啊!這下用Ubuntu方便多了!哈哈!
加一些東西:
用LiveCD修復ubuntu的Grub
用livecd啟動,在終端下輸入
sudo fdisk -l 查看硬盤分區狀況。找到已經安裝的Ubuntu系統。找到root分區,boot分區等。這里架設sda7是root分區,sda6是boot分區。
sudo mount /dev/sda7 /mnt
sudo mount /dev/sda6 /mnt/boot (如果沒 /boot 單獨分區這步跳過)
sudo grub-install --root-directory=/mnt /dev/sda
這個命令把/mnt分區下的grub配置文件寫入第一個硬盤的boot扇區。
要裝入第二硬盤的把sda改為sdb。以此類推。
如果grub.cfg己丟失,或grub.cfg出現錯誤,需要 重建的,執行下面操作:
把LiveCD系統的一些設備文件系統信息綁定到我們mount的系統上,以使其成為一個真正的操作系統。
sudo mount --bind /proc /mnt/proc
sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
下面命令可以自動生成grub.cfg文件,並寫入boot扇區。
sudo chroot /mnt update-grub
sudo umount /mnt/sys
sudo umount /mnt/dev
sudo umount /mnt/proc
exit
切換回英文環境避免命令行下中文顯示為方塊
在圖形界面下的虛擬終端中,中文可以正常顯示。但是在真正的終端下中文是不能顯示的,都是方塊。
export LC_ALL=C 可以臨時在終端下切換回英文環境。切換會英文環境可以方便查看錯誤信息。
evolution電子郵件軟件
它的數據保存在用戶目錄下的.evolution目錄下。 .開頭的文件和文件夾是Linux的隱藏文件和文件夾。
文件->備份設置/恢復設置,可以把evolution下所有郵件備份為一個壓縮文件,也可以從一個壓縮文件恢復出所有郵件。
配置網卡
dmesg | grep eth 查看網卡eth0這個設備有沒有被識別。
一般會顯示eth0的相關信息。如果你有多個網卡插在電腦上(或者曾經有),那么會顯示eth1等網卡的信息。
vi /etc/network/interfaces,這個文件是配置物理網卡地址和虛擬網卡地址的地方。
auto eth0
iface eth0 inet dhcp
這個網卡從dhcp自動獲取地址。
也可以是
iface eth0 inet static
然后手工指定地址:
address 172.16.10.78
netmask 255.255.255.0
network 172.16.10.0
broadcast 172.16.10.255
gateway 172.16.10.1
使用虛擬網橋的配置
我這里虛擬網橋使用eth0作為出口。因此eth0本身就不能配置ip地址。
首先安裝
sudo apt-get install bridge-utils
bridge-utils 包讓你能夠設置網橋。
auto eth0
iface eth0 inet manual #ip地址在網橋上配置。
auto br0
iface br0 inet static
address 172.16.10.78
gateway 172.16.10.1
netmask 255.255.255.0
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
光盤
光盤是/dev/scd0 這個設備。因此mount cdrom就需要mount這個設備。
/dev/scd0實際是/dev/sr0的超鏈接。
有些Linux發行版還有/dev/cdrom。這個文件實際上也是/dev/sr0的超鏈接。
ubuntu添加共享庫路徑
1. 將絕對路徑寫入 /etc/ld.so.conf 文件 或者 /etc/ld.so.conf.d/目錄下的文件中。
2. 執行ldconfig。這會搜尋所有共享庫,更新共享庫數據庫。
Ctrl-Alt-D 切換到 桌面
Linux操作系統得鏡像
Sohu有很多Linux操作系統得鏡像:http://mirrors.sohu.com/。
如何使用請看對應得help頁面。
如Fedora頁面的幫助:http://mirrors.sohu.com/help/fedora.html
make -j [N] 參數
make 參數 -j [N], --jobs[=N] 同時允許 N 個任務;無參數表明允許無限個任務。
這個數量應該等於你的CPU的邏輯處理器數量,此時性能最高。
如我的i7處理器是4個core,每一個core都支持超線程,因此有8個邏輯處理器,我就設置 make -j 8。 此時make程序效率最高!
ibus故障恢復
ibus如果出現故障,那么就選擇重新啟動。
如果還不行,那么用ps查看ibus進程號,然后kill掉所有ibus進程。
然后重新啟動ibus進程。
ibus-daemon會啟動ibus的服務程序,現在ibus輸入法又可用了。
ibus-setup會彈出一個ibus配置界面,如果因為配置問題造成ibus不可用,可以用它重新配置ibus選項。
現在應該就可以使ibus恢復正常了。
Eclipse和CodeLite查找文件,都使用Ctrl-Shift-R快捷鍵。
虛擬控制台的配置
/etc/init/tty 目錄下的配置文件管理控制台 tty1.conf tty2.conf tty3.conf tty4.conf tty5.conf tty6.conf
如下,我的電腦上默認有6個控制台。按Ctrl—Alt-F1[到F6] 就可以切換到對應的控制台下。 Ctrl—Alt-F7是ubuntu的圖形界面。Ctrl—Alt-F8及以上沒有。
如果你刪除這些配置文件,那么對應的Ctrl-Alt-Fn就沒有控制台出現。
如果你定制計算機系統,那么可以通過刪除這些配置文件保證用戶無法離開你定制的系統界面。
一共可以設置64個虛擬控制台。但是因為PC上只有12個Fn鍵,所以實際只能設置12個虛擬控制台。
tty1.conf配置文件的內容:
# tty1 - getty #
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -8 38400 tty1
tty命令打印當前的tty設備。
得到硬盤分區對應的uuid
ls -l /dev/disk/by-uuid/ 命令,查看各個分區對應的uuid。 如果使用/dev/sdb4這樣的分區號。那么在插入U盤,移動硬盤等時啟動ubuntu,可能會因為排序錯誤,而mount錯誤的分區,或者無法mount分區。因為此時的sda,sdb,sdc,sdd等可能對應了不同的硬盤設備。而uuid是全球唯一的,不可能mount錯誤的分區。因此在/etc/fstab中應該mount uuid 而不是/dev/sdb1這樣的分區號。
Linux Mount NTFS分區造成的權限問題的解決方案
我的Linux自動mount NTFS分區時,在我解壓文件夾時總用一些文件報錯。 我用ls -lia命令查看了一下權限,發現自動mount的NTFS分區的所有人是root,屬於plugdev這個組。 雖然我仍然可以自由copy、remove、edit文件, 但是解壓總是報錯。
我試圖使用chmod和chown對整個NTFS分區的文件和文件夾修改屬主為我,修改權限為777。雖然程序提示執行成功,但是執行ls -lia命令發現這兩個命令根本沒起作用。
使用sudo vim /etc/fstab,發現配置是這樣的。
UUID=58D03D91D03D767A /mounts/workdisk ntfs defaults,nls=utf8,umask=022,gid=46 0 0
我查看了/etc/group后發現,gid=46是plugdev這個組。 而umask是777減去的值,因此權限最后編程了都是755.
我做了如下修改:
UUID=58D03D91D03D767A /mounts/workdisk ntfs defaults,nls=utf8,umask=000,uid=1000,gid=1000 0 0
umask都是000,這樣權限都是777. 我查看了/etc/passwd文件,發現我的賬戶的號碼是1000, 我的組的號碼也是1000,因此做了上述改變。
重啟系統后,NTFS分區的所有文件屬主都是我。權限都是777。再解壓文件就不會報錯了。
查看塊設備和字符設備的主設備號
cat /proc/devices
查看分區的主從設備號
cat /proc/partitions
查看iScsi target導出的LUN對應的本地映射磁盤的信息
iscsiadm -m session -P 3
-P打印不同級別的信息。默認0,最少的信息。3是最多的信息。 只能指定0-3數字。
-r sessionID 可以查看一個iscsi session。
session表示iscsi client當前連接的iscsi node的信息。
小鍵盤有時失效
Ubuntu的一個老問題,就是小鍵盤時常會失效。雖然NumLock燈亮着,但是沒有反應了。碰到這種情況,按下 shift + alt 和 NumLock快捷鍵,小鍵盤就又恢復正常了!
銷毀磁盤數據
利用隨機的數據填充硬盤:
dd if=/dev/urandom of=/dev/hda1 |
該方法可以用來銷毀數據。執行此操作以后,/dev/hda1 將無法掛載,創建和拷貝操作。
有時不小心把面板弄亂了,可以這樣恢復默認的面板布局
gconftool-2 --set /apps/panel/general/toplevel_id_list --type=list --list-type=string []
現在,ubuntu桌面上應該沒有任何面板了。
然后重新啟動計算機。 就可以看到Ubuntu又幫你把默認的面板給你呈現出來了。
安裝SUN公司的JDK
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk
sudo vim /etc/profile文件,加入如下環境變量:
PATH=/opt/libjpeg-turbo/bin:/usr/lib/jvm/java-6-sun/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export CLASSPATH=/usr/lib/jvm/java-6-sun/lib
export PATH
如果不設置環境變量,則SUN公司的Java環境還沒有成功設置。java程序無法運行。
