2010年11月6日 星期六

gnu screen


gnu screen是我非常喜歡的tool之一,在這邊寫個筆記紀錄一下免得離開Linux太久忘了。
更多資訊您可以參考http://www.gnu.org/software/screen/


"screen"提供一個window的管理機制,讓您的terminal可以在多個processes中切換。"screen"的指令預設都以"ctrl + a"為開頭。
ctrl + ? Show key bindings.

Window控制

C-a + c 建立一個新的window。
C-a 0...9 在window0~9之間切換。
C-a C-a 在目前和之前的window之間切換。
C-a A 輸入title到目前的window。
C-a n 切換到下一個window。
C-a p 切換到上一個window。
C-a " 列出所有的window供選擇切換。
C-a w 列出所有的window。

Session Management

C-a d Detach the screen session
C-a x lock screen

Copy

C-a [ copy,當您按下"C-a ["之後,您就會進入"Copy Mode",您可以移動滑鼠到您想複製的起始位置,接著按下空白鍵,然後在移動到您想複製結束位置按下空白鍵,接著切換到另外一個window按下"C-a ]"就可以貼上了。

Regions

C-a S Split the current region into two new ones.
C-a Tab Move the input focus to the next region.
C-a Q Kill all regions but the current one.
C-a X Kill the current region.

Logging

C-a H Begins/ends logging of the current window to the file ‘screenlog.n’ in the window’s default directory, where n is the number of the current window.

others

C-a : 進入command line模式。


我最愛的screenrc檔
hardstatus alwayslastline "%{= wk} %{by} %H %{wk} | %-Lw%{kw}.%{= g}%n%f* %t%{wk}.%{wk}%+Lw%< %= %{kw}.%{= G} Load: %l %{= R} [%m/%d %c] %{-}"
defscrollback 8192

2010年10月30日 星期六

nm-applet 在 ubuntu 10.10 無法顯示


我將ubuntu升級成10.10之後,nm-applet就不能用了,找了好久,終於找到修復的方法了。

1. 修改/etc/dbus-1/system.d/NetworkManager.conf和/etc/dbus-1/system.d/nm-applet.conf將deny,改allow
2. 刪除 /etc/network/interfaces
3. 重新開機


參考資料:
https://bugs.launchpad.net/ubuntu/+source/network-manager-applet/+bug/249404
http://louis3c.blogspot.com/2008/11/ubuntu-810-networkmanagernm-applet.html



2010年10月9日 星期六

GCC (4.4.1)之C Preprocessor part III


Conditionals
CPPP的Conditionals和C中的if很像,不過C的if是在run-time決定是否要被執行,而CPP則是在compiler time就決定code是否被編譯。

Conditionals主要有三個指令#if、#ifdef和#ifndef。

#ifdef MACRO
#endif
當MACRO被定義這個block才會被編譯,而#ifndef剛好相反。


#if expression
#endif
當expression為非0這個block才會被編譯。而#if defined(MACRO)就等同於#ifdef MACRO,#if也有巢狀寫法。
#if X == 1
#elif X >= 10
#else
#endif
個人偏愛"#if"勝於"#ifdef",主要因為"#if"可以取代"#ifdef",而且"#if"還支援數學運算,如+,-*,/還有bitwise operations, shifts, comparisons, and logical operations (&& and ||)等等,不過僅限於整數型態的運算
#if (1<<2) > 5
#warning "(1<<2) > 5"
#else
#warning "!((1<<2) > 5)"
#endif


Diagnostics
CPP有兩個Diagnostics指令#error和#warning,差異在於一旦執行到#error就會終止處理。



熱門文章