更新于 

Linux基本命令(一)

网络二进制8,逆向二进制16

kernel 与 Shell

  • 1、 Linux是基于商业操作系统Unix改造而来的开源免费操作系统,广泛安装运营于全球大量服务器上。常用Linux发行版有:

    • RHEL:Red Hat Enterprise Linux
    • Centos:免费版本 RHEL
    • Ubuntu
    • Debian (Kali):基于此系统修改诞生的的Kali
  • 不同发行版本的linux,命令和文件路径会略有不同

  • 2、 kernel(内核),shell(外壳)

    • kernel可以理解为正在运行的系统,就像核反应堆的核心一样。
      用户通过 shell 传递命令,指挥kernal 按用户的要求进行工作。
      同样的操作,在Windows系统下通常通过鼠标进行的,在Linux系统下是通过Linux命令实现的。
  • Shell程序有多种版本

    • sh
    • bash
    • zsh

Linux基础命令

查看下Linux系统目录

命令 概述
/root root 文件系统是文件系统的顶级目录。它必须包含在挂载其它文件系统前需要用来启动 Linux 部文件。它必须包含需要用来启动剩余文件系统的全部可执行文件和库。文件系统启动以后所文件系统作为 root 文件系统的子目录挂载到标准的、预定义好的挂载点上。
/bin 目录包含用户的可执行文件
/boot 包含启动linux系统所需要的静态引导程序和内核可执行文件以及配置文件
/dev 包含每一个链接到系统的硬件设备的设备文件,不是驱动,而是计算机上能够访问的设备
/etc 包含主机计算机的本地系统配置
/home 主目录存储用户文件,每一个用户都有一个位于/home目录中的子目录
/lib 包含启动系统所需要的共享库文件
/opt 可选文件
/sbin 系统二进制文件,用于系统管理的可执行文件
/tmp 临时目录
/var 可变数据文件存储,包括日志文件、mysal和其他的数据库文件
/usr 包含可共享、只读的文件,包括可执行的二进制文件和库等

常用命令

[root@localhost ~]#
[用户名 @ 主机名 当前目录]

目录操作

  • 目录结构:
    • 目录 == 文件夹
      • pwd 查看当前目录 Print Working Directory
      • [root@localhost ~]#
        • /root
    • linux系统的目录结构
      • / (撇)windows \(捺)

      • ls

        • 作用:查看当前目录下的文件和文件夹
        • 语法:ls (回车)
          • ls -l 以长格式显示对象列表
          • ls -all查看目录下所有对象(包含隐藏对象)
          • ls -h-l 共用,以易读形式显示长格式(对字节换算成KB MB GB)
          • ls -d 查看目录自身的属性,多与-l -h共用
      • mv

        • 作用: 用来为文件或目录改名、或将文件或目录移入其它位置。
        • 语法:mv [options] source dest
          mv [options] source... directory
        • 详细使用:
          • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
          • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
          • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
          • -n: 不要覆盖任何已存在的文件或目录。
          • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
        • 更多:Linux mv 命令 | 菜鸟教程 (runoob.com)
      • cp

        • 作用:用于复制文件或目录。
        • 语法:cp [options] source dest
          cp [options] source... directory
        • 详细使用:
          • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
          • -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
          • -f:覆盖已经存在的目标文件而不给出提示。
          • -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
          • -p:除复制文件的内容外,还把修改时间访问权限也复制到新文件中。
          • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的``子目录文件
          • -l:不复制文件,只是生成链接文件。
        • 更多:Linux cp 命令 | 菜鸟教程 (runoob.com)
      • cd

        • 作用:改变当前目录 Change Directory
        • 语法:cd 相对路径/绝对路径(回车)
        • image.png
      • 例子:使用相对路径

        • [root@localhost ~]# cd Music
        • [root@localhost Music]#
      • 例子:使用绝对路径

        • [root@localhost ~]# cd /root/Music
        • [root@localhost Music]#
      • mkdir

        • 作用:新建文件夹 MaKe DiRectory
        • 语法:mkdir(空格)(文件夹名称)(回车)
      • rmdir

        • 作用:ReMove DIRectory 删除文件夹(只能删空文件夹)
        • 语法:rmdir(空格)(文件夹名)
      • touch

        • 作用:创建文件
        • 语法:touch(空格)(文件名)
      • rm

        • 作用:删除文件
        • 语法:rm(空格)(文件名)
        • 选项:
          • -r:recursive、递归。表示删除所有子目录以及下属
          • -f:force、强制,强制删除,无提示.
          • -l: interact、交互。删除前会询问对象。
    • 特殊目录
      • .当前目录
      • ..上一层目录
      • ~ 家目录
        • 每个普通用户都有一个以自己用户名命名的目录,称为家目录,下有Desktop,Download,Documents等文件夹
        • root的家目录不在home下,root的家目录是/root
      • - 返回之前的目录

内核级别

  • 7个运行 级别
    • init 0 系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
    • init 1 单用户工作状态,root权限,用于系统维护,禁止远程登录
    • init 2 多用户状态(没有NFS)
    • init 3 切换为GUI 界面
    • init 4 系统未使用,保留
    • init 5 切换为GUN界面
    • init 6 重启命令
    • 详细如下图:
      image.png

用户命令

  • 分为三类
    • 超级用户(0)
      • 拥有最高权限
    • 系统用户/程序用户/伪用户(1-499):
      • 系统内软件运行所需的用户。每个进程运行在系统里都有一个相应的属主,
        • 比如某个进程以何种身份运行,这些身份就是系统里对应的用户账号。比如httpd进程就是apache用户运行的。
          • 实际运用场景:安全加固中的常见策略,为了保障系统安全,将用户权限最小化。服务进程均使用系统用户,而非root用户启动运行。
    • 普通用户(500-1000)
      • 普通Linux系统使用者的账户,权限受到限制,无法执行一些敏感操作。

用户类别

  • 系统管理员

    • 特点

      • 用户名:root

      • UID标识:0

      • 权限大

    • 注意点

      • 配置ssh,禁用root通过上述远程登录,权限非常大,所有文件权限都有

      • 工作中使用普通用户登录,然后有需要在切换到 root,没有必要不登录root账号

      • 减少root密码的的外泄,可以增强内部安全

    • /etc/sudoers 4,

      • sudo 相关文件
    • 例子:

      • 小练习:
        • 1.新建普通用户 agan

        • 2.vim 打开 /etc/sudoers

        • 3.找到root All=(ALL) All这一行
          image.png

        • 4.在这一行的下面一行写入

          • agan ALL=(ALL) /bin/ls/usr/sbin/useradd
            image.png
        • 5.切换用户,使用agan的身份登录

        • 6.创建用户test3

          • sudo useradd test3
          • 创建成功则说明提权成功。
          • Sorry, user agan is not allowed to execute '/sbin/useradd test3' as root on localhost.localdomain.
            • 权限不足,需要提升权限
              • 修改agan ALL=(ALL) /bin/ls/usr/sbin/useraddALL
          • sudo ls /root
          • 显示内容则说明提权成功
          1. sudo -l
          • 列出允许的命令
  • 普通用户

    • 特点

      • UID为C6 500-60000,C7 1000-60000

      • 权限相对较少:可读权限较多,写的权限范围在:家目录 /home/用户名、 /tmp

    • 注意点

      • 赋权需要注意回收
  • 虚拟用户

    • 特点

      • UID 1-499

      • 登录shell,/sbin/nologin

      • 多数情况装系统就存在的,且不能登录的

    • 特点

      • 唯一标识:GID

      • 1个用户可以在多个组里

      • 1个组可以有多个用户

  • 安全:最小化原则

    • 安装软件最小化

    • 登录安全最小化(普通用户)

    • 进程启动权限最小化。

    • 文件目录权限最小化

用户管理

  • 普通用户

    • 创建

      • 直接增加用户

        • useradd XX
      • -u 指定uid添加用户

        • useradd -u 1111 XX
      • -g 知道的用户属组添加

        • useradd littleboy -g tech #添加一个littleboy 属于tech组.
      • 特殊参数

        • -M

          • useradd test1 -M

            • 不生成家目录
        • -s

          • useradd test2 -s /sbin/nologin -M

            • 指定解释器不允许登录/sbin/nologin
    • 删除

      • 只是删除用户

        • userdel XX
      • 连带家目录一起删除

        • userdel -r XX
      • 注:一般不删除,涉及到删除的是去etc/passwd注释掉此账号

    • 修改

      • usermod

      • 参数

        • -u 指定UID

          • usermod test -u 6666
        • -g 指定属于的组

          • useradd littleboy -g tech #添加一个littleboy 属于tech组.
        • -M 不创建家目录

          • usermod test -u 6666 -M
        • -s 指定登录的解释器

          • usermod test2 -s /bin/bash
    • 密码

      • 普通用户修改

        • passwd
      • 管理员修改

        • passwd XXX
      • 文件配置

        • /etc/passwd

          • 用户主配置文件,用户的各种属性(UID,GID,家目录,登录SHELL)
        • /etc/shadow

          • 用户密码文件,存放密码及密码的属性(失效时间,修改密码时间等)
    • 查看

      • tail -1 /etc/passwd

        • 存放用户的文件
  • 用户组

    • 添加用户组

      • 默认创建

        • 创建用户的时候默认产生的,创建一个普通用户,默认情况就会生成普通用户组用户和组同名,且UID和GID相同
      • 管理员创建

        • groupadd [组名] (使用管理员用户创建)

        • useradd 用户名 -g 组名

          • 添加一个用户 属于用户组.
        • 查看用户

          • id 用户名
    • 查看

      • tail -1 /etc/group

        • 存放用户组的文件
    • 文件配置

      • /etc/group

        • 组文件,存放用户组及属性。
      • /etc/gshadow

        • 用户组的密码文件(废弃)
  • 相关命令

    • 切换用户以及提权管理命令

      • su

        • 从root变为普通用户就是切换用户角色
      • sudo

        • 让普通用户执行某个命令的过程中拥有root权限.本身角色还是普通用户自己
    • 普通用户提权方法

      • 方法1.使用命令visudo

        • 然后输入100gg,yy,p 复制一行修改开头root,直接修改普通用户权限
      • 方法2.visudo配置命令(全路径,用逗号分割),注意在用户名l

        • 开始的授权上改100gg,删除原有用户名设置,增加如下内容:普通用户名
          ALL=(ALL) /usr/bin/touch, /usr/sbin/useradd,/sbin/userde
      • usermod -g wheel [用户名]

        • 添加普通用户到wheel组,即是管理员账号
  • 用户相关命令

    • id [用户名]

      • 查看用户信息
    • w

      • 查看用户登录信息
    • last

      • 查看登录信息
    • 查看用户登录情况两个关键文件.组合使用

      • lastlog

      • cat /var/log/secure

    • lastlog -C -u [用户名]

      • 清理用户登录信息
    • 及时监控,每分钟监控.zabbix工具

      • cat /
  • 更改文件属性

    • 软链接

      • ln -s /root/test.txt /root/Desktop/test2
    • 管道符 "|"

      • 作用:连接多个命令,将前一个命令的结果输出
      • 作为下一个命令的输入,一并执行
      • 语法 :
        • 命令1 | 命令2 | ··· | 命令n
      • 小练习
        • 统计本机中有多少个文件名包含 test 文件
          • [root@localhost ~]# find / -name "*test*" | wc -l
            • 446
    • chown

      • 更改用户和组

      • chown -r

        • chown -R [要更的用户] [文件.txt] #更改文件对应的用户
      • chown [要更的用户].[要更的用户组] [文件.txt]

        • 更改文件对应的用户和组
      • chown .[要更的用户组] [文件.txt]

        • 更改文件对应的用户组,点号可以用冒号替代
    • chgrp

      • chgrp [要更的用户组] [文件名.txt]

        • 更改文件对应的用户组
    • chattr

      • 给文件加锁,不让别人改

      • 参数

        • i

          • 加锁,不能删除不能修改

          • 通常与动作 + ,- 一起搭配使用

          • 举例:给a.txt进行加锁

            • chattr +i a.txt

            • 减锁:chattr -i a.txt

          • 查看是否加锁

            • 使用lasttr命令查看,:lasttr [文件名]
          • 可以给关键文件进行加锁,避免操作时操作错误

            • chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/sudoers
        • a

          • 可以追加内容,但不能删除

          • 通常与动作一起搭配使用

          • 举例:给a.txt 文件进行加锁,进行可以追加,但不能删除

            • chattr +a a.txt

            • 减锁 :chattr -a a.txt

          • 查看是否加锁

            • 使用lasttr命令查看,:lasttr [文件名]
        • 动作

          • +

            • 增加
          • -

            • 减少或者剔除
          • =

            • 赋予
    • 文件权限

      • 文件权限是指用户、组或者其他用户对文件的读、写追加、可执行等权限的操作管理

      • -rw-r--r--. 1 root root 0 Aug 31 00:50 oldboy.txt

      • 从 左二位开始,三位一组,依次是用户权限,用户组权限,其他权限

      • r

        • read 对于[文件]是可读 对于[目录]是浏览目录下的文件.

        • 代表数字是:4

      • w

        • write 对于[文件]是可写 对于[目录]是创建\删除文件(和x配合

        • 如果文件的的权限有w,就认为文件可以被删除是错误的思维

          • 文件是否可被删除取决于上级目录是否有w.
        • 代表数字是:2

      • x

        • 对于[文件]是可执行 对于[目录]是能否进入目录

        • 代表数字是1

        • 没有权限

        • 代表数字是0

    • chmod

      • 给用户修改权限

        • u

          • chmod [数字权限]或 u +[文件权限 ] [要修改权限的文件]

            • chmod u+rx oldboy.txt
      • 给用户组修改权限

        • g

          • chmod [数字权限]或 g +[文件权限 ] [要修改权限的文件]

            • chmod g+rx oldboy.txt
      • 整体修改权限

        • o

          • chmod [数字权限]或u +[文件权限 ]g +[文件权限 ]0 +[文件权限 ] [要修改权限的文件]

            • chmod u+rwx,g-w,o=x oldboy.txt

关于用户管理的文件信息显示:

  • /etc/passwd

    • 账户登录名
    • 密码占位符
    • 用户的UID
    • 用户所属基本组的GID
    • 用户描述
    • 用户家目录所在位置
    • 用户登录系统时候的执行程序(bin/bashsbin/nologin
  • /etc/shadow 密码文件

    • [root@localhost ~]# cat /etc/shadowroot:$1$F7KN6i0F$u9eWO6y.mep8WwRUAKy5D1::0:99999:7:::
      • 1.用户登录
      • 2.这里保存但是真正加密的密码。目前Linux的密码采用的是SHA512散列加密算法
        • 注意:如果需要修改密码,请用passwd【username】命令。这里只能写加密后的字符串。在密码前加上"!“,”*",或"X’'。
      • 3.用户上次修改密码的日期距离1970-1-1相隔多少天
      • 4.密码最短使用期限 (最短多少天内不能改密码)
      • 5.密码最长使用期限(多少天以后必须改密码)
      • 6.密码过期前几天提醒修改密码
      • 7.宽限时间(密码过期后宽限几天,超出后账户禁止登录)
      • 8.账户失效时间(失效日期距离1970-1-1相多少天)
      • 9.预留段,没用
        • ! 表示空密码
  • etc/group 内有组账户相关信息
    image.png

  • etc/gshadow 内有组密码相关信息
    image.png

  • etc/bashrc, .bashrc, .bash_profile

    • .bash_logout 用户退出配置
    • .bash_profile 环境变量配置
    • .bashrc 变量配置

文件查看

  • cat

    • 作用:正序查看文件信息, 用于查看纯文本文件
      • 查看文件,显示行号
        • cat -n a.txt
      • 追加文字到文件
        • cat >>/tmp/a.txt <<EOF
      • 在每行的结尾加上$符
        • cat -E a.txt
  • tac

    • 作用:倒序显示文件信息
    • tac a.txt
  • head

    • 作用: 查看前几行
      • head -n /文件目录
      • head -5 /etc/passwd
  • tail

    • 作用: 查看文件后几行
      • tail -f XXX.log
    • 实时跟踪某日志尾部的变化
      • tail -n /文件目录
      • tail-5 /etc/passwd
  • less

    • 作用:用于查看纯文本文件
    • 使用:q退出,回车下一行,空格一页
  • tali ,cat的区别?

    • tailcat是两个常用的命令行工具,它们的主要区别在于它们的功能。
    • cat命令通常用于将一个或多个文件的内容输出到终端屏幕上。例如,如果你想查看一个文本文件的内容,可以使用cat命令来显示文件的所有内容。
      tail命令则用于查看文件的末尾几行内容,尤其是在实时日志分析等场景中很常用。tail命令默认显示文件的最后10行,但也可以通过命令行选项来指定显示的行数。例如,如果你想查看日志文件的最后100行,可以使用命令tail -n 100 logfile
    • 因此,总的来说,cat命令用于查看整个文件,而tail命令则用于查看文件的结尾部分

网管命令

网络配置命令

  • 图形化 配置网卡

    • nmtui
  • 重启所有网卡

    • systemctl restart network
  • 重启网卡1(eth1)

    • ifup eth1
  • 关闭网卡

    • ifdown eth1
  • 查看ip

    • ip addip a

    • ifconfig

      • 需要安装net -tools包 #yumInstallNetToolsY
  • 查看网关路由

    • ip route

    • route -n

      • 查看网关路由 (-n 表示不解析名字,列出速度会比route快)
    • netstat -rn

  • 查看DNS

    • cat /etc/resolv.conf

      • 配置永久 DNS文件位置 cat /etc/Sysconfig/Network/Scripts/IfcfgEth1

Linux快捷键

  • tab

    • 自动补全命令/文件名/目录名
  • Ctrl+L

    • 清理终端显示
  • clear/cls

    • 清理终端显示
  • Ctrl + c

    • 终止当前操作
  • Ctrl +a

    • 光标直接到本行开头
  • Ctrl +e

    • 光标直接到本行末尾
  • Ctrl +方向键

    • 光标以单词为单位进行移动
  • esc+.

    • 调出上个命令最后一个【空格】后面部分
  • Ctrl +d

    • 退出当前会话(logout)联系操作关闭shell
  • Ctrl +insert

    • 复制命令行内容
  • shift+insert

    • 粘命令行内容
  • Ctrl +u

    • 删除光标前内容
  • Ctrl + k

    • 删除光标前后内容

帮助命令

  • --help

man命令

  • man +命令

bash 解释器的帮助命令

目录结构

目录结构

  • 目录顶点或者入口

    • 符号“/”,称为跟,所有
  • 查看根目录命令

    • tree -L 1 /

      • bin

        • 普通用户二进制命令目录:ls、cp、 cat rm

          • bin等于usr/bin
      • sbin

        • root管理员使用的二进制命令目录
      • boot

        • 内核程序及引导程序所在的目录
      • dev

        • 设备目录(光驱 磁盘)

          • /dev/hd[a-t]IED设备

          • /dev/null

            • 无限数据接收设备,相当于黑洞(相当于垃圾桶,操作之后无反馈)

              • 命令:文件 >/dev/null
          • /dev/zero

            • 无限零资源,要多少有多少
          • /dev/cdrom

            • 光驱
          • /dev/sd[a-z]

            • SCSI设备(/dev/sda)
          • 临时挂载mount/ddev/cdrom/mnt

            • 给磁盘/dev/cdrom开一个门,门是/mnt目录,/mnt就是挂载点
      • etc

        • 系统基础服务配置文件所在的目录(yum, rpm安装的软件)

        • /etc/sysconfig/network-scripts/ifcfg-eth1

          • 网卡 配置文件,第二块ifcfg-eth0
        • etc/resolv.conf

          • linux系统过时的DNS客户端配置文件
        • /etc/hostname

          • 主机名配置文件
        • /etc/host

          • 系统本地的域名解析 文件(局域网;域名和ip解析文件)
        • /etc/fstab

          • 配置开机设备自动挂载的文件
        • /etc/rc.local

          • 存放开机自启动程序命令文件
        • /etc/sysctl.conf

          • Linux内核参数设置文件(系统优化)
        • /ect/issue

          • r软件bug,和特定版本有关
        • /etc/motd

          • 配置用户登录系统之后显示提示内容的文件
        • /etc/redhat-relsase

          • 声明Red-Hat版本号和名称信息文件
        • /etc/profile 、/etc/bashrc, .bashrc, .bash_profile

          • 配置系统的环境变量/别名等文件
      • home

        • 普通用户的家目录
      • root

        • 管理员的家目录
      • lib ->urs/lib

        • 库文件所在目录
      • lib64 ->urs/lib64

        • 库文件所在目录
      • media

        • 媒体光驱等挂载点
      • mnt

        • 临时的挂载点
      • opt

        • 第三方程序目录
      • proc

        • 文件系统进程的运行状态目录。跟汽车仪表盘功能类似

        • /proc/cpuinfo

          • 当前cup的信息文件
        • /proc/meminfo

          • 当前内存 信息文件
        • /proc/loadavg

          • 当前系统的平均负载文件
        • /proc/mounts

          • 当前设备挂载列表信息文件
        • `/proc/interrupts

          • 当前系统中断信息文件
      • tmp

        • 临时及文件目录

        • 权限较大,容易 作为黑客跳板

        • 做监控,提权到root权限下

      • usr

        • 应用程序所在目录

        • /usr/local/

          • 编译安装软件默认的位置路径
        • /usr/src

          • 源代码目录
      • Var

        • 变化的目录、日志文件、缓存文件等存放目录

        • /var/log/messages

          • cat /var/log/messages

            • 查看log日志记录
        • /var/log/secure

          • 安全日志(ssh日志记录到这里)监控日志
        • /var/log/dmesg

          • 记录硬件信息加载情况的日志文件(dmesg)
        • /var/log/lastlog

          • lastlog

            • 有哪些用户登录

目录操作

  • 创建目录mkdir

    • make directory:创建目录

      • mk dir —》mkdir
    • 创建单一目录

      • mkdir /name
    • 递归创建

      • mkdir -p a/b c/d

        • a和c并列目录
      • mkdir -p test/{1..1000}

        • 直接在test文件中创建100个文件目录
      • mkdir -p a/b/c/d

        • 递归嵌套创建
  • 切换当前目录 cd

    • cd

      • cd /目录名

        • cd /etc :切换到etc目录下
      • cd ~切换到家目录下

  • tree

    • 以树形结构显示文件和目录

    • 如果找不到需要安装

      • yum install tree -y
    • 参数

      • tree -L 数字

        • tree -L 2 /tmp/
  • 查看目录

    • ls

      • 查看当前目录下所包含的目录
    • ll

      • 查看当前目录下所包含的带有详细权限属性信息的目录
    • 参数

      • ls -a

        • 查看隐藏文件
      • ls -l

        • 查看文件属性
  • 移动mv

    • 移动命令 >move > mv

    • mv /tmp/a.txt /home/

      • 移动tmp目录下文件a.txt到home目录下
    • mv /tmp/a.txt /home/b.txt

      • 移动tmp目录下文件a.txt到home目录下重命名为b.txt
    • mv /tmp/a.txt /tmp/b.txt

      • 移动tmp目录下文件a.txt到tmp目录下重命名为b.txt(目标目录与原目录一致,指定了新文件名,效果就是仅仅重命名}

重点命令符

vim

  • 文书编辑器

  • 方法/命令

    • vi

    • vim

      • vim 文件名.格式
    • more

      • more 文件名
        • 查看文件信息
    • gcc

      • 编译
    • ./a.out 运行程序

  • 操作公式

    • 使用vi打开a.txt默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"Life is short,i use python"按下esc键,回到命令模式
  • 保存退出

    • :wq! 强制保持退出

      • w

        • write 写入
      • q

        • quit 退出
        • 强制
    • 部分参数退出

      • :X 保存退出

      • :q 不保存退出

      • :q! 不保存强制退出

以下实验基于 esc 退出编辑模式

  • 删除
    - dd 删除
    - 3dd
    - 删除从当前开始的下面3行列表

  • 复制

    • yy 复制
    • 3yy
      - 复制从当前开始的下面3行列表
  • 剪切

    • P
  • 查找

    • esc 退出编辑模式

      • :/ 查找内容

        • n 查找下一个

        • N 查找上一个

  • source

    • 作用:更新配置文件使其生效
    • 语法:source 命令
  • alias

    • 作用:为命令起别名
    • 语法 alias 原命令 = ‘新命令’
    • 例子:
      • alias rm ='rm -i' 使用rm -i替换了rm,删除时会提示是否要删除文件
        image.png

打印字符输出echo

  • 用于在终端输出字符串或者变量提取后的值

  • 格式:echo 【字符串|$变量】

    • echo “ 网络数字化” >>/tmp/a.txt

      • tmp目录下的a.txt中追加网络数字化
    • echo $path

      • 取出打印path的值

xargs 分组

  • 必须要接<号

    • xargs -n 3<a.txt

      • 一行分三个

      • 一般跟find配合删除使用

date时间

  • date

    • 查看当前时间

    • date +%F

      • 当前年月日
    • date +%Y

      • 当前年份
    • date +%m

      • 当前月份
    • date +%d

      • 当前日期天
  • -s表示修改

    • 修改当前时间为2100年7月26号21点 0分56秒

      • date -s "2100/07/26 21:00:56"
  • -d 表示过去

流编辑器

sed(Stream Editor)
主要用于编辑文本流。它可以根据用户指定的规则来对输入流进行处理,并输出到标准输出设备上。sed支持各种文本转换功能,如替换删除插入追加等,使得编辑大量文本内容变得简单。

文本处理工具

awk
可以对文件逐行进行处理,以空格默认分隔符,按照列来处理每一行数据
awk是一种强大的编程语言,它提供了循环、条件判断等控制语句,同时也内置了一些函数,可以方便地对数据进行统计、格式化等操作。`

  • 栗子:
    • 1.打印文本文件的所有行
      • awk '{print}' filename
      1. 根据指定分隔符打印某一列:
      • awk -F ':' '{print $1}' filename
      1. 统计某一列的总和
      • awk '{sum += $1} END {print sum}' filename
      1. 根据条件过滤数据
      • awk '$1 > 10 {print}' filename
      1. 模式匹配并替换文本,结合 awk 的语法规则和功能选项,来编写相应的命令
      • awk '{gsub(/oldtext/, "newtext", $0); print}' filename
    • 编写对应脚本
      • ifconfig eno16777736 | grep netmask
        • ifconfig eno16777736 | grep netmask | awk '{print $3}'
    • 查找出所有可能登陆系统的账户 家目录所在的位置
      • grep /"bin/bash" /etc/passwd | awk -F: '{print $1,$6}'
        image.png
    • 查出所有监听状态连接的PID
      • `netstat -anpt | grep “LISTEN” | awk ‘{print $7}’ | awk -F/ ‘{print $1}’

过滤筛选grep

  • 过滤文件内容(三剑客命令之一)

  • grep [参数] [--color=auto] [字符串] filename

  • 参数

    • -v

      • 取反 筛选掉的部分

        • grep -v "mysql" /etc/services

          • 展示部分不带字符串MySQL
    • 标准无特殊参数

      • grep "mysql" /etc/services

        • 筛选出带有MySQL字符串的文件信息
    • -i

      • 不区分大小写

        • grep -i "MySql" /etc/services

          • 筛选出带有MySQL字符串的文件信息
    • -n

      • 过滤的内容显示所在原文件中的行号

        • grep -n "MySql" /etc/services

          • 筛选出带有MySQL字符串在 原文件中多少行的文件信息
  • | 管道(筛选过滤需要的信息) 管道越少越好效率低

    • 举例

      • ifconfig eth0|grep 192

        • 筛选eth0中192网段信息
      • ip a|grep inet|grep 192.168

        • 输出ip a结果中含有inet的行。并且从中过滤192.168的行
      • cat /etc/passwd|grep bash|grep root

        • 找出/etc/passwd中含有的bash的行,并且从中过滤出root
    • 引申

      • grep -E

        • 同时过滤两个

which

  • 用于查找文件

  • which [文件…]

  • 参数

    • -n<文件名长度>

      • 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
    • -p<文件名长度>

      • 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
    • -w

      • 指定输出时栏位的宽度
    • -V

      • 显示版本信息
  • which $PATH

find

  • 遍历查找,从根开始从磁盘上查找文件,效率很低,但功能强大

  • find 查找路径 选项1 【参数1】 选项2 【参数2】…

  • 查找方式

    • -name

      • find / -name "hosts"
      • :模糊查找
      • find /etc/ -name "h*ts"
    • -type

      • b block (buffered) special 块设备 硬盘光驱

      • c character (unbuffered) special 字符设备

      • d directory 查找目录

      • f regular file 查找文件

      • l symbolic link; 软连接 快捷方式

      • s socket 和应用程序之间通信有关

    • 混合查找

      • -o 并集

        • find / -name "hosts" -o -type d -name "oldboy"

          • 查找名为hosts,或者类型为d,并且为oldboy
      • -a 交集

        • find ~ -type d -a -name "hosts*"
      • ! 取反

        • [root@oldboy ~]# find /data ! -name "file1"

          • 取反:!查找名字不是file1
    • -size 大小查找

      • 参数

        • -size +1M #大于1M

          • find /etc -size +1M
        • -size 1M#1M

        • -size -1M #小于1M

          • find /etc -size -1M
        • 其他单位k G

    • -ctime

      • 作用 :按照属性变更时间查找
    • atime

      • 按照被访问被执行时间`查找
      • 按照被访问对象时间轴来查找
    • -mtime

      • 按照内容修改时间查找

      • 参数

        • -mtime +7 #7天以前的(7天以外)

          • find /data -type f -name "file*" -mtime +7
        • -mtime 7 #第7天 N天前到N天之间

          • find /data -type f -name "file*" -mtime 7
        • -mtime -7 #最近7天(7天以内)

          • find /date -type f -name"file*" -mtime -7
    • perm按权限查找

      • 查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

        • find . -type f -perm 644 -exec ls -l {} \;
      • find /data -perm 755

  • 对查找的内容进行二次处理

    • 公式

      • find [路径] [查找信息] [ 属性] -exec或xargs [操作方法删除或者移动] {} \;
    • exec单个 执行动作(效率低)

    • xargs批量执行动作(效率高)

      • 参数

        • -i

          • 查找/data大于20K,修改时间为7天以内的文件,移动到/opt。

            • find /data -size +20k -mtime -7|xargs -i cp {} /tmp
        • -t 是cp的参数,组合使用

          • 查找/data大于20K,修改时间为7天以内的文件,移动到/opt。

            • find /data -size +20k -mtime -7|xargs cp -t /opt

Linux基础信息

核心特殊字符

    • 表示所有。匹配文件名。属于模糊匹配

      • rm -f a* (删除目录下所有a的文件)
  • ~ 表示家目录

    • cd ~ 切换到家目录下
  • . 表当前目录

  • .. 表示上级目录

    • cd .. 切换到上级目录

[root@name-lixin ~]#

  • root

    • 用户名:“我是谁”

      • whoami
  • @

    • 38分割线:分割符
  • name-lixin

    • 主机名:机器名

      • hostname
  • ~

    • 你当前在哪:路径

      • pwd
    • 管理员身份的提示符
  • $

    • 普通用户身份的提示符

      • 切换用户用:su -用户名

        • 创建用户:useradd 用户名
  • 修改颜色

    • echo "PS1='\[\e[32;1m\][\u@\h \W]\\$ \[\e[0m\]'" >>/etc/profile

      source /etc/profile

文件操作

查看文件

  • cat

    • 用于查看纯文本文件

    • 查看文件,显示行号

      • cat -n a.txt
    • 追加文字到文件

      • cat >>/tmp/a.txt <<EOF
    • 在每行的结尾加上$符

      • cat -E a.txt
  • head

    • 查看前几行

    • head -n /文件目录

      • head -5 /etc/passwd
  • tail

    • 查看文件后几行

    • tail -f XXX.log

      • 实时跟踪某日志尾部的变化
    • tail -n /文件目录

      • tail-5 /etc/passwd

more

  • more /etc/passwd

    • more命令用于查看内容较多的文本

    • more命令查看文件会以百分比的形式告知已经看到了多少,使用回车键向下读取内容

  • 翻阅操作

    • 按下空格space是翻页

    • 按下b键是上一页

    • 回车键向下读取内容

创建文件touch

  • touch:创建文件

  • 创建单一目录

    • touch a.txt
  • 多个创建

    • touch a.txt b.txt c.txt

      • a,b,c在同一目录下
    • touch a{1..1000}.txt

      • 直接在文件中创建100个文件
    • 注意

      • 重复创建不会覆盖,更改文件时间戳.(修改时间\访问时间\改变时间)

stat命令显示文件或问价系统的状态

  • 用法:stat [参数] 文件

    • 参数;列表

      • -L --dereference

        • 跟随链接
      • -f --file-system

        • 显示文件系统状态而非文件状态
      • -c

        • --format=格式

          • 使用指定输出格式代替默认值
        • --printf=格式

          • 类似 --format,但是会解释反斜杠转义符,不使用换行作为输出结尾,如果仍希望使用换行,可以在格式中加“\n"
      • -t

        • --terse

          • 使用简介格式输出
        • --help

          • 显示此帮助信息并退出
        • --version

          • 显示版本信息并退出
      • 格式化输出

        • %a

          • 八进制权限
        • %A

          • 用可读性较好的方式输出权限

复制cp

  • 复制 >copy>cp

  • 移动a.txt到/tmp目录下

    • cp a.txt /tmp/
  • 移动a.txt到/tmp目录下顺便改名为b.txt

    • cp a.txt /tmp/b.txt
  • cp -r

    • 递归复制。复制目录及目录下的所有目录及文件
  • cp -p

    • 复制文件,同时保持文件属性不变 可以用stat
  • cp -a

    • 相当于 -pdr
  • cp是个好命令,操作文件前先备份

    • cp a.txt a.txt.bak

重定向

  • 输入重定向

    • <或0<标准输入重定向

    • <<或0<<追加输入重定向

  • 输出重定向

    • 或1>标准输出重定向

      • 清空已有文件内容,加入新的内容

        • 例:加入oldboy到文件a.txt

          • echo oldboy 1>a.txt
    • 1>>标准追加输出 重定向

      • 只加入新的内容到文件结尾
    • 2>>错误追加输出重定向

      • 只加入新的【错误】内容到文件结尾

删除rm

  • rm(英文全拼:remove)命令用于删除一个文件或者目录。

  • 参数

    • -i

      • 删除前逐一询问确认

        • rm /tmp/a.txt 输入“Y”确认
    • -f

      • 即使原档案属性设为唯读,亦直接删除,无需逐一确认,即为强制删除
    • -r

      • 将目录及以下之档案亦逐一删除,即为递归删除目录和内容
  • 友情提醒:初学者使用rm命令,随时快照虚拟机

  • `head -5 /etc/passwd

常见问题

  • centOs bash_history 安全性问题,history 添加了空格 后还能在 history 中看见 解决:
进入`.bashrc` 添加或者修改如下指令
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000000
HISTFILESIZE=2000000

万物皆文件