• Linux常见指令


    一. 操作系统简述

    计算机软硬件体系结构是层状结构, 如下图:
    请添加图片描述

    操作系统是进行软硬件资源管理软件

    操作系统是系统软件, 不是硬件
    负责管理协调硬件, 软件等计算机资源的工作
    向上提供良好稳定的运行服务

    二. Linux 下基本指令

    先有的指令系统, 再有的图形化界面.
    指令操作和图形化操作本质上没有区别, 只是形式上不同.

    01. ls 指令

    语法: ls[选项][目录或文件]
    功能: 对于目录, 该命令列出该目录下的所有子目录与文件.对于文件, 将列出文件名以及其他信息.

    ls列出当前目录的所有文件名

    在这里插入图片描述


    ls -l列出文件的详细信息, l 相当于 list
    一般会直接 ll 简写

    这是文件的属性列表, 包括文件权限, 大小, 文件名, 创建时间等等.
    在这里插入图片描述

    由此可以看到, 文件包括文件内容文件属性
    我们学习文件操作, 也就是学习对文件内容文件属性的操作

    文件内容可以为 0, 但是只要一个文件存在, 他一定会有文件属性.
    虽然在 windows 中创建一个空文件, 打开属性设置显示该文件为 0 字节.
    在这里插入图片描述

    但是存储这些属性信息也是需要空间的, 所以一个空文件也是占据空间的.


    ls -a 列出目录下的所有文件, 包括以 . 开头的隐含文件

    在这里插入图片描述

    在每个目录里, 都一定会有两个隐含文件:
    一个是 ., 一个是 ..

    .: 代表当前路径
    ..: 代表上级路径


    补充知识点 1 (关于路径)

    关于路径
    什么叫做路径呢?
    在 Linux 下, 路径是由 / 进行间隔的一串字符串. 例如: /usr/bin
    两斜杠之间一定是一个目录或者路径, 最后一个名称可能是文件或者目录

    为什么要有路径呢? 为了唯一找到一个文件

    Linux 整体目录是一个多叉树的样子

    在这里插入图片描述

    根据树的结构可以得到以下结论:

    • 叶子结点一定是普通文件或者空文件夹
    • 非叶子结点一定是目录
    • 访问一个文件的本质, 就是先通过路径找到文件本身
    • 路径的本质就是多叉树搜索路径
    • 每个结点只有一个父结点, 向上具有唯一性, 反过来向下也就具有唯一性. 根据唯一的路径可以找到目标文件.

    绝对路径: 从根目录开始的形成的路径(无论处在哪里, 都能唯一锁定一个文件) /root/usr/bin/
    相对路径: 相对于自身所处目录为参考点的路径. 例如上图, 现在所处bit目录, 想访问到passwd的路径是: ../etc/passwd

    使用 tree 指令, 就可以看到指定目录的树状图
    在这里插入图片描述


    ls -d 将目录像文件一样显示, 而不是显示其下的文件.
    一般会配合 -l, 这样就可以看到指定目录的属性信息了
    在这里插入图片描述

    ll -d / 也可以看到显示出了信息, / 是系统的根目录

    在这里插入图片描述


    02. pwd 指令

    语法: pwd
    功能: 显示用户当前所在的目录

    pwd 全称为 print work direction

    会显示自根目录到当前目录的路径

    在这里插入图片描述


    03. cd 指令

    语法: cd 目录名
    功能: 改变工作目录. 将当前工作目录改变到指定的目录下

    cd .. 返回上级目录

    在这里插入图片描述


    cd /usr/bin 按绝对路径访问
    在这里插入图片描述


    cd ../test_02 按相对路径访问
    在这里插入图片描述


    cd ~ 进入用户家目录

    此时的用户是 root , 直接进入 root 下的目录 /root

    若是普通用户, 则会进入 /home/xxx
    在这里插入图片描述

    默认登陆的时候, 默认登陆时所处的路径就是当前家目录.
    在 windows 就是桌面, 桌面也是一个文件夹, 叫 /Desktop


    cd - 返回最近访问目录

    在这里插入图片描述

    04. touch 指令

    语法: touch[选项]...文件...
    功能: touch 命令参数可更改文档或目录的日期时间, 包括存取时间和更改时间, 或者新建一个不存在的文件.

    touch file1.txt 在当前目录下创建一个名为 file1.txt 的空文件
    在这里插入图片描述

    05. mkdir 指令

    语法: mkdir[选项]dirname
    功能: 在当前目录下创建一个名为 dirname 的目录

    mkdir 1 在当前目录下创建一个名为 1 的空目录

    在这里插入图片描述


    mkdir -p a/b/c 递归建立 a/b/c 目录

    在这里插入图片描述

    06. rmdir 指令 && rm 指令

    rmdir是一个与mkdir相对应的指令. mkdir时建立目录, 而rmdir是删除目录

    语法: rmdir[-p][dirName]
    适用于对象: 具有当前目录操作权限的所有使用者
    功能: 删除空目录

    rmdir a 失败
    rmdir 1 成功

    在这里插入图片描述


    rm 命令可以同时删除文件或目录
    语法: rm[-f-i-r-v][dirName/dir]
    适用对象: 所有使用者
    功能: 删除文件或目录

    rm file1.txt 删除 file1.txt 文件
    在这里插入图片描述


    rm -f 不用询问就能删除

    在这里插入图片描述


    rm -r 递归的删除目录下所有文件
    在这里插入图片描述

    递归删除相当于深度优先遍历叶子结点, 返回时删除

    rm -rf ./* 删除当前目录的所有文件, 不删除隐藏文件

    * 是通配符, 指指定路径下的所有文件

    在这里插入图片描述


    07. man 指令

    Linux 的命令有很多参数, 我们不可能全部都记住, 可以通过联机手册获取帮助. 访问 Linux 手册的指令是 man
    语法: man[选项]命令
    常用选项:

    • -k: 根据关键字搜索联机帮助
    • num: 只在 num 章节找
    • -a: 将所有的章节都显示出来

    解释一下,面手册分为 8 章
    1 是普通的命令
    2 是系统调用,如 open,write 之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文
    件)
    3 是库函数,如 printf,fread4 是特殊文件,也就是/dev 下的各种设备文件
    5 是指文件的格式,比如 passwd, 就会说明这个文件中各个字段的含义
    6 是给游戏留的,由各个游戏自己定义
    7 是附件还有一些变量,比如向 environ 这种全局变量在这里就有说明
    8 是系统管理用的命令,这些命令只能由 root 使用,如 ifconfig


    如果使用 man 找不到某个章节, 输入指令 yum install -y man-pages, 为什么环境里没有呢, 这里就要引入三种开发环境.

    补充知识点 2 (开发三种环境)

    开发三种环境

    1. 开发环境
    2. 测试环境
    3. 生产环境: 真实线上环境, 写完测完真正给用户提供服务的地方, 不能随便动.

    一般来说, 各厂商提供的云服务器都是生产环境, 是非常干净的操作系统, 不会安装开发强相关的工具, 这里的 man-pages 就是一种.


    man man 查看 man 的相关资料
    在这里插入图片描述

    man 3 printf 查看库函数中 printf 的资料

    在这里插入图片描述

    08. cp 指令

    语法: cp[选项] 源文件或目录 目标文件或目录
    功能: 复制文件或目录
    说明: cp 指令用于复制文件或目录, 如同时指定两个或两个以上的文件或目录, 且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中. 若同时指定多个文件和目录, 而最后的目的地并非一个已存在的目录, 则会出现错误信息.

    cp -f 强制复制文件或目录, 不论目的文件或者目录是否存在
    在这里插入图片描述


    cp -i 覆盖文件前先询问用户
    在这里插入图片描述


    cp -r 递归处理目录

    在这里插入图片描述


    拷贝不会拷贝隐藏文件, 因为

    1. 如果用户知道要拷贝隐藏文件, 肯定会手动拷贝
    2. 如果用户不知道隐藏文件的存在, 肯定不会想拷贝它们

    09. mv 指令

    mv 命令是 move 的缩写, 可以用来移动文件或者将文件改名(move (rename) files), 是 Linux 系统下常用的命令, 经常用来备份文件或者目录.
    语法: mv[选项] 源文件或目录 目标文件或目录
    功能:

    1. mv 命令中第二个参数的类型不同(是目标文件还是目标目录), mv 命令将文件重命名或将其移至一个新的目录
    2. 当第二个参数类型是文件时, mv 命令完成文件重命名. 此时, 源文件只能有一个(也可以是原目录名), 它将所给的源文件或者目录重命名为给定的目标文件名.
    3. 当第二个参数是已存在的目录名称时, 源文件或目录参数可以有多个, mv 命令将各参数指定的源文件均移至目标目录中
      常用选项
      -f 如果目标文件已经存在, 不会询问直接覆盖
      -i 如果目标文件已经存在, 就会询问是否覆盖

    mv file.txt file1.txtfile.txt 改名为 file1.txt
    在这里插入图片描述


    mv a aaa 改名为 aa

    在这里插入图片描述


    mv file1.txt try_grep aa/b 移动多个文件到已存在目录

    在这里插入图片描述

    10. alise 指令

    对指令重命名.
    语法: alise [指定命令]='[命令+选项]'


    补充知识点 3 (命令的本质)

    命令的本质就是可执行文件

    例如, 在 /usr/bin 里存放的都是指令, 都是可执行文件

    在这里插入图片描述

    yum 就是 python 写的

    在这里插入图片描述


    比如写了一个打印 HelloLinux 的程序
    在这里插入图片描述

    可以使用 alias 指令将其修改为 hello

    在这里插入图片描述

    如果不将 alias hello='./test' 放在配置文件 ~/.bashrc 中, 重启终端该指令就会失效.

    11. echo 指令

    echo 默认将输入的字符串输出到显示器上

    在这里插入图片描述


    echo [内容] > [文件名] 可以将内容输出重定向入指定文件中, 如果该文件不存在, 会自动创建一个.

    在这里插入图片描述


    补充知识点 4 (Linux下一切皆文件)

    Linux 下一切皆文件

    通过 > 输出重定向, 本来应该是在显示器上显示的, 现在显示在文件当中.

    向显示器打印就是向显示器文件的内容写入.
    键盘写入文件的同时回显在显示器上, 显示器的读方法是空, 键盘的写方法是空.

    那么各种各样的设备, 都有读方法和写方法.
    大部分硬件也都有读方法, 有些硬件的写方法为空.

    Linux 就想用统一思想来解决读写文件和设备.
    Linux 设计者设计了Linux 下一切皆文件的设计理念.

    虽然提高了 Linux 系统的编码维护成本, 但是更为统一方便.


    注: 直接 >[文件名] 可以创建新文件或者清空一个文件

    在这里插入图片描述

    重定向会覆盖历史内容, 不想覆盖可以使用追加重定向 >>

    echo "111111" >> c 追加一行内容到 c

    在这里插入图片描述

    12. cat 指令

    语法: cat[选项][文件]
    功能: 查看文件的内容
    常用选项:

    • -b 对非空输出行编号
    • -n 对输出的所有行编号
    • -s 不输出多行空行

    cat c

    在这里插入图片描述


    cat -b c
    在这里插入图片描述


    cat -n c
    在这里插入图片描述


    cat -s c
    在这里插入图片描述

    cat 不跟文件名 输入什么, cat 就打印什么
    在这里插入图片描述

    cat 从键盘读取了什么, 就向显示器文件显示什么.
    默认读取的时候是从键盘文件中读入的, 如果添上了文件就是从文件中读入的.
    也就是说 cat 文件 相当于 cat < 文件 把本来应该从键盘读取的内容改为从普通文件进行输入

    总结:
    > 按 w 打开
    >> 按 a 打开
    < 按 r 打开

    13. more 指令

    语法: more[选项][文件]
    功能: more 命令, 功能类似于 cat
    常用选项:

    • -n 对输入的所有行编号
    • q 退出 more

    more 只能按回车, 不推荐使用

    14. less 指令

    • less 工具也是对文件或其他输入进行分页显示的工具, 应该说是 Linux 正统查看文件内容的工具, 功能极其强大.
    • less 的用法比起 more 更加的有弹性. 在 more 的时候, 我们并没有办法向前翻, 只能向后看
    • 但若使用了 less时, 就可以使用[pageup][pagedown]等按键的功能能来往前往后翻看文件, 更容易用来查看一个文件的内容.
    • 除此之外, 在 less 里头可以拥有更多的搜索功能, 不止可以向下搜, 也可以向上搜.

    语法: less[参数] 文件
    功能: lessmore 类似, 但是 less 可以随意浏览文件.
    选项:

    • -i 忽略搜索时的大小写
    • -N 显示每行的行号
    • /字符串 向下搜索"字符串"的功能
    • ?字符串 向上搜索"字符串"的功能
    • n 重复前一个搜索
    • N 反向重复前一个搜索
    • q quit

    15. head 指令

    headtail 就像他的名字一样的浅显易懂, 它是用来显示开头或结尾某个数量的文字区块, head 用来显示档案的开头至标准输出中, 而 tail 想当然就是看档案的结尾.

    语法 head[参数]...[文件]...
    功能 head 用来显示档案的开头至标准输出中, 默认 head 命令打印其相应文件的开头 10 行
    选项

    • -n<行数> 显示的行数

    head file.txt

    在这里插入图片描述


    head -3 file.txt

    在这里插入图片描述

    16. tail 指令

    tail 命令从指定点开始将文件写道标准输出.
    使用 tail 命令的 -f 选项可以方便的查阅正在改变的日志文件, tail -f filename 会把 filename 里最尾部的内容显示在屏幕上, 并且不断刷新, 使你看到最新的文件内容.
    语法 tail[必要参数][选择参数][文件]
    功能 用于显示指定文件末尾内容, 不指定文件时, 作为输入信息进行处理. 常用查看日志文件.
    选项

    • -f 循环读取
    • -n<行数> 显示行数

    在这里插入图片描述


    补充知识点 5 (命令行管道)

    关于命令行管道

    如果想显示第 8001 - 8010 行该怎么办呢

    第一种想法:
    先用 head 把前 8010 行的内容输入重定向至一个 tmep 文件
    再用 tail 把最后 10 行显示出来
    在这里插入图片描述

    但是这样会多出一个中间文件

    第二种想法
    使用管道, 直接将前一条命令的输出交给第二条指令的输入

    在这里插入图片描述

    head 默认是输入重定向至显示器文件, 而 | 是一个管道, 将本应放入显示器文件的内容放入管道中, 再使用 tail 指令将管道文件中的内容作为输入.

    这是一种流水线作业处理.


    17. 时间相关的指令

    date 显示
    date 指定格式显示时间 date +%Y%m%d
    date 用法 date[OPTION]...[+FORMAT]

    在显示方面, 使用着可以设定欲显示的格式, 格式设定为一个加号后接数个标记, 其中常用的标记列表如下

    %H: 小时
    %M: 分钟
    %S: 秒
    %X: 相当于 %H:%M:%S > %d: 日
    %m: 月份
    %Y: 年份
    %F: 相当于 %Y-%m-%d

    在这里插入图片描述

    在这里插入图片描述


    时间戳

    时间->时间戳:date + %s

    在这里插入图片描述

    时间戳->时间: date -d@0, 得到时间戳为 0 的时间

    在这里插入图片描述

    Unix 时间戳是从 1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的秒数, 不考虑闰秒.


    补充知识点 6 (日志与时间戳)

    关于软件开发的日志与时间戳

    Unix 时间戳是 1970-1-1 午夜 到现在所经过的秒数, 这表示时间戳是 递增且可以进行范围查找的

    时间可以完美运用在日志中, 日志是辅助程序员进行问题排查的.

    程序会定时打印软件的情况, 如果程序挂掉, 程序员就可以通过日志了解到程序挂掉的信息, 其中就包括很重要的时间信息.

    日志等级分为: DEBUG, Normal, Warning, Fatal.


    18. Cal 指令

    cal 指令可以用来显示(阳历)日历. 公历是现在国际通用的历法.

    命令格式 cal[参数][月份][年份]
    功能 用于查看日历等时间信息, 如只有一个参数, 则表示年份, 如有两个参数, 则表示月份和年份.

    常用选项

    -3 显示系统前一个月, 当前月, 下一个月的月历
    -j 显示在当年中的第几天
    -y 显示当前年份的日历

    在这里插入图片描述

    在这里插入图片描述


    19. find 指令

    • Linux 下 find 命令在目录结构中搜索文件, 并执行指定的操作.
    • Linux 下 find 命令提供了相当多的查找条件, 功能很强大. 由于 find 具有强大的功能, 所以它的选项也很多.

    语法 find pathname -options
    功能 用于在文件树中查找文件, 并作出相应的处理(可能访问磁盘)

    常用选项 -name 按照文件名查找文件, 支持 *?

    在这里插入图片描述

    第一次查的时候需要慢慢找,如果短时间内还要查找同一名称的文件,速度会快很多,因为之前的结果被放在了缓存中。

    which 可以查指令

    在这里插入图片描述

    whereis 可以查包含指令在内的文档、库。

    在这里插入图片描述

    20. grep 指令

    语法 grep[选项]搜寻字符串 文件
    功能 在文件中搜索字符串, 将找到的行打印出来

    grep 'A' c 在 c 文件中查找 ‘A’ 贪心策略查找

    在这里插入图片描述


    grep -i 'A' c 忽视大小写
    在这里插入图片描述


    grep -n 顺便输出行号

    在这里插入图片描述


    grep -v 反响选择,显示没有符合的那一行

    在这里插入图片描述


    grep 与管道结合可以更好的查找到需要的信息
    例如: ps ajx | grep 'sleep' 查找睡眠进程

    在这里插入图片描述

    21. sort 指令

    按顺序显示文件内容

    sort c

    在这里插入图片描述

    sort -r c 逆向排序

    在这里插入图片描述

    22. uniq指令

    相邻重复行进行压缩, 只会显示一行

    uniq c

    在这里插入图片描述


    uniq -u 仅显示出现一次的行

    在这里插入图片描述


    uniq -d 仅显示出现多次的行

    在这里插入图片描述


    uniq -c 去重并统计重复行
    那么结合 sortuniq指令和管道 就可以把重复行去重

    在这里插入图片描述


    结合上面的几个查看文件内容的相关指令,如果要查看出现 1 的不重复行的行数,以下指令即可
    cat c | grep '1' | sort | unique | wc -l

    在这里插入图片描述

    23. zip/unzip 指令

    语法 zip 压缩文件.zip 目录或文件
    功能 将目录或文件压缩成 zip 格式
    常用选项

    -r 递归处理,将指定目录下的所有文件和子目录一并处理

    zip -r test_01.zip test_01/test_01 所有文件夹打包

    在这里插入图片描述


    unzip test_01.zip -d ./tmp

    在这里插入图片描述

    24. tar 指令

    在 Linux, 更多的是用到 tar 指令, 这个指令既包括打包, 也包括解包

    tar 指令相关的文件是 .tar.gz 也可写成 .tgz

    tar -czf xxx.tgz xxx 打包压缩指名
    tar -xzf xxx.tgz 解包解压默认包名
    tar -cvzf xxx.tgz xxx 显示过程
    tar -xvzf xxx.tgz 显示过程
    tar -xvzf xxx.tgz -C xxx 解包解压显示过程制定目录(目录必须存在)

    25. uname -r 指令

    语法 uname [选项]
    功能 uname 用来获取电脑和操作系统的相关信息
    补充说明 uname 可显示linux主机所用的操作系统的版本, 硬件的名称等基本信息.

    uname -a 显示体系结构信息

    体系结构信息, 狭义上指CPU架构(x86…), 广义上指 软件+硬件的体系结构

    uname -a

    在这里插入图片描述

    26. 其他一些获取系统信息的指令

    cat /etc/redhat-release 商业化发行版

    在这里插入图片描述

    cat /proc/cpuinfo CPU信息

    在这里插入图片描述

    cat /proc/meminfo 内存信息

    在这里插入图片描述

    27. 重要的几个热键

    [TAB] 按键—具有[命令补全]和[档案补齐]的功能
    [Ctrl]-c 按键—让当前的程序[停掉]
    [Ctrl]-d 按键—[键盘输入结束(EOF)]或者exit
    [history]查看历史输入的命令

    28. 扩展命令

    ◆ 安装和登录命令: login、 shutdown、 halt、 reboot、 install、 mount、 umount、 chsh、 exit、 last;
    ◆ 文件处理命令: file、 mkdir、 grep、 dd、 find、 mv、 ls、 diff、 cat、 ln;
    ◆ 系统管理相关命令: df、 top、 free、 quota、 at、 lp、 adduser、 groupadd、 kill、 crontab;
    ◆ 网络操作命令: ifconfig、 ip、 ping、 netstat、 telnet、 ftp、 route、 rlogin、 rcp、 finger、 mail、 nslookup;
    ◆ 系统安全相关命令: passwd、 su、 umask、 chgrp、 chmod、 chown、 chattr、 sudo ps、 who;
    ◆ 其它命令: tar、 unzip、 gunzip、 unarj、 mtools、 man、 unendcode、 uudecode。

    本章完.

  • 相关阅读:
    简单易懂的Spring核心流程介绍
    算法:(七)队列
    上线服务时遇到的一个SSLHandshakeException错误
    django表单的使用说明
    深入理解计算系统第三章程序的机器级表达总结
    双侧检验Two-Tailed Test
    Jira系统基本介绍
    【CKA考试笔记】十四、helm
    全网最详细SpringBoot、SpringCloud整合阿里云短信服务
    Docker 面试题2则--取数据库连接数和docker-compose
  • 原文地址:https://blog.csdn.net/Kuzuba/article/details/134409517