目录
[一. Linux系统目录结构](#一. Linux系统目录结构)
[二. Linux文件基本属性](#二. Linux文件基本属性)
[1. 文件属性分析](#1. 文件属性分析)
[2. 更改文件属性](#2. 更改文件属性)
[2.1. chgrp:change group,更改文件所属的组](#2.1. chgrp:change group,更改文件所属的组)
[2. chown:change owner,更改文件所属的用户,也可同时更改文件所属的组](#2. chown:change owner,更改文件所属的用户,也可同时更改文件所属的组)
[3. chmod:change mode,更改文件9个属性](#3. chmod:change mode,更改文件9个属性)
[方法1 数字类型改变文件权限](#方法1 数字类型改变文件权限)
[方法2 符号类型改变文件权限](#方法2 符号类型改变文件权限)
[三. Linux文件与目录管理](#三. Linux文件与目录管理)
[1. 绝对路径与相对路径](#1. 绝对路径与相对路径)
[2. 处理目录的常用命令](#2. 处理目录的常用命令)
[2.1 ls(list,列出目录)--最常用的命令](#2.1 ls(list,列出目录)--最常用的命令)
[2.2 cd(change directory,切换目录)](#2.2 cd(change directory,切换目录))
[2.3 pwd(print working directory,显示当前所在的目录)](#2.3 pwd(print working directory,显示当前所在的目录))
[2.4 mkdir(创建新目录)](#2.4 mkdir(创建新目录))
[2.5 rmdir(删除空的目录)](#2.5 rmdir(删除空的目录))
[2.6 cp(copy file,复制文件或目录)](#2.6 cp(copy file,复制文件或目录))
[2.7 rm(remove,移除文件或目录)](#2.7 rm(remove,移除文件或目录))
[2.8 mv(move file,移动文件或目录,或修改名称)](#2.8 mv(move file,移动文件或目录,或修改名称))
[四. Linux文件内容查看](#四. Linux文件内容查看)
[1. cat (从第一行开始显示文件内容)](#1. cat (从第一行开始显示文件内容))
[2. tac(cat的倒写,文件内容从最后一行开始显示)](#2. tac(cat的倒写,文件内容从最后一行开始显示))
[3. nl(显示行号)](#3. nl(显示行号))
[4. more(一页一页翻动)](#4. more(一页一页翻动))
[5. less(一页一页翻动)](#5. less(一页一页翻动))
[6. head(取出文件前面几行)](#6. head(取出文件前面几行))
[7. tail(取出文件后面几行)](#7. tail(取出文件后面几行))
引言:针对菜鸟教程中的linux学习,记录笔记,方便后期复盘,有关资料详见Linux 系统目录结构 | 菜鸟教程 (runoob.com)
一. Linux系统目录结构
相关目录解释:
目录 | 解释 |
---|---|
/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系统是一个多用户系统,不同的用户处于不同的地位,拥有不同的权限。为保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
通常通过如下命令来修改文件或目录的所属用户与权限:
chown:change owner,修改所属用户与组
chmod:change mode,修改用户的权限
在Linux中我们可以使用 ll 或者 ls -l 命令来显示一个文件的属性以及文件所属的用户和组。
1. 文件属性分析
第一个字符代表这个文件是目录、文件或者链接文件等等。
第一个字符 | 解释 |
---|---|
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用户来说,一般情况下,文件的权限不起作用。
2. 更改文件属性
2.1. chgrp:change group,更改文件所属的组
chgrp [-R] 属组名 文件名
参数解释:
-R:更改某个目录文件的属组,该目录下的所有文件的属组都会更改
2. chown:change owner,更改文件所属的用户,也可同时更改文件所属的组
chown [-R] 属主名 文件名
chown [-R] 属主名: 属组名 文件名
例如:
3. chmod:change mode,更改文件9个属性
有两种设置方法:a. 数字; b. 符号
9个基本权限 == owner/group/others(三个身份)* read/write/execute(三个操作权限)
方法1 数字类型改变文件权限
权限 | 分数 |
---|---|
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 测试文件
方法2 符号类型改变文件权限
身份权限 | 符号 |
---|---|
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文件与目录管理
Linux的目录结构为树状结构,最顶级的目录是根目录 /,其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
1. 绝对路径与相对路径
绝对路径:根目录 / 写起
相对路径:不是由 / 写起,存在 .. 这种代指上层目录
例如:从 /usr/share/doc到 /usr/share/man,
绝对路径: cd /usr/share/man
相对路径:cd ../man
2. 处理目录的常用命令
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
2.1 ls(list,列出目录)--最常用的命令
可不带参数和目录,表示列出当前目录下的所有文件和目录
带参数和目录,选项与参数分析如下:
-a:列出该目录下的全部文件,连同隐藏文件(开头为.的文件)
-d:仅列出目录本身
-l:长数据串列出,包含文件的属性与权限等
补充:将目录下的所有文件(含属性与隐藏栏)全部列出来
ls -al ~
2.2 cd(change directory,切换目录)
cd 【相对路径或绝对路径】
cd .. // ..表示当前的上一级目录
cd ./test // .表示当前目录,该命令表示进入当前目录的test目录下
cd ~ // ~表示根目录,即 /root目录
2.3 pwd(print working directory,显示当前所在的目录)
pwd 【-P】
-P:显示实际的路径,而非链接路径
具体看菜鸟教程的解释如下:
2.4 mkdir(创建新目录)
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强制配置属性,系统会使用默认属性
2.5 rmdir(删除空的目录)
rmdir [-p] 目录名称
选项与参数:
-p:从目标目录起,同时删除多级空目录
注意:rmdir仅能删除空的目录,非空目录的删除可使用rm命令
2.6 cp(copy file,复制文件或目录)
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 |
2.7 rm(remove,移除文件或目录)
rm [-fir] 文件或目录
选项与参数:
选项与参数 | 解释 |
---|---|
-f | force,忽略不存在的文件,不会出现警告信息 |
-i | 互动模式,在删除前会询问使用者 |
-r | 递归删除 |
2.8 mv(move file,移动文件或目录,或修改名称)
mv [-fiu] source destination
mv [options] source1 source2 source3 ... directory
选项与参数:
选项与参数 | 解释 |
---|---|
-f | force,如果目标文件已经存在,不会询问而直接覆盖 |
-i | 若目标文件已经存在,会询问是否覆盖 |
-u | update,若目标文件已经存在,而source比较新,才会升级 |
四. Linux文件内容查看
Linux使用以下命令查看文件的内容:
命令 | 解释 |
---|---|
cat | 从第一行开始显示文件内容 |
tac | cat的倒写,从最后一行开始显示 |
nl | 显示的时候,输出行号 |
more | 一页一页的显示文件内容 |
less | 与more类似,并且可以往前翻页 |
head | 只看开头几行 |
tail | 只看末尾几行 |
1. cat (从第一行开始显示文件内容)
cat [-AbEnTv] 文件名
选项与参数:
选项与参数 | 解释 |
---|---|
-A | 相当于-vET的整合,可列出一些特殊字符而不是空白 |
-b | 列出行号,仅针对非空白做出行号显示,空白行不标行号 |
-E | 将结尾的断行字节$显示出来 |
-n | 打印出行号,包括空白行(不同与-b) |
-T | 将【Tab】按键以^|显示 |
-v | 列出一些看不出来的特殊字符 |
2. tac(cat的倒写,文件内容从最后一行开始显示)
对比菜鸟教程的cat与tac的举例如下:
3. nl(显示行号)
nl [-bnw] 文件
选项与参数:
选项与参数 | 解释 |
---|---|
-b指定行号的方式,主要有两种: | |
-b a | 不论是否为空行,都列出行号 |
-b t | 如果有空行,空的多行只一个默认行号 |
-n列出行号的表示方法,主要有三种: | |
-n ln | 行号在荧幕的最左显示 |
-n rn | 行号在自己栏位的最右显示,且不加0 |
-n rz | 行号在自己栏位的最右显示,且加0 |
4. more(一页一页翻动)
在more程序运行中,按键的功能如下:
按键 | 功能 |
---|---|
空白键(space) | 向下翻一页 |
Enter | 向下翻一行 |
/字符串 | 在当前显示内容中,向下搜索该关键字 |
:f | 立即显示文档名以及目前显示的行数 |
q | 立即离开more运行程序,关闭文件内容 |
b | 往回翻页(只对文件有用) |
ctrl-b | 往回翻页(只对文件有用) |
5. less(一页一页翻动)
在less程序运行中,按键的功能如下:
按键 | 功能 |
---|---|
空白键(space) | 向下翻动一页 |
向下箭头 | 向下翻动一页 |
向上箭头 | 向上翻动一页 |
/字符串 | 向下搜寻字符串 |
?字符串 | 向上搜索字符串 |
n | 重复前一个搜索 |
N | 反向的重复前一个搜索 |
q | 立即离开less运行程序,关闭文件内容 |
6. head(取出文件前面几行)
head 【-n number】 文件
选项与参数:
-n:后面接数字,代表显示文件几行内容)
不加 -n number,默认显示前面10行
7. tail(取出文件后面几行)
tail 【-n number】 文件
选项与参数:
-n:后面接数字,代表显示文件几行内容
不加 -n number,默认显示后面10行