Linux_常见指令_权限理_1

文章目录

  • 一、Linux下的基本指令
    • 1.显示文件名 - ls
    • 2.显示当前路径 - pwd
    • 3.进入目录 - cd
    • 4.创建普通文件 - touch
    • 5.创建目录 - mkdir
    • 6.删除 - rmdir 和 rm
    • 7.手册 - man
    • 8.拷贝 - cp
    • 9.剪切 - mv
    • 10.查看短文本 - cat
    • 11.查看长文本 - more 和 less
    • 12. > (输出重定向),>> (追加重定向),< (输入重定向)
    • 13. 查看文本前 - head
    • 14.查看文本后 - tail
    • 15. | (管道)
    • 16. 日期 - date
    • 17.日历 - cal
    • 18.目录中查找文件 - find -name (非常重要)
    • 19.过滤 - grep
    • 20.压缩/解压 - zip/unzip
    • 21.压缩解压 - tar
    • 22.计数器 - bc
    • 23 查看系统 - uname
    • 24. 重要热键
    • 25.关机
  • 二、shell命令以及运行原理
  • 三、Linux权限概念
    • 1.用户分类
    • 2.文件相关的权限概念
    • 3.权限操作
      • 1、文件权限修改
      • 2、更改拥有者,更改所属组
      • 3、目录的权限
      • 4、粘滞位


一、Linux下的基本指令

1.显示文件名 - ls

只显示文件名:

ls

显示文件的更多属性:

ls -l

问题:创建一个空文件,在磁盘中占据空间?
占空间,文件有属性数据,是数据就要被保存起来。
文件 = 文件内容+文件属性
文件操作无非两类:
1、对文件的内容操作
2、对文件的属性操作

选项作用
-a显示Linux系统中的隐藏文件。
-i输出文件的 i 节点的索引信息。
-n用数字的 UID,GID 代替名称。
-l列出文件详细信息

. 开头的文件称为隐藏文件。

在任意目录下,都存在两个隐藏文件:
.(当前路径)
.. (上级路径)

cd进入文件夹:
cd .. :即为回到上级目录

如果文件下有一个可执行文件a.out
./a.out :即为执行当前路径下的a.out程序

2.显示当前路径 - pwd

显示当前路径:

pwd

Linuxe的路径分隔符是 /
window s的路径分隔符是 \

Linuxe路径为只有 / 即为根目录

3.进入目录 - cd

Linux的目录结构本质是一颗多叉树
在这里插入图片描述

1、每一个节点,既可以是一个目录(再放目录或者普通文件,递归式的定义),也可以是一个普通文件
2、这颗多叉树的叶子节点,一定是一个普通文件后或者空目录

/home/whc/mygit/study/24_3_18 :从根目录开始,绝对路径
../23_10_16/makefile :相对于我当前所处的路径, 相对路径

如果是日常使用,我们推荐相对路径,简单。
如果是进行添加配置文件之类,推荐绝对路径,不会出错。

进入用户家目录:

cd ~

返回上级目录:

cd ..

返回最近访问目录:

cd -

4.创建普通文件 - touch

创建普通文件:

touch 文件名

5.创建目录 - mkdir

创建一个目录:

mkdir 目录名

创建一串目录:

mkdir -p 目录名1/目录名2

6.删除 - rmdir 和 rm

只能删除空目录:

rmdir 目录名

删普通文件:

rm 文件名

删除递归目录:

rm -r 目录名

强制删除:

rm -rf 文件名

-f:force,强力删除

7.手册 - man

安装man:

sudo yum install -y  man-pages

查c函数:

man 3 函数名

查系统调用接口:

man 2 系统接口名

查普通命令:

man 1 命令

查如何使用man:

man man 

8.拷贝 - cp

复制文件或目录并命名为name1:

cp 文件名 name1
cp -r 目录名 name2

如果在cp的时候,要拷贝的文件,是拷贝在当前路径下,两个文件的名称不能一样。如果拷贝到不同路径下,可以一样!

默认情况,cp不允许拷贝目录的如果需要,我们应该要携带选项 -r

选择 -f :force强制

9.剪切 - mv

类似剪切:
a.可以剪切普通文件
b.可以剪切目录

mv name 路径

类似重命名,可以对普通文件,也可以对目录文件:

mv oldname newname

10.查看短文本 - cat

查看短文本:

cat 文件名

11.查看长文本 - more 和 less

查看文本:

more 文件名

回车向下翻一行

支持前后翻查看文本:

less 文件名

按向上和向下,可以向上和向下翻。

12. > (输出重定向),>> (追加重定向),< (输入重定向)

echo : 将后面的文本写入显示器

将本来应该写入显示器的内容,写入到文件中,输出重定向会清空原始文件的内容,进行重新写入:

echo "hello" > hello.txt

同上,不会清空原始内容,而是在原始文件的结尾进行新增式的写入。

echo "world" >> hello.txt

cat默认从键盘(标准输入)读取
输入重定向,把本来应该从键盘文件中读取数据的方式,改成从指定的文件中读取:

cat < hello.txt

13. 查看文本前 - head

查看文本前10行:

head 文件名

查看文本前n行:

head -n<行数> 文件名

14.查看文本后 - tail

查看文本后10行

tail 文件名

查看文本后n行

tail -n<行数> 文件名

15. | (管道)

如果要查看文本的第30000到30020行:
我们可以先查看前30020行输出重定向到一个文件里,再查看这个文件的后20行就可以。
但这个文件就是临时文件,是为了得到结果,而临时创建的。
管道就可以解决创建临时文件,直接将上一个命令结果,传给下一个命令。可以这么写:

head -30000 文件名 | tail -21

管道的作用:
级联多个命令,来完成流水线式的数据处理工作

16. 日期 - date

指定格式显示时间:

使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下:

标记时间
%H小时
%M分钟
%S
%X相当于%H:%M:%S
%d
%m月份
%Y完整年份
%F相当于%Y-%m-%d
date +%Y-%m-%d_%H:%M:%S

时间戳:

获取时间戳:

date +%s

时间戳转时间:

date -d@时间戳

时间戳转为特定格式的时间:

date +%Y-%m-%d_%H:%M:%S -d@时间戳

程序中获取时间:
使用的函数为time
在这里插入图片描述

 #include<stdio.h>#include<time.h>int main(){printf("%lu\n",(unsigned long)time(NULL));return 0;                                                                              }

17.日历 - cal

显示2024年日历:

cal -2024

显示系统前一个月,当前月,下一个月的日历:

cal -3

18.目录中查找文件 - find -name (非常重要)

在指定目录下查找指定名称的文件:

find 路径 -name 文件名

19.过滤 - grep

grep:行文本过滤工具

找出含有搜索字符串的每一行:

grep '搜索字符串' 文件名

找出含搜索字符串(忽略大小写)的每一行:

grep -i '搜索字符串' 文件名

具有关键字的文本行,去掉,保留没有匹配关键字的行:

grep -v '搜索字符串' 文件名

对查找的结果带上行号:

grep -n '搜索字符串' 文件名

20.压缩/解压 - zip/unzip

把目录及里面内容全部压缩:

zip -r 形成的压缩包名.zip 目录

解压到当前路径:

unzip 压缩包

解压到指定路径:

unzip 压缩包 -d 路径

为什么要打包压缩?

  1. 为了节约空间
  2. 我们下下来的软件是压缩包,曾经提供软件的人,上传的是压缩包!写好的软件,不是只有一个文件,压缩后成为一个文件,方便网络传输,进行各种部署。

21.压缩解压 - tar

c:创建 ,z:压缩 ,f:压缩包名
打包压缩线程压缩包:

tar czf 压缩包名.tgz 文件名

完整后缀是 .tar.gz
可以简写为 .tgz

x:解 ,z:解压,f:压缩包名

tar xzf 压缩包

扩展了解即可:

选项作用
-v压缩的过程中显示文件
-z是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩
-C解压到指定目录

  1. Linux下是否几乎支持所有种类的压缩包?
  2. 为什么Linux下会支持?
    Linux面对的平台非常多
  3. 遇到了不了解的压缩包种类,该怎么办?
    test.xxx 网上搜索: centos.xxx后缀如何解压

22.计数器 - bc

Linux下的计数器:

bc

23 查看系统 - uname

看系统细节:
依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

uname -a

在这里插入图片描述

只看内核版本:

uname -r

24. 重要热键

Tab: 命令自动补齐
Ctrl+c:终止失控程序
ctrl+r :搜索历史命令
Ctrl+d:快速退出账号

查看历史命令:

history

25.关机

云服务是不需要关机的,永远不关机。

shutdown -h
选项作用
-h将系统的服务停掉后,立即关机
-r在将系统的服务停掉之后就重新启动
-t sec-t后面加秒数,亦即『过几秒后关机』的意思

二、shell命令以及运行原理

shell :外壳程序
在这里插入图片描述
传递用户指令,交给OS(操作系统),OS执行完毕,结果交给shell,shell再交给用户,称为命令行解释器,Linux中,外壳就是命令行解释器,windows下,外壳指的就是图形化界面。
作用:

  1. 将使用者的命令翻译给核心(kernel)处理
  2. 同时将核心处理结果翻译给使用者

外壳存在的最大意义:
shell降低操作OS的成本
外壳保护OS系统

contos7常用的命令解释器(shell),叫做bash。
shell vs bash
shell是所有外壳的统称
bash是具体一个解释器

三、Linux权限概念

1.用户分类

普通用户:权限受管控的
root: root只有一个,可以在linux系统下做任何事,不受制约
确认我是谁:

whoami

切换root用户,输入root的密码:

su -

在刚刚切换到root后,切回普通用户,登出:

logout

切换用户:

su -l 用户名

2.文件相关的权限概念

ls -l

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c8d3b9b337004ecf916b9d1f31d97c8f.pn
在这里插入图片描述
第一列的第一个字符,叫做文件类型!
Linux系统不是以文件名后缀,区分文件类型的,而是通过ls -l显示的第一列第一个字符区分文件类型的!

文件类型:
-:普通文件,文本,源代码,可执行程序,第三方动静态库等
d:目录文件
l :链接文件
p :管道文件
b : 块设备文件,磁盘
c :字符设备文件
大部分文件都是普通文件和目录文件。

问题:test.c的文件改名为test.txt再用gcc编译可以吗?
不可以,会告诉我们当前文件不识别。Linux不是不以后缀区分文件类型,但是gcc不等于Linux,而是Linux上的一个编译器软件


什么是权限?

  1. 约束人的(对人进行分类)
  2. 需要有对应的事物具有特定的属性
    在Linux上,就是对文件的权限:
    这个文件谁能“访问”
    这个文件谁不能“访问”
    对应的文件应该具备的某种属性:r,w,x
    权限 = 人 + 事物属性
    所以权限的概念以及操作,都是围绕着人和文件属性展开的!

Linux系统中,人分三类:
1、文件的拥有者, owner
2、文件的所属组, grouper
3、文件的其他用户, other

Linux系统中,文件权限属性,分:
1、r
2、w
3、 x(可执行)

文件拥有者如下图:

在这里插入图片描述
文件所属组如下图:
在这里插入图片描述

拥有者权限,所属组权限,other的权限:
在这里插入图片描述
每一组,对应的权限的位置含义是确定的:
r–
-w-
–x
是否可读,有就是r,没有就是-,其他一样。
请问:如果描述test.c这个文件的权限了?
拥有者的权限:可读可写
所属组的权限:可读可写
其他人的权限:只能读

在这里插入图片描述

3.权限操作

1、文件权限修改

那么文件的权限操作,应该涉及到几方面?
1、修改文件的属性
2、修改人

去掉拥有者读权限:

chmod u-r 文件名

给拥有者添加读可执行权限:

chmod u+rx 文件名

给所属组添加r权限:

chmod g+r 文件名

给其他用户添加读写可执行:

chmod o+rwx 文件名

去掉拥有者写可执行权限,去掉所属组写权限,去掉其他用户所有权限:

chmod u-rx,g-w,o-rwx 文件名

给所有人只有读权限:

chmod a=r 文件名

修改权限的第二种方法(8进制方案):
对于权限:
_ _ _
r w x
有或者无(两态)
1 1 1 看成8进制 ->7
5->101->r _ x
三个8进制数就能代表三类人的权限:
777 即为给拥有者,所属组,其他成员,全部权限

开放文件全部权限:

chmod 777 文件名

给所有人写权限:

chmod 111 文件名

个拥有者读和可执行权限,其他不给权限

chmod 500 文件名

2、更改拥有者,更改所属组

更改拥有者为用户1:

sudo chown 用户1 文件名

sudo:提升权限,以root的身份去运行程序chown

更改所属组为用户2:

sudo chgrp 用户2 文件名

更改拥有者和所属组全部都改为用户3:

sudo chown 用户3:用户3 文件名

3、目录的权限

如果想进入一个目录,需要什么权限?(重点)
需要目录的x权限!

如果目录没有r权限,允许进入,允许在该目录下创建(写入)一个文件,不允许查看。

如果目录没有w权限,允许进入,允许在该目录下查看文件列表,但是不允许创建文件。

如果同时没有rw权限,允许进入,但不允许创建和查看目录下的文件列表(注意:不是文件内容!!!文件的内容,是否可以查看,由文件自己的权限决定!!!)

为何创建目录的默认权限是这个样子的:775,为何创建的普通文件的默认权限是664(不同的权限可能有差异)
在这里插入图片描述

1、默认目录的其实权限:777
2、默认普通文件的权限:666
3、默认权限!=最终权限
4、最终权限 = 默认权限& (~umask)

权限掩码:

umask

在这里插入图片描述
凡是在权限掩码中出现的权限都不应该在最终权限中出现!
目录权限:
000 000 010 :002
111 111 111 :777
111 111 101 :775
普通文件权限:
000 000 011 :003
110 110 110 :666
110 110 100 :664

设置umask为000:

umask 000

4、粘滞位

Linux下可以存在一些目录,拥有者和所属组是root,其他人允许以other的身份在该目录下进行文件的创建,读取,删除,修改等!
在一个共享目录下,用户A可以不让别人写和读,但别人可以删除。
如果我还想在共享目录下,形成临时文件但是,不允许除了我之外的人删除,就需要给共享的<目录>加上粘滞位

给目录添加粘滞位:

chmod +t 文件名

在添加粘滞位的目录下,只能自己删自己的文件。(对root无效)


file:辨别文件类型

file 文件名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/564561.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙实战开发:【7日天气预报】

先来看一下效果 本项目界面搭建基于ArkUI中TS扩展的声明式开发范式&#xff0c; 数据接口是[和风&#xff08;天气预报&#xff09;]&#xff0c; 使用ArkUI自带的网络请求调用接口。 我想要实现的一个功能是&#xff0c;查询当前城市的实时天气&#xff0c; 目前已实现的功…

基于VS code 实现Java前后端打通—基础—使用Springboot+postgreSql+mybatis+Navicat

前言&#xff1a; 作者学习webjava后的而总结&#xff0c;总的流程概括就是先使用springboot创建项目&#xff0c;在application.properties中完成相应的postgreSql和mybaits的环境配置和.xml文件中dependecy依赖配置&#xff0c;entities实现数据表的类型模板&#xff0c;分别…

大创项目推荐 图像识别-人脸识别与疲劳检测 - python opencv

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是…

Windows Server 2016 配置NTP客户端

目录 1. 前提条件1.1 进入服务管理界面1.2 开启Windows Time服务 2. 情况1&#xff1a;可以直接设置NTP时钟2.1 Internet时间设置 3. 情况2&#xff1a;有的版本服务器上没有“Internet时间”3.1 运行gpedit.msc 打开本地策略组3.2 Windows 时间服务3.3 配置Windows NTP客户端3…

主干网络篇 | YOLOv8改进之在主干网络中引入密集连接卷积网络DenseNet

前言:Hello大家好,我是小哥谈。DenseNet(密集连接卷积网络)是一种深度学习神经网络架构,它在2017年由Gao Huang等人提出。DenseNet的核心思想是通过密集连接(dense connection)来促进信息的流动和共享。在传统的卷积神经网络中,每个层的输入只来自于前一层的输出。而在…

SpringAOP+自定义注解实现限制接口访问频率,利用滑动窗口思想Redis的ZSet(附带整个Demo)

目录 1.创建切面 2.创建自定义注解 3.自定义异常类 4.全局异常捕获 5.Controller层 demo的地址&#xff0c;自行获取《《—————————————————————————— Spring Boot整合Aop面向切面编程实现权限校验&#xff0c;SpringAop自定义注解自定义异常全局…

C语言动态内存的管理

前言 本篇博客就来探讨一下动态内存&#xff0c;说到内存&#xff0c;我们以前开辟空间大小都是固定的&#xff0c;不能调整这个空间大小&#xff0c;于是就有动态内存&#xff0c;可以让我们自己选择开辟多少空间&#xff0c;更加方便&#xff0c;让我们一起来看看动态内存的有…

使用python实现布丰投针法

对于π的值,直到1946年的时候,人类才能将π的值精确计算到小数点后2037位,而现在的超级计算机的能力可以精确的计算到小数点后几十亿位,然而在计算机发明之前,还是使用这里的布丰投针法来计算π值,是最实用的方法。 使用代码来模拟这个过程,首先是程序设计思路的基本路…

反序列化漏洞简单知识

目录&#xff1a; 一、概念&#xff1a; 二、反序列化漏洞原因 三、序列化漏洞的魔术方法&#xff1a; 四、反序列化漏洞防御&#xff1a; 一、概念&#xff1a; 序列化&#xff1a; Web服务器将HttpSession对象保存到文件系统或数据库中&#xff0c;需要采用序列化的…

python写爬虫爬取京东商品信息

工具库 爬虫有两种方案&#xff1a; 第一种方式是使用request模拟请求&#xff0c;并使用bs4解析respond得到数据。第二种是使用selenium和无头浏览器&#xff0c;selenium自动化操作无头浏览器&#xff0c;由无头浏览器实现请求&#xff0c;对得到的数据进行解析。 第一种方…

算法---动态规划

动态规划 1.前言2. 示例 - 第N个泰波那契数2.1 算法原理&#xff08;重点&#xff09;2.2 代码 3. 总结解题思路 1.前言 哪些情况下会用到动态规划&#xff1a; 1.最优化问题&#xff1a;当需要求解最大值或最小值的问题时&#xff0c;可以考虑使用动态规划。例如&#xff0c…