Linux 常用指令

ls指令

对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

  • 语法:ls [option] [目录或文件]
  • 常用选项:
    • -a列出目录下的所有文件,包括以.开头的隐含文件。
    • -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
    • -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
    • -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
    • -l 列出文件的详细信息。
    • -n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
    • -F 在每个文件名后附上一个字符以说明该文件的类型,*表示可执行的普通文件;/表示目录;@
      示符号链接;|表示FIFOs;=表示套接字(sockets)。(目录类型识别)
    • -r 对目录反向排序。
    • -t 以时间排序。
    • -s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
    • -R 列出所有子目录下的文件。(递归)
    • -1 一行只输出一个文件

pwd指令

显示用户当前所在的目录。

  • 语法:pwd

cd指令

Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
在这里插入图片描述

  • 语法:cd [目录名]
  • 功能:改变工作目录。将当前工作目录改变到指定的目录下。
  • 用法:
    • cd ..返回上级目录
    • cd /home/litao/linux/绝对路径
    • cd ../day02/相对路径
    • cd ~进入用户家目录
    • cd -返回最近访问的目录

touch指令

touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件

  • 语法:touch [option] [file]
  • 选项:
    • -a--time=atime--time=access--time=use只更改存取时间
    • -c--no-create不建立任何文档
    • -d使用指定的日期时间,而非现在的时间。
    • -f此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
    • -m--time=mtime--time=modify只更改变动时间。
    • -r把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
    • -t使用指定的日期时间,而非现在的时间

mkdir指令

在当前目录下创建指定名字的目录。

  • 语法:mkdir [optipn] [name]
  • 选项:
    • -p--parents可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。
  • 用法:mkdir -p test/test1递归建立目录

rmdir指令

rmdir是删除命令

  • 语法:rmdir [-p] [dirName]
  • 功能:删除空目录
  • 适用对象:具有当前目录操作权限的所有使用者
  • 选项:
    • -p 子目录删除后,如果父目录也为空则一起删除

rm指令

rm指令可以同时删除文件或目录。

  • 语法:rm [option] [file]
  • 选项:
    • -f即使文件属性为只读(即写保护),亦直接删除
    • -i删除前逐一询问确认
    • -r删除目录及其下所有文件

man指令

man指令用于查询开发手册

  • 语法:man [commendName]
  • 功能:查询命令,按Q退出查询

补充理论

Linux下一切皆文件:

  1. 向显示器打印 -> 向显示器文件写入
  2. 用scanf从键盘获取数据 -> 从键盘文件读取

cp指令

cp指令用于复制文件或目录

  • 语法:cp [op] src dst
    • cp -rf dir1 dir2 拷贝目录
  • 功能:将源src拷贝到目的dst

echo指令

echo指令用于输出字符串

  • 语法:echo "hello world" [>] [fileName]
    • > fileName 清空文件
    • echo "hello world" >> fileName 追加重定向不会覆盖数据
  • 功能:将字符串输出到文件,默认输出到显示屏,可重定向写入到指定文件
  • 特点:
    • 如果重定向写入的文件不存在,则会新建一个空的文件
    • 每次重定向都会先清空文件,再写入(输入会覆盖)

cat指令

cat指令打印普通文件的内容,获取输入,查看小文件内容

  • 语法:cat [option] [fileName]
    • cat fileName打印文件内容
    • cat -n fileName输出文件的每一行并标行号(从1开始)
    • cat 什么都不加默认从键盘上读取用户输出并打印在显示器上
    • cat < fileName 输入重定向:从文件读取数据并打印在显示屏上
root@Niko:/home/niko# cat hello.txt
hello world
hello world


hello world
  • 选项:
    • -n所有行编号并输出(包括空行)
    root@Niko:/home/niko# cat -n hello.txt
     1	hello world
     2	hello world
     3	
     4	
     5	hello world
    
    • -b只对非空行标号,空行不标号但输出
    root@Niko:/home/niko# cat -b hello.txt
     1	hello world
     2	hello world
    
    
     3	hello world
    
    • -s不输出多行空行,将多行空行转化为一个空行
    root@Niko:/home/niko# cat -s hello.txt
    hello world
    hello world
    
    hello world
    
  • 功能:从数据源获取数据并打印
  • 选项可以搭配使用:-s + -n -> 去除多行空行,只保留一行空行,并对保留的所有行标号
root@Niko:/home/niko# cat -sn hello.txt
     1	hello world
     2	hello world
     3	
     4	hello world

mv指令

移动普通文件或文件夹

  • 语法:mv src dst
    • dst可以是目录名,等同于windows下的剪切并复制
    • dst可以是文件名,src会直接覆盖dst文件,相当于windows下的重命名操作;如果dst不存在,系统会新建一个同名文件
    • dst也可以带有路径:\a\b\c\hello.txt
  • 功能:剪切、拷贝、重命名

tac指令

从文件结尾倒序打印文件

  • 语法:tac fileName

less指令

输出大文件。

  • 语法:less [option] fileName
  • 功能:当文件过长时,用cat指令打印会导致刷屏,less指令功能与cat指令功能相同,但是less不会将文件内容全部输出,一次只会显示一整屏,按上下键可上翻下翻文件,按Q退出浏览
  • 选项:
    • -N输出行标号
    • /字符串向下搜索“字符串”
    • ?字符串向上搜索字符串

head指令

多用于查看大文件的开头。

  • 语法:head [参数] [文件]
  • 功能:默认打印文件内容的前十行
  • 选项:
    • -<行数>显示的行数

tail指令

查看文件的后若干行。

  • 语法:tail [参数] [文件]
  • 功能:默认打印文件内容的前后十行
  • 选项:
    • -<行数>显示的行数

管道指令|

将不同命令的能力级联在一起,进而达到目的。

  • 示例:head -5011 hello.txt | tail -5001
  • 作用:显示hello.txt文件的第5001行到5011行

date命令

显示当前时间。

  • 语法:date
  • 选项:
    • +表示要显示的日期
    • %Y
    • %m
    • %d
    • %H
    • %M
    • %S
    • %s时间戳(从1970年1月1日到现在所经过的秒数)
niko@debian41:~$ date
2026年 04月 09日 星期四 19:35:46 CST

显示年
niko@debian41:~$ date +%Y
2026

显示任意连字符
niko@debian41:~$ date +%Y-
2026-

年-月
niko@debian41:~$ date +%Y-%m
2026-04

年-月-日
niko@debian41:~$ date +%Y-%m-%d
2026-04-09

年-月-日-时
niko@debian41:~$ date +%Y-%m-%d-%H
2026-04-09-19

年-月-时-分
niko@debian41:~$ date +%Y-%m-%d-%H-%M
2026-04-09-19-36

将时间戳对应的时间格式化输出
niko@debian41:~$ date +%Y-%m-%d-%H:%M -d @1775735112
2026-04-09-19:45
niko@debian41:~$ date +%Y-%m-%d-%H:%M -d @0
1970-01-01-08:00

cal指令

显示当前月份的日历信息。

  • 语法:cal
  • 选项:-3显示当前月的前一个月和后一个月的日历
    • cal [year]查看指定年的所有月份的日历
niko@debian41:~$ cal
      四月 2026         
日 一 二 三 四 五 六  
          1  2  3  4  
 5  6  7  8  9 10 11  
12 13 14 15 16 17 18  
19 20 21 22 23 24 25  
26 27 28 29 30        
                      
niko@debian41:~$ cal -3
      三月 2026               四月 2026               五月 2026         
日 一 二 三 四 五 六  日 一 二 三 四 五 六  日 一 二 三 四 五 六  
 1  2  3  4  5  6  7            1  2  3  4                  1  2  
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   3  4  5  6  7  8  9  
15 16 17 18 19 20 21  12 13 14 15 16 17 18  10 11 12 13 14 15 16  
22 23 24 25 26 27 28  19 20 21 22 23 24 25  17 18 19 20 21 22 23  
29 30 31              26 27 28 29 30        24 25 26 27 28 29 30  
                                            31                

niko@debian41:~$ cal 2026
                            2026
         一月                    二月                    三月           
日 一 二 三 四 五 六  日 一 二 三 四 五 六  日 一 二 三 四 五 六  
             1  2  3   1  2  3  4  5  6  7   1  2  3  4  5  6  7  
 4  5  6  7  8  9 10   8  9 10 11 12 13 14   8  9 10 11 12 13 14  
11 12 13 14 15 16 17  15 16 17 18 19 20 21  15 16 17 18 19 20 21  
18 19 20 21 22 23 24  22 23 24 25 26 27 28  22 23 24 25 26 27 28  
25 26 27 28 29 30 31                        29 30 31              
                                                                  

         四月                    五月                    六月           
日 一 二 三 四 五 六  日 一 二 三 四 五 六  日 一 二 三 四 五 六  
          1  2  3  4                  1  2      1  2  3  4  5  6  
 5  6  7  8  9 10 11   3  4  5  6  7  8  9   7  8  9 10 11 12 13  
12 13 14 15 16 17 18  10 11 12 13 14 15 16  14 15 16 17 18 19 20  
19 20 21 22 23 24 25  17 18 19 20 21 22 23  21 22 23 24 25 26 27  
26 27 28 29 30        24 25 26 27 28 29 30  28 29 30              
                      31                                          

         七月                    八月                    九月           
日 一 二 三 四 五 六  日 一 二 三 四 五 六  日 一 二 三 四 五 六  
          1  2  3  4                     1         1  2  3  4  5  
 5  6  7  8  9 10 11   2  3  4  5  6  7  8   6  7  8  9 10 11 12  
12 13 14 15 16 17 18   9 10 11 12 13 14 15  13 14 15 16 17 18 19  
19 20 21 22 23 24 25  16 17 18 19 20 21 22  20 21 22 23 24 25 26  
26 27 28 29 30 31     23 24 25 26 27 28 29  27 28 29 30           
                      30 31                                       

         十月                   十一月                   十二月           
日 一 二 三 四 五 六  日 一 二 三 四 五 六  日 一 二 三 四 五 六  
             1  2  3   1  2  3  4  5  6  7         1  2  3  4  5  
 4  5  6  7  8  9 10   8  9 10 11 12 13 14   6  7  8  9 10 11 12  
11 12 13 14 15 16 17  15 16 17 18 19 20 21  13 14 15 16 17 18 19  
18 19 20 21 22 23 24  22 23 24 25 26 27 28  20 21 22 23 24 25 26  
25 26 27 28 29 30 31  29 30                 27 28 29 30 31    

find指令(重要)

Linux下find命令在目录结构中搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。

  • 语法:find [pathname] [options]
  • 选项:-name按文件名查找文件
查找命令文件ls
niko@debian41:~$ find /usr/bin -name ls
/usr/bin/ls

在家目录下查找文件
niko@debian41:~$ find ~/ -name test.c
/home/niko/113class/test.c

which指令

搜索系统指定指令。

  • 语法:which [commend]
  • 在功能上等价于find /usr/bin -name [command]
niko@debian41:~$ which ls
/usr/bin/ls

等价用法
niko@debian41:~$ find /usr/bin -name ls
/usr/bin/ls

whereis指令

用于找到程序的源、二进制文件或者手册。

  • 语法:whereis [command]

alias指令

设置命令的别名,在执行命令时,会优先执行命令的别名,而不是去/usr/bin目录下去搜索。需要注意的是,为命令设置的别名并不会在/usr/bin目录下存在,因为
命令的别名是内存级的,退出终端再打开就没有了。

  • 语法:alias ls='ls --color=auto'
  • 通过/usr/bin/ls执行的命令文件名不会带有颜色,但是直接执行ls命令文件名就有颜色,这说明直接执行的命令ls实际上是ls --color=auto
为ls设置别名mycmd
niko@debian41:~$ alias mycmd='ls'

niko@debian41:~$ ls
113class  bin  share-workspace

niko@debian41:~$ mycmd
113class  bin  share-workspace

别名并不存在指令目录下
niko@debian41:~$ ls /usr/bin/mycmd
ls: 无法访问 '/usr/bin/mycmd': 没有那个文件或目录

grep指令

行文本过滤工具。用于筛选在一个文件中包含关键字的所有行。默认大小写敏感。

  • 语法:grep [option] 'keyword' [filename]
  • 选项:
    • -v反向选择,保留不包含关键字的行
    • -n标行号
    • -i忽略大小写

top指令

列举系统中所有的任务。

  • 语法:top

zip/unzip指令

将目录或文件压缩成zip格式。

  • 语法:zip [option] file2.zip file1file1压缩成file2.zip
  • 选项:
    • -r递归处理,将指定目录下的所有文件和子目录一并处理,压缩目录时必须加上-r选项

unzip指令解压压缩包

  • 语法:unzip file2.zip [option] [目录]
  • 选项:
    • -d在指定目录下解包

rz/sz指令

这个工具用于windows机器和远端的Linux机器通过Xshell传输文件,安装完毕之后可以通过拖拽的方式将文件上传过去。

  • 安装命令:yum/apt install -y lrzsz
  • 使用方法:
    • rz [文件]跳出窗口选择文件上传到远端Linux
    • sz [文件]跳出窗口选择将Linux上的文件下载到本地的位置

tar指令

打包,解包

  • 语法:tar [option] [文件或目录]
  • 选项:
    • -c建立一个压缩文件
    • -z压缩
    • -f指定的压缩包名
    • -x解压缩
    • -v显示压缩的文件
  • 推荐组合使用选项:
    • tar -czf test.tgz testtest文件压缩成test.tgz压缩包
    • tar -xzf test.tgz在当前目录下解压缩
    • tar -xzf test.tgz -C test1默认解压解包会在当前目录下进行,要想在指定目录下进行需要加上-C选项

scp指令

用于将打包的文件在不同Linux机器互传。

  • 语法:scp text.tgz 目标机器用户名@目标机器公网ip:目标机器目录路径
  • 密码输入的是目标机器上的用户密码,不回显

bc指令

bc指令可以很方便的进行浮点运算。

  • 语法:bc直接输入,进入计算器模式
  • + - * /四个运算符链接运算数,回车输出结果,输入quit退出计算器模式
  • 支持管道级联:echo 1+2+3+4+5 | bc输出15

uname指令

uname用来获取电脑和操作系统的相关信息。

  • 语法:uname [option]
  • 选项:
    • -a-all详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
    • lsb_release -acat /etc/os-release查看操作系统版本

重要的几个热键

  • 双击[Table]补齐命令
  • [Ctrl]+C终止当前的程序
  • [Ctrl]+R搜索用过的指令

Shell命令的运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。
而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

从广义上来讲,操作系统=操作系统内核+外壳程序,而大部分普通用户甚至部分程序员都不能很好的直接与操作系统的内核打交道,因此外壳诞生了,
外壳诞生的目的就是为了让用户能够更好的使用操作系统,而不用考虑繁琐复杂的命令。外壳程序可以将使用者的命令翻译给内核,同时将核心的处理结果反馈给使用者。

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的
操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序。

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运
行出结果,通过shell解析给用户。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐