Linux二:基础命令

1 概述

Linux 简介

  • Linux 是一个开源、免费的操作系统,其稳定性、安全性、处理多并发能力已经得到业界的认可,目前大多数企业级应用甚至是集群项目都部署运行在 linux 操作系统之上,很多软件公司考虑到开发成本都首选 linux,在中国软件公司得到广泛的使用。

Linux 主要发行版本

  • Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain[蝶变]、Fedora、SuSE、OpenSUSE、红旗 Linux(国产)

Linux 目录结构

  1. 图例
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fDirkcKN-1638517433920)(assets/image-20211118102742430.png)]

  2. 目录说明

    1. /bin->usr/bin:存放系统预装的可执行程序,这里存放的可执行文件可以在系统的任何目录下执行。
    2. /boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
    3. /dev :dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,Linux 中的设备也是以文件的形式存在。
    4. /etc:etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
    5. /home:用户的主目录,在 Linux中,每个用户都有一个自己的目录,一般该目录名以用户的账号命名,叫作用户的根目录;用户登录以后,默认打开自己的根目录。
    6. /lib:lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
    7. /root:该目录为系统管理员,也称作超级权限者的用户主目录。
    8. /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
    9. /tmp:tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
    10. /usr: usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
    11. /var:var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

Linux 远程操作工具

  1. xshell
  2. xftp

Linux 软件包管理

  1. YUM 包的管理:yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器(在公网上)自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包(注:使用YUM的前提是可以连接外网)。常用指令如下

    # 查询 YUM 服务器上的[已经安装到本地的]软件包
    yum list[installed] | grep softwareName
    # 安装/卸载软件
    yum install/remove softwareName
    
  2. RPM 包的管理:RedHat Package Manager(RedHat软件包管理工具)的缩写,常用指令如下

    # 查询所安装的所有软件包
    rpm –qa
    # 分页查询所安装的所有软件包
    rpm –qa | more
    # 过滤查询安装的指定软件包
    rmp –qa | grep softwareName
    # 安装(-i 安装install; -v 提示verbose; -h 进度条hash)
    rpm [-ivh] rpm包全路径名称
    # 卸载(--nodeps:强制删除,用于被删除的软件包有依赖的情况)
    rpm -e 软件包名称 [--nodeps]    
    

1 基本命令

命令含义
sync把内存的数据同步到磁盘
(一般关机前把内存数据持久化到磁盘)
shutdowm -h now
poweroff
立刻关机
shutdown -h 5
shutdown –h 20:25
5分钟后关机
在今天20:25关机
shutdown -r now
reboot
立刻重启
shutdown -r 55分钟后重启
help帮助命令
man说明命令
clear
reset
Ctrl + L
清屏
ps -ef查看进程
kill [-9] 进程ID结束进程 (-9 表示强迫进程立即停止)
ifconfig查看网卡信息
ping查看与某台机器的连接情况
netstat -an查看当前系统端口
setup配置网络
service network restart重启网络
chkconfig iptables off关闭防火墙
cal [2021]显示当月 / 指定年份的日历 (calendar缩写)
date显示当前日期
hostname [newName]查看 / 修改主机名(修改名字后需要重新连接)
echo [选项] [输出内容]输出变量或常亮内容到控制台
cat /etc/redhat-release查看操作系统(centOS 属于 redhat)

2 文件管理

2.1 目录操作

绝对路径和相对路径

  1. 绝对路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录
  2. 相对路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd …/man 这就是相对路径的写法

常用命令

  1. ls: 列出目录

    # 参数说明
    -a :全部的文件,连同隐藏文件( linux中以"."开头的为隐藏文件) 一起列出来
    -l :长数据串列出,包含文件的属性与权限等等数据。注: ls -l 等价于 ll
    
  2. cd:切换目录

  3. pwd:显示目前的目录

  4. mkdir:创建一个新的目录

    # 参数说明
    -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来
    -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
    
  5. rmdir:删除一个空的目录

    # 参数说明
    -p :连同上一级『空的』目录也一起删除
    
  6. cp: 复制文件或目录

    1. cp [-adfilprsu] 来源档(source) 目标档(destination)

    2. cp [options] source1 source2 source3 … directory

      # 参数说明
      -a:相当於 -pdr 的意思,至于 pdr 请参考下列说明;(常用)
      -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
      -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
      -r:递归持续复制,用於目录的复制行为;(常用)
      -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
      -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
      -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身。
      -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
      -u:若 destination 比 source 旧才升级 destination !
      
  7. rm: 移除文件或目录

    1. rm [-fir] 文件或目录

      # 参数说明
      -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
      -i :互动模式,在删除前会询问使用者是否动作
      -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
      
      # rm -rf /*	【自杀命令!慎用!慎用!慎用!】将根目录下的所有文件全部删除
      
  8. mv: 移动文件与目录,或修改文件与目录的名称

    1. mv [-fiu] source destination

    2. mv [options] source1 source2 source3 … directory

      # 参数说明
      -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
      -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
      -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
      

文件属性

  1. 在Linux中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,图例如下
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9gyz4JLn-1638517433921)(assets/image-20211118105242506.png)]

  2. 在上图中第一列由10位字符组成,其中第一个字符代表这个文件是目录、文件或链接文件等等

    当为[ d ]则是目录
    当为[ - ]则是文件
    若是[ l ]则表示为链接文档 ( link file )
    若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 )
    若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )
    
  3. 接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apDBy6A6-1638517433921)(assets/20181230191538790.png)]

  4. 命令

    # (1) chown:更改文件属主,也可以同时更改文件属组
    # -R 表示递归更改文件属组,即该目录下的所有文件的属组都会更改
    # 例如 chown -R dmdba:dinstall /dm8
    chown [–R] 属主名 文件名
    chown [-R] 属主名:属组名 文件名
    
    # (2) chgrp:更改文件属组 (即 change group 简写)
    chgrp [-R] 属组名 文件名
    
    # (3) chmod:更改文件9个属性
    # 文件的权限字符为:『-rwx rwx rwx』, 这九个字符每三个为一组,即九个字符分为三组
    # 其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:r=4,w=2,x=1
    # 每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---] 分数则是:
    #    owner = rwx = 4+2+1 = 7
    #    group = rwx = 4+2+1 = 7
    #    others= --- = 0+0+0 = 0
    # 即 chmod 770 filename
    

2.2 文件操作

常用命令

  1. touch:创建文件

    touch fileName
    
  2. rm:删除文件

    rm -[rf] fileName
    
  3. vi 或 vim:修改文件

    • vi编辑器的3种模式:一般模式、编辑模式和命令模式,各模式的功能区分如下
    1. 一般模式:控制屏幕光标的移动,字符、字或行的删除,查找,移动复制某区段及进入编辑模式下,或者到命令模式。

    2. 编辑模式:只有在该模式下,才可以做文字输入,按「ESC」键可回到一般模式

    3. 命令模式:将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等

    4. 常用命令总结

      1. 一般模式下的常用命令

        作用命令
        控制光标移动↑,↓,j
        删除当前行dd
        复制一行内容yy
        粘贴复制的内容p
        查找/字符
        光标跳到最后一行shift + g
        保存并退出shift + z + z
        进入编辑模式i,o,a
        进入命令模式:
      2. 编辑模式下常用命令

        作用命令
        退出编辑模式到一般模式ESC键
      3. 命令模式下常用命令

        作用命令
        保存并退出:wq
        强制退出:q!
        退出编辑:q
    5. 图解

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jDHTzSeG-1638517433922)(assets/image-20211118112649278.png)]

  4. 查看文件

    作用命令
    由第一行开始显示内容cat
    (cat -n aaa.txt 显示文件 aaa.txt 的内容并带行号)
    由最后一行开始显示内容tac
    (方便记忆:tac 是 cat 的倒写)
    一页一页的显示内容more
    less对于大文件有较高效率less
    只看头几行head
    (eg. head -n 5 aaa.txt)
    只看尾几行tail

硬链接与软连接

  1. 样例

    [root@kuangshen /]# cd /home
    [root@kuangshen home]# touch f1 	# 创建一个测试文件f1
    [root@kuangshen home]# ls
    f1
    [root@kuangshen home]# ln f1 f2     # 创建f1的一个硬连接文件f2
    [root@kuangshen home]# ln -s f1 f3  # 创建f1的一个符号连接文件f3
    [root@kuangshen home]# ls -li       # -i参数显示文件的inode节点信息
    397247 -rw-r--r-- 2 root root     0 Mar 13 00:50 f1
    397247 -rw-r--r-- 2 root root     0 Mar 13 00:50 f2
    397248 lrwxrwxrwx 1 root root     2 Mar 13 00:50 f3 -> f1
    
    # echo 字符串输出 >> f1 输出到 f1文件
    [root@kuangshen home]# echo "I am f1 file" >>f1
    [root@kuangshen home]# cat f1
    I am f1 file
    [root@kuangshen home]# cat f2
    I am f1 file
    [root@kuangshen home]# cat f3
    I am f1 file
    [root@kuangshen home]# rm -f f1
    [root@kuangshen home]# cat f2
    I am f1 file
    [root@kuangshen home]# cat f3
    cat: f3: No such file or directory
    
  • 结论
    1. 删除符号连接f3,对f1 f2无影响
    2. 删除硬连接f2,对f1 f3也无影响
    3. 删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效
    4. 同时删除原文件f1,硬连接f2,整个文件会真正的被删除

2.3 压缩和解压

压缩

  1. 知识补充

    1. windows的压缩文件的扩展名:.zip/.rar;linux中的打包文件:aa.tar;linux中的压缩文件:bb.gz ;linux中打包并压缩的文件:.tar.gz
    2. 一般情况下 linux 打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz
  2. 命令:tar -zcvf 打包压缩后的文件名 要打包的文件

    # 参数说明
    -z:调用gzip压缩命令进行压缩
    -c:打包文件
    -v:显示运行过程
    -f:指定文件名
    
    # 样例:打包并压缩/usr/tmp 下的所有文件,压缩后的压缩包指定名称为 ab.tar
    tar -zcvf ab.tar aa.txt bb.txt 
    或
    tar -zcvf ab.tar  *
    

解压

  1. 命令:tar -zxvf 压缩文件 [-C 解压路径]

    # 参数说明
    -x:代表解压(其他字母含义与上面相同)
    
    # 样例
    # (1) 将/usr/tmp 下的ab.tar解压到当前目录下
    tar -zxvf ab.tar
    # (2) 将/usr/tmp 下的ab.tar解压到指定目录下 
    tar -xvf ab.tar -C /usr
    

2.4 查找命令

  1. grep

    1. grep [-ni] 查找的源文件内容,n 显示匹配行和行号, i 忽略大小写。
    2. grep 过滤查找,管道符 “|” 表示将前一个命令的处理结果输出传递给后面的命令处理。
    3. 样例: cat aaa.txt | grep -ni hello
  2. find

    1. 命令:find [搜索范围] [选项]

      # 参数说明
      1. -name:按名称查找,支持通配符
      2. -user:按用户名查找
      3. -size:按文件大小查找
      
      # 样例
      find -name '*.txt'
      
  3. locate

    1. locate 让使用者可以很快速的搜寻某个路径。默认每天自动更新一次,所以使用locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
    2. 样例
      updatedb
      locate bb.txt
      
  4. whereis

  5. which

3 用户管理

组管理

  1. Linux 的组类似于角色,系统可以对有共性的多个用户进行统一的管理。每一个用户都至少属于一个组,创建用户时如果不指定组,会默认创建一个跟用户名相同的组,并且把新创建的用户分配到组中,root用户默认属于 root 组。
  2. 指令
    指令说明
    groupadd 组名创建一个组
    groupdel 组名删除一个组
    groupmod 组名修改用户组属性
    useradd -g 组名 用户名添加用户时指定组
    gpasswd -a/-d 用户名 组名将用户添加到组/从组中移除
    newgrp 目的用户组切换组(一个用户属于多个组需要切换时使用)

账号管理

  1. 指令

    指令说明
    useradd [选项] 用户名添加账号
    userdel [选项] 用户名删除账号
    usermod [选项] 用户名修改账号
    id 用户名查看用户信息
    su 用户名切换用户
    chown [选项] [所有者][:[组]] 文件
    eg. chown -R dmdba:dinstall /dm8
    通过chown改变文件的拥有者和群组
  2. 指令参数或其他内容补充

    # 添加参数
    # 注:增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow,/etc/group等
    -c comment 指定一段注释性描述。
    -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    -g 用户组指定用户所属的用户组 **(常用)**。
    -G 用户组,用户组 指定用户所属的附加组。
    -m 使用者目录如不存在则自动建立。
    -s Shell文件 指定用户的登录Shell。
    -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
    
    # 删除参数
    -r 它的作用是把用户的主目录一起删除
    
    # 切换用户
    # 注:"#" 表示超级用户, "$"表示普通用户
    exit ,可以退回到原来的用户
    

口令管理

  1. 用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
  2. 命令格式为 : passwd [选项] 用户名,超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令,选项参数如下
    -l 锁定口令,即禁用账号
    -u 口令解锁
    -d 使账号无口令
    -f 强迫用户下次登录时修改口令
    

4 磁盘管理

概述

  • Linux磁盘管理好坏直接关系到整个系统的性能问题,Linux磁盘管理常用命令为 df、du。
    1. df :列出文件系统的整体磁盘使用量
    2. du:检查磁盘空间使用量

df

  1. df命令参数功能:++检查文件系统的磁盘空间占用情况++。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

  2. 语法:df [-ahikHTm] [目录或文件名]

    # 参数说明
    -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
    -k :以 KBytes 的容量显示各文件系统;
    -m :以 MBytes 的容量显示各文件系统;
    -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
    -H :以 M=1000K 取代 M=1024K 的进位方式;
    -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
    -i :不用硬盘容量,而以 inode 的数量来显示
    
  3. 样例

    # 将容量结果以易读的容量格式显示出来
    [root@sunshine /]# df -h
    
    # 将系统内的所有特殊文件格式及名称都列出来
    [root@sunshine /]# df -aT
    
    # 将 /etc 底下的可用的磁盘容量以易读的容量格式显示
    [root@sunshine /]# df -h /etc/
    

du

  1. Linux du命令也是查看使用空间的,但是与df命令不同的是Linux ++du命令是对文件和目录磁盘使用的空间的查看++。

  2. 语法:du [-ahskm] 文件或目录名称

    # 参数说明
    -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已
    -h :以人们较易读的容量格式 (G/M) 显示
    -s :列出总量而已,而不列出每个各别的目录占用容量
    -S :不包括子目录下的总计,与 -s 有点差别
    -k :以 KBytes 列出容量显示
    -m :以 MBytes 列出容量显示
    
  3. 样例

    # 只列出当前目录下的所有文件夹容量(包括隐藏文件夹):
    # 直接输入 du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。
    [root@sunshine software]# du
    
    # 将文件的容量也列出来
    [root@sunshine software]# du -ah
    
    # 检查根目录底下每个目录所占用的容量
    # 通配符 * 来代表每个目录,与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据
    [root@sunshine /]# du -sm /*
    

磁盘挂载与卸除

  1. 根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载”
  2. 语法
    # 磁盘挂载语法
    mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
    
    # 磁盘卸载语法
    umount [-fn] 装置文件名或挂载点
    -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下
    -n :不升级 /etc/mtab 情况下卸
        
    # eg. 先用 df -h 查看磁盘,然后再用 umount /dev/loop0 删除挂载
    

5 其他管理

服务管理

  1. systemctl [start、stop、restart、reload、status、enable、disable] 服务名称,即代表开启、关闭、重启、重新加载、查看服务状态、开机启动
  2. 样例
    # 注:CentOS7 之前,使用命令 service 服务名称 [start、stop、restart、reload、status、enable]
    
    # 开启防火墙
    [root@sunshine /]# systemctl start firewalld
    
    # 关闭防火墙
    [root@sunshine /]# systemctl stop firewalld
    
    # 重启防火墙
    [root@sunshine /]# systemctl restart firewalld
    
    # 重新加载防火墙
    [root@sunshine /]# systemctl reload firewalld
    
    # 查看防火墙状态
    [root@sunshine /]# systemctl status firewalld
    
    # 设置开机自动启动防火墙
    [root@sunshine /]# systemctl enable firewalld
    
    # 关闭开机自动启动防火墙
    [root@sunshine /]# systemctl disable firewalld
    

进程管理

  1. 概述
    1. 在Linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。每一个进程,都会对应一个父进程。
    2. 进程有两种运行方式:前台和后台。前台方式是目前用户可以在前台操作的,后台方式是实际在运行,但用户在前台看不见。
    3. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。
  2. 常用指令
    1. ps [-auxef]:查看系统运行的进程

      # 参数说明
      -a 显示当前终端下的所有进程信息
      -u 以用户的格式显示进程信息
      -x 显示后台进程运行的参数
      -e 显示所有进程信息
      -f 以全格式显示进程信息
      
      # 常用:以全格式显示进程信息
      ps -f 
      
    2. kill [-9] 进程idkillall 进程名称(支持通配符):终止进程(有 id 或 name 两种终止进程的方式)

      参数说明
      -9 : 表示强迫进程立即停止
      

网络管理

  1. netstat [-anp]:查看系统网络服务情况

    • 参数说明(上面参数没写全)
    -a (all)显示所有选项,netstat默认不显示LISTEN相关
    -n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
    -p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -l 仅列出有在 Listen (监听) 的服務状态
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计 (重要)
    -c 每隔一个固定时间,执行该netstat命令。
    
    # 搜索指定端口命令(常用)
    netstat -an | grep 8080
    
  2. ping 选项 目标主机:网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的介质是否为断、网线是
    否脱落或网卡故障。

  3. curl [-XvuH] url:用来发送 http 请求

    # 参数说明
    -X:指定请求方式
    -v:显示响应结果
    -u:携带用户名/密码
    -H:携带请求消息头信息
    
  4. ifconfig:查看网卡信息

6 扩展命令

cut

  1. cut 的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

  2. 基本用法:cut [选项参数] filename

    1. 选项参数:-f 列号,提取第几列;-d 分隔符,按照指定分隔符分割列。默认分隔符是制表符
  3. 样例

    # 准备数据(内容为缩进部分)
    [root@hecs-66197 tmp]# vi cut.txt 		
        我 我 我
        喜 喜 喜
        欢 欢 欢
        蓝 海 绿
        天 洋 地
    # 例一:切割 cut.txt 第一列
    [root@hecs-66197 tmp]# cut -d " " -f 1 cut.txt 
    我
    喜
    欢
    蓝
    天
    # 例二:切割 cut.txt 第二、三列(分隔符和列号可以直接跟在 -d -f 之后,不要空格也行)
    [root@hecs-66197 tmp]# cut -d" " -f2,3 cut.txt
    我 我
    喜 喜
    欢 欢
    海 绿
    洋 地
    # 例三:在 cut.txt 文件中切割出"蓝"
    [root@hecs-66197 tmp]# cat cut.txt | grep "蓝" | cut -d" " -f1[root@hecs-66197 tmp]# echo $PATH
    /usr/local/jdk-11.0.11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    # 例四:选取系统PATH变量值,第二列字符串
    [root@hecs-66197 tmp]# echo $PATH | cut -d: -f2
    /usr/local/sbin
    # 例五:选取系统PATH变量值,第二列及以后的所有字符串
    [root@hecs-66197 tmp]# echo $PATH | cut -d: -f2-
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    

sed

  1. sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出

  2. 基本用法:sed [选项参数] 'command' filename

    1. 选项参数:-e ,直接在指令列模式上进行 sed 的动作编辑
    2. 命令功能:a 新增,a 的后面可以接字串,在下一行出现; d 删除; s 查找并替换
  3. 样例

    # 原 sed.txt 内容
    [root@hecs-66197 tmp]# cat sed.txt 
    我 我 我
    喜 喜 喜
    欢 欢 欢
    蓝 海 绿
    天 洋 地
    # 例一:将 "很 好 太" 这个字符串插入到 sed.txt 的第一行下,然后将内容写入到 sed2.txt 中
    [root@hecs-66197 tmp]# sed '1a 很 好 太' sed.txt > sed2.txt 
    [root@hecs-66197 tmp]# cat sed2.txt 		# 源文件 sed.txt 内容不变, sed2.txt 内容如下
    我 我 我
    很 好 太
    喜 喜 喜
    欢 欢 欢
    蓝 海 绿
    天 洋 地
    # 例二:删除 sed.txt 文件所有包含"我"的行,然后将内容写入到 sed3.txt 中
    # 注:由本例和上例可知,使用单引号、双引号均可~
    [root@hecs-66197 tmp]# sed "/我/d" sed.txt > sed3.txt
    [root@hecs-66197 tmp]# cat sed3.txt 		# 源文件 sed.txt 内容不变, sed3.txt 内容如下
    喜 喜 喜
    欢 欢 欢
    蓝 海 绿
    天 洋 地
    # 例三:将 sed.txt 文件中"我"替换为"你",然后将内容写入到 sed4.txt 中
    # 补充:g即global,表示全局替换
    [root@hecs-66197 tmp]# sed "s/我/你/g" sed.txt > sed4.txt
    [root@hecs-66197 tmp]# cat sed4.txt 		# 源文件 sed.txt 内容不变, sed4.txt 内容如下
    你 你 你
    喜 喜 喜
    欢 欢 欢
    蓝 海 绿
    天 洋 地
    # 例四:将 sed.txt 文件中的第三行删除并将"我"替换为"你",然后将内容写入到 sed5.txt 中
    [root@hecs-66197 tmp]# sed -e "3d" -e "s/我/你/g" sed.txt > sed5.txt
    [root@hecs-66197 tmp]# cat sed5.txt 		# 源文件 sed.txt 内容不变, sed5.txt 内容如下
    你 你 你
    喜 喜 喜
    蓝 海 绿
    天 洋 地
    

awk

  1. 一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理

  2. 基本用法:awk [选项参数] 'pattern1{action1} pattern2{action2}...' filename

    1. pattern :表示 AWK 在数据中查找的内容,就是匹配模式;
    2. action :在找到匹配内容时所执行的一系列命令。
    3. 选项参数:-F 指定输入文件折分隔符;-v 赋值一个用户定义变量
  3. awk 内置变量

    变量说明
    FILENAME文件名
    NR已读的记录数
    NF浏览记录的域的个数(切割后, 列的个数)
  4. 样例

    # 准备数据,将 /etc/passwd 下的文件复制到当前目录下,并命名为 passwd-bak。
    # 可以自己执行 cat passwd-bak 命令查看内容,内容比较多此处不再粘贴出来
    [root@hecs-66197 tmp]# cp /etc/passwd ./passwd-bak
    
    # 例一:搜索 passwd-bak 文件以 root 关键字开头的所有行,并输出该行的第 7 列
    [root@hecs-66197 tmp]# awk -F: '/^root/{print $7}' passwd-bak 
    /bin/bash
    # 例二:搜索 passwd-bak 文件以 root 关键字开头的所有行,并输出该行的第 1 列和第 7 列,中间以","号分割
    [root@hecs-66197 tmp]# awk -F: '/^root/{print $1","$7}' passwd-bak 
    root,/bin/bash
    # 例三:只显示 passwd-bak 文件的第一列和第七列,以逗号分割;且在所有行前面添加"start...",在最后一行添加"end..."
    # 注:BEGIN 在所有数据读取行之前执行; END 在所有数据执行之后执行
    [root@hecs-66197 tmp]# awk -F: 'BEGIN{print "start..."} {print $1","$7} END{print "end..."}' passwd-bak 
    start...
    root,/bin/bash
    bin,/sbin/nologin
    省略中间内容
    end...
    # 例四:将 passwd-bak 文件中的用户 id 增加数值 1 并输出(部分结果如下)
    [root@hecs-66197 tmp]# awk -v i=1 -F: '{print $3+i}' passwd-bak
    1
    2
    3
    4
    # 例五:统计 passwd-bak 文件中,每行的行号,每行的列数(部分结果如下,主要目的是使用 awk 内置变量)
    [root@hecs-66197 tmp]# awk -F: '{print "filename:" FILENAME ",linenumber:" NR ",col:" NF}' passwd-bak 
    filename:passwd-bak,linenumber:1,col:7
    filename:passwd-bak,linenumber:2,col:7
    filename:passwd-bak,linenumber:3,col:7
    filename:passwd-bak,linenumber:4,col:7
    filename:passwd-bak,linenumber:5,col:7
    # 例六:查询 a.txt 中空行所在的行号
    [root@hecs-66197 tmp]# cat a.txt 
    aa
    
    b
    
    c
    [root@hecs-66197 tmp]# awk '/^$/{print NR}' a.txt 
    2
    4
    # 例七:切ip(主要练下综合运用)
    [root@hecs-66197 tmp]# ifconfig eth0 
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.0.60  netmask 255.255.255.0  broadcast 192.168.0.255
            inet6 fe80::f816:3eff:fe42:c247  prefixlen 64  scopeid 0x20<link>
            ether fa:16:3e:42:c2:47  txqueuelen 1000  (Ethernet)
            RX packets 18923  bytes 14790755 (14.1 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 14783  bytes 1556135 (1.4 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    [root@hecs-66197 tmp]# ifconfig eth0 | grep "inet " 
            inet 192.168.0.60  netmask 255.255.255.0  broadcast 192.168.0.255
    [root@hecs-66197 tmp]# ifconfig eth0 | grep "inet " | awk -F" " '{print $2}' 
    192.168.0.60
    # 例八:计算第二列的和并输出(主要练下综合运用)
    [root@hecs-66197 tmp]# cat student.txt 
    张三 80
    李四 85
    王五 90
    赵六 85
    [root@hecs-66197 tmp]# cat student.txt | awk -F " " '{sum+=$2} END{print sum}'
    340
    

sort

  1. sort 命令是在 Linux 里非常有用,它将文件进行排序,并将排序结果标准输出

  2. 基本语法:sort [选项] [参数]

    1. 选项如下

      选项说明
      -n依照数值的大小排序
      -r以相反的顺序来排序
      -t设置排序时所用的分隔字符
      -k指定需要排序的列
    2. 参数:指定待排序的文件列表

  3. 样例

    # 按照":"分割后的第三列倒序排序
    [root@hecs-66197 tmp]# cat sort.txt 
    bb:40:5.4
    bd:20:4.2
    xz:50:2.3
    cls:10:3.5
    ss:30:1.6
    [root@hecs-66197 tmp]# sort -t : -nrk 3 sort.txt 
    bb:40:5.4
    bd:20:4.2
    cls:10:3.5
    xz:50:2.3
    ss:30:1.6
    

参考链接

  1. CSDN Linux常用命令
  2. 狂神 Linux
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值