2012/08/26

Linux 命令列模式與線上說明


命令列模式與線上說明

命令格式

  • 在命令組成的格式中,大約包含下列格式:
  1. command options arguments
  2. 命令 選項 參數
  • 每一各字串中,代有空白做分隔,在白板教學上我會以三角形作為記號。
  • option 有時使用一個「-」 ex: -h -a -o -l 有時會使用二個「--」 ex:--help
  • 使用Ctrl+C可以中斷指令的執行。
[mtchang@localhost ~]$ ls --help
用法:ls [選項]... [檔案]...
.....
[mtchang@localhost ~]$ ls -l -a -h
總計 216K
.....
  • Arguments 通常是檔案名稱或是資料
  • 如果有多個command需使用「;」做分隔。
[mtchang@localhost ~]$ ls -la ; df -lh

顯示語言的選擇

  • Centos 支援19種語言
  • 預設語言可以透過 system-config-language 指令選取
  1. system -> Administration -> language
  • 也可以透過傳統指令模式選取
  1. 預設語系設定檔在 /etc/sysconfig/i18n
# 顯示目前的語言設定
[root@server1 ~]# echo $LANG
en_US.UTF-8
# 不改變預設語系的下指令方式
[root@server1 ~]# LANG=zh_TW.UTF8 date
六 12月 15 21:31:19 CST 2007
# 直接改變預設語系,這會影響 /etc/sysconfig/i18n 檔案
[root@server1 ~]# LANG=zh_TW.UTF8
# 顯示目前語言設定
[root@server1 ~]# echo $LANG
zh_TW.UTF8
  • 使用SCIM輸入法模組時,可以使用Ctrl_space切換輸入法模式。

一些簡單的命令

  • date指令及cal指令
  1. date 顯示日期及時間
  2. cal 顯示日曆
  • 使用前請先參考help說明 command --help
[mtchang@localhost ~]$ date
五  5月 18 06:28:51 CST 2007
[mtchang@localhost ~]$ date +%A%B%d
週五五月18
[mtchang@localhost ~]$ cal 5 2007
     五月 2007
日 一 二 三 四 五 六
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
  • 練習
  1. 請試著顯示9 , 1752.的月曆
  2. 顯示目前的西元「年月日」的日期 如: 20090716201229 的格式(西元年月日時分秒)
  • cal 9 1752
[root@server1 ~]# cal 9 1752
   September 1752   
Su Mo Tu We Th Fr Sa
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

  • man cal 最後一段,日曆上消失的十日
     The Gregorian Reformation is assumed to have occurred in 1752 
on the 3rd of September.  
By this time, most countries had recognized the reformation 
(although a few did not recognize it until the early 1900’s.)
Ten days following that date were eliminated by the reformation, 
so the calendar for that month is a bit unusual.
  • Gregorian calendar(格里曆)是由義大利醫生兼哲學家里利烏斯(Aloysius Lilius)改革儒略曆制定的曆法,由Gregorian十三世(羅馬主教教宗)在1582年頒行。但因為宗教(非天主教國家)的關係,直到18世紀大英帝國,包括英格蘭、蘇格蘭、以及現在美國的一部份才採納格里曆,也就是儒略曆於1752年9月2日星期三的次日是格里曆1752年9月14日星期四,日期跳過11日。在 1752 年 9 月做了曆法的修正。在9月3日及以後10日不計,直接跳到 14 日。Unix出生於美國Bell LAB當然也就跟著美國的曆法來走。

取得輔助資訊

  • 不用背熟每個指令
  • 有很多不同層級的輔助資訊
  1. whatis
  2. command --help
  3. man and info
  4. /usr/share/doc

whatis

  • 使用關鍵字查詢 man 的檢索資料庫,將完全符合條件的資料輸出。whatis常用於準確的比對。
[root@server1 ~]# whatis cal
cal                  (1)  - displays a calendar
cal                  (1p)  - print a calendar
  • apropos用於模糊的比對
[mtchang@localhost ~]$ apropos man
acl_calc_mask        (3)  - calculate the file group class mask
AF_LOCAL [unix]      (7)  - Sockets for local interprocess communication
afs_syscall [unimplemented] (2)  - unimplemented system calls
AF_UNIX [unix]       (7)  - Sockets for local interprocess communication
aliases              (5)  - Postfix local alias database format
anacron              (8)  - runs commands periodically
ata_id               (8)  - udev callout to read product/serial number from ATA 
drives
atexit               (3)  - register a function to be called at normal process t
ermination
authconfig-gtk      (rpm) - Graphical tool for setting up authentication from ne
twork services
autoconf            (rpm) - A GNU tool for automatically configuring source code
.
autofs              (rpm) - A tool for automatically mounting and unmounting fil
esystems.
automake14          (rpm) - A GNU tool for automatically creating Makefiles.
automake15          (rpm) - A GNU tool for automatically creating Makefiles.
automake16          (rpm) - A GNU tool for automatically creating Makefiles.
automake17          (rpm) - A GNU tool for automatically creating Makefiles.
automake            (rpm) - A GNU tool for automatically creating Makefiles.
avahi               (rpm) - Local network service discovery
avc_add_callback     (3)  - additional event notification for SELinux userspace
...(略)

使用 help 選項

  • help可以可以列出常使用的選項,有時很短有時很長,就看負責的人員如何處理。
  1. 在([])裡面的為選擇性項目,可有可無。
  2. 在(....)表示是可以為隨心所欲的長度。
  3. 如果在選項中帶有(|)表示可以使用其中一個選項。x|y|z意為x or y or z。
  4. 如果在表示你要放一個檔案名稱給他。
  5. -abc 意為 -a, -b or -c 的其中任何的混合。
[mtchang@localhost ~]$ ls --help
用法:ls [選項]... [檔案]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort.

長選項必須用的參數在使用短選項時也是必須的。
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print octal escapes for nongraphic characters
      --block-size=大小      區段以指定 <大小> 的位元組為單位
  -B, --ignore-backups       不列出任何以 ~ 字元結束的項目
  -c                         配合 -lt:根據 ctime 排序及顯示 ctime
                              (檔案狀態最後更改的時間)
                             配合 -l :顯示 ctime 但根據名稱排序
                             否則    :根據 ctime 排序
  -C                         list entries by columns
      --color[=WHEN]         control whether color is used to distinguish file
                               types.  WHEN may be `never', `always', or `auto'
  -d, --directory            list directory entries instead of contents,
                               and do not dereference symbolic links
  -D, --dired                generate output designed for Emacs' dired mode
  -f                         do not sort, enable -aU, disable -lst
  -F, --classify             append indicator (one of */=>@|) to entries
      --file-type            likewise, except do not append `*'
      --format=WORD          across -x, commas -m, horizontal -x, long -l,
                               single-column -1, verbose -l, vertical -C
      --full-time            like -l --time-style=full-iso
  -g                         like -l, but do not list owner
  -G, --no-group             like -l, but do not list group
  -h, --human-readable       with -l, print sizes in human readable format
                               (e.g., 1K 234M 2G)
      --si                   likewise, but use powers of 1000 not 1024
  -H, --dereference-command-line
                             follow symbolic links listed on the command line
      --dereference-command-line-symlink-to-dir
                             follow each command line symbolic link
                             that points to a directory
      --hide=PATTERN         do not list implied entries matching shell PATTERN
                               (overridden by -a or -A)
      --indicator-style=WORD append indicator with style WORD to entry names:
                               none (default), slash (-p),
                               file-type (--file-type), classify (-F)
  -i, --inode                with -l, print the index number of each file
  -I, --ignore=PATTERN       do not list implied entries matching shell PATTERN
  -k                         like --block-size=1K
  -l                         使用較長格式列出資訊
  -L, --dereference          當顯示符號鏈結的檔案資訊時,顯示符號鏈結所指示
                               的目標而並非符號鏈結本身的資訊
  -m                         所有項目以逗號分隔,並填滿整行行寬
  -n, --numeric-uid-gid      like -l, but list numeric user and group IDs
  -N, --literal              print raw entry names (don't treat e.g. control
                               characters specially)
  -o                         like -l, but do not list group information
  -p, --indicator-style=slash
                             append / indicator to directories
  -q, --hide-control-chars   以 ? 字元代替無法列印的字元
      --show-control-chars   直接顯示無法列印的字元 (這是預設方式,除非調用
                               的程式名稱是‘ls’而且是在終端機畫面輸出結果)
  -Q, --quote-name           將項目名稱括上雙引號
      --quoting-style=方式   使用指定的 quoting <方式>顯示項目的名稱:
                               literal、locale、shell、shell-always、c、escape
  -r, --reverse              reverse order while sorting
  -R, --recursive            list subdirectories recursively
  -s, --size                 with -l, print size of each file, in blocks
  -S                         sort by file size
      --sort=WORD            extension -X, none -U, size -S, time -t,
                             version -v, status -c, time -t, atime -u,
                             access -u, use -u
      --time=WORD            with -l, show time as WORD instead of modification
                             time: atime, access, use, ctime or status; use
                             specified time as sort key if --sort=time
      --time-style=STYLE     with -l, show times using style STYLE:
                             full-iso, long-iso, iso, locale, +FORMAT.
                             FORMAT is interpreted like `date'; if FORMAT is
                             FORMAT1FORMAT2, FORMAT1 applies to
                             non-recent files and FORMAT2 to recent files;
                             if STYLE is prefixed with `posix-', STYLE
                             takes effect only outside the POSIX locale
  -t                         sort by modification time
  -T, --tabsize=COLS         assume tab stops at each COLS instead of 8
  -u                         配合 -lt:顯示存取時間而且依存取時間排序
                               配合 -l:顯示存取時間但根據名稱排序
                               否則:根據存取時間排序
  -U                         不進行排序;依檔案系統原有的次序列出項目
  -v                         根據版本進行排序
  -w, --width=COLS           assume screen width instead of current value
  -x                         list entries by lines instead of by columns
  -X                         sort alphabetically by entry extension
  -1                         list one file per line

SELINUX options:

      --lcontext             Display security context.   Enable -l. Lines
                               will probably be too wide for most displays.
      -Z, --context          Display security context so it fits on most
                               displays.  Displays only mode, user, group,
                               security context and file name.
      --scontext             Display only security context and file name.


      --help     顯示此求助說明並離開
      --version  顯示版本資訊並離開

<大小> 可以是以下的單位 (單位前可加上整數):
kB=1000,K=1024,MB=1000*1000,M=1024*1024,還有 G/T/P/E/Z/Y 如此類推。

By default, color is not used to distinguish types of files.  That is
equivalent to using --color=none.  Using the --color option without the
optional WHEN argument is equivalent to using --color=always.  With
--color=auto, color codes are output only if standard output is connected
to a terminal (tty).  The environment variable LS_COLORS can influence the
colors, and can be set easily by the dircolors command.

Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.

請向  回報錯誤。

man

  • man指令對於說明文件的分類
# Section 1  執行程式與shell命令
# Section 2  系統呼叫
# Section 3  函數與函數庫
# Section 4  驅動程式
# Section 5  設定檔案和檔案格式
# Section 6  遊戲
# Section 7  巨集和檔案格式
# Section 8  系統管理者命令
  • 也可以直接用man 觀看man的使用說明
[root@server1 ~]# man man
man(1)                                                                  man(1)

NAME
       man - format and display the on-line manual pages

SYNOPSIS
       man  [-acdfFhkKtwW]  [--path]  [-m  system] [-p string] 
[-C config_file] [-M pathlist] [-P pager] [-B browser] [-H htmlpager]
 [-S section_list] [section] name ...

DESCRIPTION
       man formats and displays the on-line manual pages.  I
f you specify section, man only looks in that section of  
the  manual.   name  is
       normally  the name of the manual page, which is 
typically the name of a command, function, or file.  
However, if name contains a slash
       (/) then man interprets it as a file specification, 
so that you can do man ./foo.5 or even man /cd/foo/bar.1.gz.

       See below for a description of where man looks for 
the manual page files.

OPTIONS
       -C  config_file
略....
  • 簡單的使用範例
[root@server1 ~]#  man 1 crontab
# 顯示關於此命令該如何使用的方式
[root@server1 ~]#  man 5 crontab
# 顯示關於crontab的設定檔用法及檔案的格式
[root@server1 ~]#  man 1 uname
# 顯示關於uname此命令的用法
[root@server1 ~]#  man 2 uname
# 顯示此命令在程式語言中的用法
[root@server1 ~]#  whatis uname
# 顯示uname在系統中有哪些man手冊
uname (1)            - print system information
uname (2)            - get name and information about current kernel
uname (1p)           - return system name
uname (3p)           - get the name of the current system
# 其中有p的意思是說中此命令被列入在POSIX的man手冊中
  • 在man手冊中的瀏覽操作方式
  1. PgUP,PgDn上下翻頁
  2. / 搜尋某各文字
  3.  ? 從游標處往後搜尋
  4. n 移動到下個搜尋的結果
  5. N 移動到上一個搜尋的結果
  6. q 離開man page
  • 模糊搜尋man -k kerword 或 apropos keyword
[root@server1 ~]#  man -k printf
vasprintf (3)        - print to allocated string
vsnprintf (3)        - formatted output conversion
vfwprintf (3)        - formatted wide character output conversion
vsprintf (3)         - formatted output conversion
snprintf (3)         - formatted output conversion
swprintf (3)         - formatted wide character output conversion
asprintf (3)         - print to allocated string
vfprintf (3)         - formatted output conversion
printf (3p)          - print formatted output
sprintf (3p) [printf] - formatted output conversion
wprintf (3p)         - print formatted wide-character output
vdprintf (3)         - print to a file descriptor
fwprintf (3)         - formatted wide character output conversion
sprintf (3)          - formatted output conversion
dprintf (3)          - print to a file descriptor
wprintf (3)          - formatted wide character output conversion
printf (3)           - formatted output conversion
swprintf (3p) [wprintf] - formatted wide character output conversion
printf (1p)          - write formatted output
snprintf (3p) [printf] - formatted output conversion
fprintf (3p) [printf] - formatted output conversion

其他輔助功能

  1. tab 或是 ctrl+i 都可以達到一樣的效果。
  • 把man page的內容轉存成文字檔,以crontab指令為例,轉存成crontab.txt
  1. man crontab | col -b > crontab.txt
  • 在Linux裡面如果要使用翻譯的功能,可以使用yahoo或是google提供的翻譯服務,來達到翻譯的功能。
  1. yahoo字典 http://tw.search.yahoo.com/language/translate?doit=done&tt=text&intl=1&text=&lp=en_zt
  2. google翻譯 http://www.google.com/language_tools

使用info pages

  • 類似 man page 通常有更深入的資訊
  • 文件目錄在 /use/share/info/
  • 操作命令與man類似
  • 常用於Release Notes 和白皮書
  • info pages 操作
  1. PgUP,PgDN 上下翻頁
  2. Tab 下個連結
  3. Enter 進入聯節點
  4. n/p/u 下一頁/上一頁/上一個節點
  5. s 文字搜尋
  6. q 離開info

額外的文件

  • 如果有裝的話在這裡 /usr/share/doc/howto
  1. 你需要有安裝此套件才有說明檔通常文件包含
  2. Example configuation files
  3. HTML/PDF/PS documentation
  4. License details
  1. 台灣的Mirror ftp://ftp.isu.edu.tw/Linux/LDP/index.html
  2. /usr/share/doc/packages/套件名稱 每個套件的說明資訊
  • GUI介面的輔助訊息
  1. CentOS上可以透過 system->help 叫出介面以供查詢
  • 網站上的輔助資訊
  1. http://www.google.com/linux
  2. http://www.linux.org
  3. http://www.cert.org/ -->台灣的 http://www.cert.org.tw/
  4. http://www.novell.com/linux/
  • RedHat官方文件
  1. 網站 https://www.redhat.com/docs/
  2. 或是光碟片裡面

中文文件

實作

  • 目標:能夠友善的使用Linux的命令資源,並且回答問題。
  • 系統有一個帳號,名稱為「admin」密碼為「lccnet」。

commnad

  • 使用man page指出C語言的basename函數的用法。
[mtchang@localhost ~]$ man 3 basename
  • 和apropos結果顯示一樣的man指令
[mtchang@localhost ~]$ man -k man
  • 和whatis結果顯示一樣的man指令
[mtchang@localhost ~]$ man -f man
  • 使用ls指令列出目前目錄下較長的資訊內容,並顯示為人可以讀的資訊內容。(i.e., 6.8M instead of 6819467)
[mtchang@localhost ~]$ ls . -lh
總計 8.0K
drwxr-xr-x 2 mtchang mtchang 4.0K  3月 26 09:03 Desktop
  • 請判斷下列命令敘述中,哪各語法是正確的?
foo -x|-y -[abcde] FILENAME...
  1. 答案
foo -y -abc one.txt two.txt

解決問題with man

  • 題目:請你改變 /etc/issue 檔案,當你登入系統的時候,可以顯示這各系統的 hostname .
  • 關於/etc/issue
# 先看看關於issue的資訊
[mtchang@localhost ~]$ man issue
# 再看mingetty的資訊
[mtchang@localhost ~]$ man 8 mingetty
# 跳到 /escape 的section
/ escape
  • 哪個參數可以顯示系統的hostname?
  1. 「\n」
  • 使用nano 修改/etc/issue把「\n」加入
[root@localhost ~]# nano /etc/issue
Welcome! \n
Red Hat Enterprise Linux Server release 5 (Tikanga)
Kernel \r on an \m
  • 檢查看console的登入畫面有沒有顯示hostname?

張貼留言