zoukankan      html  css  js  c++  java
  • Linux基础指令--韩顺平老师课程笔记

    一、vi和vim编辑器

    ①、三种模式

      所有的 Linux 系统都会内建 vi 文本编辑器。vim 具有程序编辑的能力,可以看做是 vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。所以这里以vim为主。你可以把它当做是Windows下的文本编辑器。

      当使用vim xxx时,如果xxx文件不存在,则vim编辑器会在当前的工作目录下创建此文件,如果此文件已经存在则打开此文件。打开文件后只能查看文件内容而不能编辑文件内容,vim编辑器的这种模式被称为------正常模式。

      如果要编辑文件的内容,可以在正常模式下按 i 或者 a键进入------插入模式/编辑模式。

      当需要保存修改的文件时,需要先(按Esc)退回正常模式,在正常模式下按下 :键或者 / 键进入------命令行模式。

      同样的,命令行模式下按Esc键可以退回正常模式,虽然正常模式和编辑模式能直接切换,正常模式和命令行模式能直接切换,但是命令行模式和编辑模式却要通过正常模式间接切换。

      三个模式的关系如下图:

    ②、案例操作

      以上是vim编辑器的三种模式,下面举一个例子来具体说明。

      1、在命令行窗口输入:vim test1

      2、vim编辑器创建此文件并进入正常模式

      3、i 键进入编辑模式

      4、随便输入一些内容

      5、按Esc退回正常模式

      6、按:键进入命令行模式

      7、输入wq(write+quit)保存文件内容【此时也可以输入q,他会提示你文件内容将不会被保存,也可以输入q!,此时将不会提示直接退出。相同的也有wq!,当文件内容修改可能会对其他文件造成影响时,wq命令将不会执行,如果要强制修改文件内容就需要wq!。】,此时会返回命令行窗口。

    ③、vim的一些常用快捷键

      1) 拷贝当前行 yy ,  拷贝当前行向下的 5 行 5yy,并粘贴(p)。

      2) 删除当前行 dd , 删除当前行向下的 5 行 5dd

      3) 在文件中查找某个单词  [命令行下  /关键字  , 回车  查找  , 输入 n 就是查找下一个 ],查询hello.

      4) 设置显示文件的行号,取消文件的行号.[命令行下 : set nu  和 :set nonu]

      5) 编辑 /etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg],注意这些都是在正常模式下执行的。

      6) 在一个文件中输入  "hello" ,然后又撤销这个动作,再正常模式下输入 u

      7) 编辑 /etc/profile 文件,并将光标移动到 第 20 行 shift+g : 第一步:显示行号 :set nu    第二步:输入 20 这个数    第三步: 输入 shift+g

    ④、快捷键大全

    二、开机、重启、用户的登陆和注销

      ①、关机和重启指令

      halt--->关机指令

      reboot--->重启指令

      syn--->将内存中的数据持久化到磁盘中,建议每一次关机和重启时,都敲一遍syn指令,防止数据丢失。

      除了这三个常用的指令,还有一套指令用于关机和重启:shutdown -h now 立刻关机

                               shutdown -h 1      1分钟后关机

                               shutdown -r now   立刻重启

      ②、用户的登陆和注销

      Linux是一个多用户操作管理的系统,在日常使用时尽量避免使用root用户登陆,因为root用户的权限太高,操作不当容易造成系统出现问题。

      Linux操作系统中,一切事物都被虚拟化为一盒目录或者文件,并且Linux系统存在运行级别,这个在本篇文章的后面会讲解。

      可能刚接触Linux时,比如说在安装CentOS7中如果没有安装图形化界面的朋友们进去就是一团黑,没有一个友好的图形化界面就被劝退了,这属于3级运行级别,而另一个常用额运行级别为5级(图形化运行级别)。

      之所以提到运行级别,是因为在用户注销的命令中有一个常用的命令logout,但这个命令需要在3级运行级别下才能执行。

      之所以提到多用户管理,是因为在命令行窗口输入命令 (su - 用户名)注意 - 前后都要有空格哦,这个命令下一节还会讲,就可以切换到别的用户,值得一提的是,当高权限用户(root)切换低权限用户时,是不需要输入密码的 ,但是反过来就需要输入登陆密码了。另外当root用户登陆低权限用户时,可以输入exit登出(退回root账户),此方法不使用低权限用户登陆root。

    三、用户管理

      ①、基本介绍

      1)刚才提到Linux是一个多用户多任务的操作系统,任何一个想要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

      2)为了方便管理用户和用户权限,Linux还引入了“组”的概念。并且规定一个用户至少属于一个组,如果在创建用户时不指定组,则会默认创建一个与账户名同名的组,并将该用户划到该组中。

      实际上:Linux在管理用户权限时,既是面向用户的,又是面向组的,通过管理用户的权限规定了其对所拥有的文件的权限(读、改、执行),通过管理组的权限而规定了该组中用户对于某一文件的权限。

      ②、概念图

      Linux的home目录用户管理用户,当新创建一个用户时,就会在home目录下创建一个同名子目录,该子目录就是此用户的工作空间。

      ③、添加用户

      设想一下,此时的你已经工作多年称为项目经理了,此时公司新来了一位员工,你需要给他创建一个账户并根据他的部门划到相应的组中。

      好了别做梦了【敲脑袋】。

      useradd 【选项】 用户名,选项可以不填。

      useradd   -d  /home/目录名  用户名,用这个命令创建用户时,会将指定的目录名作为此账户的家目录。如果此目录不存在则创建,这也就也为着,一个家目录中并不是只能保存一个用户的信息。

      你可以试一下:

      useradd -d /home/dog dog

      useradd -d /home/dog cat

      再使用下面介绍的用户查询指令查询: id dog 和 id cat

      

      ④、给指定用户指定或修改密码【此操作需要使用root权限】

      passwd  用户名

      ⑤、删除用户

      userdel 用户名  这个命令在删除用户时,不会删除该用户的家目录

      userdel  -r  用户名   这个命令在删除用户时,会将此用户的家目录也删除【不建议使用】

      为什么不建议使用第二条指令呢?通常员工离职后,有很多数据保存在他的家目录中,这些信息对于公司来说可能是有价值的,所以不建议删除家目录。

      ⑥、查询用户

      id 用户名

      

      ⑦、切换用户

      在Linux中,在当前账户的权限不够时,可以切换用户。

      su - 用户名

      值得一提的是:高权限用户切换低权限用户时,不需要输入密码,但反过来则需要输入密码。

      当使用root用户登陆低权限用户时,可以使用exit登出返回root用户。

      

      ⑧、用户组

      Linux引入了组的概念用来管理用户权限,实际上Linux是通过规定组的权限去定义用户权限的。

      groupadd 组名  ---增加组

      groupdel  组名  ---删除组

      ⑨、增加用户时指定所属的组

      当新创建一个用户时,如果不指定组,系统会默认的创建一个同名组,如果想创建一个用户并指明其所属的组,应该使用指令:

      useradd -g 用户组 用户名

      

      ⑩、修改用户的组

      usermod -g 用户组 用户名

      

      附:一些重要文件

      a)/etc/passwd文件:用户的配置文件,记录了用户的各种信息

      b)/etc/shadow文件:口令的配置文件

      c) /etc/group文件:组的配置文件,记录了组的信息

    四、实用指令

      在操作Windows系统时,我们只需要点击鼠标就可以轻松操作Windows系统,但是操作Linux系统却是一行行指令完成的。在介绍如何操作Linux之前,先介绍一下;Linux的运行级别。

      Linux共有0~6,7个运行级别,分别是:

      0:关机

      1:单用户级别【常用于找回根用户的密码】

      2:多用户状态没有网络服务

      3:多用户有网络服务

      4:Linux操作系统未使用这一级别,将它保留给了用户

      5:图形界面

      6:系统重启

      常用的运行级别是3 和 5 ,自改默认的运行级别可通过修改文件/etc/inittab的id:5:initdefault这一行中的数字。

      1)man指令和help指令

      当不熟悉一个指令的功能时,可以使用man 指令名或者 help 指令名来了解指令的相关信息

      但是还是直接问百度或者查询菜鸟教程比较友好。

      2)pwd指令

      此指令用于显当前的工作目录

      3)ls指令

      ls 【选项】【目录或文件】

      选项处可填 -a 或者 -l ,也可以组合使用-al。

      -a :用于显示当前目录所有的子目录和文件,包括隐藏的文件

      -l :以列表的形式显示当前目录的文件和子目录

      当使用ls -l时,其实和 ll 指令效果相同。

      4)cd指令

      cd 路径  此指令用于切换工作目录,路径可采用相对路径和绝对路径

      比较常用的有:cd ~   此指令用于回到自己的家目录

             cd ..  此指令用于切换到上级目录

      5)mkdir指令

      mkdir 【选项】 目录名,默认情况下此指令只能创建一级目录,而不能创建多及目录,比如说,我在root/目录下可以使用指令 mkdir animal/ 在root目录下创建一个animal目录,但是不可以使用mkdir animal/dog 创建多级目录,如果想要创建多级目录,需要在选项处写上 -p 。在创建目录的时候一定要注意路径是否正确。

      

      6)rmdir指令和rm指令

      rmdir 目录名  用于删除非空目录

      rm -rf 目录名  级联删除非空目录及其子目录和内容

      -r 表示递归删除整个文件,-f 表示强制删除不提示

      

      当然在删除目录的时候也需要注意路径是否正确,删除目录也可以使用绝对路径和相对路径:

      

      

      7)touch指令

      touch指令用于创建文件

      touch hello.txt ,也可以同时创建多个文件:touch dog.txt cat.txt,中间用空格隔开就行。

      

      8)cp指令

      cp指令用于拷贝文件到指定目录

      cp 【选项】 源文件 目标目录

      选项处可填 -r,表示如果源文件是是目录,将递归复制此目录中下所有内容至目标目录。

      拷贝文件到具体目录:

      

      递归复制目录及其下文件至目标目录:

      

      9)mv指令

      mv指令用于移动文件与目录,也可以用于重命名

      mv oldNameFile newNameFile  重命名

      mv dog.txt wangwang.txt

      mv 源文件 目标目录

      

      10)cat指令

      cat指令用于查看文件内容,以只读的方式打开文件

      cat 【选项】 文件名

      选项处可填 -n ,代表显示行号。在使用vim编辑器打开文件的时候,在命令行模式下,输入set nu也可以显示行号,set nonu,取消行号显示。

       11)more指令

      more指令是一个基于vim编辑器的文本过滤器,他以全屏的方式按页显示文本文件的内容,more指令中还内置了若干快捷键。

      more 文件名

      常用快捷键:

      

      12)less指令

      less指令用来分屏查看文件内容,他的功能与more指令类似,但是比more指令更加强大,支持各种显示中断,less指令在显示文件内容时,并不是一次将整个文件加载完成之后再显示的,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

      less 文件名

      快捷键:

      

      13)>指令和>>指令

      > 输出重定向:会将原来的文件内容覆盖

      >>追加:不会覆盖原来文件的内容,而是追加到文件尾部

      a)ls -l > 文件

      

      ls -l > a.txt,将ls -l的内容覆盖写入到a.txt 文件,如果该文件不存在,就创建该文件。

      b)ls -al >> 文件

      

      c)cat 文件1 > 文件2(将文件1的内容覆盖到文件2)

      d)echo "内容">>文件

      14)echo指令

      echo 输出内容到控制台

      

      15)head指令

      head用于显示文件的开头部分信息,默认情况下head指令显示文件的前10行内容。

      head 文件名

      head -n 5 文件名(显示文件前5行内容,5可以是任意数字)

      

      16)tail指令

      tail指令用于输出文件尾部的内容,默认情况下tail指令显示文件的后10行信息。

      基本语法:

        1)tail 文件名  (查看文件后10行内容)

        2)tail -n 5 文件名  (查看文件后5行内容,5可以为任意数字)

        3)tail -f 文件名  (时事追踪该文档的所有信息,工作中经常使用)【重点】

      案例1:查看文件/etc/profile最后5行内容

      

      案例2:实时监控mydate.txt,看看文件内容变化【追加的日期信息】

      

      17)ln指令

      软连接也叫符号连接,类似于Windows里的快捷方式,主要存放了连接其他文件的路径

      ln -s 【原文件或目录】 【软连接名】(给原文件创建一个软连接)

      

      删除上面建立的软连接

      

       18)history指令

      查看已经执行过的历史命令,也可以执行历史命令

      19)date指令

        ①date  (显示当前时间)

      

        ②date +%Y  (显示当前年份)

        ③date +%m  (显示当前月份)

        ④date +%d  (显示当前是哪一天)

      

        ⑤date "+%Y-%m-%d %H:%M:%S"  (以固定格式显示年月日时分秒)

      

        ⑥date -s 字符串时间

      

      20)cal指令

      此指令用于查看日历

      cal  显示当前月的日历

      cal 年份  显示指定年份的日历

      21)find指令

      find指令将从指定目录向下递归遍历各个子目录,将满足条件的文件或者目录显示在终端。简单说就是查找指定目录下是否存在指定文件,存在的话有多少个

      ①按文件名查:

      

      ②按所属用户查

      find animal/ -user cat.txt

      ③查找整个Linux系统下大于20Mb的文件(+n:大于  -n:小于  n:等于)

      find / -size +20M

      ④查找以 .txt结尾的文件

      find / -name *.txt

      22)locate指令

      locate指令可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库事先快速定位给定的文件。locate指令无序遍历整个文件系统,查询速度较快,为了保证查询结果的准确性,管理员必须定期更新locate时刻。

      案例:

      

      这里的updatedb是更新locate数据库,locate命令之所以比find -name 文件指令块快的多,原因在于他不是搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mloacte.d,因此在我们用whereis和locate查找文件 时,有时会找到已经删除的文件,或者刚刚创建的文件却无法查找到,就是因为数据库文件没有更新,为了避免这种情况,可以在使用locate指令之前,先试用updatedb指令,手动的更新这个包含本地所有文件信息的数据库。

      23)grep指令和管道符 |

      grep指令用于过滤查找,管道符“|”,用于将前一个指令的输出结果传递给后面一个指令处理。通常而这都是组合使用的。

      grep 【选项】 查找内容 源文件

      选项处可填:-n 显示匹配行及行号

            -i  忽略字母大小写

      

      24)压缩和解压缩指令【重要】

      A)gzip/gunzip指令

        gzip 文件  (压缩文件)

        gunzip 文件.gz  (解压缩文件)

      B)zip/unzip 指令

        zip 【选项】 xxx.zip  (压缩文件)

          选项处可填:-r  表示递归压缩

        

        unzip 【选项】 xxx.zip (解压缩文件)

          选项处可填:-d 目录名 (表示将解压缩后将文件保存在指定文件夹)

        unzip -d /opt/tmp/ mypackage.zip  表示将mypackage.zip解压缩到指定目录 /opt/tmp/下

       

      C)tar指令【常用】

        tar指令既可以压缩也可以解压缩

        tar指令压缩后的文件后缀名是 .tar.gz 的文件

        tar 【选项】 xxx.tar.gz 要打包的内容以空格隔开

        常用选项:

        

      案例1 打包文件:

      

      案例2 打包目录:

      

      案例3 将dogpackage.tar.gz解压到当前目录

      tar -zcvf dogpackage.tar.gz

      案例4 解压dogpackage.tar.gz到固定目录(此固定目录要实现创建好)

      tar -zcvf dogpackage.tar.gz -C  /home

    附:本菜鸡刚接触Linux,请各位大佬不吝指正错误。

  • 相关阅读:
    QB学堂济南游记
    区间质数查询 luoguP1865
    基础数据结构 ①(栈|队列|链表)
    图论算法->最短路
    小谈记忆化搜索
    Hibernate其它API
    Hibernate中Session与本地线程绑定
    Hibernate事务代码规范写法
    实体类对象的三种状态
    对实体类的CRUD操作
  • 原文地址:https://www.cnblogs.com/superlsj/p/11600430.html
Copyright © 2011-2022 走看看