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,请各位大佬不吝指正错误。

原文地址:https://www.cnblogs.com/superlsj/p/11600430.html