• Linux的指令和用途(持续更新)


    前言

    指令的选项不具备唯一性

    没有指令怎么办?


    安装指令:20. yum/apt-get(安装指令)

    快捷键

    命令补齐Tab键
    停止当前的命令、运行程序、强制退出ctrl c
    结束当前的输入,退出当前账户ctrl d

    简单指令

    Linux指令示范用法说明
    whowho查看哪些人登陆我的机器
    whoami  (who am i)who am i查看当前账号是谁

    pwd

    pwd查看当前我所在的目录
    clearclear

    清屏

    tree 目录名(文件夹名)tree game以树形结构列出该文件夹下的所有文件
    stat 目录名stat game查看指定目录的更详细的属性信息
    touch 文件名 文件名...touch test.c在当前目录下建立一个或多个文件
    nano 文件名nano test写文件内容
    (文件不存在就建立一个写入)
    which 指令which ls看指令在哪个路径下
    whereiswhereis test查看文件的路径
    alias 别名='指令'alias T='tree'给指令取别名
    (退出Linux后,别名自动销毁)
    wc -lwc -l file统计文件内容不重复的行数

    1. 查看Linux系统的指令

    uname -a查看Linux系统的详细信息
    uname -r查看linux内核版本信息
    cat /etc/redhat-release看Linux的发行版和芯片架构
    cat /proc/cpuinfo看cpu
    cat /proc/meminfo看内存情况

    vmstat  

    报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息
    sar主要帮助我们掌握系统资源的使用情况,特别是内存和CPU的使用情况

    top

    查看cpu资源使用状态
    netstat  查看网络连接状态

    free

    查看内存资源状态
    df查看磁盘分区资源状态

    2. ls(查看目录下的内容)

    概念介绍:
     

    1.隐藏文件:是以‘ . ’开头的文件,默认不显示。


    2. 指令后面的选项之间可以自由组合。
     

    3. 某些指令后面的文件都可以是一个或者多个,比如删除一个多个,建立一个多个。

    ls列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
    ls -a                          列出目录下的所有文件,包括以 . 开头的隐含文件

    ls -d

    将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
    ls -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
    ls -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
    ls -l 、ll 列出文件的详细信息。
    ls -la 、ls -al 、ls -l -a、 ls -a -l 、ll -a列出目录下的所有文件的详细信息,包括以 . 开头的隐含文件。
    ls -n用数字的 UID,GID 代替名称。 (介绍 UID, GID)
     ls -F

     在每个文件名后附上一个字符以说明该文件的类型

    “*” : 表示可执行的普通文件;

    “/” : 表示目录;

    “@” : 表示符号链接;

    “|” : 表示FIFOs;

    “=” : 表示套接字(sockets)

    ls -r 对目录反向排序。
    ls -t 以时间排序。
    ls -s在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
    ls -R 列出所有子目录下的文件。(递归) 
    ls -1 一行只输出一个文件。

    3. cd(进入目录)

    概念介绍:

    1. 一个 ‘ . ’   表示的是 当前路径

    2. 两个‘ . .’  表示的是 上级路径

    3. 路径:由‘ / ’ 和目录组成的字符串

    4.  ‘ / ’ 是Linux下的路径分隔符

    5. 2个 ‘ / ’之间的一定是目录(文件夹)

    6. 最后一个‘ / ’ 后的可能是目录,也可能是文件

    7. 第一个‘ / ’ 代表根目录

    8. 我们的 “ /root ”代表的是家目录,所谓家目录就是在个人账户下的目录

    相对路径:以当前目录为参考点,利用‘ .. ’找到当前目录的上级目录,再找到指定文件所形成的路径。

    绝对路径:从根目录( / )开始,定位到叶子文件的方式,形成的路径。

    重点!!!

    我们任何指令都可以➕绝对路径或者相对路径,只在这里说一次,下面指令不会重复说明。

    使用规则示范功能
    cd   目录名                   cd game从当前目录进入到指定目录里,指定目录必须在当前目录里
    cd 绝对路径cd /root/game可以从当前目录找到任何目录或文件,但是要使用绝对路径。
    cd 相对路径cd ../game可以从当前目录找到任何目录或文件,但是要使用相对路径。
    cd ..cd ..返回上一级目录
    cd .cd .返回当前目录
    cd ~cd ~进入家目录
    cd -cd -返回最近访问的目录

    首先,如下图Linux下整体的目录结构就是一颗多叉树。我们可以根据多叉树来找相对路径和绝对路径。

    假设我们在/usr/bin这个路径下,也就是在bin的目录下,我们要去找到lib

    通过绝对路径 / usr / lib 找到

    通过相对路径 .. / lib 找到,大家不要忘了.. 是代表上级路径哦!

    4. mkdir(创建目录)

    可以加绝对路径或者相对路径,在指定路径里创建目录

    使用规则示范功能
    mkdir --helpmkdir --help来获取更多mkdir信息
    mkdir 目录名 目录名...

    mkdir dirname

    mkdir a b c d

    在当前目录下创建一个名为 “dirname”的目录

    在当前目录下创建多个目录,为a,b,c,d

    mkdir -p(--parent) 目录名

    mkdir -p test/test1/test2

    mkdir --parent a/b/c

    递归建立多个目录)(使用tree命令查看)

    5. rmdir(删除空目录)

    1. 只适用具有当前目录操作权限的所有操作者

    2. 只能删除空目录,不能删除文件

    3.可以加绝对路径或者相对路径,在指定路径里删除空目录

    1. 超级用户:root用户,删除任何东西都会询问是否删除,因为超级用户的东西比较重要。

    2. 普通用户:非root用户,删除东西多时候不会询问,想要被询问,需要➕特定的选项,下面会给出说明

    3. 一切的删除都默认不删除隐藏文件!!!!!!

    使用规则示范功能
    rmdir --helprmdir --help来获取更多rmdir信息
    rmdir 目录名rmdir dirname删除空目录
    rmdir -p(--parent) 目录

    rmdir -p(--parent) a/b/c

    rmdir --parent a/b/c

    当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除

    6. rm(删除文件和空目录)

    1.适用所有使用者

    2.rm命令可以同时删除文件或者空目录

    3.单独的rm无法删除目录

    4.可以加绝对路径或者相对路径,在指定路径里删除。

    5. ‘ * ’ :通配符,指定路径下的所有文件。

    使用规则示范功能
    rm --helprm --help来获取更多rm信息
    rm -i 目录rm -i dir 

    删除前询问是否删除

    rm -rrm -r dir删除之前先递归进入到叶子文件或目录
    rm -frm -f test直接删除文件
    rm -rfrm -rf dir强制删除任何目录(包括非空目录)和文件

    rm -rf * 

    rm -rf *删除当前目录下的所有目录和文件

    1. 删除隐藏文件:rm -rf 隐藏文件名

    2. 一定不要删除根目录,小白玩家切记!!!

    7. man(查看命令/指令的相关选项)

    1.Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。所以man是访问Linux手册页的命令

    2.访问之后,要退出, 按q。

    手册分为8章:

    (1 )是普通的命令

    (2) 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件) 

    (3) 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件

    (5) 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

    (6) 是给游戏留的,由各个游戏自己定义

    (7) 是附件还有一些变量,比如向environ这种全局变量在这里就有说明

    (8) 是系统管理用的命令,这些命令只能由root使用,如ifconfig 

    使用规则示范功能
    man 指令man printf在手册中从1到8章依次查找,找到了就显示
    遇到指令在多个手册都有定义
    只显示最先找到的
    man num 指令man 3 printf只在第三章中查找
    man -a 指令man -a printf

    把找到的全部有定义的章节都显示出来
    比如printf,会显示第一章和第三章的

    8. cp(复制目录、文件)

    用途:复制目录或文件

    注意⚠️⚠️:

    如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。

    同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。

    如果要拷贝到当前路径,但是同级目录下没办法重名,所以我们就cp test test2就OK了。

    不会拷贝隐藏文件,要拷贝隐藏文件,需要自己写哦!

    使用规则功能
    cp 文件名 路径将文件拷贝到路径内
    cp -rf 目录/文件 路径将目录或文件拷贝到路径内
    cp -rf 路径1* 路径2

    将路径1下的所有文件和目录都拷贝到路径2中

    (路径1跟*无空格)

    9. mv(移动目录、文件)

    用途:可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

    使用规则示范功能
    mv 目录 目录mv a b将a重命名为b
    mv 文件 文件(不存在)mv test data将test重命名为data
    mv 文件 文件(已存在)mv test test2将test覆盖到test2
    mv -i 文件 文件(已存在)mv -i test test2将test覆盖到test2,但是会询问是否覆盖
    mv -f 文件 文件(已存在)mv -f test test2将test强制覆盖到test2,不询问是否覆盖
    mv 文件 目录mv test a将test移动到a目录里

    10. cat(查看文件内容)tac (逆向查看)

    用途:打印目标文件内容,文件内容是少的。(大文件用别的指令)

    单独的cat(写完cat之后按回车才行),你输入什么(从键盘文件读取什么),就会打印什么(向显示器文件写入什么)

    tac指令:逆向打印目标文件内容

    使用规则示范功能
    cat 文件cat test.c查看目标文件的内容
    cat -b 文件cat -b test.c对非空的输出行进行编号
    cat -n 文件cat -n test.c对输出的所有行,进行编号
    cat -s 文件cat -s test.c不输出多行空行
    cat < 文件cat < test.c从文件中读内容到显示器

    11. echo(写文件的内容)

    用途:可以向文件中写入一些字符串,当我们不写东西的时候,还会有个换行符,所以echo默认生成换行符

    printf指令,是默认不带换行的,剩下的跟echo一样

    使用规则示范功能
    echo 字符串echo "hello Linux !"缺省(默认)向显示器输出,自动换行
    (缺省向显示器文件进行写入)
    echo 字符串 > 文件echo "hello Linux !" > test向test文件写入字符串
    (有文件就直接写入,没有就创建再写入)
    文件中有内容的话,会被清除,再写入新的字符串
    echo 字符串 >> 文件echo "hello world !" >> test在test文件内容后追加字符串

    我们学到这里了之后,其实我们会发现,在Linux里,一切的东西都可以是文件,我们在向显示器打印的时候,其实就是向显示器文件写入,所以在Linux系统里,我们会统一称为某某文件。

    重点⚠️⚠️重点

    一、输出重定向符 : >

    这个符号类似我们的写入,从 > 的左边写入到 > 的右边

    用法1 :         > 文件               清空文件内容,再写入

    用法2:    > 文件(不存在)          新建一个文件

    二、输入重定向符 :<

    从 < 的右边读取到字符串之后,写入到显示器文件中。

    三、追加重定向符:>>

    向文件内容后面追加字符串

    用法1 :>> 文件(不存在)        新建一个文件

    12. more(查看大文件的内容)

    类似cat,但是它是打印大文件的。

    查看文件的时候只能按回车,上下键没用,只能下翻,不能上翻,所以我们不继续介绍more了,来看我们的less!

    13. less(最正统的查看文件内容的指令

    1.less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。

    2. less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看

    3. 但若使用了 less 时,就可以使用上下键来往前往后翻看文件,更容易用来查看一个文件的内容

    4.除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜

    5.在浏览文件的时候,退出按q,想搜索具体内容用   /具体内容

    使用规则示范功能
    less 文件less test.c浏览文件

    14. head(打印文件内容的前几行)

    默认打印其相应文件的前10行。 

    使用规则示范功能
    head 文件head file.txt默认向显示器文件写入目标文件前十行内容
    head -n 文件head -n file.txt向显示器文件写入目标文件前n行内容

    15. tail(打印文件内容的后几行)

    默认打印其相应文件的最后10行。 

    使用规则示范功能
    tail 文件tail file.txt默认向显示器文件写入目标文件后十行内容
    tail -n 文件tail -n file.txt向显示器文件写入目标文件后n行内容

    如果想要提取中间的行内容怎么办呢?

    方法一:建立临时文件

    把file.txt的前n行拿出来,放在一个临时文件里,再用tail把临时文件的后n行拿出来,但是这样是建立文件才能完成,那有没有不用建立文件的方法呢?

    1. head -n file.txt > newdata
    2. tail -n newdata

    方法二:使用‘|’命令行管道

    什么是命令行管道呢?我们想象一下现实中的管子,两个端开口可以连接,所以我们这个命令行管道就可以将前面的命令和后面的命令连接起来

    看下面的指令,解读一下就是,前面的输出是作为后面的输入

    head -n file.txt | tail -n 

    16. date(显示日期)

    date 指定格式显示时间: date +%Y-%m-%d_%H:%M:%S 

    %H : 小时(00..23) 

    %M : 分钟(00..59) 

    %S : 秒(00..61) 

    %X : 相当于 %H:%M:%S 

    %d : 日 (01..31) 

    %m : 月份 (01..12) 

    %Y : 完整年份 (0000..9999) 

    %F : 相当于 %Y-%m-%d 

    使用规则功能
    date +%Y-%m-%d_%H:%M:%S 显示当前的时间
    date -s "年月日时分秒"date -s "2023-11-9 10:16:30" 设置时间
    date +%s

    将时间转换时间戳的形式

    (时间戳是1970.1.1的午夜到现在时间所经过的秒数)

    date -d@时间戳时间戳转换成时间

    15. cal(显示公历)

    cal命令可以用来显示公历(阳历)日历

    使用规则示范功能
    calcal查看当天的日历
    cal 年份cal 2000查看目标年份的所有日历
    cal -3cal -3显示系统前一个月,当月和下一个月的日历
    cal -jcal -j显示当天在今天的第几天

    16. find(查找目录/文件)

    使用规则示范功能
    find filenamefind test找到当前目录下的所有名为test的文件或目录,递归查找
    find 路径 -name filenamefind /root/xmb/test -name test找到路径下所有名为fliename的文件/目录

    17. grep(寻找文件中的目标内容)

    在文件内容中找目标字符串,再将找到目标字符串存在的行打印出来。

    使用规则示范功能
    grep 字符串 文件grep 'a' file在文件file里找,字符串a,并把a存在的行写入在显示器文件中

    grep -i 字符串 文件

    grep -i 'a' file忽略大小写的不同,所以大小写视为相同
    grep -n 字符串 文件grep -n 'a' file顺便输出行号
    grep -v 字符串 文件grep -v 'a' file反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
    grep -E ^字符串 文件grep -E ^a flie^表示匹配文件起始,  ^a表示以a起始,向显示器文件下入file文件中所有以a开头的行
    grep -E 字符串$ 文件grep -E a$ file$表示匹配文件末尾,a$表示以a结尾,向显示器文件写入file文件中所有以a结尾的行

    18. sort(排序文本内容)

    将文本内容每行按ASCII值排序

    使用规则示范功能
    sort 文件sort file将文本内容每行按ASCII值排序
    sort -r 文件sort -r file将文本内容每行按ASCII值排序,但是反向输出

    19. uniq(压缩重复行)

    把文本中相邻且内容重复的行变成一行,再向显示器文件写入

    使用规则示范功能
    uniq 文件uniq file把文本中相邻且内容重复的行变成一行
    uniq -d 文件uniq -d file只显示文本中的重复行
    uniq -u 文件uniq -u file保留文本中出现一次的行
    uniq -c 文件uniq -c file统计文本中每行的内容出现了几次

    20. yum/apt-get(安装指令)

            相当于我们手机的应用商店,应用市场;在Linux下实现对指令/工具/程序的安装,检查和卸载。

            centos下的是yum,ubuntu下的是apt-get

            ubuntu把yum换apt-get就行,其余不变

    使用规则示范功能
    yum list | grep 内容yum list | grep lrzszyum list罗列出我们yum当前一共有哪些安装包,通过管道| 将内容输入给grep,通过grep筛选出关注的内容。

    (sudo) yum install -y 指令

    普通用户加sudo,-y是默认yes

    (sudo)yum install -y tree

    安装tree命令

    (sudo) yum remove -y 指令

    普通用户加sudo

    (sudo)yum remove -y tree

    卸载tree命令

    (sudo) yum install -y epel-release

    普通用户加sudo

    (sudo) yum install -y epel-release有些指令安装不了,拓展yum源
    yum list列出可以安装的软件包
    yum search搜索包含指定关键字的软件包
    yum clean all清除缓存中老旧的头文件和软件包
    yum makecache将服务器的软件包信息缓存到本地

    更新yum源博客链接:更新yum源的保姆级教程(有手就行)-CSDN博客

    21. vim(文本编辑)

    vim模式用法总结-CSDN博客

    22. gcc/g++(编译、运行代码)

    用来编译代码的工具,下面指令不唯一

    使用规则示范功能
    gcc -o 可执行程序名 源文件gcc -o mytest test.c直接生成可执行程序,可执行程序的名字自己起
    ./可执行程序./mytest运行可执行程序输出结果
     gcc -E test.c > test.i

    - E只是激活预处理,不生成文件,所以需要将输出到内容重定向输入到.i文件

    预处理完成之后就停下来,预处理之后产生的结果都放在test.i文件中

    gcc -S test.c编译完成之后就停下来,结果保存在test.s中
    gcc -c test.c汇编完成之后就停下来,结果保存在test.o中
    ldd 可执行程序可以查看这个可执行程序依赖的库文件

    关于不同阶段,具体看这篇博客:通过历史 --> 了解翻译环境(预处理、编译、汇编、链接)-CSDN博客

    23. gdb(调试)

    调试只存在debug的版本中,而我们gcc/g++编译时,默认的是release版本,无法调试,我们的debug版本的可执行程序会添加调试信息,release就没有;这也是debug版本占用的空间多的原因。

    改为debug版本:在生成可执行程序的指令后面+ -g

    1. 启动调试

    gdb 可执行程序gdb a.out

    2. 退出调试

    输入q或者quit

    3. 调试中的子指令

    进入调试模式,gdb会自动记录最近一条的指令,也就是说,按回车自动执行上一条指令

    a. 查看代码

    其实在这里的查看代码,基本是让我们要查看的代码至于最中间,如果我们的代码很少,就都会显示出来了。

    使用规则示范功能
    l 文件名:行号/函数名

    l test.c:7

    l test.c:main

    查看test.c文件的指定行之后代码
    或查看test.c文件的函数代码
    l 行号/函数名

    l 7

    l main

    查看当前文件的指定行及之后代码
    或者查看函数的代码

    b. 断点操作

    使用规则示范功能

    b 行号/函数名

    b 7

    b main 

    在指定行或者指定的函数入口处打断点
    b 文件名:行号/函数名

    b test.c:7

    b test.c:main

    在指定的文件中的指定行或指定函数入口处打断点
    info b查看现在有的断点
    d 断点编号d 2删除断点
    disable 断点编号disable 2禁用断点,不删除
    enable 断点编号enable 2重新启用断点

    c. 运行和调试

    使用规则示范功能
    r运行
    n逐过程调试,不进入函数
    s逐语句调试
    c从一个断点运行到下一个断点
    finish执行完当前函数,执行结束停下来
    until 行until 7

    运行到指定行(可以直接跳过循环)

    d. 调试过程中查看变量值

    使用规则示范功能
    p 变量p a显示变量内容:值/地址等
    display 变量display a常显示,也就是一直显示变量内容
    undisplay 常显示编号undisplay 1去掉常显示变量
    bt查看堆栈
    set var 变量=值set var a=3修改变量内容,为了多分枝测试,比如if语句、switch语句等

    24. su、chown、chmod、chgrp等权限指令

    什么是权限?(Linux篇)-CSDN博客

  • 相关阅读:
    2023-10-19 node.js-将异步处理修改为同步-使用Promise和async-记录
    【华为OD机试真题 JS】找车位
    跨平台密码管理器KeePassX停止开发,你用过吗?
    【Python 千题 —— 基础篇】浮点数转为整数
    【动态规划】LeetCode583. 两个字符串的删除操作
    板刷codeforces 1000分
    21、JavaScript学习笔记——try...catch
    Linux进程状态
    基于RISC-V架构的通信DSP的设计以及在5G RedCap基带中的应用(六)-结论与展望
    菲律宾媒体PR发稿:谷歌SEO优化.关键词排名.谷歌收录
  • 原文地址:https://blog.csdn.net/2302_76941579/article/details/134217349