![Ubuntu命令大全Ubuntu技巧_第1頁](http://file4.renrendoc.com/view/cb3e5bec05e3f06e2058d1ceb298cf49/cb3e5bec05e3f06e2058d1ceb298cf491.gif)
![Ubuntu命令大全Ubuntu技巧_第2頁](http://file4.renrendoc.com/view/cb3e5bec05e3f06e2058d1ceb298cf49/cb3e5bec05e3f06e2058d1ceb298cf492.gif)
![Ubuntu命令大全Ubuntu技巧_第3頁](http://file4.renrendoc.com/view/cb3e5bec05e3f06e2058d1ceb298cf49/cb3e5bec05e3f06e2058d1ceb298cf493.gif)
![Ubuntu命令大全Ubuntu技巧_第4頁](http://file4.renrendoc.com/view/cb3e5bec05e3f06e2058d1ceb298cf49/cb3e5bec05e3f06e2058d1ceb298cf494.gif)
![Ubuntu命令大全Ubuntu技巧_第5頁](http://file4.renrendoc.com/view/cb3e5bec05e3f06e2058d1ceb298cf49/cb3e5bec05e3f06e2058d1ceb298cf495.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Ubuntu命令大全Ubuntu技巧/s/blog_4dd475390100bkd0.html查看軟件xxx安裝內(nèi)容#dpkg -L xxx查找軟件#apt-cache search 正則表達(dá)式查找文件屬于哪個包#dpkg -S filename apt-file search filename查詢軟件xxx依賴哪些包#apt-cache depends xxx查詢軟件xxx被哪些包依賴#apt-cache rdepends xxx增加一個光盤源#sudo apt-cdrom add系統(tǒng)升級#sudo apt-get update#sudo apt-get upgrade#sudo apt-g
2、et dist-upgrade清除所以刪除包的殘余配置文件#dpkg -l |grep rc|awk print $2 |tr ”n” ” “|sudo xargs dpkg -P -編譯時缺少h文件的自動處理#sudo auto-apt run ./configure查看安裝軟件時下載包的臨時存放目錄#ls /var/cache/apt/archives備份當(dāng)前系統(tǒng)安裝的所有包的列表#dpkg get-selections | grep -v deinstall /somefile從上面?zhèn)浞莸陌惭b包的列表文件恢復(fù)所有包#dpkg set-selections /proc/sys/net/ip
3、v4/ip_forward#sudo iptables -t nat -I POSTROUTING -j MASQUERADE查看路由信息#netstat -rn sudo route -n手工增加刪除一條路由#sudo route add -net netmask gw #sudo route del -net netmask gw 修改網(wǎng)卡MAC地址的方法#sudo ifconfig eth0 down 關(guān)閉網(wǎng)卡#sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE 然后改地址#sudo ifconfig eth0 up 然后啟動網(wǎng)卡統(tǒng)計當(dāng)前IP連接的
4、個數(shù)#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統(tǒng)計當(dāng)前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
5、#echo “blacklist ipv6 | sudo tee /etc/modprobe.d/blacklist-ipv6服務(wù)添加一個服務(wù)#sudo update-rc.d 服務(wù)名 defaults 99刪除一個服務(wù)#sudo update-rc.d 服務(wù)名 remove臨時重啟一個服務(wù)#/etc/init.d/服務(wù)名 restart臨時關(guān)閉一個服務(wù)#/etc/init.d/服務(wù)名 stop臨時啟動一個服務(wù)#/etc/init.d/服務(wù)名 start設(shè)置配置默認(rèn)Java使用哪個#sudo update-alternatives config java修改用戶資料#sudo chfn use
6、rid給apt設(shè)置代理#export http_proxy=http:/xx.xx.xx.xx:xxx修改系統(tǒng)登錄信息#sudo vim /etc/motd中文轉(zhuǎn)換文件名由GBK為UTF8#sudo apt-get install convmv convmv -r -f cp936 -t utf8 notest nosmart *批量轉(zhuǎn)換src目錄下的所有文件內(nèi)容由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. 或
7、echo */.將當(dāng)前目錄下最近30天訪問過的文件移動到上級back目錄#find . -type f -atime -30 -exec mv ./back ;將當(dāng)前目錄下最近2小時到8小時之內(nèi)的文件顯示出來#find . -mmin +120 -mmin -480 -exec more ;刪除修改時間在30天之前的所有文件#find . -type f -mtime +30 -mtime -3600 -exec rm ;查找guest用戶的以avi或者rm結(jié)尾的文件并刪除掉#find . -name *.avi -o -name *.rm -user guest -exec rm ;查找的不
8、以java和xml結(jié)尾,并7天沒有使用的文件刪除掉#find . ! -name *.java ! -name *.xml -atime +7 -exec rm ;統(tǒng)計當(dāng)前文件個數(shù)#ls /usr/bin|wc -w統(tǒng)計當(dāng)前目錄個數(shù)#ls -l /usr/bin|grep d|wc -l顯示當(dāng)前目錄下2006-01-01的文件名#ls -l |grep 2006-01-01 |awk print $8FTP上傳下載文件工具-filezilla#sudo apt-get install filezillafilezilla無法列出中文目錄?站點(diǎn)-字符集-自定義-輸入:GBK本地中文界面1)下載f
9、ilezilla中文包到本地目錄,如/2)#unrar x Filezilla3_zhCN.rar3) 如果你沒有unrar的話,請先安裝rar和unrar#sudo apt-get install rar unrar#sudo ln -f /usr/bin/rar /usr/bin/unrar4)先備份原來的語言包,再安裝;實(shí)際就是拷貝一個語言包。#sudo cp /usr/share/locale/zh_CN/filezilla.mo /usr/share/locale/zh_CN/filezilla.mo.bak#sudo cp /locale/zh_CN/filezilla.mo /u
10、sr/share/locale/zh_CN/filezilla.mo5)重啟filezilla,即可!解壓縮解壓縮 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解壓縮 RAR 文件1) 先安裝#sudo apt-get install rar unrar#sudo ln -f /usr/bin/ra
11、r /usr/bin/unrar2) 解壓#unrar x aaaa.rarNautilus顯示隱藏文件Ctrl+h顯示地址欄Ctrl+l特殊 URI 地址* computer:/ - 全部掛載的設(shè)備和網(wǎng)絡(luò)* network:/ - 瀏覽可用的網(wǎng)絡(luò)* burn:/ - 一個刻錄 CDs/DVDs 的數(shù)據(jù)虛擬目錄* smb:/ - 可用的 windows/samba 網(wǎng)絡(luò)資源* x-nautilus-desktop:/ - 桌面項(xiàng)目和圖標(biāo)*file:/- 本地文件* trash:/ - 本地回收站目錄* ftp:/ - FTP 文件夾* ssh:/ - SSH 文件夾* fonts:/ - 字體
12、文件夾,可將字體文件拖到此處以完成安裝* themes:/ - 系統(tǒng)主題文件夾查看已安裝字體在nautilus的地址欄里輸入”fonts:/“,就可以查看本機(jī)所有的fonts程序詳細(xì)顯示程序的運(yùn)行信息#strace -f -F -o outfile日期和時間設(shè)置日期#date -s mm/dd/yy設(shè)置時間#date -s HH:MM將時間寫入CMOS#hwclock systohc讀取CMOS時間#hwclock hctosys從服務(wù)器上同步時間#sudo ntpdate #sudo ntpdate 控制臺不同控制臺間切換Ctrl + ALT + Ctrl + ALT + 指定控制臺切換Ct
13、rl + ALT + Fn(n:17)控制臺下滾屏SHIFT + pageUp/pageDown控制臺抓圖#setterm -dump n(n:17)數(shù)據(jù)庫mysql的數(shù)據(jù)庫存放在地方#/var/lib/mysql從mysql中導(dǎo)出和導(dǎo)入數(shù)據(jù)#mysqldump 數(shù)據(jù)庫名 文件名 #導(dǎo)出數(shù)據(jù)庫#mysqladmin create 數(shù)據(jù)庫名 #建立數(shù)據(jù)庫#mysql 數(shù)據(jù)庫名 GRANT ALL PRIVILEGES ON *.* TO rootlocalhost IDENTIFIED BY “123456;123456是root的密碼,可以自由設(shè)置,但最好是設(shè)個安全點(diǎn)的。#mysql quit
14、; 退出mysqlapache2的操作命令啟動:#sudo /etc/init.d/apache2 start重啟:#sudo /etc/init.d/apache2 restart關(guān)閉:#sudo /etc/init.d/apache2 stopapache2的默認(rèn)主目錄:/var/www/Ubuntu 7.10 更換軟件源、更新系統(tǒng)網(wǎng)通建議用臺灣的源,電信就用cn99在終端輸入: #sudo gedit /etc/apt/sources.list# U 更新服務(wù)器(江蘇省常州市電信,推薦電信用戶使用。)deb /ubuntu/ gutsy main restricted universe
15、multiversedeb /ubuntu/ gutsy-security main restricted universe multiversedeb /ubuntu/ gutsy-updates main restricted universe multiversedeb /ubuntu/ gutsy-proposed main restricted universe multiversedeb /ubuntu/ gutsy-backports main restricted universe multiversedeb-src /ubuntu/ gutsy main restricted
16、 universe multiversedeb-src /ubuntu/ gutsy-security main restricted universe multiversedeb-src /ubuntu/ gutsy-updates main restricted universe multiversedeb-src /ubuntu/ gutsy-proposed main restricted universe multiversedeb-src /ubuntu/ gutsy-backports main restricted universe multiversedeb /ubuntu-
17、cn/ gutsy main restricted universe multiverse# 更新服務(wù)器 (上海市 電信):deb /ubuntu/ gutsy main restricted universe multiversedeb-src /ubuntu/ gutsy main restricted universe multiversedeb /ubuntu/ gutsy-updates main restricted universe multiversedeb-src /ubuntu/ gutsy-updates main restricted universe multiver
18、sedeb /ubuntu/ gutsy-backports main restricted universe multiversedeb-src /ubuntu/ gutsy-backports main restricted universe multiversedeb /ubuntu/ gutsy-security main restricted universe multiversedeb-src /ubuntu/ gutsy-security main restricted universe multiversedeb /ubuntu/ gutsy-proposed main mul
19、tiverse restricted universedeb-src /ubuntu/ gutsy-proposed main restricted universe multiversedeb /ubuntu-cn/ gutsy main multiverse restricted universe# 臺灣大學(xué)更新服務(wù)器(推薦網(wǎng)通用戶使用,此源比較完整,較少出現(xiàn)同步問題)deb .tw/ubuntu/ gutsy main restricted universe multiversedeb-src .tw/ubuntu/ gutsy main restricted universe mult
20、iversedeb .tw/ubuntu/ gutsy-updates main restricted universe multiversedeb-src .tw/ubuntu/ gutsy-updates main restricted universe multiversedeb .tw/ubuntu/ gutsy-backports main restricted universe multiversedeb-src .tw/ubuntu/ gutsy-backports main restricted universe multiversedeb .tw/ubuntu/ gutsy-
21、security main restricted universe multiversedeb-src .tw/ubuntu/ gutsy-security main restricted universe multiversedeb .tw/ubuntu/ gutsy-proposed main multiverse restricted universedeb-src .tw/ubuntu/ gutsy-proposed main restricted universe multiverse# M 更新服務(wù)器(浙江省杭州市電信,亞洲地區(qū)官方更新服務(wù)器)deb /ubuntu gutsy m
22、ain restricted universe multiversedeb /ubuntu gutsy-security main restricted universe multiversedeb /ubuntu gutsy-updates main restricted universe multiversedeb /ubuntu feisty-backports main restricted universe multiversedeb /ubuntu gutsy-proposed main restricted universe multiversedeb-src /ubuntu g
23、utsy main restricted universe multiversedeb-src /ubuntu gutsy-security main restricted universe multiversedeb-src /ubuntu gutsy-updates main restricted universe multiversedeb-src /ubuntu gutsy-backports main restricted universe multiversedeb-src /ubuntu gutsy-proposed main restricted universe multiv
24、ersedeb /ubuntu/ubuntu-cn gutsy main restricted universe multiverse# 更新服務(wù)器(福建省福州市 電信)deb /ubuntu/ gutsy main restricted universe multiversedeb-src /ubuntu/ gutsy main restricted universe multiversedeb /ubuntu/ gutsy-updates main restricted universe multiversedeb-src /ubuntu/ gutsy-updates main restr
25、icted universe multiversedeb /ubuntu/ gutsy-backports main restricted universe multiversedeb-src /ubuntu/ gutsy-backports main restricted universe multiversedeb /ubuntu/ gutsy-security main restricted universe multiversedeb-src /ubuntu/ gutsy-security main restricted universe multiversedeb /ubuntu/
26、gutsy-proposed main multiverse restricted universedeb-src /ubuntu/ gutsy-proposed main restricted universe multiversedeb /ubuntu-cn/ gutsy main multiverse restricted universe#清華大學(xué) 更新服務(wù)器(教育網(wǎng),推薦校園網(wǎng)和網(wǎng)通用戶使用)deb /ubuntu/ gutsy main multiverse restricted universedeb /ubuntu/ gutsy-backports main multivers
27、e restricted universedeb /ubuntu/ gutsy-proposed main multiverse restricted universedeb /ubuntu/ gutsy-security main multiverse restricted universedeb /ubuntu/ gutsy-updates main multiverse restricted universedeb-src /ubuntu/ gutsy main multiverse restricted universedeb-src /ubuntu/ gutsy-backports
28、main multiverse restricted universedeb-src /ubuntu/ gutsy-proposed main multiverse restricted universedeb-src /ubuntu/ gutsy-security main multiverse restricted universedeb-src /ubuntu/ gutsy-updates main multiverse restricted universedeb /ubuntu-cn/ gutsy main multiverse restricted universe將里面亂七八糟的
29、東西刪了,將你復(fù)制的源列表粘貼到里面,保存退出。在終端輸入#sudo apt-get update#sudu apt-get upgrade這樣便更新以及升級了系統(tǒng)。桌面漢化:SystemLanguage SupportChinese選項(xiàng)勾打上。安裝解碼器、flashplayer、java虛擬機(jī)、微軟字體這是ubuntu推出的一個新軟件包,將一次性將上面幾個東東自動裝好在終端輸入#sudo apt-get install ubuntu-restricted-extrasFireFox 中安裝 FlashPlayer 插件先下載插件: install_flash_player_9_linux.t
30、ar.gz#tar -zxf install_flash_player_9_linux.tar.gz#./flashplayer-installer回答(y/n/q)? n/q#sudo cp libflashplayer.so /usr/lib/firefox/plugins啟動 firefox 即可!安裝媒體播放器安裝的是mplayer終端輸入:#sudo apt-get install mplayer mozilla-mplayer totem-xine libxine-extracodecs另外需要一個w32codecs文件,是用來支持那些私有媒體格式的解碼器,源里已經(jīng)沒有w32cod
31、ecs了,我們可以從這里下載那個后綴為.deb的安裝/pool/main/w/w32codecs/mplayer調(diào)試(視頻、字幕)啟動mplayer,右鍵PreferencesVideoAvailable drivers選擇xv然后進(jìn)入Font標(biāo)簽 Font里選擇一個中文字體,Encoding里設(shè)置為Simplified Chinese charset (CP936)安裝下載工具(多線程下載、BT下載、電驢)還是終端輸入:#sudo apt-get install d4x amule azureus即可?;蛘甙?beryl-manager添加到啟動項(xiàng)內(nèi)字體更換我推薦大家使用文泉驛字體,在下載d
32、eb包安裝在“系統(tǒng)“”首選項(xiàng)“”字體“中調(diào)整字體apt下載的deb包清理在使用完apt后,系統(tǒng)下載的deb包會留存在硬盤里,我們可以把它們刪除,釋放硬盤空間。終端輸入:#sudo apt-get clean安裝rar壓縮、解壓工具終端輸入:#sudo apt-get install rar unrar啟用root(最高權(quán)限)帳戶終端輸入:#sudo passwd root輸入你希望的root用戶的密碼安裝QQ終端輸入:#sudo apt-get install eva便可安裝eva了,如果你是使用scim(選擇中文語言支持的自動安裝的就是scim),為了可以在eva里面輸入文字,要在終端輸入:
33、sudo apt-get install scim-qtimm系統(tǒng)會安裝支持QT的scim插件,這樣你就可以使用eva聊qq了。顯卡驅(qū)動安裝進(jìn)入“系統(tǒng)”“系統(tǒng)管理”“受限驅(qū)動管理器”找到你的顯卡,把那個框點(diǎn)成對號,會提示你安裝顯卡驅(qū)動,然后按照提示一步一步安裝完畢,重啟即可。beryl的安裝你的系統(tǒng)在安裝完畢之后就已經(jīng)有了一個內(nèi)置的桌面效果軟件(能實(shí)現(xiàn)簡單的桌面特效,包括3D立方體),使用方法是(必須將顯卡驅(qū)動裝好)進(jìn)入“系統(tǒng)”“首選項(xiàng)”“桌面效果”,點(diǎn)擊“啟用桌面效果”,如果你需要使用3D立方體桌面,那么選中“立方體上的工作區(qū)”即可。如果你對這個簡單的桌面特效工具不太滿意,想追求更華麗的桌面
34、,那么安裝beryl仍然是個很好的選擇。如今安裝beryl不會像以前一樣麻煩了,feisty的源里已經(jīng)有了beryl的軟件包,我們只需要在終端里輸入:#sudo apt-get install beryl-core beryl-plugins beryl-plugins-data emerald beryl-settings beryl-manager beryl beryl-dev emerald-themes安裝完畢即可了。啟動方法:“應(yīng)用程序”系統(tǒng)工具”Beryl Manager”或者直接在終端輸入:#beryl-manager如何設(shè)定/改變/啟用 root 使用者的密碼?#sudo p
35、asswd root為了啟用 root 帳號 (也就是 設(shè)置一個口令) 使用:#sudo passwd root當(dāng)你使用完畢后屏蔽 root 帳號 使用:#sudo passwd -l root這個將鎖住 root 帳號.如何在終端機(jī)模式下切換到 root 身份?#sudo -s -HPassword: 安裝VNC server第一步, 獲取安裝文件#sudo apt-get install vnc4server第二步, 修改VNC Password, 6-8位#vncpasswdPassword: *Verify:*第三步, 修改配置系統(tǒng)-首選項(xiàng)-遠(yuǎn)程桌面選擇-請求用戶輸入此密碼-輸入至少6
36、位密碼第四步, 啟動VNC server#vncserver第五步,通過客戶端連接#vncviewer 安裝MS字體#sudo apt-get install msttcorefontsvim配置1) 首先安裝 vim 完整版本#sudo apt-get install vim-full2) vim中文在線幫助a. 先下載 HYPERLINK /download.php?id=5905 文檔 vimcdoc-1.5.0.tar.gzb. 解壓, 執(zhí)行./vimcdoc.sh, vi里面, 執(zhí)行:help, 就都是中文的了.3) 啟用本地配置 VIM version 7.1 ( HYPERLIN
37、K /doc/usr_toc.html 說明文檔)#cp etc/vim/vimrc /.vimrc#vim /.vimrc 一般設(shè)定 設(shè)定默認(rèn)解碼 set fenc=utf-8 set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 ” 不要使用vi的鍵盤模式,而是vim自己的set nocompatible” history文件中需要記錄的行數(shù)set history=100” 在處理未保存或只讀文件的時候,彈出確認(rèn)set confirm” 與windows共享剪貼板set clipboard+=unnamed” 偵測文件類型filet
38、ype on” 載入文件類型插件filetype plugin on” 為特定文件類型載入相關(guān)縮進(jìn)文件filetype indent on” 保存全局變量set viminfo+=!” 帶有如下符號的單詞不要被換行分割set iskeyword+=_,$,%,#,-” 語法高亮syntax on” 高亮字符,讓其不受100列限制:highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white:match OverLength %101v.*” 狀態(tài)行顏色highlight StatusLine guifg=SlateBl
39、ue guibg=Yellowhighlight StatusLineNC guifg=Gray guibg=White“” 文件設(shè)置“” 不要備份文件(根據(jù)自己需要取舍)set nobackup” 不要生成swap文件,當(dāng)buffer被丟棄的時候隱藏它setlocal noswapfileset bufhidden=hide” 字符間插入的像素行數(shù)目set linespace=0” 增強(qiáng)模式中的命令行自動完成操作set wildmenu” 在狀態(tài)行上顯示光標(biāo)所在位置的行號和列號set rulerset rulerformat=%20(%2*%f%= %m%r %3l %c %p%)” 命令行
40、(在狀態(tài)行下)的高度,默認(rèn)為1,這里是2set cmdheight=2” 使回格鍵(backspace)正常處理indent, eol, start等set backspace=2” 允許backspace和光標(biāo)鍵跨越行邊界set whichwrap+=,h,l” 可以在buffer的任何地方使用鼠標(biāo)(類似office中在工作區(qū)雙擊鼠標(biāo)定位)set mouse=aset selection=exclusiveset selectmode=mouse,key” 啟動的時候不顯示那個援助索馬里兒童的提示set shortmess=atI” 通過使用: commands命令,告訴我們文件的哪一行被改
41、變過set report=0” 不讓vim發(fā)出討厭的滴滴聲set noerrorbells” 在被分割的窗口間顯示空白,便于閱讀set fillchars=vert: ,stl: ,stlnc:“” 搜索和匹配“” 高亮顯示匹配的括號set showmatch” 匹配括號高亮的時間(單位是十分之一秒)set matchtime=5” 在搜索的時候忽略大小寫set ignorecase” 不要高亮被搜索的句子(phrases)set nohlsearch” 在搜索時,輸入的詞句的逐字符高亮(類似firefox的搜索)set incsearch” 輸入:set list命令是應(yīng)該顯示些啥?set
42、listchars=tab:| ,trail:.,extends:,precedes: db.sql 建立數(shù)據(jù)庫: #mysqladmin create 數(shù)據(jù)庫名 導(dǎo)入數(shù)據(jù)庫: #mysql -uroot -p db db.sql 忘了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口令 #su
43、do mysqladmin -uroot -p password 你的新密碼附錄資料:不需要的可以自行刪除 libxml2應(yīng)用實(shí)例Libxml2 是一個xml的c語言版的解析器,本來是為Gnome項(xiàng)目開發(fā)的工具,是一個基于MIT License的免費(fèi)開源軟件。它除了支持c語言版以外,還支持c+、PHP、Pascal、Ruby、Tcl等語言的綁定,能在Windows、Linux、Solaris、MacOsX等平臺上運(yùn)行。功能還是相當(dāng)強(qiáng)大的,相信滿足一般用戶需求沒有任何問題。二、 Libxml2安裝:一般如果在安裝系統(tǒng)的時候選中了所有開發(fā)庫和開發(fā)工具的話(Fedora Core系列下),應(yīng)該不用安
44、裝,下面介紹一下手動安裝: 1) 從xmlsoft站點(diǎn)或ftp()站點(diǎn)下載libxml壓縮包(libxml2-xxxx.tar.gz)2) 對壓縮包進(jìn)行解壓縮 tar xvzf libxml2-xxxx.tar.gz3) 進(jìn)入解壓縮后的文件夾中運(yùn)行 ./configure -prefix /home/user/myxml/xmlinst(此處為待安裝的路徑)或者直接使用 ./configure make make install 4) 添加路徑 export PATH=/home/user/myxml/xmlinst/bin:$PATH 說明:為了結(jié)構(gòu)清晰,最好將libxml2不安裝在解壓目錄
45、中。安裝完成后就可以使用簡單的代碼解析XML文件,包括本地和遠(yuǎn)程的文件,但是在編碼上有一些問題。Libxml默認(rèn)只支持UTF8的編碼,無論輸入輸出都是UTF-8,所以如果你解析完一個XML得到的結(jié)果都是UTF8的,如果需要輸出GB2312或者其它編碼,需要ICONV來做轉(zhuǎn)碼(生成UTF8編碼的文件也可以用它做),如果系統(tǒng)中沒有安裝iconv的話,需要安裝libiconv。 1) 下載libiconv壓縮包(例如libiconv-1.11.tar.gz) 2) 對壓縮包進(jìn)行解壓縮tar xvzf libiconv-1.11.tar.gz 3) 進(jìn)入解壓縮后的文件夾中運(yùn)行 ./configure
46、make make install三、關(guān)于XML:在開始研究 Libxml2 庫之前,先了解一下XML的相關(guān)基礎(chǔ)。XML 是一種基于文本的格式,它可用來創(chuàng)建能夠通過各種語言和平臺訪問的結(jié)構(gòu)化數(shù)據(jù)。它包括一系列類似 HTML 的標(biāo)記,并以樹型結(jié)構(gòu)來對這些標(biāo)記進(jìn)行排列。例如,可參見清單 1 中介紹的簡單文檔。為了更清楚地顯示 XML 的一般概念,下面是一個簡化的XML文件。清單 1. 一個簡單的 XML 文件 root delete 10清單 1 中的第一行是 XML 聲明,它告訴負(fù)責(zé)處理 XML 的應(yīng)用程序,即解析器,將要處理的 XML 的版本。大部分的文件使用版本 1.0 編寫,但也有少量的版
47、本 1.1 的文件。它還定義了所使用的編碼。大部分文件使用 UTF-8,但是,XML 設(shè)計用來集成各種語言中的數(shù)據(jù),包括那些不使用英語字母的語言。接下來出現(xiàn)的是元素。一個元素以開始標(biāo)記 開始(如 ),并以結(jié)束標(biāo)記 結(jié)束(如 ),其中使用斜線 (/) 來區(qū)別于開始標(biāo)記。元素是 Node 的一種類型。XML 文檔對象模型 (DOM) 定義了幾種不同的 Nodes 類型,包括:Elements(如 files 或者 age)Attributes(如 units)Text(如 root 或者 10)元素可以具有子節(jié)點(diǎn)。例如,age 元素有一個子元素,即文本節(jié)點(diǎn) 10。XML 解析器可以利用這種父子結(jié)構(gòu)
48、來遍歷文檔,甚至修改文檔的結(jié)構(gòu)或內(nèi)容。LibXML2 是這樣的解析器中的其中一種,并且文中的示例應(yīng)用程序正是使用這種結(jié)構(gòu)來實(shí)現(xiàn)該目的。對于各種不同的環(huán)境,有許多不同的解析器和庫。LibXML2 是用于 UNIX 環(huán)境的解析器和庫中最好的一種,并且經(jīng)過擴(kuò)展,它提供了對幾種腳本語言的支持,如 Perl 和 Python。四、Libxml2中的數(shù)據(jù)類型和函數(shù)一個函數(shù)庫中可能有幾百種數(shù)據(jù)類型以及幾千個函數(shù),但是記住大師的話,90%的功能都是由30%的內(nèi)容提供的。對于libxml2,我認(rèn)為搞懂以下的數(shù)據(jù)類型和函數(shù)就足夠了。1)內(nèi)部字符類型xmlCharxmlChar是Libxml2中的字符類型,庫中所有
49、字符、字符串都是基于這個數(shù)據(jù)類型。事實(shí)上它的定義是:xmlstring.htypedef unsigned char xmlChar;使用unsigned char作為內(nèi)部字符格式是考慮到它能很好適應(yīng)UTF-8編碼,而UTF-8編碼正是libxml2的內(nèi)部編碼,其它格式的編碼要轉(zhuǎn)換為這個編碼才能在libxml2中使用。還經(jīng)??梢钥吹绞褂脁mlChar*作為字符串類型,很多函數(shù)會返回一個動態(tài)分配內(nèi)存的xmlChar*變量,使用這樣的函數(shù)時記得要手動刪除內(nèi)存。2) xmlChar相關(guān)函數(shù)如同標(biāo)準(zhǔn)c中的char類型一樣,xmlChar也有動態(tài)內(nèi)存分配、字符串操作等相關(guān)函數(shù)。例如xmlMalloc是動
50、態(tài)分配內(nèi)存的函數(shù);xmlFree是配套的釋放內(nèi)存函數(shù);xmlStrcmp是字符串比較函數(shù)等等?;旧蟲mlChar字符串相關(guān)函數(shù)都在xmlstring.h中定義;而動態(tài)內(nèi)存分配函數(shù)在xmlmemory.h中定義。3)xmlChar*與其它類型之間的轉(zhuǎn)換另外要注意,因?yàn)榭偸且趚mlChar*和char*之間進(jìn)行類型轉(zhuǎn)換,所以定義了一個宏BAD_CAST,其定義如下:xmlstring.h#define BAD_CAST (xmlChar *)原則上來說,unsigned char和char之間進(jìn)行強(qiáng)制類型轉(zhuǎn)換是沒有問題的。4)文檔類型xmlDoc、指針xmlDocPtrxmlDoc是一個str
51、uct,保存了一個xml的相關(guān)信息,例如文件名、文檔類型、子節(jié)點(diǎn)等等;xmlDocPtr等于xmlDoc*,它搞成這個樣子總讓人以為是智能指針,其實(shí)不是,要手動刪除的。xmlNewDoc函數(shù)創(chuàng)建一個新的文檔指針。xmlParseFile函數(shù)以默認(rèn)方式讀入一個UTF-8格式的文檔,并返回文檔指針。xmlReadFile函數(shù)讀入一個帶有某種編碼的xml文檔,并返回文檔指針;細(xì)節(jié)見libxml2參考手冊。xmlFreeDoc釋放文檔指針。特別注意,當(dāng)你調(diào)用xmlFreeDoc時,該文檔所有包含的節(jié)點(diǎn)內(nèi)存都被釋放,所以一般來說不需要手動調(diào)用xmlFreeNode或者xmlFreeNodeList來釋放
52、動態(tài)分配的節(jié)點(diǎn)內(nèi)存,除非你把該節(jié)點(diǎn)從文檔中移除了。一般來說,一個文檔中所有節(jié)點(diǎn)都應(yīng)該動態(tài)分配,然后加入文檔,最后調(diào)用xmlFreeDoc一次釋放所有節(jié)點(diǎn)申請的動態(tài)內(nèi)存,這也是為什么我們很少看見xmlNodeFree的原因。xmlSaveFile將文檔以默認(rèn)方式存入一個文件。xmlSaveFormatFileEnc可將文檔以某種編碼/格式存入一個文件中。5)節(jié)點(diǎn)類型xmlNode、指針xmlNodePtr節(jié)點(diǎn)應(yīng)該是xml中最重要的元素了,xmlNode代表了xml文檔中的一個節(jié)點(diǎn),實(shí)現(xiàn)為一個struct,內(nèi)容很豐富:tree.htypedef struct _xmlNode xmlNode;ty
53、pedef xmlNode *xmlNodePtr;struct _xmlNode void *_private;/* application data */ xmlElementType type; /* type number, must be second ! */ const xmlChar *name; /* the name of the node, or the entity */ struct _xmlNode *children;/* parent-childs link */ struct _xmlNode *last; /* last child link */ stru
54、ct _xmlNode *parent;/* child-parent link */ struct _xmlNode *next; /* next sibling link*/ struct _xmlNode *prev; /* previous sibling link*/ struct _xmlDoc*doc;/* the containing document */ /* End of common part */ xmlNs *ns; /* pointer to the associated namespace */ xmlChar *content; /* the content
55、*/ struct _xmlAttr *properties;/* properties list */ xmlNs *nsDef; /* namespace definitions on this node */ void *psvi;/* for type/PSVI informations */ unsigned short line; /* line number */ unsigned short extra;/* extra data for XPath/XSLT */;可以看到,節(jié)點(diǎn)之間是以鏈表和樹兩種方式同時組織起來的,next和prev指針可以組成鏈表,而parent和chi
56、ldren可以組織為樹。同時還有以下重要元素:節(jié)點(diǎn)中的文字內(nèi)容:content;節(jié)點(diǎn)所屬文檔:doc;節(jié)點(diǎn)名字:name;節(jié)點(diǎn)的namespace:ns;節(jié)點(diǎn)屬性列表:properties;Xml文檔的操作其根本原理就是在節(jié)點(diǎn)之間移動、查詢節(jié)點(diǎn)的各項(xiàng)信息,并進(jìn)行增加、刪除、修改的操作。xmlDocSetRootElement函數(shù)可以將一個節(jié)點(diǎn)設(shè)置為某個文檔的根節(jié)點(diǎn),這是將文檔與節(jié)點(diǎn)連接起來的重要手段,當(dāng)有了根結(jié)點(diǎn)以后,所有子節(jié)點(diǎn)就可以依次連接上根節(jié)點(diǎn),從而組織成為一個xml樹。6)節(jié)點(diǎn)集合類型xmlNodeSet、指針xmlNodeSetPtr節(jié)點(diǎn)集合代表一個由節(jié)點(diǎn)組成的變量,節(jié)點(diǎn)集合只作為X
57、path的查詢結(jié)果而出現(xiàn)(XPATH的介紹見后面),因此被定義在xpath.h中,其定義如下:/* A node-set (an unordered collection of nodes without duplicates).*/typedef struct _xmlNodeSet xmlNodeSet;typedef xmlNodeSet *xmlNodeSetPtr;struct _xmlNodeSet int nodeNr; /* number of nodes in the set */ int nodeMax; /* size of the array as allocated
58、*/ xmlNodePtr *nodeTab;/* array of nodes in no particular order */ /* with_ns to check wether namespace nodes should be looked at */;可以看出,節(jié)點(diǎn)集合有三個成員,分別是節(jié)點(diǎn)集合的節(jié)點(diǎn)數(shù)、最大可容納的節(jié)點(diǎn)數(shù),以及節(jié)點(diǎn)數(shù)組頭指針。對節(jié)點(diǎn)集合中各個節(jié)點(diǎn)的訪問方式很簡單,如下:xmlNodeSetPtr nodeset = XPATH查詢結(jié)果;for (int i = 0; i nodeNr; i+)nodeset-nodeTabi;注意,libxml2是一個c函數(shù)庫,
59、因此其函數(shù)和數(shù)據(jù)類型都使用c語言的方式來處理。如果是c+,我想我寧愿用STL中的vector來表示一個節(jié)點(diǎn)集合更好,而且沒有內(nèi)存泄漏或者溢出的擔(dān)憂。五、使用Libxml2項(xiàng)目中要實(shí)現(xiàn)一個管理XML文件的后臺程序,需要對XML文件進(jìn)行創(chuàng)建,解析,修改,查找等操作,下面介紹如何利用libxml2提供的庫來實(shí)現(xiàn)上述功能。1、創(chuàng)建XML文檔:我們使用xmlNewDoc()來創(chuàng)建XML文檔,然后使用xmlNewNode(),xmlNewChild(),xmlNewProp(),xmlNewText()等函數(shù)向XML文件中添加節(jié)點(diǎn)及子節(jié)點(diǎn),設(shè)置元素和屬性,創(chuàng)建完畢后用xmlSaveFormatFileEn
60、c()來保存XML文件到磁盤(該函數(shù)可以設(shè)置保存XML文件時的編碼格式)。示例1: #include #include #include int main(int argc, char *argv) xmlDocPtr doc = NULL; /* document pointer */ xmlNodePtr root_node = NULL, node = NULL, node1 = NULL;/* node pointers */ / Creates a new document, a node and set it as a root node doc = xmlNewDoc(BAD_C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防機(jī)房搬移合同(2篇)
- 9《烏鴉喝水》說課稿-2024-2025學(xué)年統(tǒng)編版語文一年級上冊
- 2025年度配電室建設(shè)與電力市場交易合同4篇
- 2023三年級英語上冊 Unit 6 Happy birthday The sixth period說課稿 人教PEP
- 2025年度合伙共同經(jīng)營健身俱樂部的合作協(xié)議書3篇
- 5認(rèn)識棱鏡 說課稿-2024-2025學(xué)年科學(xué)五年級上冊教科版
- 2024年秋七年級歷史上冊 第二單元 夏商周時期:早期國家的產(chǎn)生與社會變革 第6課 動蕩的春秋時期說課稿 新人教版
- 13《萬里一線牽》第一課時 (說課稿)2023-2024學(xué)年統(tǒng)編版道德與法治三年級下冊
- 2024秋七年級數(shù)學(xué)上冊 第四章 圖形的初步認(rèn)識4.6 角 1角說課稿(新版)華東師大版
- 二零二五年度遠(yuǎn)程教育平臺外教兼職教學(xué)合同
- 《項(xiàng)脊軒志》公開課課件【一等獎】
- 美發(fā)學(xué)徒助理職業(yè)規(guī)劃書
- 法醫(yī)病理學(xué)課件
- 職代會提案征集表
- 介紹uppc技術(shù)特點(diǎn)
- 《諫逐客書》理解性默寫(帶答案)最詳細(xì)
- 《黑駿馬》讀書筆記思維導(dǎo)圖
- 2023年物理會考真題貴州省普通高中學(xué)業(yè)水平考試試卷
- 盤扣式懸挑腳手架專項(xiàng)施工方案
- 勞動防護(hù)用品知識考試試題(含答案)
- 高中教師業(yè)務(wù)知識考試 數(shù)學(xué)試題及答案
評論
0/150
提交評論