您的位置:首页 > 运维架构 > Shell

Linux基础知识--2.Linux的文件系统和bash的基础特性(1)

2015-08-17 20:45 741 查看
Linux基础知识--linux的文件系统和bash的基础特性
一.Linux文件系统:
Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中

linux文件系统遵循FHS(Filesystem Hierarchy Standard,文件系统目录标准),多数Linux版本采用这种文件组织形式。FHS采用了树行组织文件。
FHS定义了两层规范,第一层是,/目录下面的各个目录应该要放什么文件数据。第二层是针对/usr及/var 这两个目录的子目录来定义的。

根文件系统:(root filesystem)
/boot:引导文件存放的目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放此目录中。
/bin:供所有用户使用的基本命令存放的目录。不能关联(挂载)至独立分区,os启动时即会用到目录下的程序。

/sbin:供管理员才能使用的执行命令的存放目录。不能关联至独立分区,os启动时会用到目录下的程序。

/lib:基本共享库文件和内核模块文件(/lib/modules)

/lib64:

/etc:主机特有的配置文件存放的目录(大多数为纯文本文件)

/etc/opt:专门为opt下的程序存放配置文件的

/etc/X11:专门为X协议程序存放配置文件的。X-->Xmanager-->桌面
/home:用户的家目录,一班普通用户的家目录都在此

/media:便携式移动设备的挂载点

/mnt:临时文件系统的挂载点

/dev:设备文件和特殊文件的存放目录
b:block device:块设备文件。可随机访问设备。

c:character device:线性设备。

/opt:第三方应用程序的安装目录。(附件的存放目录)

/srv:系统上的服务用到的数据的存放目录。

/tmp:临时文件,当前系统上临时文件都存放在此目录中

以上的目录除了/boot,/home,/media,/mnt之外的目录都不能进行关联

/usr:(universal shared only-read data):全局共享只读数据目录
/usr/bin:所有用户都能使用的命令存放目录。存放系统完成一些基本功能的命令,而不是系统启动时的所用到的命令的目录,保证系统拥有完整功能而提供的应用程序。

/usr/sbin:

/usr/lib:各应用软件的函数库文件

/usr/lib64:

/usr/include:C语言程序头文件存放的目录。头文件时库文件的调用方式和打开方式

/usr/local:取代了/opt。第三方应用程序的安装目录。此目录下还有以下目录:
bin,sbin,lib,lib64,etc,share

/usr/share:结构化独立的数据,存放一些背景文件,doc,man等。

/usr/X11R6:Xwindows system

/usr/src:源代码存放的目录
/var:variable data file:可变文件目录

/var/cache:Application cache data:应用程序缓存目录

/var/lib:存放可变的状态数据

/var/local:专用于为/usr/local下的应用程序存储可变数据

/var/lock:锁文件

/var/log:日志目录
/var/run:运行中的进程相关的数据,通常用于存放进程的pid文件

/var/spool:应用程序的缓存数据

/var/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

帮助文件:/usr/share

二.bash的基础特性:
(1)历史命令:
history:

环境变量:

HISTSIZE:命令历史记录的条数

HISTFILE:~/.bash_history

HISTFILESIZE:命令历史文件中的命令条数。可以修改此环境变量来改变历史文件存放
命令的条数

history -d OFFSET
-c清楚缓存
-a:手动追加当前会话缓冲区的命令历史至历史文件中。

history #:显示历史命令最近的#条命令

调用命令的快捷键:

!#:执行第#号命令

!!:

!string:执行最近一次一string开头的命令

调用上一条命令的最后一个参数

!$

ESC,.

控制命令历史的记录方式:

环境变量:HISTCONTROL

ignoredups:忽略重复的命令,重复且连续

ignorespace:忽略所有以空白字符开头的命令

ignoreboth:==ignoredups,ignorespace

hash:

linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令
时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器
默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先
会查看hash表,没有该命令才会去PATH路径下寻找。
(2)命令补全:

bash执行的命令:

内部命令:
外部命令:bash根据PATH环境变量定义的路径,自左而右在每一路径搜寻以命令名的文件
第一次找到即为要执行的命令所在的目录。

直接补全:tab键,用户给定的字符串至于一条唯一对应的命令

(3)路径补全:

把用户给出的字符串当做路径的开头,并在其指定上级目录下搜寻已指定的字符串开头的
的文件名;如果唯一则补全,否则,再tab就会列出文件列表
(4)命令行展开:

~:展开为用户的主目录

~USERNAME:展开为指定用户的主目录

{}:可承载一个一逗号分隔的列表,并将其召开为多个路径

/tmp/{a,b} ==>/tmp/a /tmp/b

/tmp/{a,b}/hi ==> /tmp/a/hi /tmp/b/hi

/tmp/{x,y}_{m,n} ==> /tmp/x_m /tmp/x_n /tmp/y_m /tmp/y_n

(5)命令的执行状态结果

执行成功:当上一条命令执行成功后,再次执行echo $? 查看执行状态;0表示成功。

如:
[root@localhost ~]# ls
a  anaconda-ks.cfg  install.log  install.log.syslog
[root@localhost ~]# echo $?
0
执行失败:当上一条命令执行成功后,再次执行echo $? 查看执行状态;1-255表示失
败。如:
[root@localhost ~]# lls
-bash: lls: command not found
[root@localhost ~]# echo $?
127
bash使用特殊变量$?保存最近一次执行命令的状态结果。
程序执行结果有两类:
命令执行的返回值:
命令执行状态结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息