一、Linux系统之基础指令

Linux指令(基础)

虚拟机关机

shutdown now //立即关机
poweroff    //关机断电源
init        //断开进程

目录管理命令

ls      //列出目录内容
    -l      //长格式,详细信息
--rw-----   - 普通文件
     		b 块设备文件
     		d 目录文件
     		c 字符设备文件
     		l 软连接文件
pwd         //查看当前所在目录路径

在这里插入图片描述

bin:存放二进制文件,一些常用的命令符

dev:设备文件

home:家目录

lib:库文件

etc:存放主配置文件

boot:存放系统启动时的引导文件

media:媒体设备文件

mnt:临时的挂载目录

cd         //返回当前用户家目录
cd ~       //返回当前用户家目录
cd -       //返回上一次所在目录
cd ..      //返回当前目录的上一级

文件管理命令

mkdir       //创建目录
     -p          //创建目录时若父目录不存在则自动创建
     -v          //显示目录创建过程

rmdir       //删除目录,只能删除空目录

touch       //创建一个空文件,touch还有一个作用是修改文件的时间戮

stat        //显示文件或文件系统的状态

rm          //删除文件,删除命令默认会提示是否需要删除
                //如果要使用命令本身可以在命令前加一个\
                    //例如:\rm,这样删除就不会有提示了
    -r      //递归删除,删除目录时必须使用此选项
    -f      //强制删除,不询问

cp          //复制文件,一个文件到一个文件,多个文件到一个目录
    -r          //递归拷贝,拷贝目录时必须使用此选项
    -p          //拷贝时保留原权限
    -a          //相当于-rp

mv          //移动文件     //修改名字

install     //复制文件并且设置属性
    -m MODE	    //复制时修改权限
    -o OWNER    //复制时修改文件属主
    -g GROUP    //复制时修改属组
    
ln      //生成链接文件,源文件和链接文件的内容是一致的
    //硬链接格式:硬链接 ln 源文件名 链接文件名
    //软链接格式:软链接 ln -s 源文件名 链接文件名
    //区别:当硬链接源文件被删除时,可以继续操作链接文件;当软链接源文件被删除时,不能继续操作链接文件

文本内容查看命令

cat      //将文件内容输出至标准输出(小文件使用)
    --n   --number   //显示行号
          //注意:使用cat查看文件内容时会将文件的所有内容加载至内存,所以应避免使用cat打开巨大文件

tac         //倒序打印文件内容至标准输出
    
more        //全屏查看文本文件内容,只能从前往后,不能从后往前
                //文件内容显示完后自动退出

less        //全屏查看文本文件内容,可从前往后亦可从后往前。推荐使用

head        //从头部开始打印文件内容,默认打印10行
    -n          //指定要打印的行数,-n 可以是15也可以是-15

tail        //查看文本文件尾部内容
    -n          //指定要打印的行数,可以是-n 15也可以是-15
    -f          //实时监测文件末尾内容
主机管理命令
hostname    //查看或临时修改主机名,重开终端有效,重启失效

hostnamectl set-hostname   //查看或永久修改主机名,重开终端生效,重启依然有效
     bash                 //立即生效
     
time        //显示命令的执行时间,例如time ls /etc

clear       //清屏

whoami      //显示当前登录用户
   
who         //查看当前在线用户

w           //显示当前在线用户并显示其在运行的命令

which       //显示指定命令的绝对路径

date        //显示或设置日期与时间
            //不带参数的date用于显示当前系统日期与时间
            //格式化输出时间:+
                    %Y      //年
                    %m      //月
                    %d      //日
                    %F      //年-月-日
                    %H      //时
                    %M      //分
                    %S      //秒
        -s          //以字符串方式设置时间"20250414 10:00:00"

cal         //打印日历

ldd         //查看指定程序有哪些依赖库文件
            //程序组成:二进制程序,库文件,配置文件,帮助文件

bash特性

bash支持以下特性:

  • 支持命令历史、命令补全
  • 支持管道、重定向
  • 支持命令别名
  • 支持命令行编辑
  • 支持命令行展开
  • 支持文件名通配
  • 支持变量
  • 支持编程

bash常用操作

//光标跳转
    Ctrl+a          //跳到命令行首
    Ctrl+e          //跳到命令行尾
    Ctrl+u          //剪切光标至命令行首的内容
    Ctrl+k          //剪切光标至命令行尾的内容
    Ctrl+<-         //光标定位到离自己最近的一个单词前面
    Ctrl+p          //重复上一次命令
    Ctrl+w          //剪切前面的字符至上一个空格处
    Ctrl+y          //粘贴或者恢复上次的删除。
    Ctrl+l          //清屏
    Ctrl+s          //暂时冻结当前shell的输入
    Ctrl+q          //解冻
    
//tab键命令和路径补全
    //在命令行输入命令时,如果只记得命令的开头几个字母,可使用tab键补全命令;如果有多个命令都是以某字母开头,按两次tab,可以列出所有以该字母开头的命令,供用户选择。
    //在命令行输入文件路径时,如果忘记文件路径全称,则只需要输入文件路径开头几个字母,也可以使用tab键进行补全。
    
//命令行常见特殊符号
    ~               //展开为用户的家目录
    ~USERNAME       //展开为指定用户的家目录
    {}              //列表,可用于存放数据
    \               //转义,使得后面一个特殊字符没有任何特殊含义
    &&              //前面的命令执行成功后才执行后面的命令
    ||              //前面的命令执行失败后才执行后面的命令
    ;               //不管前面的命令执行成功还是失败都执行后面的命令

//文件名通配符
    *               //匹配任意长度的任意字符
    ?               //匹配任意单个字符
    []              //匹配指定范围内的任意单个字符
                    例如:[abc][a-m][0-9]
                    [[:space:]]	//表示空白字符
                    [[:punct:]] //表示标点符号
                    [[:lower:]]	//表示小写字母
                    [[:upper:]]	//表示大写字母
                    [[:alpha:]]	//表示大小写字母
                    [[:digit:]]	//表示数字
                    [[:alnum:]]	//表示数字和大小写字母
                    [^]         //匹配指定范围之外的任意单个字符

//环境变量
    PATH            //命令搜索路径
    HISTSIZE        //命令历史缓冲区大小
    SHELL           //当前shell
//bash内置变量
    RANDOM          //保存着0-32768之间的随机数

//命令历史
    history         //查看命令历史
        -c              //清空命令历史
        -d OFFSET [n]   //删除指定位置的命令历史
        -w              //保存命令历史至历史文件~/.bash_history中

    //命令历史的使用技巧
        !n              //执行命令历史中的第n条命令
        !-n             //执行命令历史中倒数第n条命令
        !!              //执行上一条命令
        !string         //执行命令历史中最近一个以指定字符串开头的命令
        !$              //引用前一个命令的最后一个参数
        !cat           //执行上一次cat开头的命令
        esc .           //按下esc松开后按 ”.“ ,引用前一个命令的最后一个参数

重定向和管道符

重定向        //将输出的内容重定向到某个文件

//I/O重定向:
    >                 //覆盖输出重定向  //默认1>
    >>                //追加输出重定向  //默认1>>

    2>                //重定向错误输出
    2>>               //追加重定向错误输出
    &>                //覆盖重定向标准输出或错误输出至同一个文件
    &>>               //追加重定向标准输出或错误输出至同一个文件
    <                 //输入重定向
    <<                //Here Document,退出条件;退出条件加单引号使输入的特殊字符没有特殊含义

tee          //从标准输入读取数据,输出一份到屏幕上,一份保存到文件
    示例:
        [root@localhost ~]// tee /tmp/hello.out
        hello world
        hello world
        [root@localhost ~]// cat /tmp/hello.out
        hello world

| 管道符      //前一个命令的输出,作为后一个命令的输入。最后一个命令会在当前shell进程的子shell进程中执行
    使用格式: 命令1 | 命令2 | 命令3 | ...
    示例:
        [root@hzz ~]// echo "hello hzz" | cut ‐d ' ' ‐f 2
        hzz

xargs        //和管道符连用,将前面的命令执行的结果作为参数交给后面的命令执行
    使用格式: 命令1 | xargs 命令2
    选项:
         -n        //设置一次性传递的参数的数量,默认是所有
         -i        //将数据拆分为一个一个的存储在{}中
         -d        //自定义分隔符
    示例:
        [root@hzz ~]// find / -name "ifcfg-ens33" | xargs -i cp {} /root/
        [root@hzz ~]// ls
        ifcfg-ens33

压缩、解压缩命令

//压缩格式: gz,bz2,xz,zip,z
//压缩能力:gzip<bzip2<xz<zip
//所有压缩命令中只有zip能够压缩目录

compress     //用此命令压缩的文件其文件名为FILENAME.Z,解压用uncompress

gzip         //压缩后的文件以.gz结尾;只能压缩文件不能压缩目录
         gzip /path/to/somefile    //压缩完成后会不保留原文件
         -d        //解压缩,解压完成后不保留原文件
         -c        //将结果输出至标准输出,保留原文件
         -//        //-后面加数字1-9,-1压缩等级最低;-9 压缩比最高。默认压缩比是-6
         -l        //查看压缩文件内的内容;从左至右依次显示为:
                   //压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名称
gunzip       //解压
         gunzip /path/to/some_compress_file.gz    //解压完成后不保留原文件
         zcat /path/to/somefile.gz    //不解压的情况下查看文本文件的内容

bzip2        //压缩后的文件以.bz2结尾
         bzip2 /path/to/somefile    //压缩完成后不保留原文件
         -d        //解压缩,解压完成后不保留原文件
         -6        //-后面加数字1-9,指定压缩比,默认为6
         -k        //keep,压缩时保留原文件
bunzip2      //解压
         bunzip2 /path/to/some_compress_file.bz2    //解压完成后不保留原文件
         bzcat /path/to/somefile.bz2    //不解压的情况下查看文本文件的内容

xz           //压缩后的文件以.xz结尾;
         xz /path/to/somefile    //压缩完成后不保留原文件
         -d        //解压缩,解压完成后不保留原文件
         -//        //-后面加数字1-9,指定压缩比,默认为6
         -k        //keep,压缩时保留原文件
unxz         //解压
         unxz /path/to/some_compress_file.xz    //解压完成后不保留原文件
         xzcat /path/to/somefile.xz    //不解压的情况下查看文本文件的内容

zip          //既归档又压缩的工具,zip压缩后保留原文件,zip可以压缩目录
             //gz、bz2、xz都只能压缩文件。
         -r     //递归压缩目录  格式(zip -r 压缩后的名字.zip 压缩前的名字)操作后会保留原文件
         -d        //删除压缩包里面的指定文件
         zip filename.zip file1 file2 ...
         zip filename.zip DIR/*
unzip        //解压
         unzip filename.zip
         -d        //指定解压路径

tar          //归档工具,只归档不压缩
         -c        //创建归档文件(创建tar包文件)
         -f file.tar    //操作的归档文件
         -x        //还原归档
         -v        //显示归档过程
         -C        //将展开的归档文件保存至指定目录下
         -tf /path/to/file.tar    //不展开归档,直接查看归档了哪些文件
         --delete  //从归档文件中删除文件
         -p        //归档时保留权限信息。只有管理员才有权限用此选项
         --xattrs  //在归档时保留文件的扩展属性信息

         -zcf      //归档并调用gzip压缩
         -zxf      //调用gzip解压缩并展开归档

         -jcf      //归档并调用bzip2压缩
         -jxf      //调用bzip2解压缩并展开归档

         -Jcf      //归档并调用xz压缩
         -Jxf      //调用xz解压缩并展开归档

文本内容排序

sort        #默认升序排序,不是按数值大小排序的
        -n      #根据数值大小进行排序
        -r      #逆序排序
        -t      #字段分隔符
        -k      #以哪个字段为关键字进行排序
        -u      #去重,排序后相同的行只显示一次
        -f      #排序时忽略字符大小写
        
uniq        #将重复的行只显示一遍(连续且完全相同方为重复)
        -c      #显示文件中行重复的次数
        -d      #只显示重复的行
        -u      #只显示未重复的行

文本内容统计

#文本内容统计
wc          #文本内容统计
        -l      #显示行数
        -w      #显示单词数
        -c      #显示字节数

#文件大小统计
du          #查看文件或目录占用的磁盘空间大小
        -h      #以人类友好的方式显示大小
        -s      #显示总的占用空间大小

#磁盘空间统计
df          #报告文件系统磁盘空间使用情况
        -h      #以人类友好的方式显示大小
        -i      #显示inode信息
        -T      #查看文件系统类型

文本内容过滤

cut截取文本内容

cut         #截取文本内容
        -d ''	  #指定字段分隔符,默认是空格
        -f		  #指定要显示的字段
            -f 1,3    #显示第1个字段和第3个字段
            -f 1-3	  #显示第1个字段到第3个字段
        -c		  #指定要显示的字段    

awk基于列的文本报告工具

awk         #基于列的文本报告工具
        语法:awk [选项] '匹配模式 {执行动作}'
        -F ''        #指定分隔符,可以使用正则表达式[]指定多个分隔符
        -v OFS=''    #指定打印时的分隔符

    执行动作:
        '{print $#}'        #选择打印第#列,$0代表所有列,$NF代表最后1列

    匹配模式:
        '/关键字/'               #匹配关键字的行,支持正则表达式
        '/关键字1/,/关键字2/'     #匹配从关键字1到关键字2中间所有的行
        '/关键字1/;/关键字2/'     #匹配从关键字1和关键字2的行
        'NR==1'                 #匹配第1'NR>=10'                #匹配行数大于10的所有行并显示行号
        '$1==1'                 #匹配第1列的值等于1的行
        '$1>=10 && $1<=20'      #匹配第1列的值大于等于10并小于等于20的行
        '$1>=10 || $3!=20'      #匹配第1列的值大于等于10或者第3列的值不等于20的行
        '$NF~"/sbin/nologin"'   #匹配最后1列字符为/sbin/nologin的行
        '$NF!~"/sbin/nologin"'  #匹配最后1列字符不为/sbin/nologin的行

        语法示例:
            #使用:为分隔符分割/etc/passwd文件中的内容,按照想要的格式打印出来
            awk -F ':' '{print "第一列:"$1,"第二列:"$2,"第三列:"$3}' /etc/passwd
            
            #使用:为分隔符分割/etc/passwd文件中的内容,按照想要的格式打印出来
            awk -F ':' -v OFS='-' '{print $1,$2,$3}' /etc/passwd
            
            #使用:/:/或多个:或多个/或多个:/为分隔符分割/etc/passwd文件中的内容,打印出第1列和第6列
            awk -F '[:/]+' '{print $1,$6}' /etc/passwd

grep文本过滤

grep        #搜索文本内容,并将匹配的内容所在一整行都显示出来
            #支持使用正则表达式来过滤文本
        --color     #匹配到的内容高亮显示
        ^           //以某开头   格式:^afds//以某结尾	格式:fasdf¥
        ^$          //空行
        -i          #忽略大小写
        -w          #强制模式,完全匹配字词
        -n          #显示匹配到的内容的行号
        -c          #显示匹配到的内容一共有多少行
        -v          #显示没有被模式匹配到的行
        -o          #只显示被模式匹配到的字符串
        -E          #使用扩展正则表达式。grep -E相当于使用egrep
        -q          #静默模式,不向屏幕输出任何信息
        -A 1        #被模式匹配到的内容以及其后面1行的内容都显示出来
        -B 1        #被模式匹配到的内容以及其前面1行的内容都显示出来
        -C 1        #被模式匹配到的内容以及其前后的行各显示1-r          #递归搜索每个目录下的所有文件的文本内容,忽略链接文件
        -R          #递归搜索每个目录下的所有文件的文本内容,不忽略链接文件
egrep       #基于正则表达式查找文件内容
fgrep       #不支持正则表达式,执行速度快

-v           //筛选除...以外的

sed文本过滤和流编辑器

sed         #基于行的过滤和转换文本的流编辑器
        语法:sed [选项] '[过滤条件和sed指令]' [输入文件]
        -n	        #取消默认sed输出,用于过滤文本内容
        -r	        #使用扩展正则表达式
        -e	        #一条语句执行多条sed指令
        -i	        #修改文件内容
        -nu        //显示每一行行数
        过滤条件:
          #           # '#' 实际为数字,表示第几行
          $           #最后一行
          /regexp/    #按照匹配规则匹配指定内容,regexp表示正则匹配
          ,           #间隔符号,表示从条件一到条件二
          !           #取反,在指令的前面使用表示条件取反
          |           #或,注意使用时需要转义
          &           #引用匹配到的整个字符串
          \#          # '#' 实际为数字,表示引用前面()中正则匹配的字符串,第几个()就是数字几

        sed指令:
          a           #追加,向匹配行后面插入内容
          i           #插入,向匹配行前插入内容
          c           #更改,更改匹配行的内容
          d           #删除,删除匹配行的内容
          s           #替换,替换掉匹配的内容
          g           #全局替换,一般和s一起使用
          p           #打印,打印出匹配的内容,通常与-n选项一起使用
          =           #用来打印被匹配的行的行号
          n           #读取下一行,遇到n时会自动跳入下一行
          r\w         #读和写编辑命令,r用于将内容读入文件,w用于将匹配内容写入到文件
          {}          #{}中可以存放指令,基于前面过滤结果再次做处理,用于条件过滤后
          ;           #分割多个指令,基于前面指令再次做处理,用于指令操作后

        语法示例:
            #在第3行下一行添加hello字符串,3表示行号
            sed '3a hello' file
            #在匹配到关键字所在行的下一行添加hello字符串,如果匹配到多个test123则都会添加
            sed '/关键字/a hello' file
            #在最后一行后新增一行添加hello字符串
            sed '$a hello' file
            #在第3行前一行添加hello字符串
            sed '3i hello' file
            #在匹配到关键字所在行的前一行添加hello字符串,如果匹配到多个关键字则都会添加
            sed '/关键字/i hello' file
            #在最后一行的前一行插入hello字符串
            sed '$i hello' file
            #将文件的第一行内容替换为hello字符串
            sed '1c hello' file
            #将匹配到关键字的整行替换为hello字符串
            sed '/关键字/c hello' file
            #将最后一行内容替换为hello字符串
            sed '$c hello' file
            #删除第四行
            sed '4d' file
            #从第一行开始删除,每隔2行就删掉一行
            sed '1~2d' file
            #删除12行
            sed '1,2d' file
            #删除12之外的所有行
            sed '1,2!d' file
            #删除从匹配关键字的行到最后一行
            sed '/关键字/,$d' file
            #删除匹配到关键字的行及其后面一行
            sed '/关键字/,+1d' file
            #删除空行,注意//中使用的是正则表达式
            sed '/^$/d' file
            #删除不匹配关键字1或关键字2的行,/test|abc/表示匹配test或abc,!表示取反
            sed '/关键字1\|关键字2/!d' file
            #删除13行中,匹配关键字的行
            sed '1,3{/关键字/d}' file
            #将原字符串替换为新字符串,默认只替换每行匹配到的第一个
            sed 's/原字符串/新字符串/' file
            #将原字符串替换为新字符串,替换每行匹配到的所有
            sed 's/原字符串/新字符串/g' file
            #将原字符串替换为新字符串,替换每行匹配到的第二个
            sed 's/原字符串/新字符串/2' file
            #匹配有#号的行,替换匹配的行中逗号后的所有内容为空
            sed '/#/ s/,.*//g' file
            #替换所有注释的行为空行,然后删除空行,替换和删除操作中间用分号隔开
            sed 's/^#.*//;/^$/d' file
            #将以数字开头的行的数字用括号括起来,&符号代表匹配到的内容
            sed -r 's/^[0-9]+/(&)/' file
            #匹配每行逗号分割的字符串重新将字符串进行排序,原本的第三列变成第一列
            sed -r 's#(.*),(.*),(.*)#\3,\2,\1#g' file
            #匹配第1行和第3行逗号分割的字符串重新将字符串进行排序
            sed -r '1s#(.*),(.*),(.*)#\3,\2,\1#g;3s#(.*),(.*),(.*)#\3,\2,\1#g' file
            #打印第2行
            sed -n '2p' file
            #打印第2行到第4行
            sed -n '2,4p' file
            #搜索包含关键字的行
            sed -n '/关键字/p' file
            #打印从第一个关键字到第二个关键字中间所有的行
            sed -n '/第一个关键字/,/第二个关键字/p' file
            #打印从匹配关键字的行到最后一行的内容
            sed -n '/关键字/,$p' file
            #打印最后一行的行号(即文件有多少行,和wc -l功能类似)
            sed -n "$=" file
            #打印匹配关键字的行的行号
            sed -n '/关键字/=' file
            #将file2的内容,追加在文件file中每个匹配关键字的行下面
            sed '/关键字/r file2' file
            #将file中每个匹配到关键字的行,写入到新文件newfile中
            sed '/关键字/w newfile' file

文件查找命令

find        #实时查找,精确性强,遍历指定目录中所有文件完成查找, 
            #查找速度慢,支持众多查找标准。
        语法:
        find 查找路径 [OPTION...] [查找标准] [查找到以后的处理动作]
            查找路径,默认为当前目录
            查找标准,默认为指定路径下的所有文件
        -name 'filename'    #对文件名作精确匹配.支持glob通配符机制
        -iname 'filename'   #文件名匹配时不区分大小写
        -regex pattern      #基于正则表达式进行文件名匹配,以pattern匹配整个文件路径字符串,而不仅仅是文件名称
        -user username      #根据属主来查找
        -group groupname    #根据属组来查找
        -uid                #根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
        -gid                #根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
        -nouser             #查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
        -nogroup            #查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
        -type               #根据文件类型来查找(f,d,c,b,l,p,s)
        -size               #根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M,+表示大于,-表示小于
        -mtime              #修改时间
        -ctime              #改变时间
        -atime              #访问时间
            +5              #5天前
            -5              #5天以内
        -mmin               #多少分钟修改过
        -cmin               #多少分钟改变过
        -amin               #多少分钟访问过
            +5              #5分钟前
            -5              #5分钟以内
        -perm mode          #根据权限精确查找
        -perm -mode         #查找至少包含指定权限的文件

        #组合条件:
            -a              #和
            -o              #或 
            -not            #否
            !               # !-not含义一样

        #处理动作:默认为显示到屏幕上
            -print          #显示
            -ls             #类似ls -l的形式显示每一个文件的详细信息
            -fls /path/to/somefile      #查找到的所有文件的长格式信息保存至指定文件中
            -delete                     #删除查找到的文件
            -ok COMMAND {} \;           #对查找到的每个文件执行COMMAND,每次操作都需要用户确认
            -exec COMMAND {} \;         #对查找到的每个文件执行COMMAND,操作不需要确认

注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令,而有些命令不能接受过多参数,此时命令执行可能会失败。而xargs可规避此问题。

| xargs    #通过管道将查找到的内容给xargs处理,xargs会把内容进行拆分,拆分完毕后将内容作为参数交给后面的命令执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值