3_Linux的文件系统、系统管理类命令、bash及其特性

Linux的文件系统

  1. 根文件系统(rootfs):
    root filesystem
  2. LSB:FHS(filesystem heirache standard)
    /etc,/usr,/var,/root,/home,/dev

/boot:引导文件存放目录,内核文件(vmlinuz),引导加载器(bootloader,grub)都存放于此目录
/bin:供所有用户使用的基本命令,不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令,不能关联至独立分区,OS启动即会用到的程序
/lib:基本共享库文件,以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放的位置
/etc:主机特有的配置文件目录(大多数都是纯文本文件)
/home/USERNAME:普通用户的家目录
/root:管理员的家目录
/media:便携性移动设备挂载点(u盘)
/mnt:临时文件系统挂载点
/opt ;第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存放位置
/usr:universal shareable read-only data

bin:保证系统拥有完整功能而提供的应用程序,所有用户都拥有权限
sbin:管理员拥有权限
lib:库文件
lib64:64位库文件
include:C程序的头文件存放位置(.h结尾),头文件(header file)就是用来描述库文件的打开方式
share :结构化独立的数据;例如doc,man等;
src:源代码
local:本地层级结构(基本安装完之后是空的);第三方应用程序的安装位置;bin,sbin,lib,lib64,etc,share

/dev:特殊文件和设备文件目录

b: block device,随机访问
c: character device,线性访问

/var:可变数据文件

cache:应用程序缓存数据目录
lib:应用程序可变状态信息数据
local:专用于位/usr/local下的应用程序存储可变数据
lock:应用程序的所文件
log:日志目录及文件
opt:专用于位/opt下的应用程序存储可变数据
run:运行中的进程相关的数据,通常用于存储进程的pid文件
spool:应用程序缓冲数据池
tmp:系统重启过程中产生的临时文件

/proc:用于输出内核与进程信息相关的伪(虚拟)文件系统
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统
/misc:备用的杂项文件
/selinux:security enhanced Linux:Linux的安全增强机制。selinux相关的安全策略等信息的存储位置

Linux上的应用程序的组成部分:

  1. 二进制程序
    /bin;/sbin;/usr/bin;/usr/sbin;/usr/local/bin;/usr/local/sbin;
  2. 库文件
    /lib;/lib64;/usr/lib;/usr/lib64;/usr/local/lib;/usr/local/lib64;
  3. 配置文件
    /etc;/etc/DIRECTORY;/usr/local/etc
  4. 帮助文件
    /usr/share/man;/usr/share/doc;/usr/local/share/man;/usr/local/share/doc;

Linux下的文件类型:

  1. -(f):普通文件
  2. d:目录文件
  3. b:块设备文件
  4. c:字符设备
  5. l:符号连接文件(软连接)
  6. p:管道文件(先进先出)
  7. s:套接字文件,socket

系统管理类命令

  1. halt
    关机
  2. poweroff
    关机
  3. reboot
    重启

上述3个命令共同选项:
-f,--force:强制,不使用shutdown关机
-p,--poweroff:使用poweroff命令关机,关机后切断电源
--verbose:显示详细信息

  1. shutdown
shutdown [OPTION]... TIME [MESSAGE]

选项
-r:reboot,重启
-h :halt,关机,切断电源
-c : 取消关机或重启操作

TIME:
now:(立刻);
+m:相对时间(从命令提交开始多少分钟之后命令执行,例+3是3min之后执行);
hh:mm:绝对时间表示(指明具体时间)

用户登录信息查看命令

  1. whoani
    显示有效的用户id信息,显示当前登陆的有效用户
  2. who
    显示当前系统有哪些用户登陆;不同终端同一用户登录也是不同的登陆信息
    显示当前系统上所有的登陆会话
  3. w
    显示当前系统有哪些用户登陆并且其正在执行的操作
    显示当前系统上所有的登陆会话及所做的操作

bash的基础特性(1)

  1. 命令历史

history

环境变量:
HISTSIZE:命令历史记录的条数
HISTFILE:~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数

history -d OFFSET
history -c
history 10 #显示历史中最近的10条命令
history -a #手动追加当前会话缓冲区的命令历史至历史文件中

调用历史中的命令:

  1. !# :调用第#号命令
  2. !!:调用上一条命令
  3. !string :调用最近一个以string开头的命令

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

  1. !$
  2. ESC,. (两者分开按)
  3. Alt + .

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

环境变量:HISTCONTROL

  1. ignoredups :忽略重复的命令
  2. ignorespace :忽略以空白开头的命令
  3. ignoreboth :以上两种都生效
echo $HISTCONTROL
ignoredups
export HISTCONTROL="ignorespace" #修改环境变量值的方式,只对当前进程有效
echo $HISTCONTROL
ignorespace

export 变量名=“值” :修改环境变量值的方式
=:变量赋值符号,把赋值符号后面的数据存储于变量名指向的内存空间

  1. 命令补全
    tab键
    bash执行命令:
  • 内部命令
  • 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的即为要执行的命令

直接补全:Tab,用户给定的字符串只有一条唯一对应的命令
以用户给定的字符串开头对应的命令不唯一,则再次Tab会给出列表

  1. 路径补全
    把用户给出的字符串当作路径的开头,并在其指定的上级目录下搜寻以指定的字符串开头的文件名
    如果唯一,则直接补全
    否则,再次Tab,给出列表
  2. 命令行展开
    ~:展开为用户的主目录
    ~USERNAME:展开为指定用户的主目录
    {} :可承载一个以,分隔的列表,并将其展开为多个路径

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

  1. 命令的执行结果状态
    成功
    失败

bash使用特殊变量$?来保存最近一条命令的执行状态结果
0:成功
1-255 :失败

程序的执行有两类结果:

程序的返回值:
程序的运行状态结构

目录管理类命令

cd ,pwd,ls
mkdir,rmdir

  1. mkdir
 mkdir [OPTIONS] path/to/somewhere

选项:

-p :即使目录已存在也不报错,根据需要创建一个目录需要的所有父目录
-v,--verbose:显示详细信息
-m MODE :创建目录时直接指定权限
可以次创建多个目录

  1. rmdir :删除空目录
 rmdir [OPTIONS] path/to/somewhere

选项:

-p : 递归删除

mkdir -p ./Downloads/test1/x/y
tree ./Downloads/
./Downloads/
├── gdc-client
└── test1
    └── x
        └── y
3 directories, 1 file
rmdir -p ./Downloads/test1/x/y
rmdir: failed to remove directory ‘./Downloads’: Directory not empty
tree ./Downloads/
./Downloads/
└── gdc-client
0 directories, 1 file

-v : 显示过程

  1. tree 显示目录的层结构
    选项:

-d :仅显示目录,不显示文件
-P pattern :只显示有指定pattern匹配到的路径
-L level:指定显示的层级数目

练习

  1. 如何创建/tmp/x/y1; /tmp/x/y2; /tmp/x/y1/a; /tmp/x/y1/b; /tmp/x/y2/a; /tmp/x/y2/b;
mkdir -p /tmp/x/{y1,y2}/{a,b}  #对
mkdir -p /tmp/x/{y1/{a,b},y2}
  1. 如何创建x_m , y_m , x_n , y_n
mkdir {x,y}_{m,n}
  1. 如何创建 /tmp/bin ; /tmp/sbin ; /tmp/usr ; /tmp/usr/bin ; /tmp/usr/sbin ;
mkdir -p  /tmp/{bin,sbin,usr/{bin,sbin}}

文本文件查看类命令

cat ,tac
more,less,tail,head

  1. more
more  [OPTION] FILE...

选项:

-d:显示翻页及退出提示

  1. less
less  [OPTION] FILE...
  1. head
    获取文件的前多少行
head  [OPTION] FILE...

选项:

-c q :指定获取前q个字节
-n q :指定获取前q行 = -q
默认前10行

  1. tail
    获取文件的后多少行
tail  [OPTION] FILE...

选项:

-c q :指定获取后q个字节
-n q :指定获取后q行 = -q
默认后10行
-f ,--follow :跟踪显示文件新追加的内容;退出使用Ctrl +c

文件的时间戳管理工具

touch
文件:metdata,data
查看文件状态 :stat
3个时间戳:

access time:(最近一次)访问时间 atime,读取文件内容
modify time :(最近一次)修改时间mtime,改变文件内容(数据)
change time :(最近一次)改变时间ctime,时间元数据发生改变

touch:手动指定修改atime和mtime

touch  [OPTION]... FILE...

选项:

-a :只改访问时间戳
-m :只改修改时间戳
-t [[CC]YY]MMDDhhmm[.ss] :指明修改为哪个时间戳
-c :如果文件存在就touch,如果不存在就不创建它

你可能感兴趣的:(3_Linux的文件系统、系统管理类命令、bash及其特性)