Linux文件系统(shell基本指令介绍)
目录:
- Linux文件系统(shell基本指令介绍)
- chmod +/-rwx <文件/目录名>
- chmod [-R] [OCT] <文件/目录名>
- chown <用户名> <文件/目录名>
- groupadd <组名>
- groupdel <组名>
- cat /etc/group
- chgrp -R <组名> <文件名/目录名>
- useradd [-m -g] <组> <新建用户名>
- passwd <用户名>
- userdel -r <用户名>
- cat /etc/passwd | grep <用户名>
- id [用户名]
- who
- whoami
- usermod -g <组> <用户名>
- usermod -G <组> <用户名>
- usermod -s /bin/bash
- usermod -G sudo <用户名>
- which command
- su [-] [用户名]
- exit
- umask
- umask [三位umask值]
- date
- cal [-y]
- df -h
- du -h [目录名]
- ps [aux]
- top
- q
- kill [-9] < PID >
- ln [-s] < sourcefile > < newfile >
- ls -l [文件名]
- cat [文件名]
- tar -cvf <打包后文件名.tar> <被打包的文件/路径列表>
- tar -xvf <打包文件.tar>
- tar -zcvf <打包压缩后文件名.tar.gz> <被打包的文件/路径列表>
- tar -zxvf <打包文件.tar.gz>
- tar -zxvf <打文件.tar.gz> -C <目标路径>
- tar -jcvf <打包压缩后文件名.tar.bz2> <被打包的文件/路径列表>
- tar -jxvf <打包文件.tar.bz2>
- tar -jxvf <打文件.tar.bz2> -C <目标路径>
- sudo apt install <软件包>
- sudo apt remove <软件名>
- sudo apt upgrade <软件名>
一、基本概念
-
Linux文件系统的结构层次分明,呈树状结构,就像一颗倒立的树
-
Linux的文件类型有普通文件、目录和链接文件等。其中,Linux的根目录表示为 “/”
-
Linux可以分为两种用户:1)root用户、2)非root用户,其中root用户为最高权限用户,非root用户为一般权限用户
-
在Linux的Terminal命令行模式中,两种类型的用户的前缀也有区别:
-
1️⃣root用户:
其中 “root” 为用户名,“~” 表示当前处在用户主目录,“#” 表示这是root用户 -
2️⃣非root用户:
其中 “CLC” 为用户名,“~” 表示当前处在用户主目录,“$” 表示这是非root用户
注: root用户的用户主目录为 /root,非root用户的用户主目录为 /home
二、Linux的两种路径类型
✅风格约定————从这一节开始我们将会介绍Linux的基本指令,为方便讲解,我们将约定以下风格:
指令 [可选项] <必选项> …
这里会介绍该指令的作用、用法以及选项的作用,其中用 “[ ]” 框起来的选项是可选的,即可以缺省或忽略的;用 “< >” 框起来的选项是必填的,不可缺省
注:指令和选项之间使用空格隔开,在shell中所有指令输入的选项均不带有 “[ ]” “< >” 等符号,这里只是用以区分
------👇下面开始正式介绍 👇------
Linux系统包括两种路径类型,即:
- 绝对路径:从根目录开始的路径
- 相对路径:从当前目录开始的路径
- 在终端中,当前目录下可用
.
表示;上一级目录可用..
表示
pwd
该指令可以按绝对路径查看用户当前所处的目录
例如:
/home/lcx/Readme.txt
各级符号的含义如下:
/ | home | / | lcx | / | Readme.txt |
---|---|---|---|---|---|
根目录 | home目录 | 分隔符 | lcx目录 | 分隔符 | Readme.txt文本文件 |
即该路径表示 根目录 下的 home 目录下的 lcx 目录下的 Readme.txt 文件,其中,第一个 /
指的是根目录,之后的 /
只是各目录名和文件名之间的分隔符,用于区分名称。由于该路径是从 根目录 开始的,因此这是一个绝对路径
- 在安装了 tree 的情况下,还可以通过 tree 指令来以树状结构显示文件
tree [选项] [目录路径]
显示从指定目录开始的文件树状结构
[选项]:
-p
只显示目录而不显示文件(即只显示文件夹)
缺省时,就显示从当前目录开始的文件树状结构
例如: 以树状结构显示 /root 目录下的文件
注: tree 需要安装,用户若没有 tree,则可以以下指令下载:
sudo apt-get update
sudo apt install tree
三、文件基础操作指令
clear
对Terminal终端(小黑窗)上的内容清屏
fflush (stdin);
清空缓冲区的字符,例如对于getchar();
中所收录的回车键就存放在缓冲区中,该命令可以清空
1.文件理论
对每个执行的命令,Linux系统都会自动打开3个文件,并且都有一个文件描述符与之对应(文件描述符相关知识将在Linux系统编程中讲解):
1️⃣ stdin 标准输入文件,一般指键盘输入,用0表示
2️⃣ stdout 标准输出文件,一般指显示器,用1表示
3️⃣ stderr 标准出错处理文件,一般指显示器,用2表示
2.创建新目录
mkdir [选项] <目录路径>
创建一个新的目录,并命名为<目录路径>最后一个分隔符后的名称
[选项]:
-m
对新建的目录设置权限(见 chmod 命令)
-p
创建存在中间路径的目录
缺省时,则默认在当前目录下新建目录
touch <文件名.扩展名>
通过 touch 命令可以创建指定扩展名的文件如 .txt、.c等
- 如果文件不存在,则可以创建一个空白文件
- 如果文件已存在,则可以修改文件的末次修改时间
例如: 在当前目录下的 CLC 目录下创建名为 file1 的目录,然后在 file1 目录下创建名为 file2 目录
mkdir -p CLC/file1/file2
其中,由于 file1 是一个中间路径,原本不存在,所以需要加上 -p
后,来完成链式创建
3.改变用户所在位置
cd <路径>
变更用户当前所在位置,可以是相对路径或绝对路径
例如:
cd ~ # 进入用户主目录
cd - # 返回进入此目录之前的所在目录
cd .. # 返回当前目录的上一级目录(父目录)
cd . # 进入当前目录,即位置不变
4.删除空目录
rmdir [选项] <目录路径>
删除空白目录
[选项]:
-p
当子目录被删除后,若其父目录成为空目录,则连同父目录一并删除
-v
将提示删除操作成功
-pv
前面两条一起使用,其他命令的选项也如此操作即可
5.列出目录内容
ls [选项] [目录路径]
列出目录中的文件和目录,可显示相关信息
[选项]:
-a
显示指定目录下的所有目录与文件,包括隐藏文件
-d
将目录名像其他文件一样列出,而不是列出目录里面的文件
-l
采用长格式来显示文件的详细信息,ls -l
也可以直接使用命令ll
,效果一样
-r
将目录的内容清单以英文字母顺序的逆序显示
-R
若模板目录及子目录中有文件,就列出所有的文件
-t
按时间信息排序
-h
可以配合-l
来使用 K、M、G 或 T 等单位来显示文件大小,平常是以字节来显示(注:单独使用无效果,需要配合-l
使用)
注: 每个单位之间的换算关系是1024倍,因为计算机是以二进制的方式来存储的
✔通配符的使用:
- 通配符
*
可以代表任意长度的字符 - 通配符
?
可以代表一个长度的字符 - 通配符
[]
可以代表一个字符组,如[abc]
可以表示a或b或c的三个单字符,不是字符串
例如:
ls want* # 可以用来显示以want字符开头的文件
ls *want.txt # 可以用来显示以want.txt为结尾的文件(注:要加扩展名,如:.txt 或 .c等)
ls *want* # 可以略过扩展名来查看文件
ls [abc]want* # 可以匹配以 a 或 b 或 c 开头,后面跟着want的文件
ls [a-f]want* # 可以匹配以 a 到 f 的任意字符开头,后面跟着want的文件
ls [1-7]want* # 可以匹配以 1 到 7 的任意字符开头,后面跟着want的文件
其他重要补充:
1️⃣ 打印目录信息后,后蓝色的文件名为目录,绿色的文件名为普通文件,名字开头带有 “.” 的为隐藏文件:
2️⃣ ls -l
选项列出后,一般开头的第一个字母有几种,它们的含义如下:
- “-” 表示普通文件
- “d” 表示目录文件
- “l” 表示链接文件
- “p” 表示命名管道(FIFO)
- “c” 字符设备文件
- “b” 块设备文件
例如: 以 file1 目录为例,介绍其 ls -l
的各部分含义
文件属性 | 连接数 | 所有者 | 所有者所在组 | 文件字节大小(字节) | 最近一次修改时间 | 文件名 |
---|---|---|---|---|---|---|
drwxr-xr-x | 2 | CLC | book | 4096 | Oct_4_00:00 | file1 |
6.查看文件内容
1️⃣ cat
cat [选项] <文件列表>
可以用于查看文本文件
[选项]:
-E
在每一行的末尾显示符号 “$”
-n
显示每一行的行号,包括空行
-b
显示每一行的行号,不包括空行
--help
显示这个命令的用途,简要解释每一个选项的作用,对于其他命令也可使用这个选项
<文件列表>:
需要查看的文件的路径,如果是多个文件,则各文件路径之间由空格分开
例如: 选项 -b 查看 a.c 文件
2️⃣ more
more [选项] <文件列表>
[选项]:
+number 从第 number 行开始显示内容(number 是一个整数值)
-number 指定每屏幕要显示 number 行
-s
把重复的空行,压缩成一个空行
-p
不以卷动的方式显示每一页,而是先清除整个屏幕,再显示文本
+number1 -number2 这两个选项可同时使用,由于前置符号不同,所以 “+” 和 “-” 要分开写(number1 和 number2 分别是两个整数值)
<文件列表>:
需要查看的文件的路径,如果是多个文件,则各文件路径之间由空格分开
注: 分页显示时,若打开的文件有多页,则按空格可以翻到下一页
3️⃣ less
less [选项] <文件列表>
[选项]:
-N
显示行号
-pwant 在文件中查找匹配 want 第一次出现位置(注:want 可以是数字、字符串等),即根据匹配信息寻找所选项目
<文件列表>:
需要查看的文件的路径,如果是多个文件,则各文件路径之间由空格分开
例如: 选项 -pprintf 匹配查找 a.c 文件中的 printf
,并高亮标出
less -pprintf a.c
🔶总结一下,cat、more、less的区别如下:
-
cat 命令功能用于一次性打印显示整个文件的内容,单独使用没有翻页功能
-
more 命令让画面在显示满一页时暂停,此时可以按空格键继续显示下一个画面,或按 Q 键退出显示
-
less 命令的用法与 more 命令类似,也可以原来浏览超过一页的文件,不同的是 less 命令除了可以按空格键显示文件外,还可以利用上下键来卷动文件。当浏览结束时,只要在 less 命令的提示符 “:” 下按 Q 键即可
-
此外,在Ubuntu上安装了 gedit 文本编辑器软件后还可以直接用以下指令打开文件:
gedit <文件路径>
7.查看文件大小
du [选项] <文件列表>
查看文件或某一目录下各文件的大小
[选项]:
-a
对涉及到的所有文件进行统计,二不只是包含子目录
-b
输出以字节为单位的大小
-k
输出以1024字节为计数单位的大小
-m
输出以兆字节的块为计数单位的大小(就是 102 4 2 1024^2 10242 个字节的单位)
-c
给出总计,该选项被用给出指定的一组文件或目录使用的空间的总和
<文件列表>:
需要查看的文件的路径,如果是多个文件,则各文件路径之间由空格分开;如果指定的是目录,则查看这些目录下各文件的大小
8.文本搜索工具
grep [选项] <要搜索的文本> <文件列表>
可以在指定的文件中搜索指定的内容
[选项]:
-n
显示匹配行和行号
-v
显示不包含匹配内容的所有行(相当于求反)
-i
忽略大小写
<要搜索的文本>:
如果要搜索的文本含有空格,则需要用""
将其括起来,如:"Hello linux"
此处允许进行模式查找,又称正则表达式:
^want 搜索以want开头的行
want$ 搜索以want结尾的行
<文件列表>:
需要查看的文件的路径,如果是多个文件,则各文件路径之间由空格分开
例如: 搜索当前目录下 SE.py 和 _init_.py 两个文件中的 import
9.echo指令(通常与重定向一起使用)
echo可以把指定内容重新显示在屏幕中
echo <文本或表达式> [<重定向符> <文件>]
[<重定向符> <文件>]:
<重定向符>:
>
表示输出,把 echo 要打印的内容覆盖到 <文件> 中(注:会覆盖原内容),若文件不存在,则新建文件
>>
表示追加,把 echo 要打印的内容追加到 <文件> 中,不覆盖原内容,而是追加到文件的结尾
指令 [<重定向符> <文件>]
[<重定向符> <文件>]:
<重定向符>:
>
表示输出,把指令要打印的内容覆盖到 <文件> 中(注:会覆盖原内容),若文件不存在,则新建文件
>>
表示追加,把指令要打印的内容追加到 <文件> 中,不覆盖原内容,而是追加到文件的结尾
例如: 显示 Hello linux
例如: 将打印的 Hello linux 重定向到 a.txt 文件中
例如: 将 ls -lh
指令显示的内容重定向到 a.txt 文件中
例如: 执行 Python 脚本 train.py,将脚本打印的内容重定向到 result.txt 文件中
python train.py > result.txt
例如: 显示终端的所有环境变量
echo $PATH
其中各环境变量之间通过 : 隔开
例如: 显示 SHELL / BASH 的环境变量
echo $SHELL
echo $BASH
10.管道 |
Linux允许将 一个命令的输出 通过 管道 作为 另一个命令的输入
常用管道 | 的命令有:more
和 grep
[指令1] | [指令2]
管道符的左端为写入端 | 管道符的右端为读取端,即把 [指令1] 的输出结果作为 [指令2] 的输入
注: 管道允许连续使用:指令1 | 指令2 | 指令3 …
例如: 将当前目录下 ls -lh
指令显示的结果作为 more
的输入
ls -lh ~ | more
例如: 将当前目录下 ls -lh
指令显示的结果作为 grep
(grep 搜索 abc)的输入
ls -lh ~ | grep abc
11.文件复制
cp [选项] <文件或目录1> <文件或目录2>
复制文件
[选项]:
-i
如果目的文件已存在,会在覆盖前提示,要求用户是否覆盖,回答“y”时文件将被覆盖
-p
保留文件的权限属性和修改时间行
-r
递归地复制目录(即复制文件夹)
<文件或目录>:
文件或目录1 被复制的文件或目录
文件或目录2 要复制到的文件或目录
注: 文件2路径的最后一项名称应为复制后的文件或目录名(可以对移动的文件进行重命名),缺省时则默认使用原名
注: 复制文件必须具有相应的权限:源文件的读权限、包含文件1的目录执行权限和文件2所在目录的写权限
12.文件移动
mv [选项] <文件1> <文件2>
mv [选项] <文件列表> <目标目录名>
移动一个或多个文件或目录
[选项]:
-f
在覆盖目标文件前都不提示用户
-i
在覆盖目标文件前提示用户(最好增加,因为在终端中修改后无法恢复)
<文件>:
文件1 要移动的文件或目录
文件2 文件1转移后的路径
注: 文件2路径的最后一项名称应为复制后的文件名(可以对移动的文件进行重命名),缺省时则默认使用原名
文件列表 要转移的多个文件或目录的文件名或目录名(文件名之间用空格隔开)
目标目录名 多个文件转移后所在的目录路径
例如: 把 file1 目录下的 file2 目录文件,转移到当前工作目录下,并改名为 file
例如: 利用 mv 指令对文件进行重命名,如下,把 a.txt 重命名为 b.txt
mv a.txt b.txt
13.文件删除
rm [选项] <文件列表>
删除文件或目录
[选项]:
-r
递归的移除目录中的内容及目录本身(文件夹),注:rm本身不可删除文件夹,在加 -r 后就可以删除目录
-i
在删除文件列表中的文件前给出提示
-f
强制删除、在删除文件列表的文件前不予以提示、忽略不存在的文件
例如: 以删库跑路为例——以root用户的权限,递归地删除根目录下的所有文件,且不予以提示
sudo rm -rf /
sudo
表示使用系统管理员身份(权限)去执行
注: 使用 rm 指令所删除的内容不会置于回收站中,因此不可恢复,在使用时要注意
14.文件比较
diff [选项] <文件1> <文件2>
可比较两个文本文件间的内容
[选项]:
-b
忽略行尾的空,把空白字符串当作相同的字符串来处理
-h
快速比较
-c
使用 context 模式比较
-u
使用 unified 模式比较
-y
以并列的方式比较文件的异同
[文件]:
文件1和文件2,是要比较的两个文件
例如: 比较两个C程序文件:a.c 和 lb.c 的内容
图中内容解释如下:
红框中:“5c5” 和 “7c7” 是 “数字1+字母+数字2” 的组合,数字1 和 数字2 可能是用逗号隔开的多个整数,数字1 和 数字2 分别指输入指令 diff 时指定的 文件1 和 文件2 中对应的行,字母则有多种可能,分别代表不同的含义
字母 | 词义 | 含义 |
---|---|---|
a | add | 文件1 的第 “数字1” 行被添加了 文件2 的第 “数字2” 行后,则内容相同 |
c | change | 文件1 的第 “数字1” 行替换成 文件2 的第 “数字2” 行后,则内容相同 |
d | delete | 文件1 的第 “数字1” 行被删除后,才能与 文件2 的第 “数字2” 行及以上的行相同 |
蓝框中:开头为 “<” 表示是 文件1 的内容,开头为 “>” 表示是 文件2 的内容
注: 实质上,diff 命令在执行时,是通过一行一行的检查来比较两个文件的内容,并以命令的形式显示它们之间的区别
15.删除重复行
uniq [选项] <输入文件> [输出文件]
删除文件中所有连续的重复行显示,只留下一行
[选项]:
-c
在每行之前显示它们重复出现的次数
-d
只显示重复行
-u
只显示未重复的行
<输入文件>:
是需要执行命令的有连续重复行的文件
[输出文件]:
是删除重复行后得到的文件,缺省时,则把删除结果打印在终端上
注: 该命令不改变源文件的内容,只是把结果输出到屏幕或文件中
16.查看帮助手册
指令 --help
可以查看所指定指令的帮助文档
man 指令
可以查看所指定指令的 man 手册,包括传入的参数等
注: 在使用 man 手册的时候有如下按键操作:
按键 作用 空格 转至下一页 Enter 向下滚动一行 B 往回滚动一页 F 向前滚动一页 Q 退出手册 /want 搜索字符串,其中 want 是任意字符串 通过上述两个指令可在Linux系统中查找到相关指令或相关系统函数的参数使用资料,方便开发
17.查找文件
find [路径] -name “扩展名”
查找指定路径下扩展名是指定 扩展名 的文件,包括子目录中的文件
扩展名:
文件扩展名,如:“Readme.txt” 是以 .txt为扩展名的文件
也可以是前面介绍的通配符
例如:
find -name "*l*"
是查找当前目录下包含 l 的文件
find -name "*.cpp"
查找当前目录下以 .cpp 为扩展名的文件
find Desktop/ -name "abc*"
查找当前目录下的 Desktop 目录中以 abc 为开头的文件
18.可提高工作效率的技巧
Tab
Tab Tab
↑
↓
-
按1次Tab按键可以自动补全要写入的文件名等
-
对于具有重复开头的文件名,按1次Tab按键没有响应,但按下2次Tab时,系统会显示以该字符为开头的文件名,即可供选择的文件名
-
通过↑和↓按键可以快速调出历史使用过的指令
四、文件安全与权限(不常用)
1.访问权限的基本分类
(1)r 可读:允许用户读取其内容,而禁止对其做任何的更改操作
(2)w 可写:表示可以改写该文件的内容、删除文件(要有文件所在目录的写权限)
(3)x 可执行:可执行权限表示允许将该文件作为一个程序执行,如:C程序文件
(4)- 没有该权限:在 rwx 的对应位置为 - 表示没有该权限
2.对目录的访问权限
(1)可读:表示允许显示该目录中的内容
(2)可写:表示可以在该目录中新建、删除、重命名文件以及修改子目录名
(3)可执行:表示可以进入该目录,可执行基本权限,如果没有该权限,则无法进入该目录,也就无法使用可写的权限
3.访问权限的用户类别
访问权限的用户类别,有三种不同的类型的用户可对文件或目录进行访问:
(1)文件所有者 (2)同组用户 (3)其他用户
- 同组用户指的是具有相同权限的一组用户
4.用户访问权限的查看
通过以下指令可以查看各文件的权限:
ls -l
图中红色框选位置的代表含义分别为:
第1列 | 第2列 | 第3列 | 第4列 | 第5列 | 第6列 |
---|---|---|---|---|---|
文件属性 | 文件所有者权限 | 同组用户权限 | 其他用户权限 | 文件所有者 | 同组组名 |
(注:同组用户的root是组名不是root用户) |
- 由于读、写和执行为三个权限,有权限为1,无权限为0,因此可以通过八进制数来表示用户的权限。例如上述:rwx r-x r-x 则可表示为 111 101 101转为八进制数即为755
5.用户权限的更改
chmod +/-rwx <文件/目录名>
+[rwx] 表示增加权限,rwx为可选组合
-[rwx] 表示减少权限,rwx为可选组合
- 但这种修改方式是对文件所有者、同组用户、其他用户同时进行修改,无法精确到指定组
chmod [-R] [OCT] <文件/目录名>
-R 递归地修改文件/目录的权限
[OCT] 表示以八进制的形式来表示3×3的权限,例:755 表示 111 101 101
- 可以精确到指定的组
chown <用户名> <文件/目录名>
可以修改文件的拥有者
- 这些操作可能需要sudo获取root权限
提示:
- 当目录没有可读权限时,将无法进入和读取对应的目录内容
- 当目录没有可写权限时,将无法修改当前的目录的内容
- 当目录没有可执行权限时,将无法执行与对应目录相关的终端指令,如 ls 等
- 超级用户root具有最高权限
- 当其他用户需要执行权限之外的权限时,可以在指令前添加sudo,通过输入root密码即可执行
6.用户组管理
groupadd <组名>
可以添加组
groupdel <组名>
可以删除组
cat /etc/group
确认组信息,组信息存储在 /etc/group,需要有可读权限
chgrp -R <组名> <文件名/目录名>
-R 递归地修改文件/目录的所属组
- 这些操作可能需要sudo获取root权限
7.用户管理
useradd [-m -g] <组> <新建用户名>
可以添加新用户
[选项]:
-m 自动建立用户家目录
-g 指定用户所在组,否则会建立一个与新建用户名同名的组
- -m 和 -g 这两个选项一般都要选上
- 如果没有指定-m,则在passwd中会指明新建用户的家目录;但该家目录并不存在,需要自建并设置权限
- 如果新建用户时忘记添加-m,最简单的方法就是删除用户重新新建,否则自建家目录并设置权限较麻烦
passwd <用户名>
可以设置用户密码,如果是普通用户,直接用passwd可以修改自己账户的密码
userdel -r <用户名>
删除用户,-r 选项会自动删除用户家目录
cat /etc/passwd | grep <用户名>
可以确认用户信息
- 新用户创建后,用户信息会保存在 /etc/passwd 中
- 这些操作可能需要sudo获取root权限
例:通过指令 cat -n /etc/passwd 确认所有用户信息(-n是显示行号)
8.查看用户信息
id [用户名]
缺省时则显示当前用户的信息
查看用户UID(用户代号)和GID(组代号)信息,如图
uid=0(root)是用户代号和用户名,gid=0(root)是组代号和组名
- UID保存在 /etc/passwd 中,如图:
最下面的红框中,0:0左边的0是指用户代号UID,右边的0是指组代号GID
提示:在passwd中所显示的为7个信息,分别用6个冒号分隔开:
序号 | 代表信息 |
---|---|
1 | 用户名 |
2 | 密码(x表加密) |
3 | UID |
4 | GID |
5 | 用户全名或本地账号 |
6 | 家目录 |
7 | 登录使用的shell(Ubuntu默认使用的是dash) |
- GID保存在 /etc/group中,如图:
红色框框中表示的就是组代号GIDwho
查看当前所有登录的用户列表
whoami
查看当前登录用户的账户名
9.修改用户的组信息
- 主组:通常在新建用户时指定,在 /etc/passwd 的第4列GID对应的组
使用 id 指令也可以查看指定用户的附加组,如图 groups=…
- 附加组:在 /etc/group 中最后一列表示该组的用户列表,用于指定用户的附加权限,如图
提示:即该用户除了拥有主组的权限之外,还可以加以其他权限(附加组的权限)
usermod -g <组> <用户名>
可以修改用户的主组
usermod -G <组> <用户名>
可以修改用户的附加组
usermod -s /bin/bash
可以修改用户的登录shell,如果在SSH中输入一些指令和Ubuntu中的打印方式不一样,或在SSH不带颜色时,可以修改登录shell来使SSH具备颜色
usermod -G sudo <用户名>
默认使用useradd添加的用户是没有sudo的root权限的,可以通过这个方式添加sudo附加组
10.命令文件相关
which command
其中command是指令,可以查看当前指令的执行文件所在位置
例:列出了修改密码指令passwd和列表指令ls程序的所在位置
11.临时切换用户
su [-] [用户名]
(需要密码)可以输入密码后切换到另一用户
[-]:
添加了 “-” 选项之后可以同时将当前目录切换至切换后的用户的家目录
用户名缺省时,则切换至root用户
- 提示:su指令如同(盗梦空间)一样,可以层层切换进入另一用户,并且每一次exit都只是退出一层梦境(用户),因此可以通过掷陀螺(whoami指令)来区分您当前处于哪一层梦境(用户)
exit
通过exit可以退出切换,返回原用户
12.umask介绍
在Linux中,当我们创建一个新的文件或目录时,这些新的文件或目录都会有默认的访问权限,umask 命令与文件和目录的默认访问权限有关
Linux规定:用户创建文件的默认权限为 -rw-rw-rw- ,创建目录的默认权限为 drwxrwxrwx,而 umask 的值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值
umask
可以查看当前用户的 umask 值
例:Linux一般用户的 umask 值都为 0002
那么 002 中第一个 0 与文件所有者的权限有关,0 表示该用户权限减0,也就是权限不变,因此,该用户创建新文件或目录时对文件所有者的最终默认权限为 rw-
和 rwx
;
第二个 0 与同组用户的权限有关,0 表示该用户权限减0,也就是权限不变,因此,该用户创建新文件或目录时对同组用户的最终默认权限为 rw-
和 rwx
;
最后一个 2 与其他用户的权限有关,2 表示该用户权限减2,也就是010,相当去掉可写权,因此,该用户创建新文件或目录时对其他用户的最终默认权限为 r--
和 r-x
;
因此,对于 umask 为 0002 的用户来说,其最终权限为 -rw-rw-r-- 和 drwxrwxr-x
可以通过以下指令修改当前用户的 umask 值:
umask [三位umask值]
设置/更改 umask 值
例:修改 umask 值为 027
umask 027
五、系统信息相关命令(常用于服务器的日常维护)
1.查看系统当前日期
date
可以查看系统当前的日期和时间
如图所示:
格式为:星期+月+日+(时:分:秒)+…+年
2.查看当前日期日历
cal [-y]
可以查看系统当前日期所在日历
-y 可以查看当前年份的所有日历
cal 如图所示:
cal -y 如图所示:
3.查看磁盘占用信息
df -h
显示磁盘剩余空间
-h 以人性化的形式显示大小du -h [目录名]
显示目录下的文件大小
[目录名] 缺省时表示当前所在目录的大小
-h 以人性化的形式显示大小
df -h 如图所示:
4.查看进程信息
ps [aux]
查看进程的详细状况( 注:不需要加 “-” )
[选项]:
a 即all,显示终端上的所有进程,包括其他用户的进程(Linux是一个多用户的操作系统)
u 显示进程的详细状况
x(用得较少)显示没有控制终端的程序(所为没有控制终端的程序,即不是由终端Terminal来启动的程序)
ps au 如图所示:
USER | PID | %CPU | %MEM | START | TIME |
---|---|---|---|---|---|
执行该进程的用户 | 进程号 | CPU占用率 | 内存占用率 | 开始时间 | 执行时间 |
top
动态显示运行中的进程并排序
q
进入top后按q即可退出
kill [-9] < PID >
终止指定PID的进程
-9 表示强制终止
六、链接文件
概念:Linux下的链接文件指向已存在的文件,类似Windows下的快捷方式,但不完全相同
(1)软链接(符号链接):类似于Windows下的快捷方式,路径就是打开源文件
(2)硬链接:创建一个与源文件共享的镜像文件,占用相同的内存
- 在Linux中,文件名和文件数据是分开存储的,文件数据可以用文件名访问,也可以用硬链接访问
- 即使文件名被删除了,只要还有硬链接,文件数据仍然存在,仍然可以被硬链接访问,只有文件名和硬链接全部被删除后,文件数据才被释放
- 在硬链接中修改文件,文件名的内容也会改变
作用:链接文件的主要作用是用于文件的共享访问
ln [-s] < sourcefile > < newfile >
[-s]:
使用选项“-s”(soft)时,为创建软链接,缺省时为创建硬链接
< sourcefile >:
源文件名
< newfile >:
新创建的链接文件名
(注:由于软链接指向源文件的路径,因此在创建软链接时,源文件名最好带有绝对路径)
- 如果软链接文件使用的是相对路径,则当软链接文件的位置发生变更时,相对路径就会发生变化,而链接随之失效
ls -l [文件名]
即可显示软连接的链接源文件,其中下面的指令是针对某一链接文件的
cat [文件名]
该指令可以查看软硬链接文件的内容
例:在当前目录下创建一个软链接文件 a.t 并将其链接到 /root/Desktop/a.c
- 其中 a.t -> /root/Desktop/a.c 指的是软链接文件的链接位置
提示:无论是软链接还是硬链接,对其进行读写,都将操作源文件(可执行权限)
七、文件的打包压缩
在不同的操作系统下,文件的打包压缩方式是不一样的
操作系统 | 打包压缩方式 |
---|---|
Windows | rar |
Mac | zip |
Linux | tar.gz |
tar -cvf <打包后文件名.tar> <被打包的文件/路径列表>
可以实现对指定的文件打包并命名(注:tar只负责打包,不负责压缩)
<被打包的文件/路径列表>:
可以选择多个不同的文件,文件列表之间用空格隔开,也可以直接打包目录,也可以使用通配符
[选项]:
-c 生成档案文件,创建打包文件
-x 解开档案文件
-v 列出归档解档的详细过程,显示压缩进度
-f 指定档案文件名称,-f后面一定是 .tar文件,所以必须放在选项的最后
- 注:-f必须放选项最后,其他位置随意
tar -xvf <打包文件.tar>
可以实现对指定文件的解包
- 提示:tar包的文件名在终端中是红色的,tar.gz指的是tar打包后再gz压缩,在Linux中十分常见,文件名后缀为:“XXX.tar.gz”
1.gzip压缩
tar -zcvf <打包压缩后文件名.tar.gz> <被打包的文件/路径列表>
可以实现文件的打包压缩
-z 在tar命令中使用 -z 选项可以调用 gzip 来打包文件后同时对文件进行压缩tar -zxvf <打包文件.tar.gz>
可以实现文件的解压解包
tar -zxvf <打文件.tar.gz> -C <目标路径>
可以解压解包到指定路径位置
-C 可以用来指定路径
2.bzip2(读two)压缩
tar -jcvf <打包压缩后文件名.tar.bz2> <被打包的文件/路径列表>
以bzip2的方式打包压缩
-j 在tar命令中使用 -j 选项可以调用 bzip2 来打包文件后同时对文件进行压缩tar -jxvf <打包文件.tar.bz2>
以bzip2的方式解压解包
tar -jxvf <打文件.tar.bz2> -C <目标路径>
可以解压解包到指定路径位置
八、软件安装
apt是Advanced Packaging Tool,是Linux下的一款安装包管理工具
还有 apt-get 软件
它可以在终端中方便 安装/卸载/更新 软件包
sudo apt install <软件包>
安装软件
sudo apt remove <软件名>
卸载软件
sudo apt upgrade <软件名>
更新已安装的包
例:下面展示两款比较有趣的小软件
1.sl小火车清屏,sl作为清屏指令
sudo apt install sl
2.htop一个比较漂亮的查看当前进程排行的软件
sudo apt install htop
九、软件源配置
如果希望在Ubuntu中安装软件,更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提高软件 下载/安装 服务
提示:更换服务器之后,需要一个相对比较长时间的更新过程,需要耐心等待,更新完以后,再安装软件都会从新设置的服务器下载软件了
所谓镜像源,就是所有服务器的内容是相同的(镜像),但是根据所在地理位置的不同,国内的服务器速度通常速度会更快一些,所以可以更换镜像源
Ubuntu中图形界面设置镜像源步骤:
- 1.在Ubuntu右上方的小齿轮中找到软件和更新:
- 2.选择最佳的下载镜像:
- 3.自动选择最佳服务器可能需要一定的测试时长,在选择完成后,系统需要用户输入当前账户的密码,在输入密码之后还会弹出一个更新提示,这个更新持续较长的时间,需要耐心等待