目录
一. Linux系统目录结构
编辑
二. Linux文件基本属性
1. 文件属性分析
2. 更改文件属性
2.1. chgrp:change group,更改文件所属的组
2. chown:change owner,更改文件所属的用户,也可同时更改文件所属的组
3. chmod:change mode,更改文件9个属性
方法1 数字类型改变文件权限
方法2 符号类型改变文件权限
三. Linux文件与目录管理
1. 绝对路径与相对路径
2. 处理目录的常用命令
2.1 ls(list,列出目录)--最常用的命令
2.2 cd(change directory,切换目录)
2.3 pwd(print working directory,显示当前所在的目录)
2.4 mkdir(创建新目录)
2.5 rmdir(删除空的目录)
2.6 cp(copy file,复制文件或目录)
2.7 rm(remove,移除文件或目录)
2.8 mv(move file,移动文件或目录,或修改名称)
四. Linux文件内容查看
1. cat (从第一行开始显示文件内容)
2. tac(cat的倒写,文件内容从最后一行开始显示)
3. nl(显示行号)
4. more(一页一页翻动)
5. less(一页一页翻动)
6. head(取出文件前面几行)
7. tail(取出文件后面几行)
引言:针对菜鸟教程中的linux学习,记录笔记,方便后期复盘,有关资料详见Linux 系统目录结构 | 菜鸟教程 (runoob.com)
相关目录解释:
目录 | 解释 |
---|---|
/bin | Binaries(二进制文件)缩写,存放最经常使用的程序和指令 |
/boot | 存放启动Linux时的核心文件,包括连接文件以及镜像文件 |
/dev | Device缩写,存放Linux的外部设备。 注意:在Linux中访问设备的方式和访问文件相同 |
/etc | Etcetera(等等)缩写,存放所有的系统管理所需的配置文件和子目录,更改目录下的文件可能导致系统不能启动 |
/home | 用户的主目录,Linux中每个用户都有一个自己的目录,一般该目录名以用户的账户命名。 |
/lib | Library(库)的缩写,存放系统最基本的动态连接共享库,例如(C++库),类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库 |
/lost+found | 该目录一般情况下为空,当系统非法关机后,这里便会存放文件 |
/media | Linux系统会自动识别一些设备,例如U盘、光驱等,识别后,Linux会把识别的设备挂载到这个目录上 |
/mnt | 系统提供该目录是为了让用户临时挂载别的文件系统,可将光驱挂载在/mnt/上,然后进入该目录就可查看光驱里的内容 |
/opt | optional(可选)的缩写,主机额外安装软件所摆放的目录。例如,安装一个ORACLE数据库可放在这个目录。默认为空 |
/proc | Processes(进程)缩写,/proc是虚拟文件系统,存储当前内核运行状态的一系列特殊文件,该目录是虚拟目录,是系统内存的映射,可直接访问这个文件目录来获取系统信息。这个目录的内容不在硬盘上而在内存里,可直接修改里面的某些文件, |
/root | 系统管理员目录,也称超级权限者的用户目录 |
/sbin | Superuser Binaries(超级用户的二进制文件)的缩写,存放系统管理员使用的程序和指令 |
/srv | 存放服务启动之后需要提取的数据(不用服务器即为空) |
/sys | 该目录安装了2.6内核中新出现的一个文件系统sysfs,sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映,当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建 |
/tmp | temporary(临时)的缩写,用来存放一些临时文件 |
/usr | unix shared resources(共享资源)的缩写,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录(重点目录) |
/usr/bin | 系统用户使用的应用程序与指令 |
/usr/sbin | 超级用户使用的比较高级的管理程序和系统守护程序 |
/usr/src | 内核源代码默认的放置目录 |
/var | variable(变量)的缩写,习惯将那些经常被修改的目录放在该目录下,包括各种日志 |
/run | 临时文件系统,存储系统启动以来的信息,当系统重启时,该目录下的文件应该被删除或清掉。 |
对以上文件目录可以分为如下:
系统启动必须:/boot /etc /lib /sys
指令集合:/bin /sbin
外部文件管理:/dev /media /mnt
临时文件:/run /lost+found /tmp
账户:/root /home /usr /usr/bin /usr/sbin /usr/src
运行过程:/var /proc
扩展:/opt /srv
Linux系统是一个多用户系统,不同的用户处于不同的地位,拥有不同的权限。为保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
通常通过如下命令来修改文件或目录的所属用户与权限:
chown:change owner,修改所属用户与组
chmod:change mode,修改用户的权限
在Linux中我们可以使用 ll 或者 ls -l 命令来显示一个文件的属性以及文件所属的用户和组。
第一个字符代表这个文件是目录、文件或者链接文件等等。
第一个字符 | 解释 |
---|---|
d | 目录 |
- | 文件 |
l | 链接文档(link file) |
b | 装置文件里面的可供存储的接口设备(可随机存储装置) |
c | 装置文件里面的串行端口设备 例如键盘、鼠标(一次性读取装置) |
接下来的字符中,三个为一组,且均为rwx的三个参数的组合,其中r(read)可读、w(write)可写、x(execute)可执行。
注意:三个权限的位置不会改变,若没有权限,则以减号 “-” 代替。
第0位确定文件的类型,1-3位确定文件所有者的拥有该文件的权限,4-6位确定所有者同组用户拥有该文件的权限,7-9位确定其他用户拥有该文件的权限。
固定的位置:
第1、4、7位:表示读权限,可读则用r,不可读则用 -
第2、5、8位:表示写权限,可写则用w,不可写则用 -
第3、6、9位:表示执行权限,可执行则用x,不可执行则用 -
对于root用户来说,一般情况下,文件的权限不起作用。
chgrp [-R] 属组名 文件名
参数解释:
-R:更改某个目录文件的属组,该目录下的所有文件的属组都会更改
chown [-R] 属主名 文件名
chown [-R] 属主名: 属组名 文件名
例如:
有两种设置方法:a. 数字; b. 符号
9个基本权限 == owner/group/others(三个身份)* read/write/execute(三个操作权限)
权限 | 分数 |
---|---|
r(read) | 4 |
w(write) | 2 |
x(execute) | 1 |
owner/group/others各自的三个权限r/w/x是需要累加的,
例如:权限数字774 ===
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = r-- = 4 + 0 + 0 = 4
对应的变更权限的指令chmod如下:
chmod [-R] 774 测试文件
身份权限 | 符号 |
---|---|
user:用户 | u |
group:组 | g |
others:其他 | o |
all:全部身份 | a |
所以可用如下的方式:
身份权限 | 操作 | 读写权限 | ||
---|---|---|---|---|
chmod | u g o a |
+ (添加) -(除去) =(设定) |
r w x |
文件或目录 |
例1:要将文件权限设置为-rwxr-xr--,可以使用如下:
touch test1 //创建test1文件
ls -al test1 //查看test1默认权限
chmod u=rwx,g=rx,o=r test1 //修改test1权限
ls -al test1 //再次查看test1权限,看权限是否成功更改
例2 拿掉test1全部人的可执行权限(不改变其他已存在的权限)
chmod a-x test1 //去掉全部人的x(可执行)权限
ls -al test1 //查看test1的权限
Linux的目录结构为树状结构,最顶级的目录是根目录 /,其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
绝对路径:根目录 / 写起
相对路径:不是由 / 写起,存在 .. 这种代指上层目录
例如:从 /usr/share/doc到 /usr/share/man,
绝对路径: cd /usr/share/man
相对路径:cd ../man
ls:list files,列出目录及文件名
cd:change directory,切换目录
pwd:print work directory,显示当前的目录
mkdir:make directory,创建一个新的目录
rmdir:remove directory,删除一个空的目录
cp:copy file,复制文件或目录
rm:remove,删除文件或目录
mv:move file,移动文件与目录,或修改文件与目录的名称
可用命令 man 查看各个命令的使用文档,例如 man rm
可不带参数和目录,表示列出当前目录下的所有文件和目录
带参数和目录,选项与参数分析如下:
-a:列出该目录下的全部文件,连同隐藏文件(开头为.的文件)
-d:仅列出目录本身
-l:长数据串列出,包含文件的属性与权限等
补充:将目录下的所有文件(含属性与隐藏栏)全部列出来
ls -al ~
cd 【相对路径或绝对路径】
cd .. // ..表示当前的上一级目录
cd ./test // .表示当前目录,该命令表示进入当前目录的test目录下
cd ~ // ~表示根目录,即 /root目录
pwd 【-P】
-P:显示实际的路径,而非链接路径
具体看菜鸟教程的解释如下:
mkdir [-mp] 目录名称
选项与参数:
-m:配置文件的权限,直接配置,无需看默认权限
-p:直接将所需的目录(含上一级目录)递归创建起来
例1:
mkdir test //创建一个名为test的新目录
mkdir test1/test2/test3 //报错!!
mkdir -p test1/test2/test3 //成功创建多层目录
例2:创建权限为rwx--x--x的目录
mkdir -m 711 test //若没有-m强制配置属性,系统会使用默认属性
rmdir [-p] 目录名称
选项与参数:
-p:从目标目录起,同时删除多级空目录
注意:rmdir仅能删除空的目录,非空目录的删除可使用rm命令
cp [-adfilprsu] 源文档source 目标文档destination
cp [options] source1 source2 source3 ... directory
选项与参数:(红色为常用参数)
选项与参数 | 解释 |
---|---|
-a | 相当于-pdr (-p、-d、-r三者之和) |
-d | 若来源文档为链接档的属性(link file),则复制链接档属性而非文件本身 |
-f | force,若目标文件已经存在并且无法开启,则移除后再尝试一次 |
-i | 若目标文档已经存在,则覆盖时先询问动作的进行 |
-l | 进行硬式链接(hard link)的链接档创建,而非复制文件本身 |
-p | 连同文件的属性一起复制过去,而非使用默认属性 |
-r | 递归持续复制,用于目录的复制行为 |
-s | 复制成为符号链接档 |
-u | update,若目标文档比原文档旧,才升级destination |
rm [-fir] 文件或目录
选项与参数:
选项与参数 | 解释 |
---|---|
-f | force,忽略不存在的文件,不会出现警告信息 |
-i | 互动模式,在删除前会询问使用者 |
-r | 递归删除 |
mv [-fiu] source destination
mv [options] source1 source2 source3 ... directory
选项与参数:
选项与参数 | 解释 |
---|---|
-f | force,如果目标文件已经存在,不会询问而直接覆盖 |
-i | 若目标文件已经存在,会询问是否覆盖 |
-u | update,若目标文件已经存在,而source比较新,才会升级 |
Linux使用以下命令查看文件的内容:
命令 | 解释 |
---|---|
cat | 从第一行开始显示文件内容 |
tac | cat的倒写,从最后一行开始显示 |
nl | 显示的时候,输出行号 |
more | 一页一页的显示文件内容 |
less | 与more类似,并且可以往前翻页 |
head | 只看开头几行 |
tail | 只看末尾几行 |
cat [-AbEnTv] 文件名
选项与参数:
选项与参数 | 解释 |
---|---|
-A | 相当于-vET的整合,可列出一些特殊字符而不是空白 |
-b | 列出行号,仅针对非空白做出行号显示,空白行不标行号 |
-E | 将结尾的断行字节$显示出来 |
-n | 打印出行号,包括空白行(不同与-b) |
-T | 将【Tab】按键以^|显示 |
-v | 列出一些看不出来的特殊字符 |
对比菜鸟教程的cat与tac的举例如下:
nl [-bnw] 文件
选项与参数:
选项与参数 | 解释 |
---|---|
-b指定行号的方式,主要有两种: |
|
-b a | 不论是否为空行,都列出行号 |
-b t | 如果有空行,空的多行只一个默认行号 |
-n列出行号的表示方法,主要有三种: | |
-n ln | 行号在荧幕的最左显示 |
-n rn | 行号在自己栏位的最右显示,且不加0 |
-n rz | 行号在自己栏位的最右显示,且加0 |
在more程序运行中,按键的功能如下:
按键 | 功能 |
---|---|
空白键(space) | 向下翻一页 |
Enter | 向下翻一行 |
/字符串 | 在当前显示内容中,向下搜索该关键字 |
:f | 立即显示文档名以及目前显示的行数 |
q | 立即离开more运行程序,关闭文件内容 |
b | 往回翻页(只对文件有用) |
ctrl-b | 往回翻页(只对文件有用) |
在less程序运行中,按键的功能如下:
按键 | 功能 |
---|---|
空白键(space) | 向下翻动一页 |
向下箭头 | 向下翻动一页 |
向上箭头 | 向上翻动一页 |
/字符串 | 向下搜寻字符串 |
?字符串 | 向上搜索字符串 |
n | 重复前一个搜索 |
N | 反向的重复前一个搜索 |
q | 立即离开less运行程序,关闭文件内容 |
head 【-n number】 文件
选项与参数:
-n:后面接数字,代表显示文件几行内容)
不加 -n number,默认显示前面10行
tail 【-n number】 文件
选项与参数:
-n:后面接数字,代表显示文件几行内容
不加 -n number,默认显示后面10行