跟我一起学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

相关推荐

  • Web缓存核心技术点需知

    Edit Web缓存核心技术点需知 5.1 HTTP首部控制 5.2 基于新鲜度检测机制: 2.1 特征1:时间局部性 2.2 特征2:空间局部性 2.3 缓存的优点 2.4 哪类数据应该被缓存 2.5 哪类数据可缓存但不应该被缓存 2.6 缓存命中率决定缓存有效性 2.7 缓存数据生命周期 2.8 缓存处理步骤 2.9 缓存和普通数据读取的区别 1. 完整…

    Linux干货 2016-11-14
  • 精解局域网访问及共享(三)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/155109    上一节中的2种情况都是默认的简单共享,下面我们着重分析一下高级共享方式下的各种访问情况。毕竟这种方式用的很普遍,而且在权限…

    Linux干货 2015-03-25
  • 软件包管理

    软件包管理 软件运行和编译 ABI:应用程序二进制接口;直接给编译好的二进制使用; windows与linux不兼容, windows: ELF linux: PE 库级别的虚拟化: linux:WINE windows:Cywin API:定义了和库之间的接口;编写应用程序时调用的函数之类的; 编译程序源代码(.c) –> 预编译(.i)…

    Linux干货 2017-04-21
  • 【福利贴-招聘】- 高级运维工程师

    职位描述 岗位描述:1、负责业务应用系统的审核、部署、发布、监控、维护和优化;2、负责突发事件管理,问题跟踪与管理,保障系统24×7稳定运行;3、负责应用系统的性能分析与系统优化,不断提高系统运行效率;4、协调开发部门,配置管理,基础运维,更好提供服务。 职位要求:1、专科及以上学历,计算机或相关专业;2、能够独立安装配置及维护linux平台的各种服务,dh…

    Linux干货 2015-03-20
  • 计算1000以内的总质数个数

    #include <stdio.h> int main() { int micro[500]; // 质数保存素组 int number = 0; // 质数个数 micro[number++] = 2; // micro[0]=2 micro[number++] = 3; // micro[1]=3, number=2 unsigned lon…

    Linux干货 2017-03-22
  • 常用命令

    基本命令和系统命令

    Linux干货 2017-11-30