04 Linux根文件系统和目录结构及bash特性
Posted self-discipline-xxc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了04 Linux根文件系统和目录结构及bash特性相关的知识,希望对你有一定的参考价值。
Linux文件系统:
Linux:glibc
程序编译方式:
动态链接式编译
静态链接式编译
进程的类型:
终端:硬件设备,在硬件设备上可以关联一个用户接口,从而让用户用此接口与操作系统打交道
与终端相关:通过终端启动
与终端无关:操作引导启动过程当中自动启动
操作系统的组成:
静态:kernel(内核),application(应用程序)
文件系统:层级结构
FHS:
Filesystem Hierarchy Standard(文件系统层次化标准)
/bin:所有用户可用的基本命令程序文件
/sbin:供系统管理使用的工具程序
/boot:引导加载器必须用到的各静态文件;例如:kernel,initramfs(initrd,grub等)
/dev:存储特殊文件或设备文件
设备有两种类型:字符设备(线性设备),块设备(随机设备)
/etc:系统程序的配置文件,只能为静态的不能为二进制文件
/home:普通用户的家目录的集中位置:一般每个普通的家目录默认为此目录下与用户名同名的子目录,/home/username
/lib:为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块
libc.so.*:动态链接的C库
ld*:运行时链接器/加载器
modules:用于存储内核模块的目录
/lib64::64位系统特有的存放64位共享库的路径
/media:便携式设备挂载点,cdrom,floppy等
/mnt:其它文件系统的临时挂载点
/opt:附加应用程序的安装位置;可选路径
/root:管理员的家目录;可选
/srv:当前主机为服务提供的数据;
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限
/usr:/usr Hierarchy,全局共享的只读数据路径;
bin,sbin
lib,lib64
include:C程序头文件
share:命令手册页和自带文档等架构特有的文件的存储位置
local:另一个层级目录:
x11R6:X-Window程序的安装位置
src:程序源码文件的存储位置
/usr/local:Local Hierarchy,让系统管理员安装本地应用程序,也通常用于安装第三方程序
/var:/var Hierarchy,存储常发生变化的数据的目录
/var/cache/ 应用程序的缓存数据
/var/lib/ 状态信息。由程序在运行时维护的持久性数据。
/var/log/ 日志文件
/var/run 已经被/run/替代,自最后一次启动以来运行中的系统的信息:如运行中的守护进程,当前登录的用户。
/proc:基于内存的虚拟文件系统;内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward,虚拟为net/ipv4/ip_forward,存储于/porc/sys/,因此其完整路径为/proc/sys/net/ipv4/ip_forward
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径
主要作用:在于为管理Linux设备提供一种一模型的接口
Linux文件系统层次结构标准简介(参考网址):
https://blog.csdn.net/qq_29753285/article/details/69791332
Linux系统上的文件类型:
-:常规文件;即f;
d:directory,目录文件
b:block device,块设备文件,支持以“block”为单位进行随机访问
c:character device,字符设备文件,支持以“character”为单位进行先行访问
major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
minor number:次设备号,用于标识同一类型中的不同的设备,
l:symbolic link:符号链接文件(相当于Windows当中的快捷方式);
p:pipe,命名管道;
s:socker,套接字文件
基本命令:
命令类型:
外部命令
shell内嵌命令
type command
内部:builtin
外部:显示为命令文件路径
注意:命令可以有别名:别名可以与原名相同(此时原名被隐藏),此时如果要运行原命令,则使用command
命令别名:
获取所有可用别名的定义:
~]# alias
定义别名:
~]# alias NAME="command"
注意:仅对当前shell进程有效
撤销别名:
~]# unalias NAME
which命令
which - shows the full path of (shell) commands.(完整的显示命令路径)
which [options] programname [...] (使用格式)
--skip-alias:忽略别名
whereis命令:
whereis - locate the binary, source, and manual page files for a command
可以用来查找二进制(命令)、源文件、man文件。与which不同的是这条命令可以通过文件索引数据库而非PATH来查找的,所以查找的面比which要广
whereis [options] name...
-b:仅搜索二进制程序路径
-m:仅搜索使用手册文件路径
who命令:
who - show who is logged on
显示出系统中有哪些用户登录系统,显示的资料包含了使用者的ID、使用的登录终端、上线时间、呆滞时间、CPU占用,以及做了些什么。使用权限为所有用户
who [OPTION]...
-b:系统此次启动的时间
-r:运行级别
w命令:
w - Show who is logged on and what they are doing.
w命令就是who命令的增强版,用于显示目前登入系统的用户信息,执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序,单独执行w指令会显示所有的用户,您也可以指定用户名称,仅显示某位用户的相关信息
bash的基础特性之一:
命令历史:shell进程会在其会话中保存此前用户提交执行过的命令
~]# history
查看历史命令
定制history的功能,可通过环境变量实现:
HISTSIZE:shell进程可保留的命令历史的条数
HISTFILE:持久保存命令历史的文件
.bash_history
HISTFILESIZE:历史命令文件的大小
命令用法:
history [-c] [-d 偏移量] [n]
或 history -anrw [文件名]
或 history -ps 参数 [参数...]
-c:删除所有history所有命令历史
-d offset: 删除指定命令历史
-r:从文件读取命令历史至历史列表中
-w:把历史列表中的命令追加至历史文件中
history n:显示最近的n条命令
调用命令历史列表中的命令:
!n:再一次执行历史列表中的第n条命令
!!:再一次执行上一条命令
!STRING:再一次执行历史列表中最近一个以STRING开头的命令
注意:命令的重复执行有时候需要依赖于幂等性
调用上一条命令的最后一个参数:
快捷键:ESC,(逗号代表松开).
字符串:command !$
控制命令历史记录的方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令
ignorespace:忽略以空白字符开头的命令
ignoreboth:以上两者同时生效
修改变量的值:
NAME=‘VALUE‘
Linux基础知识
bash的基础特性:
命令行补全功能:
shell程序在接受到用户执行命令的请求,分析完成之后,最左侧的字符串会被当做命令:
命令查找机制:
查找内部命令
根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名
给定的打头字符串如果能唯一标识某命令程序文件,则直接补全
不能唯一标识某命令程序文件,再击tab键一次,会给出列表
路径补全:
在给定的起始路径下,以对应路径下的打头字串逐一匹配起始路径下的每个文件
tab:
如果能唯一标识,则直接补全
否则,再一次tab,给出列表
目录管理类的命令:
mkdir:make directory
mkdir [OPTION]... DIRECTORY...
-p:自动按需创建父目录
-v:verbose,显示详细过程
-m MODE:直接给定创建目录的权限
注意:路径基名方为命令的作用对象,基名之前的路径必须得存在
rmdir:remove directoryies 仅能删除空目录
rmdir [OPTION]... DIRECTORY...
-p:删除某目录后,如其父目录为空,则一并删除之
-v:显示命令执行过程
bash的基础特性之:命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
例如:/tmp{a,b}相当于 /tmpa /tmp/b
问题一:如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b?
mkdir -pv /tmp/x/{y1/{a,b},y2}
问题二:如何创建a_c,a_d,b_c,b_d
[[email protected] tmp]# mkdir -v {a,b}_{c,d}
问题三:创建如下目录结构:
[[email protected] tmp]# tree /tmp/mysysroot/
/tmp/mysysroot/
├── bin
├── etc
│ └── sysconfig
│ └── network-scripts
├── sbin
├── usr
│ ├── bin
│ ├── lib
│ ├── lib64
│ ├── local
│ │ ├── bin
│ │ ├── etc
│ │ ├── lib
│ │ └── sbin
│ └── sbin
└── var
├── cache
├── log
└── run
19 directories, 0 files
mkdir -pv /tmp/mysysroot/{bin,sbin,etc/sysconfig/networkscripts,usr/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}}
tree命令:查看目录结构
tree [options] [diretory]
-L level:指定要显示的层级
bash的基础特性:命令的执行状态结果
命令执行的状态结果:
bash通过状态返回值来输出此结果:
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$?中
命令正常执行时,有的还回有命令返回值:
根据命令及其功能不同,结果各不相同
引用命令的执行结果:
$(command)
或`command`
bash的基础特性:引用
强引用:‘ ’
弱引用:“ ”
命令引用:` `
bash的基础特性:快捷键
Ctrl+a:跳转至命令行行首
Ctrl+e:跳转至命令行行尾
Ctrl+u:删除光标所在处至行首之间的所有字符
Ctrl+k:删除光标所在处至行尾之间的所有字符
Ctrl+l:清屏,相当于clear
文本查看类命令:cat,tac,head,tail,more,less
分屏查看命令:more和less
more命令:
more FILE
特点:翻屏至文件尾部后自动退出
less命令:
less FILE
head命令:
查看文件的前n行:
head [options] FILE
-n #:#代表指定的前多少行
-#:和加-n选项一样
tail命令:
查看文件的后n行
tail [options] FILE
-n #:#代表指定的后多少行
-#:和加-n选项一样
-f:查看文件尾部内容结束后不退出,而是跟随显示新增的行
stat命令:stat - display file or file system status 显示文件或文件系统的状态
stat FILE...
文件:两类数据
元数据:metadate
数据:date
时间戳:
最近访问(access time):2018-12-27 11:05:22.616718714 +0800
最近更改(modify time):2018-12-27 11:05:22.616718714 +0800
最近改动(change time):2018-12-27 11:05:22.616718714 +0800
touch命令:
touch - change file timestamps
-c:指定的文件路径不存在时不予创建
-a:仅修改access time
-m:仅修改modify time
-t:STAMP
use [[CC]YY]MMDDhhmm[.ss] instead of current time
一般 -a和-m会和-t选项一块使用
change time 是不能手动指定时间的
以上是关于04 Linux根文件系统和目录结构及bash特性的主要内容,如果未能解决你的问题,请参考以下文章