概要:linux
linux文件系统(FHS)介绍;文件路径;文件名;程序命令的位置;程序格式(ELF);命令分类;命令帮助;
程序员
1、linux的哲学思想包括如下几个方面:shell
一、一切都由文件组成(包括硬件设备、以及通讯接口等),使用文本文件保存配置信息(好处:一款文本编辑器完成大多数系统操做)。数据库
二、由众多功能单一的程序组成:保证一个程序只作一件事,而且能作好他。编程
三、尽可能避免与用户交互。(易于以编程的方式实现自动化任务)windows
2、文件系统及文件介绍:
架构
linux采用目录、文件的树形层级结构形式的文件系统。其中目录主要是作路径映射;文件是存储空间存储的一段数据流,对数据能够作到按名存取。app
FHS(Filesystem Hierarchy Standard(文件系统目录标准)的缩写)定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。由于Linux的开发人员实在太多了,若是每一个人都使用本身的目录配置方法,那么将可能会带来不少管理问题。你能想象,你进入一个企业以后,所接触到的Linux目录配置方法居然跟你之前学的彻底不一样吗?很难想象。因此,后来就有所谓的文件系统层次标准(Filesystem Hierarchy Standard,FHS)出台。编辑器
第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登陆文件、/usr/share放置共享数据等等ide
linux文件系统:(FHS:文件系统层级标准)
FHS定义了linux文件系统根目录下应有的目录及文件:
/bin:全部用户使用的基本命令程序文件;
/sbin:系统管理员使用的工具程序(/usr/sbin;/usr/local/sbin);
/boot:启动过程当中须要的静态文件(kernel、initramfs(initrd)、grub),系统启动后将不须要此文件。
/dev:设备文件或特殊文件;
设备类型(字符设备\(线性设备)(如:键盘)、块设备\(随机设备)(如:硬盘))
/etc:主机程序特有的配置文件只能为静态的,不能为二进制的;(大多数都是文本文件),其下也遵循 文件系统层级分级
/home:普通用户家目录(可选目录)
/root:管理员家目录
/lib:系统启动过程当中或启动程序调用/bin、/sbin下的用到的库文件,以及为内核提供内核文件
/lib下的三个重要的库:
libc.so.*:动态连接的c库
ld*:运行时连接器/加载器
modules:用于存储内核模块的目录
/lib(64):64位系统启动过程当中或启动程序调用/bin、/sbin下的用到的库文件,以及为内核提供内核文件
/media:为便携性设备(如:软盘、光盘、U盘等)提供挂载点;(不严格限制)
/mnt:其余文件系统的临时挂载点
/opt:非关键性的第三方的程序安装位置;(非限制性)
/srv:主机为服务提供的数据;
/tmp:临时文件目录(为那些会产生临时文件的程序提供的用于存储临时文件的目录,可供全部用户提供写入操做,有特殊权限);
/usr:全局共享的只读数据路径;除根目录(/),第二重要目录。
usr也是一个层级结构,里面必有目录:
bin、sbin、
lib、
include:c程序头文件
share:命令手册页和自带文档等架构特有的文件存储路径、
local:用来存储第三方程序;另外一个层级目录
/usr/local:让系统管理安装本地应用程序,一般也安装第三方程序
usr也是一个层级结构,里面可选目录:
lib6四、
x11r6:x-windows程序安装位置
src:程序源码文件的存储位置
/var:存储常常发生变化的目录(如日志);它也是一个层级文件。
cache、lib、local、lock、log、opt、run、spool、tmp
/proc:基于内存的虚拟文件系统,用来为内核及进程存储其相关信息,他们多为内核参数。
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的路径。它也是基于内存的虚拟文件系统,其主要做用为linux统一设备模型提供接口以便管理之用。
程序的编译方式:(动态编译、静态编译)
动态编译:库文件不被复制在源程序中,而是被调用。(程序编译时要指定库文件所在路径)
静态编译:程序调用的库直接编译在源程序文件中(将库文件复制一份在源程序中)。
linux库:glibc
因为FHS仅是定义出最上层(/)及子层(/usr, /var)的目录内容应该要放置的文件数据,所以,在其余子目录层级内,就能够随开发人员自行配置了。
一、文件路径的表示:
绝对路径:从根起始的路径。
相对路径:从当前位置开始表示的路径。
二、文件名使用法则:
严格区分字符大小写;
目录也是文件,在同一路径下,两个文件不能同名;
支持除/之外的任意字符;
最长不能超过255个字符。
以.(点)开头的文件为隐藏文件 // 目录中的.文件表明当前目录,..表明上级目录
三、linux文件系统结构:
/:系统原始起点,根目录。
家目录:/home:用户家目录(用户起始目录),普通用户管理文件的位置。
工做目录:(working )directory
/etc/sysconfig/network-scripts/ifcfg-eno16777736
basename:最右侧的文件或目录名,如上述的ifcfg-eno16777736;
dirname:basename左侧的路径,如上述的 /etc/sysconfig/network-scripts/;
获取文件路径的basename:
#basename /etc/sysconfig/network-scripts/ifcfg-eno16777736
获取文件路径的dirname:
#dirname /etc/sysconfig/network-scripts/ifcfg-eno16777736
四、程序、
多数系统程序文件通常存在 :/bin,/sbin,/usr/bin,/usr/sbin,
第三方安装的程序文件通常存在:/usr/local/bin,/usr/local/sbin
普通命令:/bin,/usr/bin,/usr/local/bin
管理命令:/sbin,/usr/sbin,/usr/local/sbin
库文件(不能单独执行,需被调用执行)通常存于:放:/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64
32位库文件:/lib,/usr/lib,/usr/local/lib
64位库文件:/lib64,/usr/lib64,/usr/local/lib64elf
五、linux命令遵循的特定格式规范:ELF
#file /bin/ls //查看特定路径下可执行程序的文件格式的类型;
并不是全部的命令都有一个在某个目录下与之对应的可执行程序,如cd就没有。
命令分类:
a)、由shell程序自带的命令:内置命令(bulitin)
b)、独立的可执行程序文件、文件名即命令名:外部命令
shell程序是独特的程序,负责解析用户提供的命令。(借助于环境变量实现)
环境变量: PATH //定义了从哪些路径中查找用户键入的命令字符串所对应的命令文件。
查看环境变量#echo $PATH //(路径中自左向右查找,按照查找次序执行命令)
以上是外部命令查找方法,内部命令不在上述查找内。
查看命令类型:
#type 命令 //查看命令是内部或外部命令。
六、命令的使用帮助:
内部命令:#help 命令
外部命令:
a)、#command --help
b)、#man command //man手册/usr/share/man,
命令帮助分段(section):
NAME:功能性说明
SYNOPSIS:语法格式(摘要) //[ ]可选内容;< > 必选内容;a | b | c,a、b、c项选一项;。。。同类内容可 出现多个,{ }命令分组。
DESCRIPTION:描述
OPTIONS:选项
EXAMPLS:使用事例
AUTHOR:做者
BUGS:报告程序bugs的方式
SEE ALSO:参考命令。
命令帮助章节说明:(/usr/share/man)
#man # command //man后的#表示要看的帮助章节。并不是每一个command在每一个章节都有帮助手册。
#whatis command //显示command在哪些章节有帮助。
#man -f command //做用同whatis command
#makewhatis //手动更新whatis数据库。由于用whatis command命令查看时,是查询数据库的出来的。
man一、用户命令(普通用户、管理员)
man二、系统调用命令,通常程序员会用到
man三、c库调用
man四、设备文件及特殊文件
man五、文件配置格式的说明
man六、游戏帮助
man七、杂项
man八、管理工具及守护进程
man命令打开后操做方法:
翻屏:
空格键:一次向后翻一屏
b建:一次向前翻一屏
ctrl+d键:向后翻半屏
ctrl+u键:向前翻半屏
回车键:向后翻一行
k键:向前翻一行
G键:跳转至最后同样
#+G键:跳转至指定行
1+G键:跳转至首行。
文本搜索:
/keyword //从文件首部向文件尾部依次查找;不区分字符大小写
?keyword //从文件尾部向文件首部依次查找
找到关键字后,若是有多个敲入n(与查找命令方向相同)查找,N(与查找命令方向相反)查找。
退出:
q:quit
选项
#-M /path/to/somewhere //到指定目录下查找命令手册并打开它。
#man -f //至关于whatis,查找man全部文件帮助所在的章节
#man -w //--where, --path, --location
不实际显示手册页,但打印将格式化的 nroff 文件的位置。
#id user //查看用户的id
#tail -1 /some/where //查看最后一行。
c)、info command 获取命令的在线帮助文档(不是每一个命令都有)
d)、不少应用程序会自带帮助文档,文档位置:/usr/share/doc/app-version(应用程序+版本号)
README:程序相关信息
INSTALL:安装帮助
CHANGES:版本变更
e)、主流发行版官方文档:
f)、程序的官方文档:(document)
g)、搜索引擎(keyword filetype:pdf)