目前分類:Linux (17)

瀏覽方式: 標題列表 簡短摘要

剛從 Ubuntu 12.04 升級至 12.10。原本網路還是好好的,更是從網上下載升網的檔案。可是自升級後重新啟動電腦,就突然不能上網了。

第一個想法就是會不會在升級時弄壞了一些網路設定?還是去看看路由器的設定好了。這樣一來便很奇怪,如果真的是網路問題,就不可能到逹路由器的設定頁面。終於把問題的範圍縮小,針對的就是 DNS resolution 的部分。

到 Google 一趟,原來也有人有相同的問題。解決的辦法就是把 /etc/resolv.conf 內的 127.0.0.1 改成 127.0.1.1 便可。

很奇怪!

小輝 發表在 痞客邦 留言(0) 人氣()

dd 指令十分好用。由於 Linux 中,所有物件都是檔案,磁碟也當然是一個檔案。要備份一整個 partition,我們可以用:

dd if=/dev/sda1 of=backup

把 sda1 這個 partition 備份成一個名為 backup 的檔案。

以上指令是正確的,但效率不高。要提升效率,可以指定 block size,一般來說 16MB 也有不錯的效果:

dd if=/dev/sda1 of=backup bs=16M

 

要製做一個指定大小的檔案,也可以找 dd 幫個忙:

dd if=/dev/zero of=a_15MB_file bs=1M count=15

便可以做出一個 1MB x 15 = 15MB 的檔案。

小輝 發表在 痞客邦 留言(0) 人氣()

grep 是一個很實用的工具,多數用於要從一堆檔案中,找出出現某個特定字串的檔案,又或是從 log 中 filter 出有相關的項目。

每次運用時,都必定會知道要找的確實關鍵字,例如用

grep printf *.c

來找出所有運用 printf 的 C 程式碼。又或是用

grep 123.123.123.123 access.log

把所有由 123.123.123.123 這個 IP 的存取記錄,從 Apache 的 access log 找出來。

就這樣,我漸漸已忘記了 grep 之所以名為 grep,是因為 regular expression 的緣故:g/re/p。當我想要找出同時有 apple 和 orange 字串的時候,很自然的我就會這樣做:

grep apple text.txt | grep orange

但如果是 apple 或 orange 呢?運用 regular expression 便很輕鬆了:

grep "apple\|orange" text.txt

要注意 | 前要加上 \ 來 escape 字元。同理,先前的 apple 和 orange 的例子,我們也可以這樣做:

grep "apple.*orange\|orange.*apple" text.txt

小輝 發表在 痞客邦 留言(0) 人氣()

上文說文了如何在子資料夾間取代文字,作法有點複雜。如果只是想得知某段文字在那些檔案出現,可有間單點的辦法呢?

當然有,用 grep 就成了。平常以 grep 尋找一個檔案中的文字:

grep search_me file.txt

如果要在子資料夾間搜尋,可以用

grep -r search_me .

來完成,以 -r 來表示要遞迴子資料夾,而 . 則是代表由所在資料夾開始搜尋。

還可以用 --include 來指示目標檔案名稱:

grep -r --include="*.php" search_me .

或用 --exclude 來排除一些檔案:

grep -r --exclude="*.jpg" search_me .

小輝 發表在 痞客邦 留言(0) 人氣()

假設有很多 PHP 檔案分佈在一個資料夾及其子資料夾裡,現在要取代一段文字,但 Linux 下,可以很輕鬆的以一個指令把工作完成:

find ./* -type f -name *.php -exec sed -i "s/find_this/replace_that/g" {} \;

用 find 指令,把所有在當時資料夾下(./*)的所有 PHP (-name *.php)的檔案(-type f)執行 sed 指令。而這個 sed 指令會把 find_this 取代成 replace_that(s/find_this/replace_that/g)。當然,在這個取代指令中,可以用 regular expression。

小輝 發表在 痞客邦 留言(0) 人氣()

Ubuntu 預設會把 BIOS 的時鐘當成 UTC 時間,而 Windows 則把它當成本地時間。當這兩個系統在同一電腦上 dual boot 時,會出現兩者時間不一致。除了把系統設定成每次開機都對準時鐘外,還可以讓 Ubuntu 把 BIOS 的時鐘當成本地時間:

sudo vim /etc/default/rcS

UTC=yes

改成

UTC=no

便可。

小輝 發表在 痞客邦 留言(0) 人氣()

不知何故,Ubuntu 的軟件倉庫出現莫名的 BADSIG 驗證錯誤。反覆移除和匯入簽著都不得要領,最後找到這個解決辦法:

sudo apt-get clean
cd /var/lib/apt
sudo mv lists lists.old
sudo mkdir -p lists/partial
sudo apt-get clean
sudo apt-get update

[ c.f. http://ubuntuforums.org/showthread.php?t=1480604 ]

小輝 發表在 痞客邦 留言(0) 人氣()

Vim 自 7.0 版開始支援 tab,在介面上方會有一行 tab 列。使用時可以像瀏覧器般同時開啟數個檔案,以及在這些檔案中游走。

對於最近要同時編輯數個檔案的我,這功能實在方便得很。但懶惰的我就開始想,究竟可不可以一次過開啟計劃中所有檔案呢?查了一下,原來做法很簡單:

vim -p file1 file2 file3

這樣啟動 vim 便會把 file1、file2 和 file3 都載入至 3 個 tab 中。把這個指令寫成 shell script 就更加方便了!

要注意,Vim 預設最多可有 12 個 tab,如果同時載入超過 12 個檔案,也只會載入首 12 個。要提高這個限制,可以設定 tabpagemax 變數。

另外,一下子開了這麼多的檔案,要一個一個把它們關閉也是很費時的。這時,可以用 :qa (quite all)指令一次過把所有檔案關閉。

小輝 發表在 痞客邦 留言(0) 人氣()

上回提到,我把新裝的 Ubuntu 11.10 設成英文介面,亦把惱的人中文輸入法預設輸入簡體字的問題解決了。

Ubuntu 的英文介面,用的字體就是自家同名的 Ubuntu 字體,讓人看得很舒服。當有些地方要中現中文字的時候,就會因為 Ubuntu 字體中並沒有中文字型,而要用到其他字體中的字型了。然而這一下子,又出現一些視覺上的不搭。

因為跟據搜找字體的順序,系統會在一款明體字中(應該是 AR PL UMing 吧!)再找相對應的字款。我不是說明體不好看,但怎也和 Ubuntu 字體不太統一,還是黑體比較好。文泉驛微米黑可就是正體中文的預設字型呢!

想要讓系統更改字型優先順序,除了更改相關的字型設定檔案,還可以在家目錄中建立一個設定檔。這樣做的話,雖然只會對個別用戶生效,但亦因此比較安全,不怕把系統改壞掉。

做法就是在家目錄中建立一個 .fonts.conf 的檔案,要注意的是檔案名稱前端的一點,這是一個隱藏檔。其內容為:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern">
        <test name="family" qual="any">
            <string>serif</string>
        </test>
        <edit name="family" binding="strong" mode="prepend">
            <string>Ubuntu</string>
            <string>WenQuanYi Micro Hei</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family" qual="any">
            <string>sans-serif</string>
        </test>
        <edit name="family" binding="strong" mode="prepend">
            <string>Ubuntu</string>
            <string>WenQuanYi Micro Hei</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family" qual="any">
            <string>monospace</string>
        </test>
        <edit name="family" binding="strong" mode="prepend">
            <string>Ubuntu Mono</string>
            <string>WenQuanYi Micro Hei Mono</string>
        </edit>
    </match>
</fontconfig>

這樣,系統便會在有襯線(Serif)、無襯線(San Serif)和固體字寬(Monospace)三類字型都會先用 Ubuntu 的字體,後用文泉驛微米黑的字體了。

小輝 發表在 痞客邦 留言(0) 人氣()

從前的 Linux 都給人一種很冰冷難用的感覺,這或多或少都是因為 Linux 和 command line 關係密不可分。但現在許多 Linux distribution 都有很好的圖像介面,一般用戶已經不太需要直接在 command line 下工作。

然而對於一些習慣了使用 command line 工作的人,command line 又真的很有效率。我也會用到 command line 的,但在中文 Ubuntu 中,會有一個小小的不便。在以往中文 Ubuntu 中,預設資料夾都很貼心的以中文起名,是故如要在 command line 下從家目錄中轉至文件夾,我們便要

cd 文件

相比

cd Documents

那個方便些?其實在 command line 中,我們往往都可以輸入部份資料夾名稱,按 tab 讓系統自行完成。所以縱使 Documents 較 文件 長,但其實不用轉輸入法和拼字,我自己覺得比較方便。

這點令我想乾脆把新裝的 Ubuntu 設成英文介面好了,但卻為我帶來另一個問題:當介面是英文時,中文輸入法預設為簡體。這真的很困擾我,我也不想每次要輸入中文時,記著把模式設成回繁體(正體中文)。我查遍輸入法的設定,任我怎樣設定,都是一樣的命運!正當我不知如何是好的時候,我便想到,Ubuntu 怎說都是一個開源的系統,應該沒有甚麼是設定不了的!就這樣,我又 google 了好一回,終於給我找到了。

這其實是輸入法判斷繁簡時機的錯誤,遇到不確定時會預設選擇成簡體中文。只要修改 /usr/share/ibus-table/engine/table.py

124                 if self.db._is_chinese:
125 # if IME declare as Chinese IME
126 return 0
127 else:
128 return -1

以上的一段是在沒法從語系 (LC_CTYPE 或 LANG 變數) 中不能判定預設繁簡模式時會執行的一。時要注意的是第 126 行的 return 0。這裡 return 值為 0 是簡體、1 是繁體。我們以 root 身份把它改成 return 1 後儲存即可。

[ c.f. http://smalldd.pixnet.net/blog/post/28192379 ]

小輝 發表在 痞客邦 留言(0) 人氣()

在新的硬碟安裝了 Ubuntu 11.10 Oneiric Ocelot 一段時間後,也開始習慣了新的系統、新的界面,可以放棄舊的 Ubuntu 11.04。

把舊檔案抄寫出來後,也格式化了舊的硬碟,可以在開機選單中,舊的 Ubuntu 仍然存在。(因為經歷了多次的更新,已累積了很多核心選項。)

因為舊的系統已不存在,我們只要更新 GRUB,它便會自動偵測及更新開機選單:

sudo update-grub

 

那麼,現在的選單中便只有新系統的選項,想說其實預設的 10 秒等候也實是太耐了,可以減少一下。這便要更改一下 GRUB 的設定檔。請注意,我們不要直接更改 /boot/grub/grub.cfg,那個檔案是會被系統自動更新的。我們要更改的是 /etc/default/grub:

sudo vim /etc/default/grub

把原本的

GRUB_TIMEOUT=10

改至更少,例如 1 秒,之後存檔。之後還有一個重要的步驟,便是更新開機選單(是的,又是 update-grub):

sudo update-grub

這才會把 /etc/default/grub 的設定更新到 /boot/grub/grub.cfg 中,才算是大功告成,否則以上的改變是不會有效的。

小輝 發表在 痞客邦 留言(0) 人氣()

把 Ubuntu 從 11.04 升級至 11.10 後,佷自然的要作一些設定以乎合自己的使用習慣,尤其是我這次是一次全新安裝。

一開始看不見的天氣提示 (indicator) 的問題,在前 post 已解決。而另一個我常用的提示就是系統資源的監視。和天氣提示一樣,本來可以從 applet 中選出來,但新版沒有 applet 可用,便要另行安裝。

system_indicator.png 

這次要安裝的,是 indicator-multiload。我偏好用它來顯示處理器、記憶體及網路用量,即得如圖所見的效果。

小輝 發表在 痞客邦 留言(0) 人氣()

SSH 是既安全又好用,但對於經常在各個主機來回的人來說,多次的鍵入密碼也是挻累人的。

其實 SSH 是可以不用輸入密碼也可以登入到的,而且也很安全,其方法就是以密鑰為登入者驗證身份。

在 Linux 下,可以用

ssh-genkey

不斷按 Enter,預設會製作一對 RSA 的公私鑰(id_rsa 和 id_rsa.pub)。由於預設會擺放在

/home/username/.ssh/

下,我只須要把 id_rsa.pub 匯入至主機的 authorized_keys 中便可

 

在本地客端:

scp id_rsa.pub username@hostname:.ssh

 

在遠端主機:

/home/username/$ cd .ssh

/home/username/.ssh/$ cat id_rsa.pub >> authorized_keys

 

那以後就可以很快捷的登入了:

ssh username@hostname

小輝 發表在 痞客邦 留言(0) 人氣()

1 KB 是多是 Byte? 我想許多人也會答 1024 Bytes。當然,我不否認現在 decimal unit 和 binary unit 常常會引起混亂,不過我剛剛才留意到,Ubuntu 中的 Nautilus 以 1000 為單位,真的不習慣呢!

[c.f. UnitsPolicy - Ubuntu Wiki]

小輝 發表在 痞客邦 留言(0) 人氣()

Ubuntu 11.10 Oneiric Ocelot 在十月十三日推出。不經不覺,我已經用了 Ubuntu 作為主要的作業系統好幾年了!(從 8.04 開始?)之前每有新版本出,也都只是按升級來從舊版升級上去。這次由於記憶體已加到 4GB 的關係,也就想從新的安裝 64-bit 一次。對!之前用的是 32-bit 的 PAE 核心。

升級了後,最大的分別,定必是預設的 Unity 而沒有了 GNOME 了,現在還是習慣中。另外,要在時鐘旁顯示天氣温度,也得從 Ubuntu 軟件中心裝上 Weather Indicator (indicator-weather)。

始終是一個從新安裝的系統,很多地方還在設定中。

小輝 發表在 痞客邦 留言(0) 人氣()

Rsync 真是一個很好用的備份工具,過程中只會傳送有差異的部分,自然很有效率。

設定好 rsync 後,如果開啟該服務,只須以 root 身分修改

sudo vim /etc/default/rsync

把當中的

RSYNC_ENABLE=false

改成

RSYNC_ENABLE=true

然後重新啟動即可。

小輝 發表在 痞客邦 留言(0) 人氣()

在 Linux 上把影片轉換格式,首選利器當然是 ffmpeg 了。然而,在 Ubuntu 上抓 ffmpeg 是很容易,可是要在 CentOS 上要安裝 ffmpeg ,在預設的套件庫中是找不到的。

不想重新編譯 ffmpeg,我們可以為 CentOS 加上 Dag 套件庫。首先在 /etc/yum.repos.d 下建立一個名為 dag.repo 的檔案。內容是:

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1

把檔案存妥後即抓 ffmpeg 的話,會出現找不到 GPG 公開金鑰的問題。安裝這一套件便可解決:

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

完成後便可以抓 ffmpeg 了!

yum install ffmpeg

Ref: http://www.mysql-apache-php.com/ffmpeg-install.htm

小輝 發表在 痞客邦 留言(0) 人氣()