顯示具有 linux 標籤的文章。 顯示所有文章
顯示具有 linux 標籤的文章。 顯示所有文章

2016年9月3日 星期六

xfce4-terminal 游標顏色問題

最近又改回用 Xfce 桌面環境 (desktop environment),
也把 gnome-terminal 換成 xfce4-terminal,
基本使用上都沒有什麼問題,也多了可以改 tab 名稱的實用功能,
可是預設的游標樣式 (cursor theme) 卻是固定顏色 (預設是綠色),
不會隨著文字顏色而改變,在使用 Vim 時相當不方便,
文字會被游標的顏色吃掉。

解決方法:
只要在編輯 「~/.config/xfce4/terminal/terminalrc」,
加上「ColorCursor=」,
就可以隨著文字顏色而改變游標顏色。

env:
    os: ubuntu 16.04.1 LTS
    xfce4-terminal: 0.6.3

參考資料:
How to force xfce-terminal to use inverse cursor colours

2015年11月23日 星期一

tmux基本用法

最近認識到一個好用的terminal multiplexer,名叫tmux
據說比GNU Screen還要強大,
我沒有用過GNU Screen,所以在選擇上面當然選一個評價好也比較新的,
也就是tmux!
首先就是把tmux安裝好:
Debian/Ubuntu:



sudo apt-get install tmux
Fedora(version 22):



sudo dnf install tmux
安裝完成後,只要在terminal下輸入tmux,就會進入tmux的環境:
tmux.png

(底下多了條綠線) tmux的透過指令操作,常用指令如下:
(大寫C表示Ctrl)
C+b c: 開新視窗
C+b n or <space>: 切換到下一個視窗
C+b P: 切換到上一個視窗
(以下為視窗分割功能)
C+b ": 水平分割視窗
C+b %: 垂直分割視窗
C+b: <page up> or <page down>: 切換分割視窗
C+b C<方向鍵上> or C<方向鍵下>: 分割視窗大小調整
C+b C+<方向鍵左> or C+<方向鍵右>: 分割視窗大小調整
C+b <space>: 重新佈置分割的視窗
C+b !: 取消所有分割視窗
C+b [: 進入copy mode,可以用滑鼠捲動
C+b ,: 更改視窗名稱
C+b .: 更改視窗編號與排序
C+b l: 移至前一個選擇的視窗
C+b {: 將目前的視窗前移
C+b }: 將目前的視窗後移
C+b ?: 顯示所有指令
C+d: 將目前的 Tmux Session 丟到背景去
exit: 跳出當前分割視窗
想知道其他指令,可以在terminal下輸入:



man tmux


其中我覺得session的儲存功能相當方便,
可以把當下的工作環境完整儲存起來,包括ssh的連線;
只要在tmux環境下輸入<Ctrl> + d,就可儲存並且離開tmux。
tmux可以儲存多個session,每儲存一個session都會給一個session id,
可以在terminal下輸入:



tmux ls
列出主機上所有的tmux session與相關資訊,
要恢復session,只要在terminal下輸入:



tmux a -t 0
a是attach的簡寫,0表示session的id。
如果要自訂化設定,設定檔放在:



~/.tmux.conf
預設沒有這個檔案,需要自己創立。
目前在tmux下使用Vim的時候,按下<ESC>會有延遲的現象,
上網找到了一個解決方法
只要在~/.tmux.conf中設定:



set -s escape-time 0
就不會有延遲現象。
另外,碰到的問題還有在tmux下Vim的外掛powerline無法顯示顏色的問題,
在~/.tmux.conf下設定:



set -g default-terminal "screen-256color"
顏色就正常了。

而在tmux 2.1之前的版本,可以通過設定~/.tmux.conf,
不用使用C+b [就可以直接透過滑鼠捲動,可是目前(2015/10)最新的2.1版本已經拿掉這個功能。
參考資料:
Tmux 教學 + Screen 到 Tmux 的無痛轉換
tmux教學

ssh 檔案傳送指令

openssh: 6.9

基本構型:


ssh 目標檔案或資料夾 目的地的路徑

將檔案從本機複製到遠端主機:


$scp filename user@remote:/target_path/
filename:檔案名稱(包含路徑)。
user:遠端使用者名稱。
remote:遠端主機名稱(也可以是IP address)。
target_path:檔案要放置的位置(遠端的位置)。

由遠端主機複製檔案至本機:


$scp user@remote:/filename target_path/
filename:檔案名稱(必須包含絕對路徑)。
user:遠端使用者名稱。
remote:遠端主機名稱(也可以是IP address)。
target_path:檔案要放置的位置(本機位置)。

資料夾或多個檔案傳送:


#由遠端主機複製資料夾至本機
$scp -r user@remote:/folder_name/ filename2 target_path/

#由遠端主機複製file1及file2至本機
$scp user@remote:/\{file1, file2\} filename2 target_path/
folder_name:遠端主機的資料夾名稱。

使用非預設port(預設為22):


$scp -P 222 user@remote:/filename target_path/
參考資料:
10 Examples : Copying Files over SSH
凍仁的筆記: scp - 藉由 ssh 的遠端檔案傳輸指令

Linux crontab設定筆記

編輯crontab:


crontab -e
查看crontab:


crontab -l
移除所有已設定的工作排程:



crontab -r
查看、編輯或移除其他使用者的crontab:



crontab -u user -l
crontab -u user -e
crontab -u user -r


編輯crontab




0 3 * * * * command
意思:每個月的每週的每天的3:00執行command
用一個空白分隔分別表示:
(分鐘) (小時) (日期) (月份) (週) (指令)
範圍:



(0-59) (0-23) (1-31) (1-12) (0-7) (指令)
以一個空白分隔。其中,表示「週」的0或7都可以表示星期日。
範圍除了填入數字,也可以填入以下符號:
*(星號):表示任時間。
範例:表示每天的12:00都執行command



0 12 * * * command
,(逗號):表示可設置多個時段。
範例:表示每天的0:00和12:00都執行command



0 0,12 * * * command
-(減號):表示範圍。
範例:表示每天的0:00至12:00每個小時都執行command



0 0-12 * * * command
/(斜線):表示時間間隔。
範例:表示每天的每隔兩個小時都執行command



0 */2 * * * command

2014年5月3日 星期六

Python3 連結MySQL(MariaDB, Pernona)

Version info:
Python: 3.4.0
MySQL: 5.5.37
OS: Ubuntu Linux 14.04

首先,下載並安裝Python3-mysql.connector套件。

sudo apt-get install python3-mysql.connector
範例程式:

import mysql.connector
#輸入DB的使用者名稱,使用者密碼,主機名稱與DB名稱。
cnx = mysql.connector.connect(user='user_name', password='user_password', host='localhost',database='db_name')
cursor = cnx.cursor()
#設定編碼。
cursor.execute('set names utf8')

query = "SELECT * from a_table"
cursor.execute(query)
#抓取資料。
data = cursor.fetchall()
#完成,回傳一個tuple型態的資料。
print(data)
#下面的程式片段是要讓程式回傳一個list,其中每一筆資料使用dict格式,也就是key-vaule的形式,像是:result[0]['abc']表示第一筆且column名稱為「abc」的資料。
column_name = cursor.column_names
result = list()
temp = dict()

for i in range(len(data)):
    for j in range(len(column_name)):
        temp[column_name[j]] = data[i][j]
    result.append(temp)
    temp = dict()
print(result)

#關閉與資料庫的連結
cnx.close()


2015/09/27
PyMySQL用法也跟mysql.connector一樣。
參考資料:
How to connect Python programs to MariaDB

2014年4月5日 星期六

Ubuntu更換開機畫面(Boot Splash Screen)

這邊只更換已經存在的開機畫面,

如果要替換自行下載的開機畫面,

可以參考:

http://askubuntu.com/questions/173329/what-alternatives-are-available-to-replace-the-purple-boot-splash-screen


step1:

開啟terminal並輸入:

sudo update-alternatives --config default.plymouth
 
step2:
 
輸入欲更換開機畫面的號碼,並按下[ENTER]
 
step3:
 
更新設定,在terminal下輸入:
 
sudo update-initramfs -u
 
 
Finished!! 下次開機時就會更換畫面了!

在Gnome 3接收藍牙傳輸的檔案

Gnome版本:3.8.4


Gnome3中要接收藍牙發送來的檔案跟我的理解不太一樣,

並不是在「設定值」> 「Bluetooth」裡面設定,

而是透過「gnome-file-share-properties」這隻程式設定的。


參考資料:http://evilshit.wordpress.com/2013/03/24/how-to-receive-files-via-bluetooth-on-gnome3/

2014年3月13日 星期四

在Linux下載Youtube影片的字幕

先至Google2SRT下載檔案,

解壓縮後用Terminal開啟資料夾,

確定系統有安裝Java後,

執行run.sh,指令如下:

source ./run.sh

或者

sh ./run.sh

上面兩個指令擇一就OK了,

執行成功會跳出操作視窗,

操作方法就不再贅述了,

可以參考下面的連結。


參考資料:http://www.techbang.com/posts/10043-how-to-download-youtube-movies-subtitles-pchome-198-drj

2014年2月11日 星期二

啟動apache2的Rewrite module

Ubuntu 13.10預設的apache2並沒有啟動Rewrite module

只要輸入:

sudo a2enmod rewrite

就可以啟動Rewrite module。

2014年1月27日 星期一

vim 折疊(fold)功能

以前就已經知道vim有折疊文字(程式碼)功能,不過那時候覺得還不需要,

也以為還要額外裝plugin,怕會很麻煩。

但如今開始會看一些比較長的程式碼,於是決定把它加入.vimrc

只要在.vimrc裡輸入:

set foldmethod=marker

就會以「{{{」來標示折疊的起始行,以「}}}」標示折疊的結束行,

如果沒有設定這一行的話,預設是不會顯示像「{{{」和「}}}」的縮排符號的,

而且一離開vim,fold就會取消,也就是下次開啟vim時fold就會不見。


另外,如果在.vimrc加入:

set foldlevel=0

可以讓開啟檔案時,預設將所有fold關閉。



接著來看fold的操作方式:


zo:開啟fold。
zc:關閉fold。
zm:全部縮起來(將 foldlevel-1)。
zM:全部縮起來(設 foldlevel=0)。
zf:製作出起始 fold 符號。
zF:製作出起始與結尾 fold 符號。
zi:啟用/關閉fold。
zO:打開所有fold。
zC:關閉所有fold。
zx:更新fold,即除了游標所在fold不關,其他都關掉。

其中zm和zM的差別目前還搞不清楚,搞清楚之後會再補上。

2014年1月9日 星期四

APT:upgrade與dist-upgrade的差別

在Debian或其他基於Debian的distro中(Ubuntu、Linux Mint...等),

要更新系統通常會用:

apt-get update

加上

apt-get upgrade

其中使用upgrade時,有時會發生套件(package)「未被升級」的現象,

這表示指定套件在安裝過程中,與其他套件有相依性的問題,

更具體的說,就是當安裝一個套件時,

發現需要安裝其他新的套件影響到其他套件的相依性,

該套件就不會被升級, 而保留下來。

這時可以使用:

apt-get dist-upgrade

dist-upgrade會自動幫你解決相依性問題,

也就是嘗試去安裝或移除那些新的套件或相依性受影響的套件,

所以通常會被認為是較有風險的升級。



參考資料:
http://blog.longwin.com.tw/2008/03/debian_ubuntu_apt_dist_upgrade_difference_2008/

2013年12月6日 星期五

使用vim 內建的樣式(color scheme)

vim內建的樣式擺在:

/usr/share/vim/vim74/colors 

當中的數字"74"為vim的版本編號,

也就是7.4版,

請依照自己安裝的版本來作變更。

最後在.vimrc裡面加入:

:colorscheme your_choice

"your_choice"為你所選擇的樣式,

儲存完成後,樣式就會自動套用。

2013年12月5日 星期四

更換DM(Display Manager)

作業系統:Debian based 的 Distribution

sudo dpkg-reconfigure gdm

gdm也可以是kdm、lightdm.....等等

2013年11月13日 星期三

vim NERDTree 安裝(配置)

(2015/11/23:下列安裝方法是在認識Vundle之前,目前推薦使用Vundle)

首先到官方網站下載NERDTree:

http://www.vim.org/scripts/script.php?script_id=1658  
下載下來後解壓縮檔案


unzip nerdtree.zip

在~/.vim/建立plugin目錄(如果存在就不用建立了)

mkdir -p ~/.vim/plugin

將檔案 NERDTree.vim 放入剛建立的資料夾


mv plugin/NERD_tree.vim ~/.vim/plugin


開啟vim 後輸入:

:NERDTree

應該就可以看到NERDTree了!

-----------------------------------------------------

每次要輸入這麼多字很麻煩,所以可以設定快捷鍵

開啟vim 並編輯 .vimrc:

vim ~/.vimrc

 輸入:

 nmap <F5> <ESC>:NERDTree<CR>

讓按下<F5>時等於執行
 

:NERDTree



參考資料:
http://blog.longwin.com.tw/2009/02/vim-tree-explorer-nerdtree-plugin-2009/ 

phpmyadmin在Ubuntu / Linux Mint 下的安裝法

先安裝phpmyadmin,在終端機鍵入:

sudo apt-get install phpmyadmin

打開瀏覽器在網址列輸入:

localhost/phpmyadmin



127.0.0.1/phpmyadmin

如果可以出現phpmadmin的控制台就成功了!

如果不行

那就在終端機輸入:
sudo gedit /etc/apache2/apache2.conf

sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
 sudo gedit /etc/apache2/apache2.conf

(gedit 是文字編輯器,可以成自己熟悉的文字編輯器 ex:vim)

接著在裡面輸入:

Include /etc/phpmyadmin/apache.conf

接著重新啟動apache server:

sudo /etc/init.d/apache2 restart

 
 
參考資料:http://www.unixmen.com/how-to-install-lamp-an-phpmyadmin-on-linuxmint-7-gloria/
sudo /etc/init.d/apache2 restart
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf

2013年10月29日 星期二

在eclipse的Android Emulator下安裝.apk檔

在eclipse的Android Emulator下安裝.apk檔的步驟:
  1. .apk檔放入sdk資料夾內的platform-toolssdk/platform-tools/
  2. 執行eclipse中的Emulator
  3. 開啟終端機
  4. 輸入:cd sdk/platform-tools
  5. 再輸入:./檔名.apk
  6. 如果看到"Success",就表示安裝成功了!
資料來源:http://www.almadevelop.com/2012/01/android-how-to-install-apk-files-on.html

2013年6月23日 星期日

Linux的SUID、SGID、SBIT

SUID:
號碼:4
釋義:
  1. 在檔案在執行時,檔案的執行身份會暫時變成該檔案的 「擁有者」,並且只對二進位程式有用。
  2. 只能設定檔案的SUID不能設定目錄的SUID。
範例:
-rwsr-xr-x 1 root root 22984 Jan  7  2007 /usr/bin/passwd
   ^ 
 以一般使用者執行passwd時會暫時取得root權限。
 
SGID:
號碼:2
釋義:
  1. 在該檔案執行時,檔案的有效群組會暫時變成該檔案的「擁有群組」。
  2. 當SGID設在目錄時,該目錄的 「擁有群組」會自動設定到其下所建立的檔案或子目錄。
  3. 可以設定檔案與目錄。
  4. 常被運用在協同工作目錄。
SBIT:
號碼:1
釋義:
  1. SBIT 只對目錄有效。
  2. 當對目錄設定 SBIT 時,在該目錄下建立的檔案或子目錄,只有root及檔案或子目錄的擁有者可以刪除,例如:/tmp。

參考資料:鳥哥的Linux私房菜http://www.vixual.net/blog/archives/224

2013年5月8日 星期三

在ubuntu中安裝apache server + php + mysql

安裝apache server:
sudo apt-get install apache2

安裝php:
sudo apt-get install php5

安裝mysql-server
sudo apt-get install mysql-server

安裝mysql for apache server:
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql

安裝phpmyadmin(選擇安裝):
sudo apt-get install phpmyadmin

2013年4月29日 星期一

Ubuntu /var/log/uvcdynctrl-udev.log佔容量問題

之前系統警告/var滿了,
查看一下發現/var/log佔了很大的空間,
其中95%的佔用來自於/var/log/uvcdynctrl-udev.log
因為當初以為/var/log是必須定期手動清理的,
(其實系統會自動清理)
於是就直接
sudo rm -r /var/log/*
接著我的apache http server找不到error.log,
就無法啟動了...

其實下面這個解決方法不能解決根本問題,
他只是強制不讓uvcdynctrl寫入/var/log
但是至少uvcdynctrl-udev.log不會再出現了...

有更好的方法以後會再補上!

解決方法:
sudo cp /lib/udev/uvcdynctrl /lib/udev/uvcdynctrl_backup
#備份原始的/lib/udev/uvcdynctrl
gksu gedit /lib/udev/uvcdynctrl

#執行gedit來編輯/lib/udev/uvcdynctrl
#找到"debug=1"並改成"debug=0"

sudo rm /var/log/uvcdynctrl-udev.log

#刪除討人厭佔很大空間的uvcdynctrl-udev.log

參考資料:http://askubuntu.com/questions/177312/filesystem-filling-up-due-to-large-uvcydnctrl-udev-log-file