【Linux编程】一、Linux常见指令和权限理解(思维导图总结)

文章目录

  • Linux下基本指令
    • 01.ls 指令
    • 02.pwd 指令
    • 03 cd 指令
    • 04.mkdir 指令
    • 05.rmdir 指令
    • 06.rm 指令
    • 07.tree 指令
    • 08.cp 指令
    • 09.move 指令
    • 小技巧
    • 10.touch 指令
    • 11.cat 指令
    • 12.more 指令
    • 13.less 指令
    • 14.head 指令
    • 15.tail 指令
    • 16.echo 指令
    • 17.shotdown 指令
    • 18.压缩指令
    • 19.grep 指令
    • 20.find 指令
    • 21.bc 指令
    • 22.date 指令
    • 23.cal 指令
    • 24.su 指令
    • 补充
  • 系统命令:
    • shell的理解:
  • 权限:限制用户权力
    • 目录的权限
  • 总结部分:
    • 基础指令:
      • 扩展指令
    • 权限的认识:
    • 指令练习方式:
    • 思维导图总结


【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第1张图片

XShell下的复制/粘贴
复制:ctrl(配合Fn) + insert
粘贴:shift(配合Fn)+ insert
初步接触Linux – 黑框命令行的操作 --稍微不适 --坚持一段时间 --就会用的很爽(各种快捷键)

为了便于学习和记忆,对命令进行分类(在总结的部分)

命令的实用格式:命令名称 [操作选项] [操作对象](注意命令名称与操作选项之间以空格“ ”分割,操作选项和操作对象也是空格分割,用[]括起来是指该选项可能没有,或者不需要表示,例如:ls -al 用来查看当前路径下的文件详细信息 ,并不需要操作对象, pwd 查看当前所处路径,操作选项和操作对象均没有)

Linux下基本指令

对于目录的命令:

01.ls 指令

ls – 默认浏览当前目录下的文件信息(目录 —在windows下常叫文件夹),也就是浏览文件夹下的文件信息
ls英文全称:list file 将文件以清单的形式列出来
类似于Window下的文件列表(如下图)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第2张图片

问题:ls默认的情况下到底浏览的是哪个目录呢?
当前用户(默认为当前主机的登陆用户)的家目录(home)
当前用户:登陆的用户
家目录:Linux是一个多用户操作系统–同时可以有多个用户登陆linux进行操作
家目录是操作系统为每一个用户创建的受保护目录
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第3张图片
ls 特定目录 --浏览特定目录下的文件信息
ls -a :浏览目录下的所有文件,包括隐藏文件(linux下文件名以 . 开头的文件默认不显示,是隐藏文件)
image-20220403201742776
ls -l :查看目录下文件的详细信息
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第4张图片
这些详细信息
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第5张图片
linux下有一句名言:一切皆文件(linux下所有东西都是文件,都可以通过操作文件进行访问)
目录也是文件,只是文件类型是目录类型,Linux下并不以文件后缀名来区分文件类型,后缀名只是为了方便我们的使用。(linux关注的是文件的内容,也就是文件内的数据,并不关注文件的后缀名)
ls -al 选项可以组合使用(选项的组合不区分先后顺序)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第6张图片
例如也可以
ls -la
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第7张图片
显示的颜色不同,表示的文件类型不同,文件功能不同,例如:蓝色的表示目录类型文件夹,可以进入对应的目录路径中
输入 env :可以大致查看各种文件类型对于的颜色代码
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第8张图片
ll 相当于 ls -l
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第9张图片
ls 只能浏览已经存在的文件夹,不存在的文件夹不能浏览,如果没有文件夹,需要先创建文件夹

02.pwd 指令

pwd — 查看当前所在路径 (pwd英文全称:print working directory 打印当前工作路径)
image-20220403202334737
/home/zw — 绝对路径,多层级路径的表达方式,而其中最前边的斜杠叫根目录,其余的斜杠是路径分隔符,/home/zw表示我当前在home目录,zw目录下
路径有两种:绝对路径和相对路径(后续会详细介绍)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第10张图片
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第11张图片
windows下,磁盘分了多个分区,就可以有多少盘符(C盘、D盘….),每个盘符都是一个大目录,这个目录下的文件使用的磁盘空间就是这个分区的
windows下的目录结构可以随着分区多少而改变(比如从二个分区C、D,变成四个分区C、D、E、F,目录结构就发生改变了)
linux下有所不同,目录结构是唯一的,不会随着分区多少而改变(结合下图理解)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第12张图片
pwd查看当前所在路径,或者打印当前工作路径,打印出来的是一个绝对路径
绝对路径是一个唯一路径,指的是以根目录作为起始表达的路径 ,例如:/home/zw
相对路径多种多样的路径,指的是以某个路径作为参照路径,通常说的是以当前路径作为起始的路径
为什么说相对路径是多种多样的呢?
对于同一个路径,使用相对路径可以选择不同的起始路径,相对路径的表达也会不同。

03 cd 指令

cd — 改变工作路径,改变当前所在路径,进入某个路径(英文全拼:change directory

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第13张图片
cd ~ 表示当前用户的家目录
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第14张图片
cd - 返回最近的目录(也就是上一个使用过的目录)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第15张图片
怎么样来表达相对路径呢?
在linux下有 .
. 表示当前路径,目录自身
… 表示上一级路径,目录的上一级路径
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第16张图片
此时用 **cd ./…/…**表示是根目录 也就是 .zw/…home/…root
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第17张图片

04.mkdir 指令

mkdir –- 创建一个空目录,也就是一个文件夹(英文全拼:make directory
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第18张图片
mkdir -p file2/file3 递归创建多层级目录,从外往内,哪层不存在就创建哪一层,一次创建多级目录
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第19张图片
Linux下如何区分文件?
-:普通文件(文本文件、可执行文件、各种库文件)
d:目录文件(directory)
l:链接文件(linker,一个文件指向另外一个文件,相当于Windows下的快捷方式)
p:管道文件(pipe,用于进程间通信,管道通信,是一个共享缓冲区)
c:字符文件(character,字符设备,键盘,显示器)
b:块设备(block,磁盘)
Linux下一切皆文件,像字符设备,键盘,显示器等硬件设备都被抽象为文件。
Windows下区分文件是通过文件名的后缀,如.txt、.docs、.exe、.c、.h等等
Linux下区分文件是通过文件属性列的第一个字符。
Linux区分文件不通过后缀,不代表我们不能使用后缀,实际上为了方便,我们经常会使用这些后缀来快速区分文件类型。另外Linux操作系统本身不关心后缀,并不代表Linux上面运行的所有的应用程序都不关心后缀,比如说Linux下的gcc编译器在编译c语言源文件时,如果源文件名的后缀不是.c,那么gcc编译器将不能正常编译该源文件
vim工具
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第20张图片
nano工具

05.rmdir 指令

rmdir — 删除目录(英文全拼:remove directory),只能删除空目录(个人感觉只能删除空目录的功能有点鸡肋!)

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第21张图片
rmdir -p 递归删除空目录,从内往外,哪一层为空目录就删除哪一层
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第22张图片

06.rm 指令

rm — 删除文件(英文全拼:remove),只能直接删除普通文件,不能直接删除目录文件
rm -r 递归删除目录下的所有文件,包括目录文件
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第23张图片
rm -f 强制删除(不再询问)
rm -i 删除前逐—询问确认
rm -rf 递归并强制删除(非常强力,非常危险的指令,会导致网上所流传的笑话“删库跑路”)
whoami : 查看当前用户名
who:查看有哪些用户正在登录

07.tree 指令

我们可以使用tree指令来查看目录的结构树

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lq77XCP1-1649577253533)(https://s2.loli.net/2022/04/03/RBTUFbMojIhdJYD.png)]

1)如果我们之前没有安装tree指令,这个时候就会报错,需要我们安装一下
2)使用:yum install -y tree进行安装,这个时候系统会提示你需要用root权限(超级用户)来执行这条命令。
3)可以使用:su 切换到root用户,需要你输入root用户的密码(注意:输入密码期间,屏幕是不会显示任何东西的,输入好了后直接按回车键enter,如果密码正确就切换成功,密码错误需要重新输入)
4)再次使用 yum install -y tree安装即可
再次使用tree指令,结果如下:

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第24张图片
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第25张图片
建议安装好指令后,就将用户切换回普通用户,使用su username(用户名)直接切换,不需要输入密码(因为root的权限很高,从低权限切换到高权限需要密码,从高权限切换到低权限不需要密码)
使用rm -r 递归删除文件,可以加上 -i 来增加提示信息(y代表yes,n代表no
rm -ir
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第26张图片
有的时候提示信息太多,一一选择比较烦,我们可以使用
rm -f 直接进行操作,不要进行提示(有些文件删除会提示“是否真的要删除?”)
可以搭配 -r使用,rm -rf (谨慎使用)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第27张图片

08.cp 指令

cp — 将一个文件向另一个位置拷贝一份(copy),默认只能拷贝文件不能拷贝目录,要拷贝目录可以加上 -r
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第28张图片
使用格式:cp [选项] 源文件或目录 目标文件或目录
cp -r 递归将一个目录及其内部的文件全部拷贝到指定位置
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第29张图片
如果我们拷贝文件过去后不想叫原来的名称,想要换一个名称,怎么办呢?
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第30张图片
在拷贝的时候给其命名

09.move 指令

mv — 移动一个文件到另一个位置,也就是剪切(move
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第31张图片
这里的touch是创建一个文件,后续会详细讲解
mv 在剪切的时候也是可以改名的,常用mv来完成改名
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第32张图片
当然也可以用rename来给文件改名

小技巧

自动补全:输入前几个字母后,直接按一下tab键,就会自动补全
**快速切换到前面使用过的指令:**按向上(向下)方向键可以切换到之前(后面)使用过的指令

10.touch 指令

对于普通文件的命令:
touch — touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件(若文件存在,刷新文件的时间属性,若不存在,则创建新文件)

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第33张图片
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第34张图片
touch -d 使用指定的时间刷新时间属性,时间属性要用双引号“”引起来,不然touch会以为我们要创建文件
touch -d “2021-08-01 12:12:12” me.txt
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第35张图片
文件的时间属性有三种:
1)最后一次访问
2)最后一次修改
3)最后一次状态
-a或–time=atime或–time=access或–time=use只更改存取时间
-m或–time=mtime或–time=modify只更改变动时间
使用 stat 文件名 可以查看文件的状态信息
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第36张图片

Access:文件访问时间
Modify:文件修改时间
Change:文件改变时间(Modify和Change的区别?)

11.cat 指令

cat 文件名 查看/打印文件内容
cd etc/ 进入etc目录,这个目录下面有很多文件
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第37张图片
我们可以将etc下的passwd拷贝到当前家目录下面
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第38张图片
然后用cat将passwd中的内容打印出来
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第39张图片
cat -n 文件名 可以打印行号
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第40张图片
tac:反向打印(cat反过来写)

12.more 指令

当文件内容很多的时候,我们需要翻页
more 文件名 分页显示文件内容 按回车enter向下走一行,按空格,向下滚动一页,按q退出显示,额外按b,可以向上滚动(但是这个查看的效果不好)

count=0; while [ $count -le 10000 ]; do echo "hello $count"; let count++; done > you.txt
more you.txt

脚本:生成多个字符串行

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第41张图片
dmesg(英文全称:display message)命令用于显示开机信息
dmesg | more
ls | grep myfile :将ls显示的东西通过关系过滤,找到关键字为myfile,然后打印

13.less 指令

less 文件 分页显示文件内容 方向向上键↑ 向上滚动 方向向下键↓ 向下滚动,按enter也可以向下滚动,按空格键 按页滚动 (less与more相比较,更推荐使用less
匹配查找字符串: /string 向下匹配 ?string 向上匹配
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第42张图片

14.head 指令

head — 默认显示文件前10行内容
-n 指定显示n行数
head -3 passwd
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第43张图片

15.tail 指令

tail — 默认显示文件末尾10行内容
-n 指定显示n行数
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第44张图片

dmesg | head -59 | tail -10

16.echo 指令

echo 打印字符串 — 将数据写入到标准输出 — 显示器设备文件
什么是打印字符串?
有的同学会认为打印字符串就是把字符串显示到界面上,实际上数据打印实际上是操作系统控制,从键盘读取数据,再把数据再写入显示器,linux下一切皆文件,对显示器操作也就是对文件操作,将数据写入显示器文件
echo后面常跟 > 或 >>,这两个符号叫做重定向符号:进行数据流的重定向–文件重定向
将要操作的数据,不再写入原本文件,而是写入到新的文件中。
> 是覆盖重定向(也就是输出的内容会覆盖原来的内容,原来的内容会被清空)
>> 是追加重定向(输出的内容追加到原内容的后面,不会覆盖)
echo “hello linux” >> test.txt
| 管道符,可以用于打印指定行号的内容,先将前一部分内容送入管道,然后再从管道中取数据
image-20220403205416300

|–连接两个命令,将前面命令的输出结果,当做后面命令的输出数据,让后面的命令进行处理
快速清空文件
> hello.txt 输出重定向

17.shotdown 指令

关机命令:
shutdown -h now 立即关机

18.压缩指令

压缩命令:
压缩命令的效果类似于windows下面的压缩
压缩:将一个文件按照一些压缩算法,将文件数据从多变少(让文件的大小变小了)
zip(windows常用)、gzip、bzip2(gzip、bzip2是linux下常用)
打包:将多个文件合成一个文件
解压:跟压缩相对应,将压缩的文件还原回去
解包:跟打包相对应,将打包的文件还原回去

ls /dev/ (dev–device设备,下面这些都是设备文件,root目录下的各个目录都有对应的功能)

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第45张图片
zip指令
zip : zip格式的压缩命令,后缀名.zip
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第46张图片
格式:zip 压缩后文件名称 进行压缩的文件名称
unzip: zip格式的解压命令
格式:unzip 进行解压的文件名称
ls -hl 或者 ls -lh(人性化显示)

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第47张图片

gzip – linux下常用的压缩命令,后缀名.gz
gunzip – 对应的解压命令

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第48张图片

linux下文件格式并不以后缀名区分,后缀名只是便于用户区分文件功能性质的功能
bzip2/bunzip2:bzip2格式的压缩解压缩,后缀名

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第49张图片

liunx下的的命令信息查找工具 man 手册(可以查看命令信息,函数信息等等)
man 命令名称
image-20220403205819525
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第50张图片
按q退出man显示界面,回到原来的命令行位置

tar指令
tar linux下使用频率最高的打包解包工具,将多个文件打包成文一个文件,提供解包功能,并且打包解包的同时可以进行压缩解压
-c:建立一个压缩文件的参数指令(create的意思); 打包
-x︰解开一个压缩文件的参数指令! 解包
-t:查看tarfile里面的文件!
-z︰是否同时具有gzip的属性?亦即是否需要用gzip压缩?
-j︰是否同时具有bzip2的属性?亦即是否需要用bzip2压缩?
-v∶压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在f之后要立即接档名喔!不要再加参数!
通常各种选项会搭配使用
tar -czvf .tar.gz/.txt 打包
tar -xzvf ***.tar.gz 解包
tar -cvf 仅打包,不进行压缩
tar -xvf 不选定格式解压,系统会自动选择格式来解压
默认解压的文件会在当前所在目录下,不一定会在压缩包所在目录下

19.grep 指令

匹配查找命令:
grep – 从文件内容中匹配包含某个字符串的行,常用于某个文件中找函数(行过滤

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第51张图片
-i:忽略大小写的不同,所以大小写视为相同(ignore)
-n :顺便输出行号
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第52张图片
-v︰反向选择,亦即显示出没有’搜寻字符串’内容的那一行
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第53张图片
-R 递归 对指定目录下的文件递归逐个进行内容匹配
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第54张图片
在终端中执行命令,单引号 ’ ’ 和双引号 " " 的区别是什么?
在大多数情况下,意义相同,都是为了括起一串数据,表示这是一个整体,单引号会消除括起数据中的特殊字符的特殊含义,双引号不会。
-E 并行查找(条件或)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第55张图片
which 用于查找指令所在路径的指令
alias 给指令起别名

20.find 指令

find — 从指定目录中查找指定名称/大小/时间/类型
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第56张图片
find -name
*表示进行模糊匹配,表示可以为任意字符串,如果不加,因为目录中此时没有test文件,所以会查找不到
image-20220403210138586

find ./ -type d 通过文件类型找文件–(f -普通文件、d-目录文件、c-字符设备、b-块设备、p-管道文件、|-符号链接文件、s-套接字文件)
字符设备:最典型的就是键盘
符号链接文件:类似于快捷方式
套接字文件:网络通信文件
find ./ -size +1k 通过文件大小找文件,在当前路径下查找文件大小大于1k的文件

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第57张图片
find ./ -size -1k 在当前路径下查找文件大小小于1k的文件
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第58张图片
find ./ -mmin -10 通过文件时间找文件 – cmin、mmin、amin 单位为分钟,ctime、mtime、atime 单位为天

21.bc 指令

bc —计算器命令
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第59张图片
按ctrl + c结束

22.date 指令

date —打印或设置系统时间

image-20220403210342312
date +%Y-%m-%d +表示按照指定格式查看
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第60张图片
%H:小时(O0…23)
%M:分钟(O0…59)
%S∶秒(O0…61)
%X:相当于%H:%M:%S
%d:日(01…31)
%m :月份(01…12)
%Y:完整年份(O000…9999)
%F:相当于%Y-%m-%d
时间->时间戳: date +%s
时间戳->时间: date -d@1508749502

23.cal 指令

cal — 查看日历
image-20220403210444188
cal -y 查看当前年份的日历
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第61张图片

24.su 指令

su — 切换用户
su username(建议:平常尽量避免直接使用root用户,因为root用户是超级用户,可以在系统中为所欲为,因此很容易造成无法挽回的错误,比如在root用户时使用命令 rm -rf /*,会将root根目录下所有文件删除,系统就会崩溃,而普通用户在执行这条命令的时候,是没有权限的,删除不了)

补充

tab —文件名自动补全,补不出来就代表没有这个文件
ctrl+c — 中断当前的操作
man指令(查看命令手册)
man printf /man man(如果我们有什么指令不了解,可以问一下linux系统中的这个男人man)
top指令:linux下查看cpu占用
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第62张图片
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第63张图片
netstat 查看网络连接状态
free 查看内存资源状态
df 查看磁盘分区资源状态
uname 用来获取电脑和操作系统的相关信息。
uname -a:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

系统命令:

shell的理解:

为什么在终端中输入一串字符串+回车,会被当做命令执行,完成某个功能?
操作系统内核(kernel)与用户之间的桥梁 — 命令行解释器(也被称为外壳)
规定:用户不能直接访问系统内核,直接访问内核太危险
shell会捕捉用户的标准输入,得到字符串,通过字符串判断用户想要干什么
用户不能直接访问内核,操作系统会提供一些接口,通过调用接口,完成内核某个特定功能的访问
像浏览目录这种功能会涉及到很多系统调用接口的使用,为了便于用户使用,大佬们使用系统调用接口封装了一些直接完成常用功能的程序。
用户输入ls字符串,shell捕捉到了之后,就会执行ls这个命令程序完成浏览目录的功能

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第64张图片

类比:王婆、媒婆、村花如花的故事、班级小黑,喜欢班里小桃红,找小明搭桥
终端为什么能够执行命令,就是因为终端打开之后默认就运行了一个程序—shell–命令行解释程序
shell程序多种多样 bash、dash、csh

image-20220403210714288

我们执行的命令都是一个个的程序,我们在终端输入什么字符串,shell就会捕捉到后,就会执行什么程序,完成对应的功能。
通过以上内容,我们要理解shell是什么?与用户、内核、终端之间的关系是什么?
shell是用户与内核的沟通桥梁,在linux下就是一个命令行解释器,在windows下就是图形化界面,早期的操作系统都是没有界面的,图形化界面的出现是为了更好的人机交互,但这种更好的“人机交互”实际上就是封装的很多底层内容,把用户与底层隔绝开来。让小白用户都能顺利的使用计算机。但是对于程序员来说,这并不是好事,在后续的学习中我们将更能体会这一点。

权限:限制用户权力

为什么要有权限?
如果每一个用户都能干任何事情,则秩序就会混乱
操作系统中的操作权限:
在linux系统中,将用户分为两类:
1)普通用户:只能进行受限制的操作
2)超级用户(root):可以进行任意的操作,不受限制
使用su 命令进行用户切换,目的就是为了获取这个用户的操作权限
root用户下:
useradd username 添加用户
userdel username 删除用户
上面所说的都是用户的权限,其实除了用户有权限之分外,linux下的文件也有权限
文件权限的认识:
文件访问对用户的分类:
①文件所有者-u(user) ②文件所属组-g(group) ③其他用户-o(other)
文件访问对操作的分类:
①是否可读-r(read) ②是否可写 -w(write)③是否可执行-x (execute)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第65张图片
三三为一组 分别对应到u,g,o
-:表示没有权限
rwx: 表示可读可写可执行
: 表示不可读不可写不可执行
r-x 表示可读不可写可执行
在系统中权限的存储:使用二进制比特位图,二进制比特位只有0/1
rw-rw-rw- 二进制表示就是 110 110 110 占用空间更小,操作更加简便,为了便于表示和记忆,可以使用三个八进制数字分别表示三类用户的权限
rw-rw-rw- ----> 110 110 110 —> 6 6 6
再例如:
753 —> 111 101 011 —> rwx r-x -wx 所有者具有可读可写可执行权限,所属组具有可读不可写可执行权限,其他人具有不可读可写可执行权限(如果是目录的话,就是可浏览 -r,可在目录下删除创建文件 -w ,可进入-x)
总结:

权限符号 含义 八进制 二进制
不可读不可写不可执行 0 000
–x 不可读不可写可执行 1 001
-w- 不可读可写不可执行 2 010
-wx 不可读可写可执行 3 011
r– 可读不可写不可执行 4 100
r-x 可读不可写可执行 5 101
rw- 可读可写不可执行 6 110
rwx 可读可写可执行 7 111

假设你有一台电脑,学校组织上机实验,你将自己的电脑提供给自己的小组使用
文件访问权限指令:
创建一个文件的默认权限
umask 查看或设置文件创建权限掩码,也就是说掩码决定了一个文件的创建的默认权限
umask -S 人性化显示

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第66张图片

0002 是一个八进制的显示(最前面的0表示八进制显示格式)
002 是 000 000 010 跟
111 111 111(满权限)是在shell创建文件默认给定的权限
将111 111 111 - 000 000 010
错误计算方法:777 满权限 - 八进制掩码
正规计算方法:给定权限 & (~掩码) 比如:777 & (~002)
~002: 111 111 101 (二进制位取反)
777 & (~002): 111 111 111 & 111 111 101 = 111 111 101
也就是rwx rwx r-x(775)

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第67张图片

创建好的文件的权限修改
chmod 777 you.txt :直接使用八进制数字进行修改,给you.txt文件设置 777 的权限
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第68张图片
chmod a-x you.txt 所有用户减去(取消)-x(可执行)权限
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第69张图片
chmod u+x you.txt 给所有者加上x权限
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第70张图片

①用户表示符+/权限字符
+ 向权限范围增加权限代号所表示的权限
- 向权限范围取消权限代号所表示的权限
= 向权限范围赋予权限代号所表示的权限
用户符号 含义
u 拥有者(user)
g 拥有者所属组(group)
o 其它用户(other)
a 所有用户(all)

chown username filename 修改文件所有者(只能使用root修改)
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第71张图片

chgrp groupname filename 修改文件或目录的所属组(只能使用root修改)
修改文件权限的粘滞位:
故事:小明和小黑
chmod +t filename
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由:
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

目录的权限

可执行权限:如果目录没有可执行权限,则无法cd到目录中
可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容.
可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在日录中删除文件
于是,问题来了~~
换句话来讲,就是只要用户具有目录的写权限,用户就可以删除国录中的文件,而不论这个用户是否有这个文件的写权限.
sudo – 为普通用户临时提升权限
visudo 查看可以使用sodu权限的用户信息
:90 行左右
【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第72张图片
Allow root to run any commands
我们可以yy复制一行,p粘贴,然后修改为自己的用户(跟vim修改一样,i进入insert模式,esc进入普通模式,:进入底行模式)
:wq 保存并退出
总结:sudo需要进行配置之后才能使用
配置过程:
1)su root 切换到管理员用户
2)visudo 打开sudo配置
3):90 跳转到文档第90行,在90行附近
4)yy复制root这一行,p粘贴
5)将用户名从root修改成自己的用户名称
6):wq 保存退出
sudo的使用演示: sudo yum install lrzsz
文件用户信息的修改

总结部分:

基础指令:

目录指令:ls、pwd、mkdir、rmdir、rm、cp、cd
文件指令: touch、cat、more、less、head、tail、mv
压缩指令: zip/unzip、gzip/gunzip、bzip2/bunzip2、tar -czvf-xzvf
查找指令: grep 、 find
系统指令: shutdown、reboot
常用操作: tab键-文件名自动补全、ctrl+c键-中断当前操作
其他指令: man、ifconfig、su、echo、bc、cal、date,whoami,which,whereis、uname、sl(小火车)

扩展指令

1)安装和登录命令:login、shutdown、halt、reboot、install.mount、umount、chsh、 exit、last
2)文件处理命令::file、mkdir、grep、dd、find、mv、ls、diff、cat、ln
3)系统管理相关命令::df、top、free、quota、at、lp,adduser groupadd、 kill、crontab
4)网络操作命令:ifconfig、ip、ping、netstat、telnet. ftpl route、rlogin、rcp、finger、mail、nslookup
5)系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who
6)其它命令: tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode

Shell认识
shell就是一个命令行解释器,也是一个程序,打开终端默认运行的就是shell程序,起到用户与系统内核之间的沟通桥梁shell捕捉用户的输入,执行对应的shell指令程序,访问内核,完成功能,将结果返回打印—用户不能直接访问内核

权限的认识:

系统操作权限:系统中用户的分类-管理员与普通用户—指令:su-切换用户, sudo-文件操作权限:描述哪个用户可以对文件如何操作
文件操作对用户的分类:文件所有者-u、文件所属组-g、其他用户-o
文件访问操作的分类:可读-r、可写-w、可执行-x权限表示:
显示字符表示:rwxrwxr-- 、八进制数字表示:774

指令练习方式:

1)优先练习不熟悉的指令
2)再练习重要的,也就是经常要使用到的指令
3)最后练习不怎么使用,不重要的指令

思维导图总结

【Linux编程】一、Linux常见指令和权限理解(思维导图总结)_第73张图片

你可能感兴趣的:(Linux系统编程,linux,shell)