2017年5月30日 星期二

5/26linux心得

5/26

  • 客製化(可調整)提示符號 Prompt
Escape Codes (ESC) Used In Shell Prompts → 033
轉義序列
顯示值
\a
ASCII 格式編碼的鈴聲。計算機會發出嗡嗡的響聲
\d
以日 天的格式表示當前日期
\t
24小時制,時::秒的格式,表示當前時間
\T
12小時制,表示當前時間
\@
12小時制,AM/PM的格式,表示當前時間
\A
24小時制,hours:minutes的格式,表示當前時間
\w
當前工作目錄名
\W
當前工作目錄名的最後部分
\u
當前用戶名
\l
當前終端設備名
\h
本地機的主機名稱,但不帶末尾的功能變數名稱
\H
完整的主機名稱
\s
shell程式名
\v
shell程式的版本號
\n
分行符號
\r
回車符(回到一行的開頭)
\j
運行在當前shell 會話中的工作數
\!
當前命令的歷史號
\#
當前shell會話中的命令數
\$
顯示一個”$” 字元,若擁有超級用戶許可權,則會顯示一個#字元
\[
標誌一系列非列印字元的開始
\]
標誌非列印字元序列結束

mate@404040406:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

mate@404040406:~$ ps1_old="$PS1" // 先儲存現有參數內容 ($PS1 儲存至 ps1_old)
mate@404040406:~$ echo $ps1_old // 檢查確實複製了PS1的值
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
mate@404040406:~$ PS1="$ps1_old" // 將 $ps1_old 還原為 PS1

mate@404040406:~$ PS1= // 提示符號消失
PS1="\$ "
$ // 提示符號復原

mate@404040406:~$PS1="黃敬婷\$  "
黃敬婷$

$ PS1="\[\a\]\$ " // 發出一聲響鈴 [ASCII bell (\a) does not “print,”印不出來]

$ PS1="\A \h \$ " // 現在時間time-of-day(\A) 機器名稱hostname of local machine(\h)
08:36 404040406 $

08:36 404040406 $ PS1="<\u@\h \W>\$ "
<mate@404040406 ~>$

  • 添加顏色 (只有16個固定顏色→未安裝繪圖卡)
終端機早期尚無統一標準,直到很晚,才有共同處理方式:Ameri-can National Standards Institute (ANSI)

Escape Codes (ESC) Used In Shell Prompts → 033
轉義序列
文字顏色
轉義序列
文字顏色
\033[0;30m
黑色
\033[1;30m
深灰色
\033[0;31m
紅色
\033[1;31m
淺紅色
\033[0;32m
綠色
\033[1;32m
淺綠色
\033[0;33m
棕色
\033[1;33m
黃色
\033[0;34m
藍色
\033[1;34m
淺藍色
\033[0;35m
粉紅
\033[1;35m
淺粉色
\033[0;36m
青色
\033[1;36m
淺青色
\033[0;37m
淺灰色
\033[1;37m
白色

轉義序列
背景顏色
轉義序列
背景顏色
\033[0;40m
藍色
\033[1;44m
黑色
\033[0;41m
紅色
\033[1;45m
粉紅
\033[0;42m
綠色
\033[1;46m
青色
\033[0;43m
棕色
\033[1;47m
淺灰色

例如:
<mate@404040406 ~>$ PS1="\[\033[0;31m\]<\u@\h \W>\$ " // 變動文字顏色為紅色
<mate@404040406 ~>$ PS1="\[\033[0;34m\]<\u@\h \W>\$ " // 變動文字顏色為藍色
<mate@404040406 ~>$ PS1="\[\033[0;31m\]<\u@\h \W>\$ "
<mate@404040406 ~>$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] " // 關閉顏色設置,顏色復原
<mate@404040406 ~>$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] " // 變動背景顏色為紅色
<mate@404040406 ~>$


  • 移動游標

轉義編碼
行動
\033[l;cH
游標移到第l行、第c
\033[nA
游標向上移動n
\033[nB
游標向下移動n
\033[nC
游標向前移動n個字元
\033[nD
游標向後移動n個字元
\033[2J
清空螢幕,把游標移到左上角(第零行,第零列)
\033[K
清空從游標位置到當前行末的內容
\033[s
儲存當前游標位置
\033[u
喚醒之前儲存的游標位置


  • 綜合舉例
包含時鐘的黃色文字的紅色長條:

mate@404040406:~$ PS1="\[\033[s\033[0;0H\033[0;41m\033[K\033[1;33m\t\033[0m\033[u\]<\u@\h \W>\$ "(執行後此列消失)
19:22:23
u\]<\u@\h \W>\$ "
<mate@404040406 ~>$
解析:
儲存記住當前游標位置 → 游標回到左上角(移到第0行,第0列) → 紅色背景 → 清空從游標位置到當前行末的內容 → 黃色文字 → 顯示現在時間 → 關閉顏色 → 恢復游標位置 → 提示符字串
  • 套件管理
  1. 套件庫/資料庫 (Repositories)
    大部分安裝的套件都存在於本身套件庫。
  2. 相依性 (Dependencies)
    沒辦法將所有要用到的程式全部放於deb file中,故在其中必須做一些連結。若要用此套件時,必須安裝其他套件。
    Programs are seldom “standalone” rather they rely on the presence of other software components to get their work done.
    程式不可能獨立存在,幾乎所有程式皆須依賴其他軟體的幫忙,才能夠運行。
    ⇒ 檢查相依性 ⇒ 補足相依性
  3. 套件工具
    (1) 高階語言 → 接近人類語言
    例如:apt-get, aptitude
    (2) 低階語言 → 接近機器語言
    例如:dpkg
  4. 安裝linux軟體的迷思 (不能安裝的原因)
    (1) 設備(包含:電腦、網卡、顯示卡)太新
    (2) 設備太稀有,很少人使用
    (3) 硬體廠商隱藏、不公開規格等資訊
  5. 安裝實例
    (1) emacs撰寫程式的編輯器 ⇨ 提升速度:apt-get update; apt-get install emacs
    (2) VLC多媒體播放器 ⇨ 播放影音資料:apt-get install vlc
  6. 列出安裝套件
    mate@404040406:~$ dpkg --list >> data.txt // 將列出的安裝套件的輸出結果轉向至.txt
    mate@404040406:~$ gedit data.txt // 開啟檔案
    ⇨ 總共:1687-5=1682



  • 資料儲存媒介
一、舉例
  1. *紙
  2. 隨身碟(USB)
  3. 硬碟(hardware)
  4. 光碟(CD)
  5. 磁片
  6. SD記憶卡

二、指令
  1. mate@404040406:~$ nano /etc/fstab // filesystem table
    GNU nano 2.2.6                檔案: fstab                                  

    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    # / was on /dev/sda3 during installation
    UUID=63577ac8-23b3-406a-b9e7-43c5a5969ecc /               ext4    errors=remoun$
    # swap was on /dev/sda6 during installation
    UUID=8c8bcc8b-1286-40a2-827c-0235aa704c45 none            swap    sw           $
    /dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
  2. linux中,每一設備皆視為一個檔案:從根目錄中的device開始 ⇨ /dev/sda3
  3. 掛載一個檔案系統:mount ⇨ 掛上資料
  4. 卸載一個檔案系統:umount ⇨ 卸除資料
  5. 卸載
    清空buffer中的東西,確定工作已完成,否則導致檔案系統崩盤(file system corruption)。
  6. 舉例:
    插入隨身碟後
    mate@404040406:~$ mount
    /dev/sde1 on /media/mate/Transcend type vfat // 隨身碟(rw,nosuid,nodev,relatime,uid=1001,gid=1001,fmask=0022,dmask=0077,codepage=437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
    mate@404040406:~$ umount /media/mate/Transcend // 卸載
    mate@404040406:~$ ls /media/mate/Transcend
    ls: 無法存取 /media/mate/Transcend: 沒有此一檔案或目錄
  7. Linux存放裝置名稱
    模式
    設備
    /dev/fd*
    軟碟機
    /dev/hd*
    老系統中的IDE(PATA)磁片
    /dev/hdb
    第一通道上的主設備名
    /dev/hdb
    第一通道上的從設備名
    /dev/hdc
    第二通道上的主設備名
    末尾的數字表示硬碟驅動器上的分區
    例如:/dev/hda1,指系統中第一硬碟驅動器上的第一個分區
    /dev/had ,指整個硬碟驅動器
    /dev/lp*
    印表機
    /dev/sd*
    SCSI 磁片
    Linux系統中,內核把所有類似於磁盤的設備(包括:PATA/SATA 硬碟、快閃記憶體、USB 存儲設備)看作SCSI 磁盤
    /dev/sr*
    光碟(CD/DVD讀取器、燒寫器)
註:光碟機iso映像檔(iso 9660國際標準)

三、
現今電腦和印表機皆有 buffer(電腦記憶體的一小塊),可多工分配 CPU 系統時間,故電腦送檔案給印表機後,仍可同時做其他事。

註:印表機速度慢;電腦速度快


註:windows命令提示字元

註:流汗後,可以減輕0.5公斤