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使用特殊变量$?保存最近一次执行命令的状态结果。
程序执行结果有两类:
命令执行的返回值:
命令执行状态结果: