跟我一起學man page、history的使用,剖析FHS(文件系統目錄標準)

跟我一起學man page、history的使用,剖析FHS(文件系統目錄標準)

描述

從Linux小白鼠成長為高(lao)高(hei)手(shu)的過程中,無論如何都要學會自個兒施法解決問題,法力的高深體現了解決問題的能力,這里的法力指的是在沒有互聯網的環境下如何使用man page或相關文檔找到命令的使用方法和配置文件的修改方法。本文第一部分總結了在Linux中使用man page、help、info等命令查找幫助的過程和方法以及如何查看安裝程序自帶的說明文檔。第二部分詳細介紹history的增、刪、改、查。第三部分說說Linux文件系統的分層結構。^-^

1、如何獲取幫助

  1. man – format and display the on-line manual pages 

    • #help command

    • #man bash

  2. man – format and display the on-line manual pages 

    • command –help

    • man command

    • info command

    • 程序自身幫助文檔:README、INSTALL、changelog

    • 程序官方文檔

    • 發行版的官方文檔

    • Google

2、man page

man page的配置文件/etc/man_db.conf | man.config中定義了man讀取幫助文件的路徑:如/usr/man ; /usr/share/man ; /usr/local/share/man以及man 讀取幫助文件的格式等信息。

  1. man – format and display the on-line manual pages

    • man的配置文件/etc/man_db.config,定義了man查找的目錄,文件格式為.gz.bz2等

    • man -f rm = whatis rm

    • man -k rm #所有帶有‘rm’的命令或文件

    • man -a passwd #列出所有章節 q 退出一章,接著顯示下一章

    • man -M /path/to/somewhere comman #到指定目錄找命令的幫助手冊并顯示

    • man bash #所有內部命令的詳細信息,比help命令更詳細

    • 1 Executable programs or shell commands(用戶命令)

    • 2 System calls (functions provided by the kernel)(系統調用)

    • 3 Library calls (functions within program libraries)(C庫調用)

    • 4 Special files (usually found in /dev)(設備文件及特殊文件)

    • 5 File formats and conventions eg /etc/passwd(配置文件格式)

    • 6 Games(游戲)

    • 7 Miscellaneous (including macro packages andconventions), e.g.man(7), groff(7)(雜項)

    • 8 System administration commands (usually only for root)(管理類的命令)

    • 9 Kernel routines (Non standard)(非標準的Linux 內核API)

  2. man 命令的操作方法

    • man的配置文件/etc/man_db.config,定義了man查找的目錄,文件格式為.gz.bz2等

    • space、Ctrl v、Ctrl f、Ctrl F、f、PgDn #下翻一頁

    • d #下翻半屏

    • u #上翻半屏

    • j、e、Enter #下一行

    • k、y #上一行

    • 1G #首行

    • G #末尾

    • /string、?string #find

    • 數字 #直接跳轉到那一行

?那么如何使用man完成一次真正的查找呢,在此舉一例:

"修改/etc/issue文件,實現登錄時提示當前登錄的終端號,主機名和當前時間."

咋一看,一臉萌,遂開始動手:首先是whatis issue可以看到issue的幫助文件在man page中的章節

0001.jpg

于是:到man (5) issue看到信息量有點少,于是SEE ALSO找到mingetty,這是告訴我們如果信息量不夠可以再man他們找到更詳細的信息

2016-07-28_131851.jpg

于是:man其中一個吧,這里選擇man mingetty不要問我為什么,因為答案在這里man mingeyy往下翻,找到ISSUE ESCAPES,這里告訴我們/etc/issue這個文件使用的有特定含義的轉義符號

2016-07-28_131910.jpg

于是:開始修改/etc/issue,由于普通用戶沒有權限修改該文件,請切換root用戶,添加\l @ \n at \t \d就完事了。。

2016-07-28_131924.jpg

結果:在用戶登錄之前,成功顯示了終端號、主機名和當前時間??梢奿ssue文件配置了用戶登錄時的提示信息,對于當今的惡意網絡攻擊行為,友情提示,不要暴露自己的系統信息??!

2016-07-28_131935.jpg

此外在/usr/share/doc #存放安裝程序的說明文檔

3、info同man,像一個網站,有些命令更詳細

  1. u/p/n/l #上一層/前/下/最后一個鏈接 

    • enter跳轉

    • s abc 搜索abc

    • q退出

    • Tab移動到下一*號的鏈接

    • PgUP、PgDn、方向鍵

獲取其他幫助

1、通過本地文檔獲取幫助

/usr/share/doc目錄下包括了多數安裝軟件的相關原理說明

2、第三方程序的官方文檔

通過發行版官方提供的文檔光盤或網站可以獲得,如紅帽知識庫 
http://kbase.rehat.com 
http://www.redhat.com/docs 
http://access.redhat.com 
_ sosreport 
命令收集所有系統上的日志信息的工具,并自動打成壓縮包,方便技術支持人員和紅帽全球支持提供分析問題的依 


5、history

  1. 在用戶~目錄/ .bash_history文件中存放歷史命令,剛執行的命令保存在內存中即history命令看到的,當用戶正常登出時內存中新增的命令寫入.bash_history文件中,

  2. HISTSIZE中定義了所有用戶保存history數的默認大小,在~/.profile修改當前用戶的HISTFILE #在~目錄下的.bash_profile文件中定義

    • HISTTIMRFORMAT #定義了history list和history file中的時間格式

    • HISTIGNORE #定義了不予記錄的命令

    • HSITCONTROL #參數有四(ignorespace、ignoredups、ignoreboth、erasedups),實現了不記錄重復命令和空格開頭的命令。在man bash中有如下一句話:A colon-separated list of values controlling how commands are saved on the history list.說的是可以用 ; 號分割參數,以此實現多個功能。

  3. 使用詳情

    • !n | #!-n

    • !string #執行最近的‘string’開頭的命令

    • ?string #包含‘string’的命令

    • ??! | 上鍵 | Ctrl p | #!-1 #重復上條命令

    • !n:^ | !n:$ | !n:* | !n:n # 引用history中第n個命令的(第一個、最后一個、所有、第n個)參數

    • !string:^ | !string:$ | !string:* | !string:n #引用history中以string開頭的(第···)個參數

    • Ctrl r #搜索某個命令(命令關鍵字或參數關鍵字)

    • Esc . #引用上條命令的最后一個參數a

    • Alt+. #同時按住

    • !$ #最后一個參數

    • !^ #第一個參數

    • !:n #第幾個參數

    • !* #所有參數

    • history -c #清除內存中的history,相當于HISTSIZE=0

    • history -anrw filename #從文件中讀取記錄到history list

    • history -d n #刪除第n條歷史記錄

    • history -a #寫入到文件中

    • history -n #read from file but not already

    • histroy -r #read fiom file and append all record to history list

    • history -w #同時寫入histroy list 和.bash_history

    • history -w abc.log #寫入指定的文件中

    • history -p string #顯示字符,但不保存在history list中

    • history -s string #不顯示字符,但保存在history


6、文件系統

1、FHS(Filesystem Hierarchy Standard文件系統目錄標準)

FHS定義了兩層規范,第一層是 / 目錄下各個目錄的數據,如/boot要放置系統啟動信息和內核等,/etc下放置配置文件,/bin 與/sbin放置可執行文件等。第二層是針對/usr和/var這兩個目錄的子目錄應該存放的數據,如//usr/share存放共享的數據,/var/log存放日志文件。為什么要定義FHS呢?因為Linux的發行版和開發人員非常之多,尚若不加以統一就不能維持Linux系統的發展趨勢,將會造成一片狼藉的情況,出現問題沒有共性,用戶使用不同的Linux系統需要重新學習,無疑增大了Linux維護的難度。

  1. 文件名規則 

    • 包括路徑內最長4095個字節,/分割的單個路徑不能超過255個字節,藍色、綠色、紅色、淺藍色、灰色有不同的定義

    • 藍色–>目錄、綠色–>可執行文件、紅色–>壓縮文件、淺藍色–>鏈接文件灰色–>其他文件

    • 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目錄名和 
      文件不推薦使用,有些字符需要用引號來引用它們

    • 標準Linux文件系統(如ext4),文件名稱大小寫敏感。例如:MAIL,Mail,mail, mAiL 
      *shift PgUP、PgDn、方向鍵 #在shell中翻頁

file description
/bin /sys Essential command binaries
/boot Static files of the boot loader
/dev Device files
/etc Host-specific system configuration
/lib libraries
/media 系統掛載的可移動設備
/opt 手動掛載的文件系統
/sbin Essential system binaries
/srv 系統服務用的數據
/tmp 臨時文件夾
/usr Secondary hierarchy
/var 多變的數據
/proc 進程號和硬件設備信息的虛擬文件系統
/sys 輸出硬件設備相關的虛擬文件系統

/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器 
(bootloader, grub)都存放于此目錄 
/bin供所有用戶使用的基本命令;不能關聯至獨立分區, 
OS啟動即會用到的程序 
/sbin管理類的基本命令;不能關聯至獨立分區,OS啟動即 
會用到的程序 
/lib啟動時程序依賴的基本共享庫文件以及內核模塊文件 
(/lib/modules) 
/lib64專用于x86_64系統上的輔助共享庫文件存放位置 
/etc配置文件目錄 
/home/USERNAME普通用戶家目錄 
/root管理員的家目錄 
/media便攜式移動設備掛載點 
/mnt臨時文件系統掛載點 
/dev設備文件及特殊文件存儲位置 
b: block device,隨機訪問 
c: character device,線性訪問 
/opt第三方應用程序的安裝位置 
<kbd</kbd>/srv:系統上運行的服務用到的數 
/tmp:臨時文件存儲位置 
/usr: universal shared, read-only data

bin: 保證系統擁有完整功能而提供的應用程序 
sbin: 
lib32位使用 
lib64只存在64位系統 
include: C程序的頭文件(header files) 
share結構化獨立的數據,例如doc, man等 
local:第三方應用程序的安裝位置 
bin, sbin, lib, lib64, etc, share

/var: variable data files

cache: 應用程序緩存數據目錄 
lib: 應用程序狀態信息數據 
local:專用于為/usr/local下的應用程序存儲可變數據; 
lock: 鎖文件 
log: 日志目錄及文件 
opt: 專用于為/opt下的應用程序存儲可變數據; 
run: 運行中的進程相關數據;通常用于存儲進程pid文件 
spool: 應用程序數據池 
tmp: 保存系統兩次重啟之間產生的臨時數據

/proc: 用于輸出內核與進程信息相關的虛擬文件系統 
/sys用于輸出當前系統上硬件設備相關信息虛擬文件系統 
/selinux: security enhanced Linux

selinux相關的安全策略等信息的存儲位置 
Linux上的應用程序的組成部分二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, 
/usr/local/bin, /usr/local/sbin 
庫文件:/lib, /lib64, /usr/lib, /usr/lib64, 
/usr/local/lib, /usr/local/lib64 
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc 
幫助文件:/usr/share/man, /usr/share/doc, 
/usr/local/share/man, /usr/local/share/doc

文件類型

?-:普通文件 
?d: 目錄文件 
?b: 塊設備 
?c: 字符設備 
?l: 符號鏈接文件 
?p: 管道文件pipe 
?s: 套接字文件socket

相對路徑與絕對路徑名

  1. 絕對路徑以正斜杠開始,是完整的文件的位置路徑,可用于任何想指定一個文件名的時候

  2. 相對路徑名不以斜線開始,指定相對當前的工作目錄位置,可以作為一個簡短的形式指定一個文件名

  3. ./表示當前路徑,../表示上層目錄

  4. 到上一級目錄:cd .. 
    到家目錄:cd 
    到剛才的目錄:cd –

文件與目錄command

PWD:保存當前工作目錄 
?echo $PWD是一個變量 
?PWD=/etc #切換目錄,在cent6、7上有問題 
?PWD -P /bin #顯示物理路徑,如在cent7中/bin -> /usr/bin 
?OLDPWD #上次目錄

?cd – #回到上次目錄 
?cd:改變目錄 
?相對路徑與絕對路徑各有其作用,多個腳本相互調用時用相對路徑,執行文件時可用絕對路徑 
?cd -P /bin #如果是鏈接目錄,則進入其真實目錄 
?cd #進入用戶家目錄 
?cd ~wang #進入用戶的家目錄

?ls:list directory contents 
?默認按照字母大小排序,數字在前 
?linux沒有創建時間,默認顯示文件修改時間mtime 
?ls –time-atime #訪問時間,cent7系統對于短時間內的訪問不做修改,(>1days || atime < mtime) 
?ls –time-ctime #狀態更改時間,改元數據 
?stat file #查看文件的元數據 
?–author 
?-A 
?ls –block-size B/K/M/G -l 
?ls -ld #查看目錄的屬性 
?ls -1 #一個文件一行 
?ls -S #按文件從大到小排序 
?ls -Sr #按文件從小到大排序 
?ls -u #

練習題

只顯示某目錄隱藏文件 只顯示目錄下的字目錄

[fz@cent6 /]$ ls -ld .
[fz@cent6 /]$ ls -ld .*

測試結果: 

2016-07-28_131949.jpg

我的第一個筆記本跟我一起學man page、history的使用,剖析FHS(文件系統目錄標準)

原創文章,作者:helloc,如若轉載,請注明出處:http://www.www58058.com/26389

(0)
hellochelloc
上一篇 2016-07-29
下一篇 2016-07-29

相關推薦

  • 開篇

    test 新人報道

    Linux干貨 2016-10-28
  • NFS的應用實例

    實驗目的:通過NFS實現共享 實驗要求:實驗環境下防火墻以及selinux都是要關閉的!??! 實驗環境:三臺虛擬機,以及相關安裝程序 實驗過程: 設置服務端centos 6-1 [root@centos6 ~]# yum install mysql-servernfs-utils httpd [root@centos6 ~]# service mysqld …

    2017-05-03
  • linux系統基礎

    一、計算機的組成   一)計算機硬件主要分為五個部分:        1. 控制器(Control):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。    2.…

    Linux干貨 2016-09-12
  • Centos 6 –grub legacy及grub修復

    一、CentOS 6 grub legacy:     1.啟動流程:             POST –> Boot Sequence(BIOS) –> Boo…

    Linux干貨 2016-09-21
  • 軟件包管理工具—yum命令總結

    描述: YUM: Yellowdog Update Modifier, rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,實現查詢、安裝、升級、刪除等功能 說明: yum repository: yum repo,存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下) 文件服務器: ftp:// http://…

    Linux干貨 2016-08-29
  • lamp平臺 php解析器基于模塊和php-fpm

    首先,我先介紹一下實驗環境: http服務器:192.168.236.128(php解析器基于modules) mysql服務器:192.168.236.129 編譯和配置http服務器,http版本是2.4以上的。 由于http依賴于apr apr-util這兩個包,但是我們系統上的rpm包版本比較低,我們也需要下載這兩個源碼包來編譯,解決依賴關系。 還要…

    Linux干貨 2015-08-31
欧美性久久久久