Linux_常见指令和权限理解
1. 初始Linux操作系统
1linux提炼特征:
a, 开源-大部分是免费的, 稳定的, 安全, 高效
b, 更多的被专业的人所使用
2Linux的应用场景
a互联网公司的服务后端
b, 智能设备的使用
c, 嵌入式场景
4linux版本
a, 商业化版本, 商业发行版
b, 技术版本, 也叫做Linux的内核, 源代码
这里可以多人共用一个云服务器
用adduser + 用户名 是新建用户
然后 passwd + 用户名 设置密码
用passwd +用户名修改密码, 用userdef -r +用户名字删除用户
但是我们最好都给自己用建立一个普通用户, 不要去用root用户去操作
用woami 查看自己是谁
操作系统是一款做软硬件管理的软件
一个好的操作系统衡量指标:稳定, 快速, 安全
为什么要有操作系统?
操作系统的核心工作就是通过对下管理好软硬件资源的手段, 对上提供良好的操作环境和使用环境
所有的行为都要贯穿上面四个结构
2. 初识shell命令 ,了解若干背景知识。
xshell里面ctrl c v不能用 需要加上fn
Alt+Enter:xshell自动全屏
3. 使用常用Linux命令
Linux操作系统的特点:纯命令行
在工作中是没有图形化界面
文件 = 文件内容+文件属性
以 . 开头的文件是隐藏文件
Linux文件下面都有两个隐藏文件 分别是 . 和 .. , .. 表示当前路径的上一个路径, 表示回退
而一个. 表示当前路径 这个点用法为./+可执行文件, 帮助用户定位当前目录下的一个文件
Linux 的路径分割符是/ 而Windows 是\
Linux的根目录就是/
Linux的目录结构整体就是一个多叉树, 他的叶子节点, 一定是空目录或者非目录文件, 路上节点,一定是一个非空目录
绝对路径:我们把从/开始定位到指定位置, 具有唯一性的路径, 称为绝对路径
相对路径:我们以自己当前所处的路径为参照位置, 来进行特定文件的定位, 我们这种路径称为相对路径
比如知道bin去找lib ../lib/c++.txt(但是我们所处的路径发生变化了, 可能相对路径就失效了 )
绝对和相对路径
1绝对路径往往比较长, 但是不变, 一般在一些固定场景, 配置文件中使用
2一般命令行输入比较常用相对路径
Centos系统里面其他用户的账号一般都放在/home路径下
指令和可执行程序都是可以执行的, 那么指令其实就是可执行程序
我们在执行指令的时候, 我们会先在系统中查找对应的指令, 指令位置就是.usr/bin/目录下
这是在系统特定的位置下
这个就比较厉害了, 我们可以写一个可执行程序, 然后改一个名字, 再放到系统的目录下, 然后就直接可以用了, 这种行为就是一种安装
基本的指令详解
1 ls : 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
ls -l :显示文件的属性 可以简写为ll
ls -a:可以显示出所有的隐藏文件
ls -d:将目录像文件一样显示, 而不是显示其下面的文件
ls -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件; “/” 表示目录;“@”表 示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)
ls * : 这里的*就是一个通配符, 用于筛选
2 pwd : 显示用户当前所在的目录
3 mkdir : 在当前目录下创建一个目录
mkdir -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此 选项后,系统将自动建立 好那些尚不存在的目录,即一次可以建立多个目录,而亲是递归 创建
4 cd : 改变工作目录。将当前工作目录改变到指定的目录下。
5 touch : 创建一个普通文件
6 rmdir : 删除空目录(非空不能删)
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
7 rm : 删除文件和目录
rm -rf : 递归且强制删除
8 man : 访问Linux手册页的命令是 man 语法: man [选项] 命令
-k 根据关键字搜索联机帮助 num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停 止,用a选项,当按 下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,面手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数, 需要加什么头文 件)
3 是库函数,如printf,fread
4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
9 cp : cp src dest 复制文件或目录
10 echo : 后面默认是字符串
echo + 字符串 :直接打印字符串
echo + 字符串 + > + 文件 : 输出重定向 ,没有在显示器显示, 而是被写到了文件中
他其实就是先清空文件, 然后写入新的内容
那么清空文件可以写为>out.txt
echo + 字符串 + >> + 文件 :这种重定向叫做追加重定向
11 cat : 打印文件内容, 后面跟的是文件名字, 输出文件的内容
cat + 文件 : 这个与下面区别不大
cat < + 文件 : 输入重定向, 本来是从键盘文件读取, 现在不用从键盘读取, 从指定文件 读取
cat -n : 给输出的文本去编号, 把行号也打印出来
cat -d : 非空的行号打印出来
cat -s : 不输出多空行, 多空行变为一行
12 mv : mv src dest 就是将文件改名字或者移动文件, 其实就是剪切(名字不变)+重命名, 可 以指定名字也可以不指定名字
1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件 重命名或将其移至一个新的 目录中。
2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一 个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令 将各参数指定的源文件均移至 目标目录中。
13 alias : 对指令重命名 alias=' 指令 ', 这样就可以里, 不用了就alias=' '就可以了, 但是这 个是临时的, 要写在脚本里面才会上机执行
14 which : 寻找指令在哪
15 more : cat 不适合看大文本, -数字, 就是输出多少行, 总的来说就是可以逐行下翻
16 less : less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能 向后移动,而且less在查看之前 不会加载整个文件。
/+行数, 就可以去搜索
17 head : head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头 10行。
head -n : 指定显示多少行
18 tail : 与head相反, 就是去看结尾
tail -n : 指定多少行
有了head 和 tail 就可以提取某一段到文件里面
head -1020 log.txt > temp.txt
tail -20 temp.txt > ret.txt
这样就可以提取出来了, 但是这里的问题就是创造了临时文件
解决办法就是用管道 : | ->这个被系统解释成管道文件, 是内存级的, 不会再磁盘上存在
head -1020 log.txt | tail -21 这个相当于前面把文件的前1020行交给管道, 管道再将后 面的21行交给后面的文件
管道其实就不需要经过内存, 而且管道可以连好多条指令, 一个处理完了交给另外一个
可以支持流水线工作
19 与时间有关的指令
date显示
date + %Y-%m-%d 后面也可以加很多
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
2.在设定时间方面
3.时间戳
时间转化为时间戳 : date +%s
时间戳转化为时间 : date -d @16834242(获得的时间戳)
20 cal指令:就是打印本月日历
cal + 年份 : 打印某一年的日历
21 find指令:(灰常重要) 可以在指定文件路径下进行文件的搜索
find -name
find ~ -name test.c : 搜索你所写过的所有叫test.c的文件
find ~ -name *.c : 收索以.c结尾的文件
21 which + ls: 在指令路径/usr/bin, 搜索指令文件(找指令)
22 whereis + ls : 在系统特定的路径下, 既可以找到可执行文件, 又可以找到手册, 压缩包等等
23 grep : 在文件中搜索字符串,将找到的行打印出来
grep + 搜索字符串 + 文件
这个也可以配合管道使用 cat ...txt | grep
24 zip/unzip指令:
zip name.zip 文件 : 后面如果跟的是目录, 那么会把目录当作一个文件, 这样打包出来 的是错误的
zip -r name.zip 文件/目录 : 这里后面可以跟多个文件或者目录
unzip . zip 就可以解压
unzip .zip -d 目录地址 : 解压到目的路径
25 tar : 打包/解包, 不打开他, 直接看内容
tar czf XXX --打包压缩
tar tzf XXX.tgz --预览
tar xzf XXX.tgz --解压解包
tar ->打包后缀
.gz -> 压缩后缀
XXX.tar.gz -> XXX.tgz 这是简写
包在linux 里面一般用tar , 如果想在windows里面也想用, 用zip指令
26 bc : 就是Linux里面的计算器
可以一种方便的方式 echo "1+2+3+4" | bc 就去计算了
27 uname -a
28 常用热键 tab (单击补全, 双击是提示)
Ctrl + r :查找历史命令
Ctrl + d 退出登录
history : 查看所有的历史命令 用 history | grep ... 就可以去筛选
但是Linux默认记录1000条历史命令
29 关机 shutdown : Linux操作系统(服务器), 永不关机
su 直接换为roos su + 名字 换为某个用户
指令的本质就是编译好的程序和脚本, 一定会在系统的特定路径下存放
命令行解释器其实就叫:命令行, bash ,sh, shell(各种解释器的统称), 图形化界面
4. 了解Linux权限概念与思想,能深度理解“权限”
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
这里可以用 su + 用户名 从root 切换到用户, 当你是root用户的时候不要密码, 但是如果你是普通用户的话, 你可以改变为其他人, 但是需要别人的密码
su + root(可以省略), 从用户切换到root
切换到普通用户的时候ctrl+d 就回退到root
sudo + 命令, 这是以root的身份去执行, 给这个指令短暂的提权, 要输入你的密码
但是这个的前提就是你在信任白名单里面 --如何添加白名单下一节讲
Linux系统不以文件后缀来区分文件
权限与人有关, 还和所属组的权限有关
1.文件访问者的分类 : 权限的分类
之前我们知道Linux下面有两个用户分类, 这两种用户可以去扮演一下角色
a 拥有者
b 所属组
c 其他
2文件的类型和访问权限
a 文件类型
b 基本权限
i.读 : r :Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限, 而不是限制你不能进入这个目录
ii.写 w :Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限, 就是不能再创建文件和目录
iii.执行 x :execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv. “—” : 表示不具有该项权限
3.文件权限值的表示方法
八进制的设置方法
4.文件访问权限的相关设置方法
a : chmod u+x g+x o+x test.txt :这就是给文件三个访问者加上权限(也可以去减)
chmod a+x test.txt : 这是给所有访问着加上权限
修改权限的时候也可以用八进制的形式去修改权限, 因为每一个人的权限有3个, 每一个权限可以对应着二进制的0 和1 那么三个一起就是用八进制来表示
b : chown zcy test.txt : 这就是更改文件的拥有者, 但是这要root权限才可以操作(或者你是这个文件的拥有者, 你也可以去更改)
同时可以 chown zcy:zcy test.txt : 这是拥有者和所属组两个一块更改
c : chgrp zcy test.txt : 这是更改文件的所属组, 着同样需要root权限, 或者你是这个文件的拥有者也可以
当进行权限认定的时候, 先看你是不是拥有者, 如果是, 就不看后面了(不管如果你是所属组且权限更多)
为什么我们创建文件的时候默认权限是:
普通文件权限: 664 (起始权限时666)
目录文件权限:775 (起始权限时777)
这个与权限掩码有关, 权限掩码umask 为0002 (这个用umask指令可以去修改)
最终权限 = 起始权限 & (~umask) 来计算
解释: 这个umask可以规定创建文件时候的起始权限
但是我们遇到了一个新的问题, 当两个人想要共同在一个目录下工作的时候, 两个人可以去创建,
但是一个人也可以随意删除另外一个人的文件, 如果root设置不能 去w 的时候, 两个人都不能去创建, 但是这又违背了我们创建一个公共的工作区域
为了解决这个尴尬的问题, 我们引入了一个粘滞位
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
注意这里粘滞位是对于目录来说的
建立共享文件一般是在根目录, 并且只能是root用户才可以
总结
1 目录的可执行权限是表示你可否在目录下执行命令。
2 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
3 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读 权限
4 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。