Linux命令

Linux的目录
    /dev 管理设备 cpu 
    /media dvd u盘



Linux 常用命令
    用户管理
        useradd: 添加用户
          格式:useradd 用户名
                useradd -d 指定目录 用户名
          示例:groupadd 用户组
                  useradd -g 用户组 用户名  (将用户直接指定给用户组)

        passwd:指定的密码
          格式:passwd 用户名

        userdel: 删除用户
          格式:userdel 用户名 (保留家目录)
                userdel -r 用户名 (不保留家目录)

        id: 查询用户信息
          格式:id 用户名
          示例:id root # uid=0(root) gid=0(root) 组=0(root)

        
        su - : 切换用户
          格式:su - 用户名
          注意:从高权限的用户换成低权限的用户,不用输入密码
                  使用exit指令返回原先用户

        whoami:显示当前用户名

    用户组管理
        groupadd: 增加组
          格式:groupadd 组名

        groupdel: 删除组
          格式:groupdel 组名

        usermod: 修改用户所在组
          格式:usermod -g 用户组 用户名
          示例:groupadd shaolin
                  usermod -g shaolin zwj (将用户zwj切换到shaolin组)

        /etc/passwd: 用户配置文件,记录用户的各种信息
          示例:vim /etc/passwd 
                  # jack:x:1000:1000:jack:/home/jack:/bin/bash
                  # 用户名:口令:用户标识:组标识号:注释性描述:主目录:登录shell

        /etc/group: 组的配置文件,记录Linux包含的组的信息
          示例:vim /etc/passwd
                  # jack:x:1000:jack
                  # 组名:口令:组标识号:组内用户列表 

        /etc/shadow: 口令的配置文件 (不要求掌握)

    帮助指令
        man: 获取帮助信息
          格式:man [命令或配置文件]
          示例:man ls

        help



        
    文件目录类
        pwd: 
            显示当前工作目录的绝对路径

        ls: list
            格式:ls [选项] [目录或文件]    
            选项:-a 显示当前目录所有的文件和目录,包括隐藏的
                  -l 以列表的形式展现信息

        cd: 切换到指定的目录
            格式:cd [参数]        
            参数:绝对路径/相对路径
                  cd ~ / cd : 回到自己的家目录
                  cd .. :回到上一级目录

        mkdir: 创建目录
            格式:mkdir [选项] 要创建的目录
            选项:-p 创建多级目录

        rmdir: 删除目录
            格式:rmdir [选项] 要删除的目录
            注意:rmdir删除的是空目录,如果目录下有内容(文件或目录)时无法删除
                  可以使用 rm -rf 要删除的非空目录

        touch: 创建一个空文件
            格式:touch 文件名

        cp: 拷贝文件到指定的目录
            格式:cp [选项] source dest
            选项:-r 递归复制整个文件夹
            注意:\cp 强制覆盖相同的文件,不会提示

        rm: 删除文件或目录
            格式:rm [选项] 要删除的文件或目录
            选项:-r 递归删除文件夹(目录)
                  -f 强制删除不提示

        mv: 移动文件与目录(相当于剪切)/重命名
            格式:mv oldname_file newname_file  重命名
                  mv                            移动文件


        cat: 查看文件内容,以只读的形式打开
             格式:cat [选项] 要查看的文件
             选项:-n 显示行号
             示例:cat -n /etc/profile | more(分页显示)

        more: 按页显示文件内容
              格式:more 要查看的文件

        less: 并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示      大型文件具有较高的效率
              格式:less 要查看的文件

        > 输出重定向 和 >> 追加: 将本该输出到显示台的内容输出到文件中
            ls -l > 文件 (将列表中的内容覆盖式的输出到文件)
            ls -al >> 文件(列表中内容追加到文件的末尾)
            cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)
            echo "内容" >> 文件

        echo:输出内容到控制台
              格式:echo [选项] 输出内容
              示例:echo $PATH 输出环境变量路径
                      echo "Hello world"

        head: 显示文件开头部分内容
              格式:head 文件 (默认查看文件前10行)
                      head -n 5 文件 (查看文件前5(可以为任意行数)行)

        tail: 输出文件中尾部的内容,默认显示后10行
              格式:tail 文件
                      tail -n 5
                      tail -f 文件 (实时追踪该文档的更新)

        ln: 软链接 相当于windows中快捷方式,主要存放了链接其他文件的路径
            格式:ln -s [原文件或目录] [软链接名]

        history: 查看已经执行过的历史指令
                 示例:history
                        history 10 显示最近执行的10个指令
                        !178      执行历史指令中编号为178的指令

    时间日期类
        date: 1.显示当前日期
              格式:date      显示当前时间信息
                      date +%Y-%m-%d  显示当前 年-月-日
                      date "+%Y年%m月%d日 %H时%M分%S秒"
              2.设置日期
              格式:date -s 字符串时间
                      date -s "2019-8-13 11:58:12"

        cal: 查看日历
             格式:cal [选项]
             示例:cal 2020 显示2020年日历

    搜索查找类
        find: 将从指定目录向下递归的遍历其各个子目录,
              将满足条件的文件或目录显示在终端

            格式:find [搜索范围] [选项] [要查找的文件]
            选项:-name 按照文件名来查找
                  -user 按照文件拥有者来查找
                  -size 按照文件大小来查找 (+n大于 -n小于 n等于)
            示例:find nxr/ -name tjz.txt
                  find nxr/ -user jack
                  find nxr/ -size +20M
                  find nxr/ -name *.txt 查找.txt结尾的文件

        locate: 利用事先建立的文件名称及路径的locate数据库实现快速定位,
                查询速度比较快,为了保证查询结果的准确,必须定时更新locate时刻

              格式:locate 搜索文件
              注意:第一次运行前,必须使用updatedb指令创建locate数据库
              示例:updatedb
                      locate nxr.txt

        grep:过滤查找
        管道符号| :将前一个命令的处理结果输出传递到后面的命令处理

              格式:grep [选项] 查找内容 源文件
              选项:-n 显示匹配行及行号
                      -i 忽略大小写
              示例:grep -n LOVE nxr.txt
                      grep -ni love nxr.txt
                      cat nxr.txt | grep -n LOVE

    压缩和解压缩类

        gzip/gunzip:
            格式:gzip 文件 (将文件压缩成*.gz文件,原文件不保留)
                  gunzip *.gz
            示例:gzip nxr.txt

        zip/unzip:
            格式:zip [选项] *.zip(压缩后的压缩文件名) 要压缩的内容
                  unzip [选项] 存放目录 要解压的内容
            选项:-r 递归压缩,即压缩目录
                  -d:指定解压文件的存放目录
            示例:zip -r nxr.zip /home/jack
                  unzip -d nxr/ nxr.zip


        tar:
          格式:tar [选项] *.tar.gz 打包内容
          选项:-c 产生.tar打包文件
                  -v 显示详细信息
                  -f 指定压缩后的文件名
                  -z 打包同时压缩
                  -x 解包.tar文件
          示例:# 将两个文件a1和a2压缩到a.tar.gz中
                  tar -zcvf a.tar.gz a1.txt a2.txt 
                  # 将home目录下的文件打包到myname.tar.gz
                  tar -zcvf myhome.tar.gz /home/ 
                  # 将a.tar.gz解压到当前目录
                  tar -zxvf a.tar.gz
                  # 将myname.tar.gz解压到指定目录 /opt/(目录必须存在)
                  tar -zxvf a.tar.gz -C /opt/


    组管理和权限管理
        chown: 修改文件的所有者
          格式:chown 用户名 文件
                  chown newowner:newgroup file
          示例:chown Tom apple.txt
                  chown -R Tom nxr/  (将指定目录下的子目录和文件的所有者修改为Tom)

        groupadd: 组的创建
          示例:groupadd japan
                  useradd -g japan jack

        chgrp: 修改文件所在组
          格式:chgrp 组名 文件名
          示例:touch orange.txt
                  chgrp police orange.txt
                  chgrp -R police kkk/  (将指定目录下的子文件的所在组修改为police)

        文件类型:-:普通文件 d:目录 l:软连接 c:字符设备(键盘鼠标) b:块文件(硬盘)

        对于文件
        r: 可以读取,查看
        w: 可以修改,但是不可以删除文件,删除一个文件的前提是对该文件所在的目录有写的权限,才能删除文件
        x: 可以被执行

        对于目录
        r: 可以读取,ls查看目录内容
        w: 可以修改,目录内创建+删除+重命名目录
        x: 可以进入该目录

        chmod: 修改文件或目录的权限
          格式:u:所有者 g:所在组 o:其他人 a:所有人 +-=

          示例: chmod u=rwx,g=rx,o=x 文件或目录名
                  chmod o+x
                  chmod 751 nxr.txt

    磁盘查询命令
        df:查询系统整体磁盘使用情况
          格式:df -lh

        du: 查询指定目录的磁盘占用情况
          格式:du [选项] [目录]
          选项: -a 显示
          示例:du -ach --max-depth=1 nxr/

        1.统计文件夹下文件的个数
             ls -l | grep "^-" | wc -l
        2.统计文件夹下目录的个数
             ls -l | grep "^d" | wc -l
        3.统计文件夹下文件的个数,包括子目录中的文件
             ls -lR | grep "^-" | wc -l
        4.以树状结构显示目录
             yum install tree
             tree

    网络配置

    进程管理
        ps: 查看目前系统中执行的进程
          格式:ps -aux | more
          选项:-a 当前终端所有进程信息
                  -u 以用户的格式显示进程信息
                  -x 显示后台进程运行的参数
          示例:ps -aux | grep sshd

                  ps -ef | more 以全格式显示当前所有的进程,查看进程的父进程
                      -e 显示所有进程
                      -f 全格式
shell脚本
    命令别名
        alias 别名='原命令'
        alias vi='vim'
        alias 查看系统中的别名
        unalias 别名 (删除别名)
        whereis ls 查看ls命令文件所在位置

    快捷键
        ctrl+c 强制终止当前命令
        ctrl+u 删除或剪切光标左边的命令
        ctrl+y 粘贴ctrl+u或ctrl+k剪切的内容
        ctrl+d 退出终端 相当于logout

    多命令顺序执行
        ;(命令1;命令2) 多个命令顺序执行,命令之间没有任何逻辑关系
        && (命令1&&命令2) 逻辑与
        || 逻辑或
        命令 && echo yes || echo no (判断这条命令是否正确)

    管道符 | 
        命令1 | 命令2 (命令1的正确输出作为命令2的操作对象)

    通配符
        ?匹配一个任意字符
        * 匹配0个或任意多个字符,也就是匹配任意内容
        [] 匹配中括号中任意一个字符,例如[abc] [a-z] [0-9]
        [^] 取反
                            可以用于批量删除文件

    特殊符号
        '' 单引号,在单引号中的所有的特殊符号没有特殊含义,例如 $ `
        "" 双引号,特殊符号没有特殊含义,除了 $ (调用变量的值) ` (引用命令) \ (转义符)
        ` 反引号,反引号括起来的命令是系统命令,在Bash中会先执行它
          和$()作用一样,推荐使用$()
        $() 同上  echo $(ls)
        # 注释


    shell脚本的执行
        方式1
          1) chmod 744 nxr.sh
          2) ./nxr.sh或者使用绝对路径
        注意:注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找

        方式2
          1) sh ./nxr.sh

    shell变量
        系统变量:PATH HOME USER
          set: 显示shell中所有变量

        用户自定义变量:
          unset撤销变量
          readonly 变量名=值,不能unset

        将命令的结果返回给变量
          A=`ls -la` 反引号,运行里面的命令,并将结果返回的变量
          A=$(ls -la) 等价于反引号

        设置环境变量
          export 变量名=变量值  (将shell变量输出为环境变量)
          source 配置文件

        预定义变量
          $$ 当前进程的进程号(PID)
          $! 后台运行的最后一个进程的进程号
          $? 最后一次执行的命令的返回状态

    通配符
        匹配符合条件的文件名,是完全匹配,ls,find,cp这些命令不支持正则表达式

    正则表达式
        \{n\} 前面的字符恰好出现n次
        \{n,\} 前面的字符出现不小于n次
        \{n,m\} 前面的字符至少出现n次,最多出现m次

        cut:字段提取命令,不能分割以空格为分隔符的文件
          格式:cut [选项] 文件名
          选项:-f 列名 提取第几列
                  -d 分隔符 按照分隔符分割列

        在文件中匹配符合条件的字符串,是包含匹配,grep,awk,sed
        示例:grep "a*" test_re.txt 匹配所有内容,没有任何作用
              grep ".*" test_re.xtt 同上
              grep -n "^$" test_re.txt 匹配空白行,显示行号
              grep "sa\{1,2\}id" test_re.txt  匹配s和id中间有1个或者2个a的行

              cat /etc/passwd | grep "/bin/bash" | grep -v root | cut -d ":" -f 1
              提取普通用户的用户名

        printf: 
          格式:printf "输出类型输出格式" 输出内容
          输出类型:
              %ns 输出字符串。n是数字,代表输出几个字符
              %ni 输出整数
              %m.nf 输出浮点数
          输出格式:
              \n
              \r
          格式:
              printf "%s %s %s\n" 1 2 3 4 5 6  三个为一组进行输出

        awk:
          格式:awk '条件1{动作1}条件2{动作2}...'文件名
                  默认空格和制表符作为分隔符,awk 一行一行的开始匹配
                  BEGIN
          条件
              一般使用关系表达式作为条件
              x>10
              x>=10
              x<=10
              BEGIN
          动作
              格式化输出
              流程控制语句
          示例:
              awk '{printf $2 "\t" $4 "\n"}' student.txt 输出第二,四列
              df -h | awk '{printf $1 "\t" $5 "\t" $6 "\n"}'
              df -h | grep sda1 | awk '{printf $5}' | cut -d "%" -f1
              awk 'BEGIN{FS=":"}{print $1 "\t" $3}' /etc/passwd  分隔符为:
              cat student.txt | grep -v Name | awk '$4>85{print $2}'

        sed: 将数据进行选取,替换,删除,新增的命令 与vim类似
          格式:sed [选项] '[动作]' 文件名
          选项:-n 一般sed命令会把所有数据都输入到屏幕,如果加入此选择,         则只会把经过sed命令的处理的行输出到屏幕。
                  -e 允许多条sed命令编辑
                  -i 用sed的修改结果直接修改读取数据的文件,
                     而不是由屏幕输出
          动作:a c i d p s
          示例:sed '4s/83/100/g' student.txt  字符串替换
                  sed '3c no such person' student.txt  行替换
                  sed '2i canglaoshi \      在第二行之前插入两行数据
              > bolaoshi' student.txt
                  sed '2a zuobi' student.txt  在第二行后面追加一行数据
                  sed -n '2p' student.txt    打印第二行
                  sed '2,3d' student.txt   删除第二行到第三行的数据


              
               














        

 

posted @ 2019-08-15 19:40  飞蝎儿  阅读(164)  评论(0编辑  收藏  举报