美文网首页
Linux命令(1)- 基础指令篇

Linux命令(1)- 基础指令篇

作者: _小毛驴 | 来源:发表于2021-01-12 11:26 被阅读0次

    学习到韩顺平的Linux教程,把遇到的Linux命令做一个记录,方便日后查看。
    由于课程较长,做笔记的过程中,发现文章是越来越长,所以,就把这个教程的笔记分拆开来。
    这篇笔记的主要内容包含了Linux的基础指令,用户管理,权限管理,文档操作,压缩/解压缩等一些基础指令。

    关机

      shutdown - h now 
    
      poweroff
    

    重启

      reboot
    

    切换用户

    前提条件:为了方便说明,我们以切换到zhangsan用户来举例。Linux的命令要格外注意每个指令之间的空格,有些指令之间需要空格,有些又不需要。这些需要仔细的观察,也需要经验的积累才能够发现而不致于报错,我曾经就是在网上找文章,拷贝原来的命令,报字符错误,自己手动输入,又不知道是否要加空格,导致被坑死。这里又不得不吐槽那些文章真的分享的太垃圾了。

    su - zhangsan
    

    创建用户

      useradd -d /home/test zhangsan
    

    -d 参数是指定用户的家目录,还可以添加其他参数

    给用户设置密码

      passwd zhangsan
    

    注意:passwd指令后面必须跟用户名称,否则就是设置root用户的密码,带来的后果很麻烦的。其次,设置密码的过程中,可能会提示密码无效,不符合条件等等吓人的提示,可以一概无视,不会影响我们设置的密码生效,这对于我们做测试练习非常有效。当然,在实际生产环境,你可以把密码设置的越复杂越好。

    删除用户

      # 删除用户,但是保留用户家目录,实际工作中比如离职员工,保留他的工作内容。
      userdel milan
    
      # 删除用户apple以及用户的家目录
      userdel -r apple
    

    查询用户信息

      # 查询milan用户的信息
      id milan
    

    查看当前登录用户

      who am i 
    

    新增用户组

      # 新增用户组wudang
      groupadd wudang
      # 新增用户zwj,并添加到用户组wudang
      useradd -g wudang zwj 
    

    删除用户组

      groupdel wudang
    

    修改用户组

      # 新增用户组mojiao
      groupadd mojiao
      # 修改用户zwj到mojiao用户组下
      usermod -g mojiao zwj
    

    说一下,Linux中与用户,用户组相关的文件
    /etc/passwd : 用户的配置文件。
    /etc/shadow :口令的配置文件。
    /etc/group :用户组配置文件。

    Linux运行级别

    0:关机
    1:单用户
    2:多用户状态没有网络服务
    3:多用户状态有网络服务
    4:系统未使用保留给用户
    5:图形界面
    6:系统重启

      # 进入图形界面
      init 5
      # 查看当前运行级别
      systemctl get-default
    

    帮助指令

      # 查看ls命令的帮助文档
      man ls
      # 查看cd命令的帮助文档
      help cd
    

    more指令 - 查看文档

    空白键: 向下翻一页
    回车键: 向下翻一行
    q :退出
    CTRL + F :向下滚动一屏
    CTRL + B : 向上滚动一屏
    = : 输出当前行的行号
    :f : 输出文件名和当前行的行号

      more apple.txt
    

    less指令 - 比more更好用,更强大的查看文档的指令

    【pagedown】: 下一页。
    【pageup】:上一页。
    /+ 要搜索的内容 :搜索字符串;点击小n,查找下一个。点击大N,查找上一个。

    echo指令 - 输出内容到控制台

      # 输出主机名
      echo $HOSTNAME
      # 输出 字符串
      echo "hello world ~"
    

    head指令 - 查看文档头部内容

      head -n 5 apple.txt
    

    tail指令 - 查看文档尾部内容

      tail -n 5 apple.txt
    

    >指令和>>指令

    > : 输出内容重定向并覆盖原有内容。
    >> : 追加内容。

    ln指令 - 软链接:相当于快捷方式

      # 给root目录创建软链接,注意:删除软链接和删除文件是一样的。
      ln -s /root/ /home/myroot
    

    history指令 - 查看历史命令

      # 查看所有历史命令
      history
      # 查看最近10条历史指令
      history 10
      #执行编号658的指令
      !658
    

    date指令 - 查看日期

      # 查看日期
      date
      # 设置日期
      date -s "2020-01-01 11:11:11"
    

    cal指令 - 查看日历

      # 查看本月日历
      cal
      # 查看全年日历
      cal 2020
    

    find指令 - 搜索查找指令

      # 根据文件名称查找/home目录下的hello.txt文件
      find /home -name hello.txt
      # 根据用户查找/opt目录下的文件,用户名称为nobody
      find /opt/ -user nobody
      # 查找整个linux系统下大于200M的文件(+n大于 -n小于 n等于 ; 单位有k,M,G)
      find / -size +200M
    

    locate指令 - 快速定位文件路径

    意外总是来得很意外。locate命令在我的虚拟机中没有找到,我是用yum安装,yum命令又报错。根据yum命令报错的信息,我判断是磁盘存储不足,就想办法扩容,一番折腾,失败告终。我尝试切换到以前的快照。yum安装成功。问题通过躲避的方式解决,至于为什么只有天知道了。

      # 前提条件,否则搜索不到
      updatedb
      # 查找hello.txt
      locate hello.txt
    

    which 指令 - 查找指令存放的位置

      # 查找ls指令的存放位置
      which ls
    

    grep指令 - 文件内容过滤查找指令

      # 查找文件hello.txt中yes字符串
      grep -n "yes" hello.txt
      # 另外一种方式,等价于上面的命令
      cat hello.txt | grep -n "yes"
    

    压缩和解压

    意外还是来临了,虚拟机中安装zip软件,又失败了,这次搜索之后,是因为虚拟机根目录100%,磁盘没有空间造成的,按照网络上的步骤,删掉了大文件之后,确实腾出来了一些空间。但是yum下载的时候展示乱码,应该是把语言信息文件给删除了。唉,解决一个问题,又带来新的问题。看来后面给虚拟机要设置大一点的磁盘空间了。还有一个问题就是,在安装CentOS的时候,选择最小安装,就会导致很多必须的应用软件没有安装。所以,以后不要选择最小安装了。

      # 压缩hello.txt文件
      gzip hello.txt
      # 解压hello.txt.gz
      gunzip hello.txt.gz
      # 递归压缩home目录,叫做myhome.zip压缩包
      zip -r myhome.zip /home/
      # 递归压缩
      unzip -d /opt/tmp/ /home/myhome.zip
      # 压缩多个文件
      tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
      # 压缩文件夹
      tar -zcvf myhome.tar.gz /home/
      # 解压到当前目录
      tar -zxvf pc.tar.gz
      # 解压到指定目录
      tar -zxvf /home/myhome.tar.gz -C /opt/tmp2/
    

    组管理和权限管理

      # 修改文件所有者
      chown tom apple.txt
      # 创建组monster
      groupadd monster
      # 创建用户fox,并放到monster组中
      useradd -g monster fox
      # 修改orange.txt文件所在的组到fruit组
      chgrp fruit orange.txt
      # 修改用户zwj到fruit组
       usermod -g fruit zwj
    
    • rwx作用到文件
      W权限代表写(write):可以修改,但是不代表可以删除该文件。删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
    • rwx作用到目录
      X代表可执行(execute),可以进入该目录。

    ll指令

    ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名。用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。内容详情如下:

      [root@localhost ~]# ll
    总用量 4
    drwxr-xr-x. 4 root root   24 1月  13 23:39 a
    -rw-r--r--. 1 root root 2173 1月  13 20:18 initial-setup-ks.cfg
    drwxr-xr-x. 2 root root    6 1月  13 20:19 公共
    drwxr-xr-x. 2 root root    6 1月  13 20:19 模板
    drwxr-xr-x. 2 root root    6 1月  13 20:19 视频
    drwxr-xr-x. 2 root root    6 1月  13 20:19 图片
    drwxr-xr-x. 2 root root    6 1月  13 20:19 文档
    drwxr-xr-x. 2 root root    6 1月  13 20:19 下载
    drwxr-xr-x. 2 root root    6 1月  13 20:19 音乐
    drwxr-xr-x. 2 root root    6 1月  13 20:19 桌面
    

    其中,第二个栏位的含义,我存在疑惑。韩老师讲解的是文件数和子目录的总和。这种说法,我在动手实验的过程中,发现是错误的。在网上找了一大圈,也都是吵来吵去,说是表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录的话,那它的数目就是该目录中的文件个数了。,都是这样说,也全是错误的。最后才找到如下解释:

    1. 如果是一个文件:则这一字段表示这个文件所具有的硬链接数,即这个文件总共有多少个文件名。
    2. 如果是一个目录:则这一字段表示该目录所含子目录的个数。
      新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录。
      为什么新建的目录下面会有两个子目录呢?
      因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",这两个默认子目录是隐藏的,用ls -a可以看到。
      每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加。

    chmod指令 - 修改权限

    通过chmod指令,可以修改文件或者目录权限。

    • 第一种方式:+、-、= 变更权限
      u:所有者; g:所有组; o:其他人; a:所有人(u、g、o的总和)。
      # 给abc文件的所有者读写执行的权限,给所在组读执行的权限,给其他组读执行权限
      chmod u=rwx,g=rx,o=rx abc
      # 给abc文件的所有者除去执行的权限,增加组的写权限
      chmod u-x,g+w abc
      # 给abc文件的所有用户添加读的权限
      chmod a+r abc
    
    • 第二种方式:通过数字变更权限
      r=4;w=2;x=1 rwx=4+2+1=7
      # 把abc文件的权限修改成 rwxr-xr-x
      chmod 755 abc 
    

    chown指令-修改文件所有者

    • 改变所有者(红字替换为实际的数据即可)
      chown newowner 文件/目录
    • 改变所有者和所在组
      chown newowner:newgroup 文件/目录
      注:-R : 如果是目录,使用该参数,使其目录下所有目录和文件递归生效。
      # 把abc文件的所有者改为tom 
      chown tom abc
      # 把test目录下所有文件和目录的所有者修改为tom
      chown -R tom test
    

    chgrp指令-修改文件/目录所在组

    chgrp newgroup 文件/目录

      # 把abc文件所在组改为shaolin
      chgrp shaolin abc
      # 把test目录下所有的文件和目录所在组改成shaolin
      chgrp -R shaolin test 
    

    Linux关于权限,主要有两个核心。也就是分别以两个核心概念来安排指令操作的。一个是用户,一个是文件/目录。不管是用户,还是文件/目录,都又被分配到组管理中。组的操作有:groupadd、groupdel。

    • 关于用户的操作,包括增删改查,分别是useradd、userdel、usermod、id 用户名
    • 关于文件/目录的操作,也是增删改查,分别是touch/mkdir、rm、chmod(修改权限)、chown(修改所有者)、chgrp(修改所在组)、ll(陈列文件/目录详情)。

    关于目录的rwx权限的细节讨论:
    x:表示可以进入到该目录,比如cd;
    r:表示可以ls,将目录的内容显示出来;
    w:表示可以在该目录,删除或者创建文件。

    总结

    Linux的使用,就是大量的使用命令。或者说,这些命令背后是一个个软件做支撑的。一个或者一组命令都是对于某一个软件的使用。有一些是内置软件,所以,就可以使用一些内置的命令了。
    本来听课的时候,只是听个热闹,以及就是理解其中的思想。但是,会发现Linux很多都是基于命令的操作,而这些命令时间长了,就很容易遗忘。鉴于现在中文互联网的垃圾程度,在用到的时候无法快速找到有用的信息,就需要自己动手做一个记录了。

    相关文章

      网友评论

          本文标题:Linux命令(1)- 基础指令篇

          本文链接:https://www.haomeiwen.com/subject/nfueaktx.html