文件管理

1.文件系统结构元素

文件和目录被组织成一个单根倒置树结构文件系统从根目录下开始,用“/”表示。

1.1文件系统

# 根文件系统(rootfs):root filesystem
# 文件名称区分大小写
# 以.开头的文件为隐藏文件
# 路径分隔的 /
# 文件有两类数据:
# 元数据:metadata
# 数据:data

1.2文件名规则

# 文件名最长255个字节
# 包括路径在内文件名称最长4095个字节
# 蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件
# 除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们

1.3文件系统结构

# /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
# /bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
# /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
# /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
# /lib64:专用于x86_64系统上的辅助共享库文件存放位置
# /etc:配置文件目录
# /home/USERNAME:普通用户家目录
# /root:管理员的家目录
# /media:便携式移动设备挂载点
# /mnt:临时文件系统挂载点
# /dev:设备文件及特殊文件存储位置
# b: block device,随机访问
# c: character device,线性访问
# /opt:第三方应用程序的安装位置
# /srv:系统上运行的服务用到的数据
# /tmp:临时文件存储位置

1.3.1 /usr目录下

# bin: 保证系统拥有完整功能而提供的应用程序
# sbin:
# lib:32位使用
# lib64:只存在64位系统
# include: C程序的头文件(header files)
# share:结构化独立的数据,例如doc, man等
# local:第三方应用程序的安装位置
# bin, sbin, lib, lib64, etc, share

1.3.2 /var目录下

# cache: 应用程序缓存数据目录
# lib: 应用程序状态信息数据
# local:专用于为/usr/local下的应用程序存储可变数据
# lock: 锁文件
# log: 日志目录及文件
# opt: 专用于为/opt下的应用程序存储可变数据
# run: 运行中的进程相关数据,通常用于存储进程pid文件
# spool: 应用程序数据池
# tmp: 保存系统两次重启之间产生的临时数据
# /proc: 用于输出内核与进程信息相关的虚拟文件系统
# /sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
# /selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置

1.4Linux下的文件类型

- 普通文件
d 目录文件
b 块设备
c 字符设备
l 符号链接文件
p 管道文件pipe
s 套接字文件socket

1.5Linux 程序的组成

# 二进制程序:/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, /etc/DIRECTORY, /usr/local/etc
# 帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

1.6绝对路径和相对路径

# 绝对路径:以"/"开始、完整的文件的位置路径、可用于任何想指定一个文件名的时候
# 相对路径名:不以斜线开始、指定相对于当前工作目录或某目录的位置、可以作为一个简短的形式指定一个文件名
基名:basename /home/sun/data/f1.txt f1.txt就是基名
目录名:dirname /home/sun/data/f1.txt /home/sun/data就是路径名
[root@centos7 ~]#basename /home/sun/data/f1.txt
f1.txt
[root@centos7 ~]#dirname /home/sun/data/f1.txt
/home/sun/data

1.7更改目录

# cd可用于改变目录
# 使用绝对:cd /home/wang/
# 相对路径:cd home/wang
# 切换至父目录: cd ..
# 切换至当前用户主目录: cd
# 切换至以前的工作目录: cd -
选项:-P、相关的环境变量:
# PWD:当前目录路径
# OLDPWD:上一次目录路径

1.8列出目录内容

# ls 列出当前目录的内容或指定目录
用法:ls [选项]] [文件名或者目录]
示例
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序、
ls -d 只搜索当前目录

1.9查看文件状态

# stat命令可以显示文件的完整属性,并且显示文件的修改的时间,读时间,状态修改时间。
# 文件可分为:metadata(元数据)), data(数据)
# 三个时间戳:
access time 访问时间,atime,读取文件内容
modify time 修改时间, mtime,改变文件内容(数据)
change time 改变时间, ctime,元数据发生改变

1.10通配符

 * 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z]:字母
[A-Z]:字母
[wang] 匹配列表中w,a,n,g的任何的一个字符
[^wang] 匹配列表中w,a,n,g的所有字符以外的字符
# 预定义的字符类:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符

课后练习

# 1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
答:ls -a /var/l*[0-9]*[[:lower:]]
# 2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录
答:ls /etc/[0-9]*[^0-9]
# 3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
答:ls /etc/[^[:alpha:]][[:alpha:]]*
# 4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
答:ls -a /etc/rc*[0-6]*
# 5、显示/etc目录下,所有以.d结尾的文件或目录
答:ls -a /etc/*.d
# 6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
答:ls /etc/[mnrp]*.conf
# 7、只显示/root下的隐藏文件和目录
答:ls -d /root/.[^.]*
# 8、只显示/etc下的非隐藏目录
答:ls -d /etc/*/

20190923课堂笔记

#' ' , \ ,: 临时调用原始命令
# source , . ,: 都可用于重读配置文件
# ctrl+c : 强制退出
# ctrl+d : 正常退出
# whatis:显示命令简短的描述,列出该命令的man帮助的章节分类
# man -f 和 whatis效果是一样的
# 使用type查询命令时显示shell builtin为内部命令 ;显示路径的为外部命令
# 内部命令的帮助用法:help+内部命令
# 外部命令的帮助用法:man+外部命令
# octal:八进制
# 文件存放在内存中是以unicod存储
# 在网络中传送或者读取到磁盘中时是以uft-8显示的
# .bash_history:存放内存中执行过的命令(在每个用户家目录下的隐藏文件)
# 可以通过!number调用历史命令
# 可以通过!?+条件调用包含条件的命令
# ctrl+r=搜索历史命令 ctrl+g=取消搜索
clock
# 按主板时间设置系统时间:clock -s
# 按系统时间设置主板时间:cloock -w
# man 1 man :用户文件、系统调用、配置文件
# NAME 名称及简要说明
# SYNOPSIS 用法格式说明
# []可选
# <>必选
# a|b二选一
# { } 分组
# ... 同一内容可出现多次
man bash
# which:显示外部命令的路径
# whereis:不仅显示路径还会显示帮助路径
# yum install screen:安装screen
# screen:打开共享窗口
# screen -r:恢复共享窗口
# screen -S name:创建窗口名
# screen -x name:加入窗口名窗口
# ctrl+a+d:临时切出窗口
echo:
# " ":命令识别不了,只能识别变量
# ' ':命令变量都识别不了
# ` `:能识别变量和命令
# $()和``:当一个命令想要引用cmd的执行结果时,可以采用这种方法
# 元数据:metadata
# 数据:data 文件类型:
-:普通文件
d:目录文件
b:块设备
c:字符文件
l:符号链接文件
p:管道文件pipe
s:套接字文件socket
# /dev/null :相当于windows里的垃圾桶,有什么不需要的文件都可以直接丢进去。
# basename :基名# jm      /data/sun/jm
# dirname :文件夹名# /data/sun /data/sun/jm # $OLDPWD 存放的记录刚才你进入的目录
# cd- :回到刚才你进入的目录
# 元数据的修改不会影响修改时间
# ll --time=atime 读时间
# ll --time=ctime 状态更改时间
# ll显示的时间是修改时间
# stat可以显示文件的完整属性,并且显示文件的修改时间,读时间,状态修改时间。
# ls -d .* :当前目录下 以点开头的文件
# ls ~-/file.txt:显示上一次目录下的file.txt文件
# ls /etc/*/ -d:显示etc下所有的文件夹
# ls *:显示目录下不包括以点开头的文件
# ls .* * -d=ls -a:显示目录下以点开头的文件和不易点开头的文件
# reset:清楚乱码+清屏

linux初学者小记(二)的更多相关文章

  1. linux初学者小记

    a开头的小命令 alias命令 # echo=' - - - ' > /sys/class/scsi_host/host0/scan这条命令是咱们在给虚拟机装了一块新的硬盘后,在不关机的前提下扫 ...

  2. linux初学者-系统日志(二)

    linux初学者-系统日志(二) 先前在(一)中介绍到在不同主机间日志同步的方法,在一台主机上可以看到另一台主机的日志.这里会介绍系统日志方面的一些其他内容. 1.日志的采集格式 在日志的采集中,由图 ...

  3. Linux初学者必知的5个学习网站

    分享几个Linux初学者一定要知道的5个学习网站 工具/原料 有一颗学习Linux的心 电脑 方法/步骤 1 推荐一:鸟哥的Linux私房菜(http://vbird.dic.ksu.edu.tw/) ...

  4. ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘

    本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...

  5. 针对于linux初学者的学习(摘自网络端)

    一. 选择适合自己的Linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他 ...

  6. Linux设备管理(二)_从cdev_add说起

    我在Linux字符设备驱动框架一文中已经简单的介绍了字符设备驱动的基本的编程框架,这里我们来探讨一下Linux内核(以4.8.5内核为例)是怎么管理字符设备的,即当我们获得了设备号,分配了cdev结构 ...

  7. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  8. C语言细节——献给初学者(二)

    C语言细节——献给初学者(二) 主题  循环运用+选择判断 C语言循环有for和while/do...while: 选择判断有:if...else和switch...case 在循环中需要注意搭配br ...

  9. Linux网络编程(二)

    Linux网络编程(二) 使用多进程实现服务器并发访问. 采用多进程的方式实现服务器的并发访问的经典范例. 程序实现功能: 1.客户端从标准输入读入一行文字,发送到服务器. 2.服务器接收到客户端发来 ...

随机推荐

  1. 随笔编号-06 MYSQL数据库相关知识合集

    1  MYSQL取得某一范围随机数: 关键词:RAND() [产生0~1之间的随机数] mysql> SELECT RAND( ), RAND( ), RAND( ); +----------- ...

  2. 从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布

    一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java ...

  3. Enum与最佳単例设计

    1 枚举基础 自定义一个枚举类很简单, 不过类型关键字是 enum, 不是 class, 也不是 interface.public enum Action { UP, DOWN, LEFT, RIGH ...

  4. 2019 Multi-University Training Contest 9

    A. Rikka with Quicksort 题意 求 EX 快速排序复杂度. 做法 根据线性期望可加性,独立考虑长度为 \(m\) 的区段对答案的贡献.进行简单的公式推导,对 \(s(x)=\su ...

  5. 牛客暑假多校第二场 F trade

    题意: 白兔有n个仓库,每个仓库有啊ai个货物,在每个仓库白兔可以装上任意数量的货物,也可以卸下任意数量的货物,现在有k个圆形信号阻隔器,然后有m个顾客下个一个订单,每个顾客的收货量有一个上限, 在每 ...

  6. 洛谷 题解 P3871 【[TJOI2010]中位数】

    这题先定义一个大根堆(maxn)维护mid(n为奇数mid+1)的元素.再定义一个小根堆(minn)维护mid(n为奇数mid+1)到n的元素.然后对于插入元素的情况进行分类讨论. 当add x时 一 ...

  7. 深入vue源码,了解vue的双向数据绑定原理

    大家都知道vue是一种MVVM开发模式,数据驱动视图的前端框架,并且内部已经实现了双向数据绑定,那么双向数据绑定是怎么实现的呢? 先手动撸一个最最最简单的双向数据绑定 <div> < ...

  8. 《Hive编程指南》读书笔记 | 一文看懂Hive的数据类型和文件格式

    Hive支持关系型数据库中的大多数基本数据类型,同时也支持关系型数据库中很少出现的3种集合数据类型. 和大多数数据库相比,Hive具有一个独特的功能,那就是其对于数据在文件中的编码方式具有非常大的灵活 ...

  9. Kafka的安全认证机制SASL/PLAINTEXT

    一.背景 kafka提供了多种安全认证机制,主要分为SSL和SASL2大类.其中SASL/PLAIN是基于账号密码的认证方式,比较常用.最近做了个kafka的鉴权,发现官网上讲的不是很清楚,网上各种博 ...

  10. 如何在IDEA中导入一个普通的java工程

    1.如下: 2.如下,选中要导入的工程: 3.如下: 4.如下图 5.点击next,后如下图: 6.点击next后,如下图: 7.点击next后,如下图: 8.点击next后,如下图: 9.点击nex ...