跟我一起学man page、history的使用,剖析FHS(文件系统目录标准)

跟我一起学man page、history的使用,剖析FHS(文件系统目录标准)

描述

从Linux小白鼠成长为高(lao)高(hei)手(shu)的过程中,无论如何都要学会自个儿施法解决问题,法力的高深体现了解决问题的能力,这里的法力指的是在没有互联网的环境下如何使用man page或相关文档找到命令的使用方法和配置文件的修改方法。本文第一部分总结了在Linux中使用man pagehelpinfo等命令查找帮助的过程和方法以及如何查看安装程序自带的说明文档。第二部分详细介绍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

结果:在用户登录之前,成功显示了终端号、主机名和当前时间。可见issue文件配置了用户登录时的提示信息,对于当今的恶意网络攻击行为,友情提示,不要暴露自己的系统信息!!

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.178linux.com/26389

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

相关推荐

  • Linux文件与目录管理之权限与命令之间的关系

    Linux文件与目录管理之权限与命令之间的关系 我们知道权限对于用户账户来说是非常重要的,因为它可以限制用户能不能读取/新建/删除/修改文件或目录。在这我们就来说明下什么命令在什么样的权限下才能够运行。         让用户能进入某目录成为“可工作目录”的基本权限是什么     &nbs…

    Linux干货 2017-04-24
  • 马哥教育网络班21期+第五周课程练习

    第五周作业 1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; cat /boot/grub/grub.conf  | grep "^[[:space:]]\+" 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至…

    Linux干货 2016-10-17
  • 关于大型网站技术演进的思考(十五)–网站静态化处理—前后端分离—中(7)

    原文出处: 夏天的森林    上篇里我讲到了一种前后端分离方案,这套方案放到服务端开发人员面前比放在web前端开发人员面前或许得到的掌声会更多,我想很多资深前端工程师看到这样的技术方案可能会有种说不出来的矛盾心情,当我的工作逐渐走向越来越专业化的前端开发后,我就时常被这套前后端分离方案所困惑,最近我终于明白了这个困惑的本源在哪里…

    Linux干货 2015-03-11
  • 2016/10/26作业:用户和组的相关配置文件

    linux系统是通过文件来保存配置的,其中关于用户和组的配置文件包括以下几个: /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/login.defs /etc/default/useradd /etc/passwd 存放用户信息的配置文件,其基本格式如下 root:x:0:0:root:/root:/…

    Linux干货 2016-10-26
  • Linux的发展史

    前言: Linux是什么?    我们知道Linux这玩意儿是在计算机上面运作的,所以说Linux就是一组软件。问题是这个软件是操作系统还是应用程序? 且Linux可以在哪些种类的计算机上面运作?而Linux源自哪里?为什么Linux 还不用钱?这些我们都得来谈一谈先!      计算机系…

    Linux干货 2016-10-13
  • Linux shell脚本编程练习题

    《书籍上面的练习题》 问题:谁在霸占磁盘资源?     如果您负责的Linux服务器上有许多用户,则经常需要解决的一个问题就是谁在使用所有磁盘空间。这是个老掉牙的问题有时比其他问题更难以弄清。     不幸的是,虽然跟踪用户磁盘空间使用情况非常重要,但却没有一个Linux命令可以提供此信息。因此需要…

    Linux干货 2016-06-09