Linux初识

Linux初识

本节内容
  • 初识Linux操作系统(Linux操作系统:是一个软件,核心功能就是管理计算机上的软硬件资源,就是操控计算机的软件和硬件的—目的:就是为了让计算机更加好用。windows占据了个人pc市场的95%份额,Linux操作系统在企业级服务器市场占80%份额。)
  • 初识别shell命令,了解若干背景知识
  • 使用常用Linux命令
  • 了解Linux权限概念和思想,能深度理解权限
  • 初步了解Linux目录结构含义
Linux发展史
Unix发展史
1968年,一些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。
Multics在多任务文件管理和用户连接中综合了许多新概念。

19691970年,AT&T的贝尔实验室研究人员KenTompson和DennisRitchie(丹尼斯里奇---C语言之父),在采用很多Multics特点的基础上开发了UINX系统。
它运行在小型机上,满足了系统对科研环境的要求。
从产生开始,UNIX就是一个有价值的、高效的、多用户和多任务的操作系统.

UNIX从满足个人的设计需求开始,逐步成长为由许多不同开发商所支持的标准软件产品。
第一个UNIX版本是免费给许多知名大学的计算机系使用的。

1972年,贝尔实验室开始发放商业版本,并且给不同的用户授权使用这个系统,使用者之一是加州大学伯克莱分校的计算机系。
伯克莱给系统增加了许多新的特点,后来成为了标准。

1975年伯克莱由下属部门BSD发行了自己的UNIX版本。
UNIX的BSD版本成为AT&T贝尔实验室版本的主要竞争者,而其它的独立开发出的UNIX版本也开始萌生。

Linux发展史
1991105日,赫尔辛基大学的一名研究生Linus Benedict Torvalds在一个Usenet新闻组
中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。
新的操作系统是受到另一个UNIX的小操作系统——Minix的启发,该系统是由一名叫AndrewSTanenbaum的教师开发的。
读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。真正的Linux0.01版本并没有被发布,原因是0.01版本不实用。

Torvalds于105日发布的这个Linux版本被称为0.02版。
它能够运行GNU Bourne AgainShell(bash)和GNU的C编译程序(gcc)以及为数不多的其它语言。Torvalds绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。

开源
Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布。
之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。
严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。
而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具

GNU
GNU通用公共许可协议,是一个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义
任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码
Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。
随着Linux操作系统飞速发展,各种集成在Linux上的开源软件和实用工具也得到了应用和普及,因此,Linux也成为了开源软件的代名词。
  • 一开始是Multics
  • Unix—精巧,非常小,而且具有模块化
  • C语言,跨平台,时移植性非常好的语言,同时重写了Unix
  • 免费给知名大学使用
  • Unix商业化,也就是Unxi收费了
  • AndrewSTanenbaum重新开发了一个类似Unix的小型操作系统,这个操作系统只用于教学—minix
  • 1990年,研究生李纳斯托瓦斯整合了自己所写的代码,发布在了学校的ftp网站上
  • linux社区形成,94年发布正式的1.0版本
  • GNU组织:是一个开源组织,开发了很多开源软件,linux也成为免费,开源(开放源代码,开源不一定免费)的操作系统
  • linux迅速抢占了企业级服务器市场
思考:为什么不使用图形界面?

因为凡是用界面操作的用命令都能完成,图形界面的好处是直观和简单。但是,为了保护系统底层设计不会被随意更改,我们在图形界面中往往不能对底层进行破坏,这样也保证了系统的顺利运行。

查看计算机中的网卡信息(查看Linux主机ip)
  • 在终端敲下ifconfig指令,查看到ip地址(ens33)
  • ifconfig 的第一种格式(或使用不带任何参数的ifconfig 命令)可以用来查看当前系统的网络配置情况。
  • ifconfig命令用于显示或设置网络设备。
  • ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置
Xshell下的复制粘贴
  • 复制 ctrl+insert
  • 粘贴 shift+insert
  • crtl+c ctrl+v是不可以的
  • 也可以通过设置,直接使用ctrl+v进行粘贴的操作
Linux下基本指令
目录相关命令—目录(其实就是windows下的文件夹)相关命令(针对文件夹的操作)
指令的使用方法
  • 命令名称 [操作选项] [操作对象]
    操作选项(通过操作选项选择想要进行的操作),有的操作不需要操作选项,比如说ifconfig,他就只是一个命令的名称,同时没有操作选项

操作对象,比如说windows下的文件就被称为是操作对象.

01—ls指令
  • 使用ls命令我们首先要了解Linux下的目录结构Linux系统是由各种文件和目录构成的,就像Windows系统下文件和文件夹的关系,一级一级的向下包含扩展,例如在根目录下有bin,boot,dev,etc,home等目录而在这些目录下又包含了其他的文件和目录,这样就形成了以根目录”/”为根的树形结构

  • 另:每个目录下都有“.”“…”这样的两个隐藏文件,“.”表示本文件,“…”表示父目录(ls . tools查看tools的上一层目录到底是什么)

  • ls+空格 默认是查看当前目录下有什么文件信息(类似于打开一个文件夹,可以看到文件夹中有什么文件)

  • 当前目录(是一个文件夹):linux下,打开一个终端,直接就处于一个目录之中,这个目录是家目录(当前用户的家目录)

  • 每当打开一个终端,都会默认处于一个目录–也就是当前用户的家目录

  • 家目录(也是一个文件夹):每个用户都有一个家,用户只能在自己的家里干自己想做的事情,如果跑到别人的家里,想干什么就不是用户自己说了算的。家目录是每个用户私有的文件夹,每个用户的工作文件夹都在这里

  • / – 根(根目录)—第一层目录,位于目录结构的最顶层,用斜线“/”表示,是系统中所有其他目录的根。一般根目录下只存放目录。每一个文件和目录从根目录开始。只有root用户具有该目录下的写权限。请注意,/root是root用户的主目录,这与/.不一样。系统根目录下一般包括:/bin,/boot,/dev,/etc,/home,/root,/sbin,/tmp,/usr,/var等。使用ls /,查看根目录下都有哪些内容

  • 在linux中,/是根目录,~是家目录。当root用户登录的时候,根目录等于家目录。也就是 cd ~和cd /会到同一个文件夹中去。当普通用户登录的时候 cd ~ 只相当于是 cd /home (家目录)

  • ls -a指令 列出目录下的所有文件,包括以.开头的隐藏文件

隐藏文件;linux下名称以.开头的文件默认是不显示的,称之为隐藏文件(Linux下文件名以.开头的文件默认不显示)

  • ls -l 查看文件的详细信息(文件的前面会多出一串信息),多出的一串信息包括 文件类型和文件权限信息,也可以同时使用,ls -l -a,或者ls -la也是可以的,显示为long format(长格式),列出文件的类型、权限、链接数、owner、group、大 小,时间,名字

linux下的文件类型并不以后缀名来区分,以d开头的是目录文件,以-开头的为常规文件,以b开头的是块设备文件,以c开头的是字符设备文件,以l开头是符号链接文件,p是管道文件,s是网络通信文件。

在Linux下,一切皆文件,比如说:键盘就是特殊的字符设备文件,硬盘就是特殊的块设备文件

ls 后+空格 再接指定文件,可以产看指定文件中的内容

每个目录下都有两个文件夹,一个. 一个…

  • .当前的目录自身(这个点默认情况下是可以省略的)
  • . .当前当前目录的上一层目录 通过ls . . 浏览上一层目录下有什么文件

Linux下文件夹的层级中其实有一个最上层的文件夹,到达这个文件夹就到达顶点了,使用 ls …/…,之后就不会发生改变了

Linux下目录结构是一个唯一的树形结构,最底层的目录被称为根目录,根目录用/表示

  • ls -i 输出文件的i结点的索引信息
  • ls -k 以k字节的形式表示文件的大小
  • ls -R 列出所有子目录下的文件(递归)
  • ls -1 一行只输出一个文件
  • ls -s 在文件名的后面输出该文件的大小
目录结构和磁盘空间的关系
在windows下,有多少个文件系统分区,就有多少棵目录树

在这里插入图片描述

在Linux下,有所不同,在linux中没有C,D盘之分,不管将磁盘分成多少个区域,linux下目录都只有一个(Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或者文件)

在这里插入图片描述

  • 给谁挂载就相当于是给谁分配了一块内存空间
    在这里插入图片描述
    在这里插入图片描述
  • 也就是说linux的目录结构是唯一的,Linux是给目录结构中的某个目录分配空间,Windows是给磁盘分区,分配空间
    在这里插入图片描述
  • 目录树是一个概念,是一种文件管理层级划分方式,文件的存储最终还是需要磁盘空间,linux下就是将一块磁盘空间挂载(相当于分配)到指定目录,就相当于这个目录有了一块存储空间,因此,linux下规定,至少一个磁盘分区需要挂载在根目录上。(因为根目录是其他目录的父目录,根目录有了空间,就代表大家都有了空间了)
  • 如果你想给其他目录单独分配一块空间,这也是可以的,就单独给其挂载一下就可以了,比如说我想给etc单独挂载,那么etc就不会继续挂载在根目录上了。
  • window是给每个磁盘分配一个目录结构,linux是给目录中的某个目录分配空间
02 pwd指令
  • 功能:显示用户当前所在目录(查看当前所在路径),其没操作选项,也没有操作对象,所显示出来的路径是绝对路径。

  • 什么是文件路径—文件路径就是这个文件存放的地方,可以联想为 文件的“家”

  • 从根目录开始,依次将各级子目录的名字组合起来,形抄成的路径就称为某个文件的绝对路径。例如,根目录袭(/)下有目录usr,usr目录下有子目录bin,bin目录下有文件chsh,则chsh文件的绝对路径百就是:/usr/bin/chsh

  • 相对当前所在路径的位置,例如当前所在的位置为/usr,也就是在根目录的usr子目录下,则chsh文件相对当前位置的路径为:bin/chsh

  • 绝对路径:以根目录为起始路径的一种路径表达方式,也就是说一个文件的路径不会随着当前所在目录的不同而改变

  • 相对路径:相对于当前位置文件所处的路径一种以当前路径作为起始路径的路径表达方式,比如./a.txt 表示当前路径下的a.txt文件.一个文件的路径会随着当前所在目录的不同而发生改变,也就是说是相对路径。

  • 绝对路径永远都是相对于根文件夹的。它们的标志就是第一个字符永远都是“/”。

  • 相对路径永远都是相对于我们所处的文件夹位置。它们的第一个字符没有“/”。

  • 通常提示符中就显示有当前目录,但是它只显示目录名而不是全路径,比如当前目录是/usr/local/etc和当前目录是/etc,提示符中都显示etc,这个时候用pwd命令就可以看清楚到底是哪个路径,免得搞错,这就是这个命令的作用。

03 mkdir指令(重要)
  • 语法:mkdir [选项] dirname
  • Linux mkdir命令用于建立名称为 dirName 之子目录。
  • 例如: mkdir temp;就是创建了要给名称为temp的目录,此时没有操作选项
  • 功能:在当前目录下创建一个名为dirname的目录,这个目录里面什么都没有,是一个空目录,mkdir创建的是一个空目录。(但是输入mkdir abc/cde,是无法创建的,因为并没有abc这个目录),abc/cde是一个路径,表明abc目录中存在有cde,但是此时使用mkdir -p abc/cde就可以创建成功了,创建出了abc,abc中有cde
  • -p 确保目录名称存在,不存在的就建一个。
  • mkdir -p 操作:递归多层级创建目录,一个路径中那层目录不存在就都会创建
04 rmdir指令&&rm指令(重要)

rmdir是一个与mkdir相对应的命令,mkdir是创建目录,而rmdir是删除命令

  • Linux rmdir命令删除空的目录。
  • 功能:删除空目录(rmdir并不常用,因为我们通常要去删除一个目录的话,这个目录下一般都会有东西的,也就是说这个目录是非空的)
  • rmdir -p 操作: 递归删除多层级空目录
  • -p是当子目录被删除后使它也成为空目录的话,则顺便一并删除

rm 命令(并没有指定要删除目录还是文件)—(默认删除普通文件,无法删除目录)

  • Linux rm命令用于删除一个文件或者目录。
  • 用户可以用rm命令删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变
  • rm -r 操作:rm -ri tmp(加上一个i是为了看到提示信息) 这个操作的作用是:递归删除一个目录,包括目录下的所有文件(可以用于多层级去删除目录,包括目录下的所有文件)
  • -i 删除前逐一询问确认。
  • rm -f 操作:忽略提示信息,直接操作
  • rm -i 删除前诸一询问确认
  • 最好用的带参命令是rm -rf ,确定好了要删除的话,该命令不管是文件夹还是文件都会直接强制删除。
  • 文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。
05 cp指令(重要)–(下去之后调研一下根目录下放的都是什么文件)
  • 功能:复制文件或者目录(将一份文件复制一份到指定位置)
  • Linux中使用cp命令复制文件,本文就日常工作中常用的cp命令整理如下
  • 命令格式为:cp 源文件 目标文件
  • 是拷贝文件的,默认无法拷贝文件夹
  • 说明:cp指令用于复制文件或者目录,如果同时指定两个以上的目录或者文件,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或者目录复制到此目录中。若同时指定多个文件或者目录,而最后的目的地并非是一个已经存在的目录,则会出现错误信息
  • 这个是使用频率最多的命令,负责把一个源文件复制到目标文件下。复制到文件夹下,则文件名保持不变,复制到文件中,则文件名变更。如果目标文件已经存在或目标文件夹中含有同名文件,则复制之后目标文件或目标文件夹中的同名文件会被覆盖。
  • cp -r 操作:递归复制目录包括目录下的所有文件
  • 这个也是使用频率很高的命令,只需要记住复制文件夹一定要加“-r”参数,否则会出现“cp: omitting directory”错误
06 mv指令(重要)

mv命令是move的缩写,可以用来移动文件(类似于剪切),是Linux系统下常用的命令,经常用来备份文件或者目录

  • mv命令是move的缩写,可以用来移动文件或者将文件改名,是Linux系统下常用的命令,经常用来备份文件或者目录
  • mv [选项] 源文件或目录 目标文件或目录
  • 功能:mv命令是将文件移至一个新的目录中。
  • mv -f 操作: force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • mv -i 操作: 若目标文件已经存在时,就会询问是否覆盖
07 cd指令
  • 功能:改变工作目录,将当前工作目录改变到指定的目录之下
  • 特殊的是:cd ~ 不管在什么目录之下,都可以回到用户的家目录
  • cd 命令 :进入磁盘的某个目录下[dir]
  • cd 命令:切换当前目录至其他目录
  • cd /:加上斜杠表示是进入到根目录。
  • cd 进入用户主目录
  • cd ~ 进入用户主目录
  • cd - 返回进入此目录之前所在目录
  • cd … 返回上一级目录
  • cd …/…返回上两级目录
普通文件命令
01 touchu指令
  • 功能:touch命令可以更改文档目录的日期时间,包括存取时间和更改时间,新建一个空文件(主要还是改变时间属性)
  • Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
  • 使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件
  • 一个文件的时间属性并不一定是最后修改的时间,还有其他的时间属性,最近访问时间(Access,什么时候被打开过,什么时候被访问过,访问不代表被修改),最近修改时间(Modify),最近改变时间(Change,几乎是系统的当前时间)
  • touch -a 操作: 只更改存取信息
  • touch -d 操作: 使用指定日期时间,而非现在的时间,时间的字符串要拿双引号括起来
  • touch -m 操作: 只更改变动时间
02 cat指令
  • 功能:打印文件内容到终端显示
  • cat 命令用于连接文件并打印到标准输出设备上
03 more指令
  • 功能:more命令,类似于cat,分页显示文件内容,但是向上翻页和滚动的功能是没有给出的
  • Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而且还有搜寻字串的功能(与 vi 相似)
  • more -n:对输出的所有编号(num和n是一样的其实)
  • -num 一次显示的行数
  • more -q:退出more
  • 回车:向下按行滚动
  • 空格:向下翻页
  • b 键就会往回(back)一页显示
04 less指令(重要)
  • 分页显示文件内容
  • less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件
  • less工具也是对文件或者其他输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大
  • less的用法比起more更具有弹性,在more的时候,我们并没有办法向前翻,只能往后面看,但是使用less的时候是可以向前查看的。
  • ↑或者↓ 或者j/k 按行上下滚动 f/b 上下翻页滚动
  • /字符串 操作:是向下匹配字符串的功能
  • ?字符串 操作:是向上匹配字符串的功能
  • less -i 操作:忽略搜索时的大小写
  • less- N 操作:显示每行的行号
  • less不会显示文件内容的百分比
05 head指令

head和tail就像它的名字一样浅显易懂,他是用来显示开头或者结尾某个数量的文字区块,head是用来显示档案的开头至标准输出中,而tail是显示文档的末尾

  • head -n filename表示查看一个文件的前n行,如果不指定n,则默认显示前10行
  • head 默认打印相应文件的前10行内容
  • head -n 是打印相应文件的前n行内容
06 tail 指令

tail指令默认显示文件的后10行内容

  • linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。
  • tail -n 20 filename----说明:显示filename最后20行。
  • tail -r -n 10 filename—说明:逆序显示filename最后10行。
  • tali -n 显示文件的后n行内容
  • tail -f 循环读取—冬天一直等待刷新文件末尾新内容
  • 跟tail功能相似的命令还有:
  • cat 从第一行開始显示档案内容。
  • tac 从最后一行開始显示档案内容。
  • more 分页显示档案内容。
  • less 与 more 相似,但支持向前翻页
  • head 仅仅显示前面几行
  • tail 仅仅显示后面几行
  • n 带行号显示档案内容
  • od 以二进制方式显示档案内容
07 | 管道链接符 指令

如果此时,我想打印文件的第10行内容,要怎么完成呢

  • head -n 10 +文件名 | tail -n 1 就可以正确的打印第10行的内容了,原因在于 |是连接两个命令,将前面命令的输出结果交给后面的命令进行处理。
  • 管道“|”可将命令的结果输出给另一个命令作为输入之用:
  • 可以连用(连接多个)
(其他指令范畴)echo指令
  • 功能:将数据写入到标准输出(口语化的意思就是打印)
  • echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
  • 该命令的一般格式为: echo [ -n ] 字符串
  • 其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割
  • 标准输入(键盘),标准输出(显示器),标准错误(显示器),将数据写入到标准输出也就是将数据显示在显示器上
  • echo “nihaoa” >>+文件名,就是将数据输入到相应的文件当中,>>叫输出重定向,默认情况下是标准输出重定向,作用是将原本要写入标准输出的数据,不写入标准输出,写入到指定的文件中。(追加重定向,将新数据写入到文件末尾,并不会清空文件原有的内容)
  • 也是输出重定向,作用是将原本要写入标准输出的数据,不写入标准输出,写入到指定的文件中;但是,二者的区别在于,>是清空重定向,清空文件原有内容,将新的数据,写入到指定文件中

  • echo是打印变量的值或者给定的字符串,比如,输入echo hello或者echo "hello"都是在控制台打印出hello单词但是我们需要把打印出来的字符串记录到文本文件中,就需要>和>>命令touch a.txt 新建一个文本文件a.txtecho hello > a.txt则a.txt中会记录下hello,但是如果再次执行echo hello > a.txt。则会覆盖之前的hello,怎样追加呢?需要>>命令echo world >> a.txt 则a.txt中会记录的是hello word,但是hello和word不是写在一行的,
(其他指令范畴)man指令
  • Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是—man 语法: man [选项] 命令
  • Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。同时也可以使用man man 查看man的使用方法。
  • 按q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
热键
  • crtl+c,中断当前操作(tail-f中,q无法退出)
打包命令

文件的打包:将大量文件进行打包,最终合成一个文件,打包的同时也可以对文件数据进行压缩处理

不同的压缩指令格式:

01 zip/unzip指令
  • 语法: zip 压缩文件.zip 目录或者文件
  • 功能:将目录或文件压缩成zip格式
  • unzip — unzip passwd
  • 举例子:将test2目录压缩zip test2.zip test2
  • 把/home目录下面的mydata目录压缩为mydata.zip ---->zip -r mydata.zip mydata #压缩mydata目录
  • 把/home目录下面的mydata.zip解压到mydatabak目录里面—>unzip mydata.zip -d mydatabak
02 gzip/gunzip也是压缩,是另一种压缩的格式
  • 语法:gzip [选项] 压缩(解压缩)的文件名 各选项的含义:
  • gzip 不用指定压缩包的名称,只需要告诉出来需要压缩哪个文件就可以了
  • 格式:gunzip 压缩文件(不保留压缩文件)
  • gunzip 文件名.gz 解压缩
03 bzip2/bunzip2压缩和解压缩
  • bunzip2 文件名.bz2
04 Linux下最常用的打包工具是tar
  • tar是linux下最常见的打包工具,包含打包,解包,压缩,解压缩的功能在内
  • tar -c 操作:打包(建立一个压缩文件的参数指令)
  • tar -x 操作:解包(解开一个压缩文件的参数指令)
  • tar -z 操作:打包/解包时进行gzip格式的压缩,解压缩
  • tar -j 操作:打包/解包时进行bzip2格式的压缩,
  • tar -v 操作:在打包/解包的时候希纳是详细的打包/解包内容
  • tar -f 操作:指定压缩包的名称
  • tar -t 操作:查看tarfile里面的文件
  • 这些操作一般都时配合着使用,比如说-czvf(打包)/-xzvf(解包),-f选项通常是在最后,因为要指定包名称。-f后面空格之后紧跟包名称,然后才是需要打包的文件
  • tar -czvf tar.gz passwd zhang.txt 打包并进行gzip格式的压缩
  • tar -xzvf tar.gz passwd zhang.txt 解包并进行gzip格式的解压缩
  • 最好是用什么格式进行压缩,同时用相应的格式进行命名
  • -f是必须要有的,因为要在-f的后面指定压缩包的名称,不给是不可以的
    在这里插入图片描述
    在这里插入图片描述
匹配查找命令
打包命令
匹配查找命令
查找/匹配查找命令

查找/匹配指令指的是在文件内容中匹配字符串以及在目录中查找文件

grep 在文件内容中匹配包含有指定字符串的行

  • 语法: grep [选项] 搜寻字符串 文件
  • 使用方法: grep ‘指定的字符串’ + 文件名
  • 功能: 在文件中搜索字符串,将找到的行打印出来
  • grep -i 操作: 忽略大小写,进行匹配 (默认是在文件中进行查找)
  • grep -v 操作: 匹配不包含指定字符串的行 (默认是在文件中进行查找)
  • grep -R 操作: 操作的对象是目录,也就是说是对目录下的所有文件逐个进行内容匹配 (默认是在目录中进行查找)
  • grep [选项] ”模式“ [文件]
  • -E :开启扩展(Extend)的正则表达式。
  • -n :显示行号
  • -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
  • -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
  • -o :只显示被模式匹配到的字符串。
  • –color :将匹配到的内容以颜色高亮显示。
  • -A n:显示匹配到的字符串所在的行及其后n行,after
  • -B n:显示匹配到的字符串所在的行及其前n行,before
  • -C n:显示匹配到的字符串所在的行及其前后各n行,context

find 在指定目录中查找文件 find directory_name

  • Linux 查找命令是Linux系统中最重要和最常用的命令之一。查找用于根据与参数匹配的文件指定的条件来搜索和查找文件和目录列表的命令。查找可以在各种条件下使用,您可以通过权限,用户,组,文件类型,日期,大小等可能的条件查找文件。从基本到提前使用find命令。
  • find -depth 指定目录深度—深入多少层目录进行查找
  • find -[amc]min/ -[amc]time -amin-mmin-cmin -atime-mtime-ctime 按照时间属性查找文件,a,m,c是三种时间属性(之前学到过),min是按分钟查找,time是按天查找
  • find -size 按照文件大小查找文件
  • find -type 按照文件类型查找文件 -type [fdbclps]
  • find -name 按照文件名称查找文件 超找文件名称中包含a的文件 ,用通配符:find ./ -name “a”(重点)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
在命令中使用单引号和双引号的区别
  • 双引号:双引号中特殊字符依然具有特殊含义,比如说\字符
  • 单引号:单引号中特殊字符去除了特殊含义,就表示当前的字符
特殊指令
  • ifconfig/echo/su/man
  • reboot 重启
  • shurdown -h now 立即关机
热键
  • tab 文件名自动补全 按一部分文件名出来 再按tab,文件名称就会自动补全
  • ctrl+c 中断当前操作
shell的初步认识

其实我们每个打开的终端中都运行了一个程序,这个程序就是shell

操作系统

  • 系统内核—完成操作系统核心的功能
  • 外部应用–为了使操作系统更加的好用
    在这里插入图片描述
shell命令以及运行原理
  • Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:命令行解释器,主要包含:

  • 将使用者的命令翻译给核心处理。
  • 同时,将核心的处理结果翻译给使用者
  • shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
shell是什么?
  • shell是一个命令行解释器,也就是一个软件,每个终端都会运行一个shell程序,捕捉用户输入的指令,然后去执行大佬们封装的功能—shell命令程序,内部的系统调用接口,向内核发出请求,请求硬盘的操作,最终再将结果返回给用户。
  • shell就是系统内核于用户之间的桥梁,用户想要干什么,告诉给shell,然后shell请求内核;内核处理完,结果返回给shell,shell再返回给用户。
  • shell命令其实就是封装的外部接口程序
  • windows下的shell就是界面
Linux下的权限认识:
权限是什么
  • 权限就是对用户的一种权力限制
  • 因为linux是一种多用户的操作系统,人多了,就要有权限的设置,这时出于对系统的安全考虑
linux系统的操作权限:
  • 系统管理员用户—可以再linux系统下做任何事情,不受限制
  • 普通用户:再linux下只能做有限的事情
  • su 命令—功能:切换用户,例如要从root用户切换到普通用户user,则要使用su user
Linux下文件的操作权限

—文件的操作对用户进行分类(文件访问者的分类)

  • 文件和文件目录的所有者 -u
  • 文件和文件目录的所属组 -g
  • 其他用户(除了上述两类人的其他人) -o

—对用户所能进行的操作进行分类

  • 对于文件:可读 r/可写 w/可执行 x
  • 对于目录:可浏览/可在内创建/删除文件/可进入
权限的表示方法:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 在系统中使用位图来存储权限—位图:就是二进制比特位
  • rw-r–r-- ->110100100 三个八进制数字—644
文件权限的基本操作
01 umask
  • 在linux系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw- ,创建目录的默认权限 drwxrwxrwx ,而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。
  • 可以看到umask值为0002,其中第一个0与特殊权限有关,可以暂时不用理会,后三位002则与普通权限(rwx)有关,其中002中第一个0与用户(user)权限有关,表示从用户权限减0,也就是权限不变,所以文件的创建者的权限是默认权限(rw),第二个0与组权限(group)有关,表示从组的权限减0,所以群组的权限也保持默认权限(rw),最后一位2则与系统中其他用户(others)的权限有关,由于w=2,所以需要从其他用户默认权限(rw)减去2,也就是去掉写(w)权限,则其他人的权限为rw - w = r,则创建文件的最终默认权限为 -rw-rw-r–
  • umask—查看或者设置文件的创建权限掩码—权限掩码决定了一个文件创建出来之后的默认权限 777-掩码=文件的默认权限;正确的解析算法—777&umask取反
  • umask默认会把文件的可执行权限去掉,刚创建的文件先不给出可执行的权限
  • 功能:查看或修改文件掩码
  • 新建文件夹默认权限=0666
  • 新建目录默认权限=0777
  • 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
    格式:umask 权限值
  • 说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
  • 更改umask值—可以通过命令 umask 值 的方式来更改umask值,比如我要把umask值改为027,则使用命令 umask 027 即可。改成027后,用户权限不变,群组权限减掉2,也就是去掉写(w)权限,其他用户减7,也就是去掉读写执行权限(rwx),所以其他用户没有访问权限。
02 chmod
  • 修改一个已经存在文件的权限,可以直接通过八进制数字修改,比如说,chomd 666 a.txt
  • 还可以给指定文件添加或者取出权限,就用加号或者减号,比如chmod o-r a.txt
  • 用户符号:u所有者,g所属组,o其他用户,a所有用户
  • 如果你修改不某个文件的内容,则你可能没有对于这个文件可写的权限,这个时候可以切换到root用户,修改这个文件的权限
03 chown
  • 功能:修改文件的拥有者
  • 格式:chown [参数] 用户名 文件名
  • 实例: # chown user1 f1 # chown -R user1 filegroup1
04 chgrp
  • 功能:修改文件或目录的所属组
  • 格式:chgrp [参数] 用户组名 文件名
  • 常用选项:-R 递归修改文件或目录的所属组
05 粘滞位
  • 特殊权限:但是这三种权限就足够了吗?我们现在来说说在linux下的另一个特殊权限。首先我们来看看在根目录下的一个目录tmp,可以看到tmp目录的other权限是’rwt’,那么这里的t又是什么权限呢,有什么意义
  • 粘滞位(Stickybit),又称粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,也只能针对⽬录设置,对于⽂件⽆效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。
  • 通过chmod +t 设置一个目录的粘滞维权限,设置后则这个目录中,其他用户可以创建文件,但是只能删除自己的文件
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值