Linux基础命令用法

第一章 Linux的目录结构

  1.1基本介绍

  linux的文件系统采用级层式的树状目录结构, 最上层是根目录“/”  linux中。一切皆是文件

  1.2 Linux目录

        ·/lib :系统开机所需要的的基本的动态链接共享库,类似于Windows中的DLL文件,几乎所有的应用程序文件都需要用到这些共享库

        ./lost+found : 一般是空的,当系统非法关机后,一些碎片文件就存放在这个文件夹中

        ·/etc(重点) :所有系统管理员所需要的配置文件和子目录 my.conf

        ·/usr :用户的跟多应用程序和文件都放在这个目录下,类似Windows的program.files目录

        ·/bin[usr/bin,/usr/local/bin](重点) :[usr:Unix System Resource,Unix系统资源的缩写] ,bin:Binary的缩写,存放着经常使用的命令

        ·/sbin[usr/sbin,/usr/local/sbin] : 存放的是系统管理员使用的系统管理程序  

        ·/home(重点) : 存放普通用户的主目录,在linux的每个用户都有一个自己的目录

        ·/root(重点): 该目录为系统管理员,超级权限的用户目录

        ·/boot : 存放的启动linux时使用的核心文件,包括链接文件和镜像文件

        ·/proc : 虚拟目录,系统内存的映射,访问这个目录来获取系统信息

        ·/srv : service的缩写,该目录是存放一些服务启动之后西药提取的数据

        ·/sys :Linux2.6内核的一个很大变化,该目录安装了2.6内核这个呢新出现的文件系统

        ·/tmp :存放临时文件

        ·/dev :类似于windows的设备管理器,把所有的硬件用文件的形式存储

        ·/media(重点) :Linux系统会自动设别一些设备,如:U盘,光驱等等,识别后,linux会把识别的设备挂载到这个目录下

        ·/mnt(重点) : 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt上,然后进入该目录就可以查看内容

        ·/usr/local(重点) :这是给主机额外安装软件的目录,一般是通过编译源码方式安装的程序

        ·/var(重点) :该目录存放着在不断扩充的东西,习惯将经常修改的目录放着这里,包括各种日志文件

        ·/selinux[security-enhanced linux]类似360 :Selinux是一种安全子文件,能控制程序只能访问特定文件

第二章 Linux常用命令(命令格式:命令 [-选项] [参数])

  2.1 文件处理命令

        命令名称:ls  (list)[显示目录文件]
             
        命令所在路径: /bin/ls

        执行权限:所有用户 

        语法:ls 选项[-ald][文件/目录]  
              
                    -a:显示所有文件(包括隐藏文件)

                    -l:显示详细信息

                    -d:查看目录属性

        补充:
              
              **-rw-r--r--**
  
              "-":文件类型[ - :文件; d :目录; l : 软连接]

              rw- r-- r-- :依次对应:所有者(u) 所属组(g) 其他人(o) |  r:读 操作 w :写 操作 x :执行 操作  

  2.2 目录处理命令

        命令名称:mkdir  (make directories)[创建新 目录]

        命令所在路径:/bin/mkdir

        执行权限: 所有用户

        语法: mkdir -p[目录名]   -p 表示递归创建

              eg: $ mkdir -p /tmp/mimiluyo/studylinux

        -------------------------------------------------------------

        命令名称:cd  (change directory) [切换目录]

        命令所在路径:shell内置

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:pwd  (print working directory)  [显示当前目录]

        命令所在路径:/bin/pwd

        执行权限:所有用户

        -------------------------------------------------------------
        
        命令名称:rmdir  (remove empty directories)  [删除'空目录']

        命令所在路径:/bin/rmdir

        执行权限:所有用户

        
        -------------------------------------------------------------

        命令名称:cp   (copy)  [复制文件/目录]

        命令所在路径:/bin/cp

        执行权限:所有用户

        语法:cp  -rp[原文件/目录][目标目录]

                    -r 复制目录

                    -p 保留文件或目录

              eg:$ cp -r /tmp/mimiluyo/studylinux /root  (将studylinux复制到root目录下)

                  $ cp -rp /tmp/mimiluyo/studylinux /root/study  (将studylinux复制到study目录下,并保留目录属性)

        -------------------------------------------------------------

        命令名称:rm   (remove)  [删除文件]

        命令所在路径:/bin/rm

        执行权限:所有用户

        语法:rm -rf [文件/目录]

              -r  删除目录    -f  强制执行   

  2.3 文件处理命令

        命令名称:touch    [创建空文件]

        命令所在路径:/bin/touch

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:cat

        命令所在路径:/bin/cat

        执行权限:所有用户

        语法:cat -n /etc/services   -n 显示行号

        -------------------------------------------------------------

        命令名称:more  [分页显示文件内容]

        命令所在路径:/bin/more

        执行权限:所有用户

        语法:more [文件名]

              (空格) 或 f  :翻页

              (Enter)  :换行

              q 或 Q  :退出          

        -------------------------------------------------------------

        命令名称:less   [分页显示文件内容]

        命令所在路径:/usr/bin/less

        执行权限:所有用户

        按下 '/' 后可以搜索 会反显高亮,按q退出(more)、

        -------------------------------------------------------------

        命令名称:head  [显示文件前面几行]

        命令所在路径:/usr/bin/head

        执行权限:所有用户

        语法:head -n 10 [文件名]  n 指定行号      -n 10 :显示前10行

        -------------------------------------------------------------

        命令名称:tail  [显示文件后几行]

        命令所在路径:/usr/bin/tail

        执行权限:所有用户

        语法:tail [文件名] 

              -n :指定行数

              -f:动态显示文件末尾内容

  2.4 链接命令

        命令名称:ln  (link)  [生成链接文件]

        命令所在路径:/bin/ln

        执行权限:所有用户

        语法:ln -s [原文件][目标文件]

              -s:创建软链接

              eg:

              $ ln -s  /etc/issue  /tmp/issue.soft :创建文件/etc/issue的软链接/tmp/issue.soft        

              $ ln  /etc/issue  /tmp/issue.hard     :创建文件/etc/issue的硬链接/tmp/issue.hard

        软链接特征:
              
              1.'l'开头,类似于Windows的快捷方式

              2.软链接文件权限都是 rwx rwx rwx

              3./tmp/issue.soft -> /etc/issue  箭头指向原文件

        硬链接特征:

              1.拷贝cp -p + 同步更新   echo "this is a test" >>/etc/moth

              2.可通过i节点识别

              3.不能跨分区

              4.不能针对目录使用

  2.5 权限管理命令

        命令名称:chmod   (change the permissions mode of a file)   [改变文件或目录权限]

        命令所在路径:/bin/chmod

        执行权限:所有用户

        语法:chmod [{ugoa}{+-=}{rwx}][文件/目录]

                    [mode = 421] [文件或目录]

                    -R  递归修改

              权限数字表示:  r--4  w--2  x--1   (rwx rw- r-- 7 6 4)

              eg:  $chmod g+w testfile   赋予文件testfile所属组 写 权限

                   $chmod -R 777 testdir   修改目录testfile及其目录下文件为所有用户都具有的全部权限

        注意:

              1.rwx作用于文件时:**删除一个文件的前提是对该文件所在的目录(文件夹)具有写的权限,才可以执行删除**

              2.rwx作用于目录时:w:可以修改,目录内创建,删除,重命名目录;x:可以进入该目录

  2.6 其他权限命令

        命令名称:chown   (change file ownership)    [改变文件或目录的所有者]

        命令所在路径:/bin/chown

        执行权限:所有用户

        -------------------------------------------------------------
  
        命令名称:chgrp   (change file group ownership)   [改变文件或目录的所属组]

        命令所在路径:/bin/chgrp

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:umask  (the user file-creation mask)   [显示,设置文件的缺省权限]

        命令所在路径:shell内置命令

        执行权限:所有用户

        语法:umask [-S]  -S :以rwx形式显示新建文件缺省权限

  2.7文件搜索命令

        命令名称:find   [文件搜索]

        命令所在路径:/bin/find

        执行权限:所有用户

        语法:find [搜索范围][匹配条件]     **-iname:不区分大小写**

        eg:1.$find /etc -name init   在目录/etc中查找init文件

            2.$find /etc -name *init*    '*' 表示通配符  '?'表示匹配单个字符

            3.$ find /etc -name init???    在目录/etc中查找文件名init开头并有3个字符的

            4.$ find  /  -size  +204800     在根目录下查找大于100MB的文件   (  +n  大于   -n 小于   n 等于)

         根据所属组查找

            5.$ find  /etc  -cmin  -5       在/etc下查找5分钟内被修改过属性的文件和目录

                     -amin  访问时间 access   
  
                     -cmin  文件属性 change     

                     -mmin 文件内容 modify

            6.find /etc -size +163840 -a -size -204800    在/etc下查找大于80MB小于100MB的文件

             ** -a 两个条件同时满足  **    ** -o 两个条件满足任意一个即可 **    

            7.find /etc -name inittab -exec ls -l {} ; (';'不可少)     -exec/-ok 命令 {} ;  对搜索结果执行操作  -exec:直接执行,ok会询问操作

            8.-type 根据文件类型查找    -inum 根据节点查找


  2.8 其他搜索命令

        命令名称:locate  [在文件资料库中查找文件]

        命令所在路径:/usr/bin/locate 

        执行权限:所有用户

              **新建文件locate找不到,。使用“updatedb”,更新文件资料库查找**

              **tmp目录下文件不再文件资料库内,不可被查找**

        -------------------------------------------------------------

        命令名称:which  [搜索命令所在目录及别名信息]

        命令所在路径:/usr/bin/which

        执行权限:所有用户

        eg: $which ls

        -------------------------------------------------------------

        命令名称:whereis  [搜索命令所在目录及帮助文档路径]

        命令所在路径:/usr/bin/whereis 

        执行权限:所有用户 

        eg:$where ls

        -------------------------------------------------------------

        命令名称:**grep**(常用)  [在文件夹中搜寻字符串匹配的行并输出] 

        命令所在路径:/bin/grep 

        执行权限:所有用户

        语法:# grep -v ^# /etc/inittab   去除以'#'开头的所有行信息

              -i 不区分大小写    -v 排除指定字符串

  2.9 帮助命令

        命令名称:man   (manual:帮助文档)   [获取帮助信息]

        命令所在路径:/usr/bin/man 

        执行权限:所有用户 

        语法: man [命令或配置文件] 
        
              (空格)或 f    :翻页

               Enter         :换行

               q 或 Q        :退出

             注意:  ** '1'是命令的帮助;'5' 是配置文件的帮助**

                    eg:# man 5 passwd -> 查看配置文件的帮助

        -------------------------------------------------------------

        命令名称:whatis   [获得命令的简单介绍信息]
        
        类似的: **apropos**

        语法:apropos [配置文件]

              whatis  :类似于精确查找

              apropos :模糊查找关键字 [功能等于 man -k]   (tab可快速补全)

        -------------------------------------------------------------

        命令名称:help     [获取Shell内置命令的帮助信息]

        命令所在路径:Shell内置命令 

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:passwd    [设置用户]

        命令所在路径:/usr/bin/passwd 

        执行权限:所有用户

              普通用户只能更改自己的密码,root可以更改所有人的

        -------------------------------------------------------------

        命令名称:who    [查看登录用户信息]

        命令所在路径:/usr/bin/who 

        执行权限:所有用户 

        参数含义:  用户名  登录终端[tty本地终端 / pts 远程终端]  登录时间  IP地址 

        -------------------------------------------------------------

        命令名称:w    [查看登录用户的详细信息]

        命令所在路径:/usr/bin/w 

        执行权限:所有用户 

  2.10 压缩解压命令 

        命令名称: gzip  (GNU zip)   [压缩文件]

        命令所在路径:/bin/gzip

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:gunzip = gzip -d   (GUN unzip)   [解压 .zip的压缩文件]

        命令所在路径:/bin/gunzip 

        执行权限:所有用户 

           **只能压缩文件而不能压缩目录**

        -------------------------------------------------------------

        命令名称:tar   [打包目录,压缩后的格式  .tar.gz]

        命令所在路径:/bin/tar 

        执行权限:所有用户

        语法:tar 选项[-zcf] [压缩后文件名][目录]

              -z   打包同时压缩        -c  打包   

              -v  显示详细信息         -f  指定文件名

        tar 解压缩语法:  # tar -zxvf mimiluyo.tar.gz

              -z  解压缩               -x     解包

              -v    显示详细信息       -f     指定解压文件 


        -------------------------------------------------------------

        命令名称:zip    [压缩文件/目录][会保留原文件]

        命令所在路径:/usr/bin/zip 

        执行权限:所有用户

        语法:zip  选项[-r][压缩后文件名][文件/目录]    

              -r :压缩目录

              eg:
                    $ zip studylinux.zip  linux   压缩文件

                    $ zip -r study.zip  mimiluyo  压缩目录

        -------------------------------------------------------------

        命令名称:unzip    [解压.zip文件]

        命令所在路径:/usr/bin/unzip 

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:bzip2     [压缩文件,格式:.bz2]

        命令所在路径:/usr/bin/bzip2 

        执行权限:所有用户

        语法:bzip2 选项[-k][文件]   -k  产生压缩文件后保留原文件

        -------------------------------------------------------------

        命令名称:bunzip2   [解压缩]

        命令所在路径:/usr/bin/bunzip2 

        执行权限:所有用户
          
        语法:bunzip2  选项 [-k] [压缩文件]      -k 解压缩后保留原文件

        eg: $ bunzip2  -k mimiluyo.bz2

            $ tar -xjf  studylinux.bz2

  2.11 网络命令

        命令名称:write    [给用户发信息,以Ctrl+D保存结束]

        命令所在路径:/usr/bin/write 

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:wall   (write  all)    [发广播消息]

        命令所在路径:/usr/bin/wall 
        
        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:ping      [测试网络连通性]

        命令所在路径:/bin/ping 

        执行权限:所有用户 

        语法: ping  选项   IP地址    -c 指定发送次数

        -------------------------------------------------------------

        命令名称:ifconfig   (interface configure)   [查看和设置网卡信息]

        命令所在路径:/sbin/ifconfig 

        执行权限:root   (注意哟!!!)

        -------------------------------------------------------------

        命令名称:last   [列出目前和过去登入系统的所有用户信息]

        命令所在路径:/usr/bin/last 

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:lastlog      [检查某特定用户上次登录的时间]

        命令所在路径:/usr/bin/lastlog             

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:traceroute     [显示数据包到主机间的路径]

        命令所在路径:/bin/traceroute 

        执行权限:所有用户

        -------------------------------------------------------------

        命令名称:netstat     [显示网络相关的信息]

        命令所在路径:/bin/netstat 

        执行权限:所有用户

        选项:    -t :  TCP协议 

                 -u :   UDP协议

                 -l :   监听

                 -r :  路由

                 -n : 显示IP和端口号

        eg: 

              #  netstat -tlun  查看本机监听的端口 

              #  netstat -an  查看本机所有的网络连接  

              #  netstat -rn  查看本机路由表

              查看某一端口是否被占用:netstat -tunlp lgrep  端口号

        -------------------------------------------------------------

        命令名称:setup       [配置网络]

        命令所在路径:/usr/bin/setup 

        执行权限:root  (注意哟!!!)

        -------------------------------------------------------------

        命令名称:mount 

        命令位置:/bin/mount 

        执行权限:所有用户 

        语法:mount [-t 文件系统] 设备文件名 挂载点 

        eg :# mount -t iso9660 /dev/sr0 /mnt/cdrom

  2.12 关机重启命令

        shutdown命令  :-c  取消前一个关机命令;  -h  关机;  -r  重启
        
        其他关机命令:  halt    poweroff    init 0 (不可设置为默认值)

        其他重启命令:  reboot    init 6 (不可设置为默认值)

        系统运行级别 :  0   关机 
                        1  单用户 
                        2  不完全多用户,不含NFS服务 
                        3  完全多用户
                        4  未分配 
                        5  图形界面
                        6  重启

              # runlevel   :查询系统运行级别

              # id:3:initdefault:  (不可出现任何错误,后果非常非常严重) 

        退出登录命令:  # logout

第三章 文本编辑器Vim

  3.1 vim常用操作

  vim没有菜单,只有命令!!

  插入命令

  定位命令

  删除命令

  复制和剪切命令

  替换和取消命令

  搜索和搜索替换命令

  保存和退出命令

  总结

  3.2 vim使用技巧

        导入命令执行结果: r !命令

        定义快捷键: map 快捷键 触发命令

        eg: map ^P I#         map ^B 0x

        连续行注释:n1,n2s/^/#/g

                 : n1,n2s/^#//g

                 : n1,n2s/^////g

        替换:   ab  mymail  mimiluyo@qq.com  [输入mymail会自动替换成后面的内容]

        **定义的快捷键或者ab后面的内容重启后会消失**

        保存在: 文件.vinrc中

        root用户 -> /root/.vimrc

        普通用户 -> /home/username/.vimrc

第四章 用户和用户组管理

  4.1 用户配置文件

        4.1.1 .用户信息文件/etc/passwd

             1.用户管理简介

                    ·越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范

                    ·在linux中主要是通过用户配置文件来查看个修改用户信息 

              2./etc/passwd

                    root:x:0:0:root:/root:/bin/bash  (字段间用 :分割)

                    ·第一字段:root:用户名称

                    ·第二字段:密码标志

                    ·第三字段:uid    [0:超级用户      1-299:系统用户(伪用户)    500-655535:普通用户(Centos7 从1000开始)]

                    ·第四字段:gid(初始组id)

                    ·第五字段:用户说明

                    ·第六字段:用户家目录     **[普通用户:/home/用户名/      root用户:/root/]**

                    ·第七字段:登录之后的shell

              3.初始组和附加组

                    初始组:指用户登录开始就拥有这个用户组的相关权限。**每个用户初始组只能有一个也必须有一个**

                    附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个

              4.shell是什么??

                    shell就是Linux的命令解释器,在/etc/passwd中,除了标准Shell是/bin/bash之外,还可以是/sbin/nologin, /usr/bin/passwd等等

        4.1.2  影子文件/etc/shadow

              1.文件表示

                    ·第一字段:用户名

                    ·第二字段:加密密码   (加密算法为SHA512散列加密算法    ,如果密码是“!!”或“*” 代表没有密码,不可以登录)

                    **·第三字段:密码最后一次修改日期**   (使用1970年1月1日为标准时间,每过一天时间吹加1)

                    ·第四字段:两次密码的修改间隔时间(和第三字段想比)

                    ·第五字段:密码有效期 (和第三字段相比)

                    ·第六字段:密码修改到期前的警告天数(和第五字段相比)

                    ·第七字段:密码过期后的宽限天数(和第五字段想比)    [0:代表密码过期后立即失效   1:代表密码永远不会失效]

                    ·第八字段:账号失效时间  (使用时间戳表示)

                    ·第九字段:保留

              2.时间戳换算

                    ·把时间戳换算为日期   date -d "1970-01-01 16066 days"

                    ·把日期换算为时间戳  echo $((date --date="2020/01/01" +%s)86400+1)

        4.1.3 组信息文件/etc/group和组密码文件 /etc/gshadow

              1.组信息文件/etc/group

                    ·第一字段:组名

                    ·第二字段:组密码标志

                    ·第三字段:Gid

                    ·第四字段:组中附加用户

  4.2.用户管理相关文件

        1.用户家目录

             ·普通用户:/home/用户名/,所有者和所属组都是此用户,,权限是770

             ·超级用户:/root/,  所有者和所属组都是root用户,权限是550

        2.用户邮箱

              /var/spool/mail/用户名/

        3.用户模板目录

              /etc/skel/

 4.3 用户管理命令

        4.3.1 用户添加命令useradd

              1、useradd命令格式 

                    [root@localhost ~]#useradd [选项] 用户名 

                    -u UID: 手工指定用户的UID号  

                    -d 家目录: 手工指定用户的家目录  

                    -c 用户说明: 手工指定用户的说明  

                    -g 组名: 手工指定用户的初始组  

                    -G 组名: 指定用户的附加组  

                    -s shell: 手工指定用户的登录shell。默认是/bin/bash  

              2.用户默认值文件

                    ===/etc/default/useradd=== 

                    GROUP=100  #用户默认组 

                    HOME=/home #用户家目录 

                    INACTIVE=-1 #密码过期宽限天数(7)

                    EXPIRE=  #密码失效时间(8) 

                    SHELL=/bin/bash #默认shell 

                    SKEL=/etc/skel #模板目录 

                    CREATE_MAIL_SPOOL=yes #是否建立邮箱 


                    ===/etc/login.defs===

                          PASS_MAX_DAYS 99999 #密码有效期(5) 

                          PASS_MIN_DAYS 0 #密码修改间隔(4)

                          PASS_MIN_LEN 5 #密码最小5位(PAM)

                          PASS_WARN_AGE 7 #密码到期警告(6)

                          UID_MIN  500 #最小和最大UID范围 

                          GID_MAX  60000 

                          ENCRYPT_METHOD SHA512 #加密模式

        4.3.2 修改用户密码passwd

              1.passwd命令格式

                    passwd [选项] 用户名 

                    -S  查询用户密码的密码状态。仅root用户可用。 

                    -l  暂时锁定用户。仅root用户可用  

                    -u  解锁用户。仅root用户可用  

                    --stdin 可以通过管道符输出的数据作为用户的密码。

              2.查看密码状态

                     passwd -S lamp  

                    lamp PS 2013-01-06 0 99999 7 -1  

                    #用户名 密码设定时间(2013-01-06) 密码修改间隔时间(0) #密码有效期(99999 ) 警告时间(7) 密码不失效(-1)

              3.锁定用户和解锁用户

                    passwd -l 用户名     (锁定)

                    passwd -u 用户名     (解锁)

              4.使用字符串作为用户的密码

                    echo "mimiluyo" | passwd --stdin 用户名          (此方法可以修改用户密码,但也可以通过 history 命令查看,,不安全)

        4.3.3 修改用户信息 usermod & 修改用户密码状态chage

              1.usermod
              
                    usermod [选项] 用户名

                    -u UID:修改用户的UID号

                    -c 用户说明:修改用户的说明信息

                    -G 组名:修改用户的附加组

                    -L:临时锁定用户(Lock)

                    -U:解锁用户锁定(Unlock)

              2.chage

                    chage [选项]  用户名

                    -l:列出用户的详细密码状态

                    -d 日期:修改密码最后一次更改日期(shadow3字段)

                    -m 天数: 两次密码修改间隔(4字段)

                    -M 天数:密码有效期(5字段)

                    -W 天数:密码过期前警告天数(6字段)

                    -I 天数:密码过后宽限天数(7字段)

                    -E 日期:账号失效时间(8字段)

              **chage -d 0 用户名     这个命令是把密码修改日期归 0 。用户一登录就会别要求修改密码**

              3.userdel

                    # userdel  -r  用户名

                          -r :同时删除用户家目录


  4.4 用户组管理命令

        添加,修改,删除 用户组

              [root@mimiluyo ~]# groupadd [选项] 组名

                    -g  Gid  指定组id

              [root@mimiluyo ~]# groupmod [选项] 组名

                    -g Gid 修改组id

                    -n 新组名    修改组名  eg:  # groupmod -n lovely   mimiluyo  (把mimiluyo改为lovely)

              [root@mimiluyo ~]# groupdel [选项] 组名

                    **删除组时,组内有初始用户(或该组也是别的用户的主组)存在,否在无法删除,如果该组是其他组的附加组,则不影响删除**
原文地址:https://www.cnblogs.com/ysera-y/p/13974854.html