跟我一起學man page、history的使用,剖析FHS(文件系統目錄標準)
描述
從Linux小白鼠成長為高(lao)高(hei)手(shu)的過程中,無論如何都要學會自個兒施法解決問題,法力的高深體現了解決問題的能力,這里的法力指的是在沒有互聯網的環境下如何使用man page或相關文檔找到命令的使用方法和配置文件的修改方法。本文第一部分總結了在Linux中使用man page、help、info等命令查找幫助的過程和方法以及如何查看安裝程序自帶的說明文檔。第二部分詳細介紹history的增、刪、改、查。第三部分說說Linux文件系統的分層結構。^-^
1、如何獲取幫助
man – format and display the on-line manual pages
#help command
#man bash
man – format and display the on-line manual pages
command –help
man command
info command
程序自身幫助文檔:README、INSTALL、changelog
程序官方文檔
發行版的官方文檔
2、man page
man page
的配置文件/etc/man_db.conf | man.config
中定義了man讀取幫助文件的路徑:如/usr/man ; /usr/share/man ; /usr/local/share/man
以及man 讀取幫助文件的格式等信息。
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)
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中的章節
于是
:到man (5) issue看到信息量有點少,于是SEE ALSO找到mingetty,這是告訴我們如果信息量不夠可以再man他們找到更詳細的信息
于是
:man其中一個吧,這里選擇man mingetty不要問我為什么,因為答案在這里man mingeyy往下翻,找到ISSUE ESCAPES,這里告訴我們/etc/issue
這個文件使用的有特定含義的轉義符號
于是
:開始修改/etc/issue
,由于普通用戶沒有權限修改該文件,請切換root用戶,添加\l @ \n at \t \d
就完事了。。
結果
:在用戶登錄之前,成功顯示了終端號、主機名和當前時間??梢奿ssue文件配置了用戶登錄時的提示信息,對于當今的惡意網絡攻擊行為,友情提示,不要暴露自己的系統信息??!
此外在/usr/share/doc #存放安裝程序的說明文檔
3、info同man,像一個網站,有些命令更詳細
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
在用戶~目錄/ .bash_history文件中存放歷史命令,剛執行的命令保存在內存中即history命令看到的,當用戶正常登出時內存中新增的命令寫入.bash_history文件中,
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.
說的是可以用 ; 號分割參數,以此實現多個功能。使用詳情
!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維護的難度。
文件名規則
包括路徑內最長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
相對路徑與絕對路徑名
-
絕對路徑以正斜杠開始,是完整的文件的位置路徑,可用于任何想指定一個文件名的時候
-
相對路徑名不以斜線開始,指定相對當前的工作目錄位置,可以作為一個簡短的形式指定一個文件名
-
./
表示當前路徑,../
表示上層目錄 -
到上一級目錄: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 .*
測試結果:
我的第一個筆記本跟我一起學man page、history的使用,剖析FHS(文件系統目錄標準)
原創文章,作者:helloc,如若轉載,請注明出處:http://www.www58058.com/26389