【Linux系统编程】2. Linux基础指令(上)
2026/5/15 22:35:08 网站建设 项目流程

文章目录

  • 一、Linux基础指令
    • 1、ls指令
    • 2、pwd指令
    • 3、cd指令
    • 4、touch指令
    • 5、mkdir 指令
    • 6、rmdir指令 和 rm指令
      • 1)rmdir指令
      • 2)rm指令
    • 7、man指令
    • 8、cp指令
    • 9、mv指令
    • 10、cat指令
    • 11、more指令
    • 12、less指令
    • 13、head指令
    • 14、tail指令
    • 15、date指令
    • 16、echo指令

一、Linux基础指令

1、ls指令

语法:ls [选项] [目录/文件]
功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。
常⽤选项:

  • -a 列出⽬录下的所有⽂件,包括以.开头的隐含⽂件。
  • -d 将⽬录像⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。
  • -i 输出⽂件的 i 节点的索引信息。
  • -k 以 k 字节的形式表⽰⽂件的⼤⼩。
  • -l 列出⽂件的详细信息。
  • -n ⽤数字的 UID,GID 代替名称。
  • -F 在每个⽂件名后附上⼀个字符以说明该⽂件的类型,*表⽰可执⾏的普通⽂件,/表⽰⽬录,@表⽰符号链接,|表⽰FIFOs,=表⽰套接字(sockets)。
  • -r 对⽬录反向排序。
  • -t 以时间排序。
  • -s 在l⽂件名后输出该⽂件的⼤⼩。
  • -R 列出所有⼦⽬录下的⽂件。(递归)
  • -1 ⼀⾏只输出⼀个⽂件。

举例:

  1. 列出当前⽬录下的所有子目录和⽂件:ls

  2. 列出当前⽬录下的所有⼦⽬录与⽂件,包括 . 开头的隐含文件:ls -a

  3. 以详细信息列出当前目录下的所有子目录和文件(包括隐含文件):ls -al

  4. 以详细信息列出当前目录下的所有文件和目录(包括隐藏文件),并在不同类型的文件 / 目录名称后添加特殊符号标记其类型:ls -alF

注意:实践中我们经常使用ll来展现当前目录下的信息,ll其实就是ls -l的缩写。

2、pwd指令

语法:pwd
功能:显⽰⽤⼾当前所在的⽬录。
常⽤选项:

举例:

3、cd指令

Linux理论知识: 路径的认识

  • Linux的文件结构,是一颗从根目录/ 开始的二叉树
  • 叶子节点:一定是普通文件或者空目录
  • 非叶子节点:一定是一个非空目录

理解路径存在的意义:树状组织⽅式,都是为了保证快速定位查找到指定的⽂件,⽽定位⽂件就需要具有唯⼀性的⽅案来进⾏定位⽂件。其中任何⼀个节点,都只有⼀个⽗节点,所以,从根⽬录开始,定位指定⽂件,路径具有唯⼀性。

  • 绝对路径:以根目录/ 为参照位置,定位一个文件。一般在配置文件中进行使用。
  • 相对路径:以非根目录/ 为参照位置,定位一个文件。由于其便捷性,一般在日常操作中用得多。

语法:cd 目录名
功能:改变⼯作⽬录,将当前⼯作⽬录改变到指定的⽬录下。

举例:

  1. 返回上级目录:cd ..

  2. 绝对路径定位目录:cd /home/mydir

  3. 相对路径定位目录:cd ../mydir

  4. 快速进入自己的家目录:cd ~

  5. 返回到最近访问目录:cd -

4、touch指令

语法:touch [选项] 文件
功能:touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间,或者创建⼀个空的⽂件。
常⽤选项:

  • -a:更新访问时间
  • -m:更新修改时间

举例:

  1. 创建普通文件:touch newFile.txt

注意:我们一般使用 stat 指令来查看文件时间。如:stat newFile.txt

  1. 更新文件访问时间(access):touch -a newFile.txt

  2. 更新文件修改时间(modify):touch -m newFile.txt

5、mkdir 指令

语法:mkdir [选项] 目录
功能:在当前⽬录下创建⼀个名为“dirname”的⽬录
常⽤选项:

  • -p:递归创建目录,若父目录不存在则自动创建。

举例:

  1. 创建普通空目录:mkdir mydir

  2. 递归建立多个目录,创建指定路径:mkdir -p path1/path2/path3/path4

注意:tree指令是一个递归以树状结构显示指定目录的命令,如果无法使用则需要进行安装。

6、rmdir指令 和 rm指令

1)rmdir指令

rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除目录。

语法:rmdir [选项] 目录/路径
适⽤对象:具有当前⽬录操作权限的所有使⽤者
功能:删除空⽬录
常⽤选项:

  • -p 当⼦⽬录被删除后如果⽗⽬录也变成空⽬录的话,就连带⽗⽬录⼀起删除。

举例:

  1. 删除空目录:rmdir mydir

  2. 删除路径:rmdir -p path1/path2/path3/path4

  3. 指定路径中有不为空的路径,便无法删除

2)rm指令

rm指令可以同时删除⽂件或⽬录,一般更多使用rm指令来进行删除操作。

语法:rm [选项] [目录/文件]
适⽤对象:所有使⽤者
功能:删除⽂件或⽬录
常⽤选项:

  • -f 即使⽂件属性为只读(即写保护),亦直接删除
  • -i 删除前逐⼀询问确认
  • -r 删除⽬录及其下所有⽂件

举例:

  1. 删除普通文件:rm hello.txt

  2. 删除目录文件:rm -r dir

  3. 删除普通文件前询问:rm -i newFile.txt

  4. 删除目录前询问:rm -ri d

  5. 递归强制删除非空目录:rm -rf path1

7、man指令

Linux的命令有很多参数,我们不可能全记住,可以通过查看联机⼿册获取帮助。
语法:man [选项] [章节号] 命令/函数
常⽤选项:

  • -k 根据关键字搜索联机帮助
  • -num 只在第num章节查找
  • -a 将所有章节的都显⽰出来,⽐如man printf 它缺省从第⼀章开始搜索,知道就停⽌,直到所有章节都搜索完毕,当按下q退出。

章节号:man⼿册分为9章(不同系统可能会有差别)

  • 1 是普通的命令
  • 2 是系统调⽤,如open,write之类的(通过这个,⾄少可以很⽅便的查到调⽤这个函数,需要加什么头⽂件)
  • 3 是库函数,如printf,fread是特殊⽂件,也就是/dev下的各种设备⽂件
  • 4 略
  • 5 是指⽂件的格式,⽐如passwd,就会说明这个⽂件中各个字段的含义
  • 6 是给游戏留的,由各个游戏⾃⼰定义
  • 7 是附件还有⼀些变量,⽐如像environ这种全局变量在这⾥就有说明
  • 8 是系统管理⽤的命令,这些命令只能由root使⽤,如ifconfig
  • 9 略

举例:

  1. 查看printf指令:man printf

  2. 查看系统调⽤:man 2 fork

  3. 查看C库函数:man 3 printf

  4. 查看变量:man 7 signal

  5. 查看man⼿册⾃⼰:man man

8、cp指令

语法:cp [选项] 源文件或目录 目标文件或目录
功能:复制⽂件或⽬录
说明:

  • cp指令⽤于复制⽂件或⽬录。
  • 如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中。

常⽤选项:

  • -f 强⾏复制⽂件或⽬录,不论⽬的⽂件或⽬录是否已经存在
  • -i 覆盖⽂件之前先询问⽤⼾
  • -r 递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。
  1. cp普通文件:cp myfile.txt myfile-backup.txt

  2. 将多个文件拷贝到指定路径下:cp *.txt dir

注意:*表⽰通配符,匹配所有.txt结尾的文件名。

  1. cp如果目标文件存在,就覆盖:cp myfile.txt myfile-backup.txt

  2. 递归强制拷贝整个目录:cp -rf test test-backup

9、mv指令

mv命令是move的缩写,可以⽤来移动⽂件或者将⽂件改名,经常⽤来备份⽂件或者⽬录。
语法:mv [选项] 源文件或目录 目标文件或目录
功能:

  • 视mv命令中第⼆个参数类型的不同(⽬标⽂件或⽬标⽬录),mv命令将⽂件重命名或将其移⾄⼀个新的⽬录中。
  • 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬录),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。
  • 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源⽂件均移⾄⽬标⽬录中。

常⽤选项:

  • -f :如果⽬标⽂件已经存在,不会询问⽽直接覆盖
  • -i:若⽬标⽂件已经存在时,就会询问是否覆盖!

举例:

  1. 更改名称:mv myfile.txt yourfile.txt

  2. 如果当前路径存在同名文件,改名即覆盖:mv yourfile.txt myfile.txt

  3. 如果当前路径存在同名文件,改名前可以添加 i 选项,让系统提出警告供用户做选择:mv -i yourfile.txt myfile.txt

  4. 移动文件:mv myfile.txt temp

  5. 移动目录:mv tmp tmp1

10、cat指令

语法:cat [选项] 文件
功能:查看⽬标⽂件的内容
常⽤选项:

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

举例:
先使用命令行构建多行文本:cnt=0; while [ $cnt -le 10 ]; do echo "hello Linux"; let cnt++; done > temp.txt

  1. 查看文件内容:cat temp.txt

修改temp.txt,使其携带多行空行:vim temp.txt
(先点击 i 进入编辑模式,编辑完成后点击Esc退出编辑模式,再输入:wq保存并退出)

  1. 对非空输出行编号:cat -b temp.txt

  2. 对输出的所有行编号:cat -n temp.txt

  3. 多行空行压缩成⼀行:cat -s temp.txt

11、more指令

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

  • -n 指定输出⾏数
  • q 退出more

举例:
先使用命令行输出多行文本:cnt=0; while [ $cnt -le 2000 ]; do echo "hello Linux"; let cnt++; done > temp.txt

  1. 指定输出行数:more -10 temp.txt

12、less指令

  • less⼯具也是对⽂件或其它输出进⾏分⻚显⽰的⼯具,应该说是linux正统查看⽂件内容的⼯具,功能极其强⼤。

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

  • 但若使用了 less 时,就可以使用 [pageup] [pagedown] 以及 上、下等按键的功能来往前往后翻看文件,更容易用来查看⼀个文件的内容。

  • 除此之外,在 less ⾥头可以拥有更多的搜索功能,不⽌可以向下搜,也可以向上搜。

语法:less [参数] 文件
功能:less与more类似,但使⽤less可以随意浏览⽂件,⽽more仅能向前移动,却不能向后移动,⽽且less在查看之前不会加载整个⽂件。

选项:

  • -i 忽略搜索时的⼤⼩写
  • -N 显⽰每⾏的⾏号
  • /字符串:向下搜索“字符串”的功能
  • ?字符串:向上搜索“字符串”的功能
  • n:重复前⼀个搜索(与 / 或 ? 有关)
  • N:反向重复前⼀个搜索(与 / 或 ? 有关)
  • q:quit

举例:
先使用命令行输出多行文本:cnt=0; while [ $cnt -le 2000 ]; do echo "hello Linux"; let cnt++; done > temp.txt

  1. 测试搜索功能:less -N temp.txt

13、head指令

head 与 tail 就像它的名字⼀样的浅显易懂,它是⽤来显⽰开头或结尾某个数量的⽂字区块,head ⽤来显⽰档案的开头⾄标准输出中,⽽ tail 想当然就是看档案的结尾。

语法:head [参数] 文件
功能:head ⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏。
选项:

  • -n 打印的行数

举例:

  1. 默认打印文件前10行:head temp.txt

  2. 打印前5行:head -5 temp.txt

14、tail指令

tail 命令从指定点开始将⽂件写到标准输出。使⽤ tail 命令的 -f 选项可以⽅便的查阅正在改变的⽇志⽂件,tail -f filename会把 filename ⾥最尾部的内容显⽰在屏幕上,并且不断刷新,使你看到最新的⽂件内容。

语法:tail [参数] 文件
功能:⽤于显示指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。
选项:
• -f 循环读取
• -n 打印的⾏数

举例:

  1. 默认打印后10行:tail temp.txt

  2. 打印后5行:tail -5 temp.txt

  3. 打印文件 [180,200] 行的内容:head -200 temp.txt | tail -20

注意:| 是管道,作用是将前一个命令的输出作为后一个命令的输入。

15、date指令

语法:date [选项] [+格式字符串]

在显⽰⽅⾯,使⽤者可以设定欲显⽰的格式,格式设定为⼀个+后接数个标记,其中常⽤的标记列表如下:

  • %H:⼩时
  • %M:分钟
  • %S:秒
  • %X:相当于%H:%M:%S
  • %d:日
  • %m:⽉份
  • %Y:完整年份
  • %F:相当于%Y-%m-%d

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

  • 时间->时间戳:date +%s
  • 时间戳->时间:date -d@时间戳

举例:

  1. 显示常规时间 :
    date
    date +%Y/%m/%d
    date +%Y/%m/%d-%H:%M:%S

  2. 显示时间戳:date +%s

  3. 时间戳转成时间:date +%Y/%m/%d-%H:%M:%S -d @时间戳

16、echo指令

语法:echo [选项] [输出内容]
功能:在终端输出指定的字符串或变量值。
常用选项:

  • -n:输出内容后不自动换行

举例:

  1. 输出普通字符串:echo "Hello Linux"
  2. 输出变量值:echo "My name is $name"
  3. 输出命令执行结果,用 $() 包裹命令:
echo"当前目录:$(pwd)"echo"系统时间:$(date)"
  1. 重定向输出到文件
    >(覆盖)或>>(追加)将输出写入文件:
echo"Hello World"> test.txtecho"Hello Linux">> test.txt

注意:使用 > 写入文件时,如果文件不存在,会新建文件;如果文件存在,则会先清空,在写入。

注意:在 Linux 中还可以使用 printf 函数。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询