Ubuntu命令技巧


 

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

系統升級

  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
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網絡共享目錄, 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

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

統計當前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的編譯器方法

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

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

對於JavaJDK1.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那樣是額外安裝的軟件,裝完后是需要驅動才能進去的,不然有可能死機;當然驅動什么的在你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
#有兩種解決辦法,第一種關閉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

 

批量轉換任意文件為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 來進行轉化。

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

圖形界面為ipodtouchmp4的方法

先確保有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

轉換pdfpng

#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 # 顯示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

XPUbuntu相差了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 數據庫名 < 文件名 #導入數據庫

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

基於OpenVZVPS支持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 將無法掛載,創建和拷貝操作。


有時不小心把面板弄亂了,可以這樣恢復默認的面板布局

     Ubuntu有上下兩個面板。有時不小心把面板弄亂了,錯誤刪除了一些面板項目。此時可以這樣恢復默認的面板布局。
命令行執行:

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程序無法運行。

lsb_release -a  打印Linux操作系統發行版信息。

uname -a  打印Linux內核版本信息。





免責聲明!

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



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