Linux 学习笔记-CentOS7 文件,目录管理
1. 目录结构
- linux 文件系统为树形结构, '/' 为Linux 系统的根目录, 所有文件/目录 都是在 '/' 的基础上创建的.
1.1 一级目录
-
/:
- 文件系统的入口, 最高一级的目录.
-
/bin:
- 基础的系统命令, 所在的目录, 此目录下的命令是普通用户可以使用的.
-
/boot:
- 包含Linux 内核以及系统引导程序所需要的文件,
-
/dev:
- 系统所有的设备 (Linux系统的设备文件 被标识为文件) 所在目录, 包含硬盘, 光驱, 输入输出设备等等..
-
/etc:
- 特定主机, 系统范围内的配置文件,
-
/home:
- 普通用户的家目录, 包含用户保存的文件, 用户自定义设置
-
/lib:
- /bin, /sbin, 内程序所必须的库文件
-
/media:
- 常用于挂载存储设别, 如光盘,硬盘等等.
-
/mnt:
- 临时挂载目录, 与 /media 目录相似
-
/opt:
- 可选应用软件包安装目录, 部分公司用于程序安装以及操作的主目录.
-
/proc:
- 系统运行时, 进程以及内核 生成的相关信息, 该目录下文件不可手动修改.
-
/root:
- root 用户(管理员)的家目录
-
/run:
- 进程产生的临时文件, 系统重启时会清理.
-
/sbin:
- 重要的二进制程序所在的目录, 此目录内的命令 不对普通用户开放
-
/tmp:
- 用户临时文件所在的目录了, 任何用户都有权限在该目录创建文件.
-
/usr:
- 多数系统程序存放的目录, 包含了大多数程序 以及文档.
-
/var:
- 变量文件, 正常运行的系统中内容不断变化,如日志, 临时的邮件,
1.2 重要的二级目录
1.2.1 /etc 下的二,三级目录(文件)
-
/etc/hosts:
- 本地域名解析文件
-
/etc/sysconfig/network:
- 网络配置文件目录
-
/etc/profile:
- 全局环境变量配置文件
-
/etc/passwd, /etc/group, /etc/shadow, /etc/gshadow
- 存储用户, 用户组, 用户密码, 用户组密码, 以及现相关用户配置的 配置文件
-
/etc/sudoers
- 配置用户地 sudo权限.
1.2.2 /usr/目录
-
/usr/include:
- Linux 下开发所需要的编译应用程序的头文件.
-
/usr/lib:
- 存放常用的动态链接共享库和静态库
-
/usr/man:
- 帮助文档所在的目录
-
/usr/src:
- Linux 开放的源代码在这里面
-
/usr/bin:
- 和 /bin 目录相同, 存放的可执行文件, 普通用户拥有权限.
-
/usr/sbin:
- 和 /sbin 相同, 存放可执行文件, 普通用户没有权限.
-
/usr/share:
- 体系结构无关(共享)数据
-
/usr/local:
- 一般应用程序安装的目录,
1.2.3 /var 目录
-
/var/log/:
- 系统日志 以及应用程序产生的日志 存放的目录
-
/var/log/message, /var/log/secure:
- message日志信息是普通的信息(开关机等等), secure记录登陆系统存放信息的文件, 不管成功或失败.
-
/var/spool/mail:
- 邮件mulu
-
/var/run:
- 保存到下次引导前有效的关于系统的信息文件, PS: /var/run/utmp 包含当前登录的用户信息
1.2.4 /proc 目录
-
/proc/meminof
- 内存信息
-
/proc/loadavg
- top 以及 uptime 上面的负载平均数值, 就是记录在这里
-
/proc/uptime
- 使用uptime 的信息
-
/proc/cpuinfo
- 处理器相关信息, 类型, 型号, 性能..
-
proc/cdline
- 加载 kernel 是相关参数,
-
/proc/filesystems
- 目前系统已经加载的文件系统
-
/proc/interrupts
- 目前上面 IRQ 分配状态
-
porc/ioports
- 系统上各个装置所配备的 I/O 位置.
-
/proc/kcore
- 内存, 系统的内存
-
/proc/modules
- 目前系统加载的模块列表, 也可以说是 驱动程序
-
/proc/mounts
- 系统挂载的数据, 使用mount 命令查看的就这里的数据
-
/proc/swaps
- 系统加载的 swaps, 使用 parttion 可以看到的
-
/proc/pci
- 在 PCI 上面的信息, 使用 lspci 可以查看到
-
/proc/version
- 系统核心版本, 使用 uname -a 可看到
1.2.5 /dev 目录
-
dev/hd[a-t]:
- IDE 设别
-
/dev/sd[a-z]
- SCSI 设备
-
/dev/md[0-31]
- 软 raid 设备
-
/dev/loop[0-7]
- 本地回环设备
-
/dev/ram [0-15]
- 内存
-
/dev/null
- 无限数据接收设备, 相当于垃圾桶
-
/dev/zore
- 无限0 资源
-
/dev/tty[0-63]
- 虚拟终端
-
/dev/cdrom
- 指向 /dev/rd0
2. 常用的文件/目录相关命令
2.1 ls 命令
概述:
ls 命令用于新色文件目录或列表, 默认只显示非隐藏的文件/目录名
语法: ls [options] [DIR/FILE]
参数:
-a:
- --all 的缩写, 显示所有文件, 包含隐藏文件(以.开头的文件)
-A:
- --allmost-all 的缩写, 显示所有的文件, 包含隐藏文件, 但是不会显示 .(当前目录)和 ..(上一级目录)
-c:
- 和
-lt
一起使用, 显示列表并且显示 ctime(文件最后改变时间)排序, 和-l
一起使用时, 显示 ctime 并且以文件名排序, 其他情况以 ctime 排序.
-d:
- --directory 缩写, 仅列出目录本身, 而不是列出目录内的内容
-f:
- 直接累出结果, 不进行排序
--color=[WHEN]:
- 根据文件类型显示颜色, WHEN 有: never, always, auto
--full-time:
- 以完整模式显示(包含年月日)
-g:
- 列表显示结果, 类似于 -l, 但是不显示所有者
-h:
- 以更加易读的方式显示 文件大小.
-i:
- 结合
-l
参数, 列出每个文件inode
-l:
- 详细显示
-n:
- 和-l 类似, 只是显示所有者和所属组的id
-r:
- --reverse, 将排序结果倒序
-S:
- 以文件大小排序
-t:
- 以修改时间排序
--help:
- 显示帮助信息
2.1.2 ls命令示例
2.2 alias 命令
-
概述:
设置命令别名, 如果用户输入 alias, 则可以累出目录所有别名设置, alias 仅位于这一次登陆的操作, 如果需要永久设置, 则需啊哟设置二道
/etc/profile
或~/.bashrc
后面, bashrc 是环境变量的配置文件,/etc/bashrc
和~/.bashrc
区别在于一个是设置给全系统一个给单用户使用,另一个是全局设置. -
语法:
alias [别名]=[命令]
-
示例:
2.3 cd命令
1. 概述
cd 命令用来切换工作目录, 其目的 目录, 可以用绝对路径表示 也可以用相对路径表示,
2. 语法
cd [options] [param]
3. 选项[options]
-p:
- 切换的目标如果是一个符号链接, 则直接切换到符号链接指向的目录
-L:
- 如果切换的目标目录是符号链接, 则直接切换到字符连接代表的目录, 而符号链接指向的目录
-:
- 当仅使用一个
-
时, 当前工作目录被切换到环境变量 'OLDPWD' 代表的目录
4. 实例
2.4 mkdir命令
1. 概述
用于创建目录
2.语法
mkdir [OPITONS] DIRNAME
3. 选项
-Z:
- 设置安全上下文, (当selinux生效的时候)
-p:
- --parents 当目录父级不存在时, 创建父级目录
-m <目标属性>:
- 创建目录时, 同时设置目录权限
4. 实例
2.5 rmdir命令
1.概述
用于删除空目录, 被删除目录内不应有任何文件
2. 语法
rmdir [OPTIONS] DIRNAME
3. 选项
-p:
- --parents 删除指定目录后, 如果该目录上层目录也是空, 则一并删除
--ignore-fail-no-non-empty:
- 此选项是 rmdir 命令忽略由删除非空目录时导致的错误
-v:
- --verboes 显示详细执行过程
--version:
- 显示版本信息
--help:
- 显示帮助信息
4. 实例:
2.6 rm 命令
1. 概述
rm
命令可以用于删除一个目录中的 多个文件或目录, 也可删除某个目录下的所有子文件/目录, 对于硬链接, 只是删除链接, 源文件不会改变.
2. 语法
rm [OPTIONS] [PARAM]
3. 选项
-d:
- 直接把想删除的目录硬链接数据删成0, 删除该目录
-f:
- 强制删除文件或目录(不会提醒是否确认)
-i:
- 删除已有文件/目录时 先向用户询问
-r:
- -R 递归删除, 将目录下所有的文件/子目录 全部删除
-v:
- 显示详细信息
--preserve-root:
- 不对根目录进行递归操作
4. 实例
2.7 cp命令
1. 概述
用来将一个或多个源文件复制到指定的目的文件或目录, 可以将单个源文进件复制成指定文件名的文件, 将多个文件复制到指定目录,
2. 语法
cp [OPTIONS] SRC DEST
3. 参数
-a:
- 此参数等效
-dpR
-d:
- 复制符号链接时, 把目标文件或目录也建立为符号链接, 并指向源文件或目录,
-f:
- 当存在同名的文件或目录时, 强行覆盖
-i:
- 覆盖已有的文件前会先询问用户
-l:
- 对源文件建立硬链接, 而不是复制文件
-p:
- 保留源文件或目录 的属性
-R/r:
- 递归处理, 将目录下的所有子目录一并处理
-s:
- 对源文件建立符号链接,而不是复制文件
-u:
- 使用这个参数后会在源文件的更改时间较目标文件更新时间或名称信号那个对应的目标文件并不存在时, 才会复制.
-S:
- 在备份文件时, 用指定后缀"SUFFIX"替代默认文件后缀
-b: 覆盖已存在的文件目标前 将目标文件备份
-v: 详细显示命令执行过程
4. 实例
2.8 mv命令
1. 概述
mv 命令用来对文件或目录重命名, 或者文件从一个目录移动到另一个目录. 用于移动文件的时, DEST 是个目录则将 SRC 移动到目录中, 如果 DEST 是个文件, 则将SRC 移动并重命名为 DEST
2. 语法
mv [OPTIONS] SRC DEST
3. 选项
--backup=<备份模式>:
- 如果要覆盖文件, 则覆盖前先进行备份
-b:
- 如果文件存在是, 覆盖前为其创建备份
-f:
- 如果目标文件与现有文件冲突, 则覆盖
-i:
- 交互式操作, 覆盖前先询问用户, 如果源文件与目标文件或目标目录中的文件名同名, 则询问用户是否覆盖
--strip-strailing-slashes:
- 删除源文件中的 斜杠'/'
-S<后缀>:
- 为备份的文件指定后缀
--target-directory=<目录>:
- 指定源文件要移动到目标目录
-u:
- 源文件比目标文件新或目标文件不存在时, 才执行移动操作.
4. 实例
2.9 cat命令
1. 概述
cat 命令, 用于打印到标注输出设备上, cat 经常用来系那是文件的内容.
2. 语法
cat [OPTIONS] PARAM
3. 选项
-n:
- --number: 输出行号(从1开始)
-b:
- --number-nonbland: 和-n 一样, 只是不显示空白行
-s:
- --squeeze-black: 遇到有连续两行以上的空白行, 就换为一行的空白行
-A:
- 显示不可答应字符, 行尾显示 '$'
-e:
- 等价于
-vE
-t:
- 等价于
-vT
4. 实例
2.10 more命令
1. 概述
more 命令是一个基于vi 编辑器的文本过滤器, 以全屏方式按页显示文本内容, 支持vi 中的关键字定位操作, 页面底部会显示该文件的百分比. 常用操作:
- Space 键: 显示下一屏内容
- Enter 键: 显示下一行内容
- / 键: 接着输入一个模式, 用于在文本中相应文本.
- H 键: 显示帮助信息
- Ctrl+B: 显示上一屏信息
- Ctrl+F: 向下滚动一屏
- =: 显示行号
- :f: 显示当前行号和文件名
- V: 调用vi 编辑器
- !: 调用shell, 并执行命令
- q: 退出 more
2. 语法
more [OPTIONS] FileName
3. 选项
-[NUM]:
- NUM 为数字, 表示一次显示几行
-d:
- 提示使用者, 如果按错键, 则会显示 [Press 'h' for instructions], 而不是声音提示
-l:
- 取消遇见特殊字符 ^L 会暂停的功能
-f:
- 计算行数时, 以实际上的行数显示, 而不是自动换行后的行数.
-p:
- 不以滚动的方式显示每一页, 而是清屏后在现实内容
-c:
- 和-p 类似 不同的是先显示内容 再清除其他旧资料
-s:
- 当遇到连续两行以上的空白行, 旧替换成一行空白行
-u:
- 不显示下引号
+/Pattern:
- 每个文档显示前搜索字符串 (pattern), 然后从字符串之后开始显示.
+num:
- 从第NUM 行号开始显示.
4. 实例
2.11 less命令
1. 概述
less 命令与more相似, 都是用来浏览文字档案, lees 允许用户 向前或向后浏览文件, 可以使用 pageup, pagedown 进行翻页.
2. 语法
less [OPTIONS] FileName
3. 选项
-e:
- 文件显示完之后自动退出
-f:
- 强制显示文件
-g:
- 不加亮显示 所有搜索关键字, 仅显示当前的关键字
-l:
- 搜索时忽略大小写
-N:
- 每行行首显示行号
-s:
- 将连续多个空行压缩成一行显示.
-S:
- 在单行显示较长内容时, 不换行.
x[NUM]:
- 将 tab 字符显示为指定个数的空格字符
2.12 head 和 tail 命令
1. 概述
用于显示文件开头/结尾的内容, 默认显示10行
2. 语法
head [OPTIONS] FileName
tail [OPTIONS] FileName
3. 选项
-n [NUM]:
- 指定显示的行数
-c [字符数]:
- 指定显示头部内容的字符数
-v:
- 显示文件名的头信息
-q:
- 不显示文件名的头信息
4. 实例
2.13 chmod命令
1. 概述
chmod 命令用来改变文件或目录的权限, 在unix 以及类unix 系统中, 文件 权限分为 可读(r), 可写(w), 可执行(x) 三种权限, 用户可以通过 chmod 命令 修改文件权限, 可以使用文字或数字符号设置. 权限范围表示法如下: u:
- user, 表示文件拥有者
g:
- group, 表示文件所属组
o:
- Other, 表示其他人(非拥有者 以及属组内成员)
a:
- ALL, 全部用户, 包含属主, 属组, 其他用户
r:
- read, 读权限, 数字代号
4
w:
- write, 写权限, 数字代号
2
x:
- exec, 执行权限, 数字代号
1
-:
- 不具有任何权限, 数字代号
0
s:
- 特殊功能说明: 变更文件或目录的权限
2. 语法
chmod [OPTIONS] PARAM
3. 选项
-c:
- --changes, 类似于 -v 参数, 但是会报更改的部分
-f:
- --quiet 或 --slient: 不显示错误信息
-R:
- --recursive: 递归处理, 将目录 以及目录下的子目录/文件 一并处理
-v:
- --vrebose, 显示详细执行过程
--reference=<参考文件或目录>:
- 把之灵文件或目录的所属群组全部设置成参考文件或目录的所属群组相同
[权限范围]+[权限]: 为指定范围用户 添加权限
[权限范围]-[权限]: 为指定范围用户 关闭指定权限
[权限范围]=[权限]: 为指定范围用户 设置指定权限
4. 实例
2.14 chown命令
1. 概述
更改文件的属主和属组, 可以某个用户授权, 使得该用户变成指定文件的使用者, 可以使用用户名/组名 或者id. 只用文件属主和超级用户有权限对文件使用该命令, 用户和组表示方法:
- root:abc 修改属主和属组为 root用户和abc 组
- root 仅修改属主
- root: 表示同时修改属主和属组 为root
- root. 表示同时修改属主和属组 为root
- :root 表示修改属组 为root
2. 语法
chonw [OPTION] [USER|GROUP] FileNames
3. 选项
-c:
- --changes 类似于 -v 效果, 但是会报更改部分
-f:
- --quite 或--silent 不显示错误信息
-h:
- 0-no-derference, 只对符号链接的文件做修改, 不更改其他任何相关文件
-R:
- --recursive, 递归操作
-v:
- 显示执行过程
--version:
- 显示版本信息
--help:
- 帮助信息
4. 实例
2.15 umask命令
1. 概述
用于设置 显示新文件权限的掩码, 当创建新文件时, 最初的默认权限是由 掩码决定的, 用户每次进入系统时, 都会被执行umask, 设置默认掩码.
2. 语法
umask [OPTIONS] PARAM
- PARAM 表示指定权限掩码
3. 选项
-p:
- 输出的权限亚麻可直接作为指令来执行
-s:
- 以符号方式输出权限掩码
4. 实例
3. 文件类型
3.1 linux中文件类型
- linux 中有7种你文件类型
-
目录文件: 就是普通目录, 可以使用cd命令进入, 第一属性为
d
-
块设备文件: 用于提供存储数据的接口设备, 如硬盘, 第一属性为
b
-
字符设备: 即串行端口设备, 如键盘,鼠标. 第一属性为
c
-
套接字设别, 这列文件通常用在网络连接, 可以启动一个程序来监听客户端的要求, 可以通过套接字通信, 第一属性为
s
-
管道文件: FIFO 也是一种特殊的文件类型, 主要目的是, 解决多个程序同时存取一个文件造成错误. 第一个属性为
p
-
连接文件: 类似windows 的快捷方式, 第一属性为
l
3.2 查看文件类型方式
-
ls -l/ ls -ld
显示的第一个字符表示文件的类型.
-
file命令
详细显示文件类型
-
stat 命令
查看文件详细类型( 包含文件时间属性 )
3.3 文件扩展名
linux中扩展名没有实际意义, 仅用于方便用户记忆 用户常用的扩展名:
- .tar, .tar.gz, .tar.zip, .tar.bz 一般用作源码
- .sh 表示 shell 脚本文件, 通过 shell 语言开发的程序
- .pl 表示 perl 语言文件, 通过 perl 语言开发
- .py 表示 python 语言开发, 通过python 语言开发
- .html, htm, .jsp, .php, .do 表示网页语言的文件
- .rpm, 表示rpm 安装文件
- .conf, .cnf 表示系统服务的配置文件
3.5 文件属性
-rw-r--r--. 1 root root 1819 Apr 11 2018 /etc/profile
文件类型及权限 硬链接个数 所有者 所属组 文件大小 最近修改的时间 文件名
-
-|rw-|r--|r--
:文件类型| 所有者权限| 所属组权限| 其他人的权限
- 权限为
rwx
, r:可读, w:可写, x:可执行, -:没有权限
- 权限为
-
硬链接数
表示这个文件有没有硬链接, 1表示只有自身一个硬链接
-
文件属主
表示该文件拥有者
-
文件属组
表示文件所属组
-
文件大小
文件大小显示的是字节数,
-
文件修改时间
文件上次修改的时间
4. 环境变量
4.1 环境变量种类
- 按照生存周期划分, linux变量可以分为两种
-
永久性:需要修改配置文件, 变量永久生效
-
零时性: 使用 export 声明接口, 变量在关闭 shell 时失效
-
4.2 设置变量
1. export 命令
-
概述
- export 用于设置或显示环境变量, shell执行过程中, export 可以新增, 修改, 删除环境变量, 便于以后执行程序使用, export 仅作用于本次登陆.
-
语法
export [OPTIONS] [VAR]=[VALUE]
-
选项 -f:
- 代表变量名中的为函数名称.
-n:
- 删除指定变量, 变量实际未删除, 只是不会影响到后续执行环境中
-p: 累出所有shell 赋予程序的环境变量
-
设置方法
4.1 对所有用户永久生效
设置在
/etc/profile
文件中, 该变量会对所欲用户永久生效4.2 对单一用户永久生效
设在
~/.bash_profile
文件中, 该变量仅对当前用户生效4.3 直接运行 export 命令 仅作用于本次登陆, 当shell 关闭了, 变量也就失效了
4.3 查看变量
-
使用echo
echo $PATH
-
使用 env
env
4.3 常用环境变量
- PATH: 决定了shell 到那些目录中寻找命令或程序
- HOME: 当前用户主目录
- HISTSIZE: 历史记录总数
- SHELL: 当前用户 shell 类型
- LANGUGE: 语言相关环境变量, 多语言可以修改此变量
- MAIL: 当前用户邮件存放地址
- PS1: 基本提示符, 对于root是
#
, 普通用户是$
END
转载于:https://my.oschina.net/nikoF/blog/2248727