Linux基础命令

2023年 7月 25日 171.3k 0

Linux的优势

  • 一切都是一个文件。(存储形式)
  • 系统中拥有小型,单一用途的程序。
  • 当遇到复杂任务,通过不同功能用途的程序组合起来完成。(大化小,小化了)
  • 避免令人困惑的用户界面。(统统用命令)
  • 连配置文件都存储在文本中,方便增、删、改、查。
  • 不在乎后缀名,文件名与文件类型不相关。(不是用文件后缀来区分类型)
  • 基础命令行头

    [root@localhost ~]# 
    1. root:表示当前用户
    2. localhost:表示主机名
    3. ~:表示家目录
    4. #:表示当前用户是管理员用户
    5. $:普通用户
    

    shell

    shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。
    用户使用应用程序发布指令
    shell去通知操作系统需要进行什么样的操作
    内核相当于操作系统去指挥硬件,硬件才能工作,否则无法交互。
    shell内核具有调动硬件的功能

    不同的shell环境

    bash是linux里面默认的shell程序位于/bin/bash;csh、ksh语言不同比如中文英文都是交流的语言

     [root@localhost ~]# echo $SHELL            //显示当前shell
     /bin/bash
     [root@localhost ~]# cat /etc/shells       //显示当前系统所有使用的shell
     /bin/sh   
     /bin/bash
     /sbin/nologin       ###用户无法登录
     /usr/bin/sh
     /usr/bin/bash
     /usr/sbin/nologin
     /bin/tcsh
     /bin/csh
     [root@localhost mnt]# sh                       切换shell环境
     sh-4.2# 
     [root@localhost mnt]# pstree                    查看使用过的shell环境
     ├─sshd───sshd───bash───csh───bash───tcsh───bash───pstree
             ├─systemd-journal
             ├─systemd-logind
             ├─systemd-udevd
             ├─tuned───4*[{tuned}]
             ├─upowerd───2*[{upowerd}]
             ├─vmtoolsd───{vmtoolsd}
             ├─wpa_supplicant
             └─xdg-permission-───2*[{xdg-permission-}]
    

    内部命令由bash软件提供;外部命令需手动安装

    命令优先级

  • 绝对路径命令
  • alias修改命令
  • 内部命令
  • hash
  • 外部命令
  • shell与内、外部命令

    1、shell 分为内部命令 和外部命令,一般先执行内部命令,hash 再执行外部命令(别名最大)

    内部命令 外部命令
    集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 Linux系统中能够完成特点功能的脚本文件或二进制程序
    属于shell的一部分 属于Shell解释器程序之外的命令
    没有单独对应的系统文件 每个外部命令对应了系统的一个文件
    自动载入内存,可以直接使用 必须知道其对应的文件位置,由Shell加载后才能执行

    2、help查看内部命令

    [root@localhost ~]# help 
    GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)
    这些 shell 命令是内部定义的。请输入 'help' 以获取一个列表.
    输入 'help 名称' 以得到有关函数'名称'的更多信息.
    使用 'info bash' 来获得关于 shell 的更多一般性信息
    使用 'man -k' 或 'info' 来获取不在列表中的命令的更多信息.
    

    3、可以使用type命令区分内外命令

    [root@localhost ~]# type cd 
     cd 是 shell 内嵌                        //内嵌代表内部命令
     [root@localhost ~]# type -a ls
     ls 是 `ls --color=auto' 的别名          //别名代表外部命令  
     ls 是 /usr/bin/ls                      //外部命令会有程序路径
     ls 是 /bin/ls
     [root@localhost ~]# whereis ls
     ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
     [root@localhost ~]# type -a echo
     echo 是 shell 内嵌
     echo 是 /usr/bin/echo
     echo 是 /bin/echo
     外部命令存放于 echo $PATH  一个一个找,找到为止,找不到就报无命令
     [root@localhost ~]# echo $PATH
     /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
     外部命令使用过后会被记录在内存(缓存,但是会占用内存,临时性的)加快读取速度
     [root@localhost ~]# type useradd
     useradd 是 /usr/sbin/useradd
     [root@localhost ~]# useradd wu
     [root@localhost ~]# type useradd 
     useradd 已被哈希 (/usr/sbin/useradd)
     [root@localhost ~]# hash
     命中  命令                           //前面数字代表用过几次
        1    /usr/bin/grep
        1    /usr/bin/tail
        1    /usr/bin/du
        1    /usr/bin/vim
        2    /usr/sbin/useradd
        1    /usr/bin/whereis
        2    /usr/bin/cp
        1    /usr/bin/ln
        9    /usr/bin/ls
        7    /usr/bin/find
     [root@localhost ~]# hash -r
     [root@localhost ~]# hash
     hash: 哈希表为空
     [root@localhost ~]# type useradd
     useradd 是 /usr/sbin/useradd
     [root@localhost ~]# useradd wu
     useradd:用户“wu”已存在
     [root@localhost ~]# hash
     命中  命令
        1    /usr/sbin/useradd
     [root@localhost ~]# which ping
     /usr/bin/ping
     [root@localhost ~]# which help
     /usr/bin/which: no help in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin)
     [root@localhost ~]# whereis echo
     echo: /usr/bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz
    

    4、开启或关闭内部命令

    关闭:enable -n 内部命令

    开启:enable 内部命令

    5、hash

    缓存空间

    hash -d 加缓存里的命令 单独删除

    hash -r 删除所有

    将缓存的外部命令移到其他默认的目录中,无法再次使用,需要清掉hash值之后,才可以继续使用。

     [root@localhost mnt]# echo $PATH
     /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root:/root/bin
     [root@localhost mnt]# mv /usr/bin/ls /usr/local//bin
     [root@localhost mnt]# ls
     -bash: /usr/bin/ls: 没有那个文件或目录
     [root@localhost mnt]# hash 
     命中  命令
        1    /usr/bin/mv
        2    /usr/bin/ls
        6    /usr/bin/cd
     [root@localhost mnt]# hash -d ls
     [root@localhost mnt]# ls
     1.5.txt  f15..txt   f1.txt  f3.txt  f5.txt
     15..txt  f15...txt  f2.txt  f4.txt
     [root@localhost mnt]# hash
     命中  命令
        1    /usr/bin/mv
        1    /usr/local/bin/ls
        6    /usr/bin/cd
    

    命令行格式

    命令字 空格  [选项] 空格 [参数]
    解释命令字 选项 参数各自的意思及具体使用方法

  • 命令字 是整条命令中最关键的一部分 唯一确定
  • 选项 短格式选项:使用“-”符号引导 通常 一个字母 长格式选项:使用“--”符号引导 通常完整的单词
  • 参数 命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个
  • “;”可以隔开命令,执行多个命令

    编辑Linux命令行的辅助操作(扩展)

    快捷键 功能
    Tab键 自动补齐(两次可以显示所有选项)
    反斜杠“\” 强制换行或转义
    Ctrl+e 或 end 键 光标移到最后
    Ctrl+U 清空至行首不包括当前光标处的 字符
    Ctrl+K 清空至行尾包括当前光标处的字符
    Ctrl+a 光标移到最前
    Ctrl+w 从当前光标删除到开头
    ALT+d 从当前光标删除末尾
    Ctrl+l 清屏
    Ctrl+c 取消本次命令编辑
    Ctrl+s/Ctrl+q 锁屏/解锁
    向上下箭头 回看执行过的命令
    ## 获得命令帮助
    ### help
    格式说明(扩展)
    • []——可选项
    • CAPS或表示可变化的数据
    • ...表示一个列表可加多个一个或多个
    • x|y|z 表示或的意思
    • -abc 是-a -b -c (有些命令选项有先后顺序) 多个 -abc 一般而言是没有顺序先后 (绝大多数是没有的,只有少数分先后

    查看内部命令帮助

    help+命令:用于查看内部命令帮助

    查看外部命令帮助

    命令--help:用于查看外部命令帮助

    man

    man分九个章节默认打开第一章节(menu菜单 manual手册)
    区段1:用户指令
    区段2:系统调用
    区段3:程序库调用
    区段4:设备
    区段5:文件格式 shadow passwd fstab
    区段6:游戏
    区段7:杂项
    区段8:系统指令
    区段9:内核内部指令
    区段n:Tcl或Tk指令

    info

    info也可以查看相关的帮助信息

    目录操作

    查看当前所在位置

    pwd(print work directory)

    cd

    cd 目标位置 change directory

    命令 效果
    cd cd ~ 若不指定目标位置,切换到当前用户的宿主目录(家目录)
    cd - 到前一次目录
    一个点号“.”开头(自己) 表示以当前的工作目录作为起点(已点开头的是)
    两个点号“..”开头(上一级) 表示以当前目录的上一级目录(父目录)作为起点
    “~用户名”形式开头 表示以指定用户的宿主目录(家目录)作为起点
    "."开头文件 表示隐藏文件
    ~ky18 (有个用户叫ky18 家目录为起点) 表示以指定用户的宿主目录作为起点
    ### ls
    生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别)

    ls [选项] [文件或目录… ]

    • -l 已长格式显示文件和目录列表 ll=ls -l
    • -a 显示全部包括隐藏文件
    • -A 显示全部文件或隐藏文件,但不包括 . 和..
    • -d 仅列出目录本身,而不是列出目录内的文件数据
    • -h 友好显示文件大小(human,人性化)
    • -R 递归显示该目录及该目录的子目录下的所有内容
    • -t 已时间顺序显示
    • -r 倒序显示
    • --color 显示颜色
    • -S 以文件容量大小排序

    颜色表示的文件类型:

    • 黑色数据文件 普通文件
    • 绿色 可执行文件
    • 黄色 块设备文件硬件设备(硬盘)
    • 红色 压缩包
    • 蓝色 文件夹
    • 天蓝色 连接文件(快捷方式)

    文件类型

    • - 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。
    • d 目录,类似 Windows 系统中的文件夹。directory
    • l 链接文件,类似 Windows 系统中的快捷方式。
    • b 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
    • c 字符设备文件
    • p 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。
    • s 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。

    另外:file命令可以识别文件类型,文件后缀无法判断文件类型,文件后缀无所谓

    通配符

    用途:匹配文件名 (包括文件夹)

    符号 效果
    匹配一个字符 f?.txt
    * 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
    {1..10} 1到10
    {a..z} a b c ...z

    alias

    功能:临时修改,设置命令带代号
    格式为:alias 命令别名=‘命令’

    • unalias 别名命令 删除别名
    • \加别名命令 显示原始命令

    格式为:alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33' ,输入后再次输入myvim命令即可打开后面引号的命令,引号必须要加
    永久修改

    • 在/etc/.profile会影响全部用户
    • /root/.bashrc只影响当前用户

    补充:绝对路径>别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)

    du(disk usage) 查看占磁盘大小

    功能:查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K,不满4K 按4k算,与ls的区别在于,ls是文件具体大小,而du是所占磁盘空间大小
    格式为:du [选项] [文件或目录… ]

    选项 说明
    -a 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
    -h 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
    -s(--summarize) 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
    --max-depth=n (-d 1) 最大显示到第n层
    --exclude 不计入统计

    注意a s无法同时使用
    df 文件夹名——可查看目录(文件夹)的空间使用情况,默认1KB为单位。

    创建文件与文件夹

    • 文件名最长255个字节
    • 包括路径在内文件名称最长4095
    • 除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用

    创建文件夹 mkdir( make directories)

    格式为:mkdir [选项] 目录位置 名称
    mkdir -p 递归创建 没有文件夹 会自动递归创建 例:
    mkdir -pv(递归并显示过程) aaa/bbb/cccc

    touch

    • touch 新文件…(可为空) 文件名 不存在就是新建空文件
    • touch 如果文件存在 不会破坏已有文件变为刷新时间

    每个文件有三个时间戳:

  • access time 访问时间,atime,读取文件内容
  • modify time 修改时间,mtime,改变文件内容(数据)
  • change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )
    格式为:touch 1 2 3
  • 硬链接与软链接

    硬连接 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问
    软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件,打开软连接等于自动输入一个绝对路径进入该程序
    硬链接与软链接的区别:
    硬链接:创建后可以多一个入口进入这份数据,不会增加文件,inode号不变,源文件删除后也可以通过硬链接的方式进入该数据 ,当所有硬链接都删掉之后,该数据依然会保留在磁盘,如果不通过手段找回,则会随机被覆盖,具体时间随机
    软连接:符号链接,相当于自动保存了一个绝对路径,生成对应的文件,拥有单独的inode号,可以更快进入该数据,但如果源文件删除,则无法打开软连接,相当于数据丢失无法访问,所有对应软连接作废
    格式为ln(link):

    ln [-s] 源文件或目录 链接文件或目标位置

    加s是软连接 符号连接,不加s是硬链接

    cp 复制

    cp(copy)备份 复制
    cp [选项] 源文件 目标 多个源文件只能复制到文件夹

    选项 说明
    -f 覆盖目标同名文件或目录时不进行提醒,直接强制复制
    -i 覆盖目标同名文件或目录时提醒用户确认
    -p 复制时保持源文件的权限、属主及时间标记等属性不变
    -r 复制目录时必须使用此选项,表示递归复制所有文件及子目录
    -a 完整保留所有的信息
    -v 可视化
    -u 相当于增备,差异备份(只对文件夹起作用)

    如果已有文件夹会生成子目录
    cp命令同一命令输入三次会有三种不同结果
    例:cp /etc/passwd /mnt 复制到mnt文件夹下
    cp /etc/passwd /mnt 在mnt文件夹下生成子目录passwd
    cp /etc/passwd /mnt 名字重复,冲突报错,是否覆盖

    mv 移动改名

    重命名/移动
    mv [选项] … 源文件或目录… 目标文件或目录
    mv 源文件 名字

    • -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
    • -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
    • -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
    • -v:显示文件或目录的移动过程

    rm 删除

    删除文件
    rm [选项] 要删除的文件或目录

    • -f、强制
    • -i、交互
    • -r 递归(删除目录需要)
      例: rm -rf /data/* 递归删除data下所有文件

    find 查找

    命令的特点:

    • 精确查找
    • 实时查找
    • 支持查找条件多

    格式为 find [查找路径] [OPTION]... [查找条件] [处理动作]
    按名称查|-name|根据目标文件的名称进行查找,允许使用通配符-iname文件名称不区分大小写

    按文件大小查找 | -size | 根据目标文件的大小进行查找 一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件 常用的容量单位包括 kB(注意 k 是小写)、MB、GB

    按文件属主查找 | -user | 根据文件是否属于目标用户进行查找

    按文件类型查找 | -type | 根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等

    按inode号 | -inum | 根据文件inode号查找

    按权限查找 | -perm | 按文件权限查找

    linux目录

    一级目录 功能(作用)
    /bin/ 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行
    /boot/ 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
    /dev/ 设备文件保存位置
    /etc/ 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
    /home/ 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming
    /lib/ 系统调用的函数库保存位置(c语言 写的一些固定格式的代码,方便调用)
    /media/ 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
    /mnt/ 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
    /misc/ 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的
    /opt/ 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件
    /root/ root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下
    /sbin/ 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看
    /srv/ 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
    /tmp/ 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空

    cat 显示命令

    选项 效果
    -n 显示行号包括空行
    -b 跳过空白行编号
    -s 将所有的连续的多个空行替换为一个空行(压缩成一个空行)
    -A 显示隐藏字符

    例:cat /etc/centos-release 查看内核版本
    cat /etc/sysconfig/network-scripts/ifcfg-ens33 查看网络配置
    tac:倒叙显示文本命令

    显示文本前后内容

    head

    可以显示文件或标准输入的前面行,默认为十行
    格式为 :head -n 3 /etc/passwd

    tail

    tail 和head 相反,查看文件或标准输入的倒数行
    -f 实时查看文件后十行
    格式:tail -n 10 /etc/passwd
    tail -f /var/log

    wc 统计列数

    • -l:统计行数
    • -w:统计单词个数
    • -c:统计字节数
      一般配合管道符链接
      格式为:wc -w /etc/passwd |grep '^a'

    grep 查找筛选

    grep [选项]… 查找条件 目标文件
    选项

    • -i:查找时忽略大小写
    • -v:反向查找,输出与查找条件不相符的行
    • -o 只显示匹配项
    • -f 对比两个文件的相同行
    • -c 匹配的行数([root@localhost ky15]# grep -c root passwd 2)

    基本格式

    • 要查找的字符串以双引号括起来单引号也可以
    • “^……”表示以……开头,“……$”表示以……结尾
    • “^$”表示空行
      例: grep -c root /etc/passwd 统计匹配的行数

    压缩 解压缩

    gzip bzip2

    gzip和bzip都是压缩软件,比如windows里的好压和360 压缩或微软自带的
    gzip [-9] 文件名… bzip2 [-9] 文件名...
    9代表压缩比率,9最大1最小
    gzip的压缩率 要高于bzip2

    tar归档

    tape archive 磁带归档
    tar [选项] ... 归档文件名 源文件或目录

    • -c:创建(Create).tar 格式的包文件
    • -x:解开.tar 格式的包文件
    • -C:解压时指定释放的目标文件夹
    • -f:表示使用归档文件(一般都要带上表示使用tar)
    • -p:打包时保留文件及目录的权限
    • -P:打包时保留文件及目录的绝对径
    • -t:列表查看包内的文件(要和f一起使用)
    • -v:输出详细信息(Verbose)
    • -j:调用 bzip2 程序进行压缩或解压
    • -z:调用 gzip 程序进行压缩或解压
      选项使用时有先后要求,如果-需要f开头,不输入-则随意
      例:tar -zcvf passwd.tar.gz /etc/passwd
      解压:tar -xzf passwd.tar.gz /mnt/passwd

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论