【linux教程学习笔记】

目录

[一. 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行

相关推荐
eybk4 小时前
Pytorch+Mumu模拟器+萤石摄像头实现对小孩学习的监控
学习
6.944 小时前
Scala学习记录 递归调用 练习
开发语言·学习·scala
Aileen_0v04 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
守护者1705 小时前
JAVA学习-练习试用Java实现“使用Arrays.toString方法将数组转换为字符串并打印出来”
java·学习
学会沉淀。5 小时前
Docker学习
java·开发语言·学习
Rinai_R5 小时前
计算机组成原理的学习笔记(7)-- 存储器·其二 容量扩展/多模块存储系统/外存/Cache/虚拟存储器
笔记·物联网·学习
吃着火锅x唱着歌5 小时前
PHP7内核剖析 学习笔记 第四章 内存管理(1)
android·笔记·学习
ragnwang5 小时前
C++ Eigen常见的高级用法 [学习笔记]
c++·笔记·学习
胡西风_foxww6 小时前
【es6复习笔记】rest参数(7)
前端·笔记·es6·参数·rest