Linux下的基础指令操作【详细介绍+示例】

引入

尊敬的用户们,欢迎来到本次关于Linux指令的博客。作为开源操作系统的代表,Linux一直以来备受用户们的欢迎和喜爱。然而,对于新手来说,Linux系统中的指令却可能显得有些陌生和复杂。因此,本次博客旨在为大家介绍一些Linux系统中常用的指令,并提供简单易懂的使用方法,帮助大家更好地使用Linux系统。让我们一起开始探索Linux指令的奥秘吧!

✍作者:电子科大不知名程序员


关于指令操作:几乎所有平台都是支持的,只不过指令操作是Linux专业程序员应该懂的

1.什么是操作系统?

操作系统的概念:操作系统是一款进行软硬件管理的软件

image-20230330165643745

2.操作系统存在的意义是什么?

​ 操作系统对软硬件进行合理管理(手段),以达到为上层用户提供良好的、稳定的、安全的运行环境的目的

Linux下的基本指令

指令究竟是在做什么?

Windows最开始是没有图形化界面的,因此我们目前使用的指令,就是模拟Windows的操作,在Linux系统中,指令是完成各种操作和任务的基础,具体介绍如下:

01、ls

我们可以使用 ls 命令列出当前目录下的所有文件和目录,语法如下:

语法:ls [选项] [目录或文件]

ls
ls directory_name

下面是 ls 命令的一些常用选项及其作用:

  • -l:以长格式列出文件信息。长格式包括文件权限、硬链接数、文件所有者、文件所属组、文件大小、最后修改时间和文件名等信息

    image-20230328202138736

  • -a:列出所有文件,包括隐藏文件。隐藏文件以点(.)开头

    image-20230328202151462

同时我们亦可采用ls -l -a的方式:

ls -l -a 这个命令可以简写为ls -la

ls -l -a 的后面几个命令选项可以交换顺序

image-20230328202324942

-l-a 可能是最常用的选项,因为它们可以提供非常详细的文件信息,同时也可以显示隐藏文件。其他选项则根据需要选择使用

02、pwd

pwd用于显示当前工作目录的路径名

语法:pwd

 pwd

image-20230328202828627

03、touch

touch用于在当前路径创建空白文件或者更新已有文件的访问和修改时间戳

语法:touch [选项] [文件名]

①创建空白文件

$ touch empty_file.txt

image-20230328203219197

②修改文件的访问和修改时间戳

$ touch file1.txt
$ touch -a file1.txt   # 仅更新访问时间戳
$ touch -m file1.txt   # 仅更新修改时间戳
$ touch -d "yesterday" file1.txt   # 使用指定日期时间更新时间戳
$ touch -r file2.txt file1.txt   # 使用另一个文件的时间戳更新指定文件的时间戳

image-20230328203506773

04、cd

cd 用于改变当前 shell 的工作目录,也就是进入一个指定的目录

语法:cd [目录名]

当我们查看隐藏文件时发现:

image-20230328203746050

对于.作为文件名,表示当前路径 . .作为文件名,表示上级路径

image-20230328204034825

image-20230328204142310

以上我们使用的是相对路径,我们还可以通过cd+绝对路径的方式访问:

image-20230328204411658

总结如下:

①进入指定目录

cd /home/user/test    # 进入 /home/user/test 目录
cd ../test            # 进入当前目录的上一级目录中的 test 目录

②进入主目录

cd          # 进入当前用户的主目录
cd ~        # 进入当前用户的主目录

image-20230328204537607

③进入上一级目录

cd ..       # 进入上一级目录

注意:

如果用户没有进入指定目录的权限,则会提示 "permission denied"

如果用户输入的目录不存在,则会提示 "No such file or directory"

用户可以使用 pwd 指令查看当前所在的工作目录。

05、mkdir

mkdir 用于创建目录

语法:mkdir [选项] dirname(目录名)

①创建单个目录:

mkdir dir1  
mkdir dir2
mkdir dir3

image-20230328205013542

②创建多个目录:

mkdir dir4 dir5 dir6

image-20230328205147709

③递归创建多个目录

-p 选项表示递归创建目录,如果上层目录不存在,则会一并创建上层目录和目标目录

mkdir -p dir1/dir1.1/dir1.1.1

image-20230328205259946

因此,-p 选项非常方便,可以一次性创建多个目录,并且可以避免因为上层目录不存在而导致创建目录失败的问题

06、rmdir

rmdir 用于删除空目录

语法:rmdir [选项] [文件名]

image-20230328205758780

只能删除空目录!

①删除单个空目录:

rmdir dir2
rmdir dir3

image-20230328210002267

②递归删除目录

rmdir dir1/dir1.1/dir1.1.1

image-20230328210136206

注意:

如果用户没有删除目录的权限,则会提示 "permission denied"

如果用户尝试删除非空目录,则会提示 "Directory not empty",除非用 -p 选项递归删除目录

07、rm

rm 用于删除文件或目录

语法:rm [选项] [文件名】

下面是 rm 命令的一些常用选项及其作用:

  • -f:表示强制删除,不提示用户确认
  • -r:表示递归删除目录,可以删除非空目录及其子目录和文件
  • -i:表示交互式删除,每个文件或目录删除前会提示用户确认
  • -v:表示详细模式,打印每个被删除的文件或目录名称

①删除单个文件:

rm empty_file.txt

②删除空目录:

//rmdir 用于删除空目录
rmdir dir6
//rm -r 用于删除目录(可以删除非空目录及其子目录和文件)
rm -r empty

image-20230328211811667

③交互式删除

使用 -i 选项交互式删除,每个文件或目录删除前会提示用户确认

rm -i file.txt

image-20230328211957661

④强制删除

使用 -f 选项强制删除,不提示用户确认

rm -f file2.txt

08、nano

nano 是一个简单易用的文本编辑器,可用于编辑文本文件和配置文件等

语法:nano [文件名]

image-20230328213002660

执行后进入编辑界面:

image-20230328213100473
  • 保存文件:按下 Ctrl+O 保存文件
  • 退出编辑器:按下 Ctrl+X 退出编辑器

我们可以试着书写一个代码:

touch Hello.c   //创建
nano Hello.c    //编辑

image-20230328213354987

gcc Hello.c用gcc编译C文件,再./a.out执行刚才编译好的可执行文件:

image-20230328213758471

我们在Linux中写下了第一个C代码!

09、cat

cat 指令是一个常用的文本文件操作工具,用于查看、连接、创建和编辑文本文件

语法:cat [选项] [文件名]

下面是 cat 命令的一些常用选项及其作用:

  • -b:表示对非空白行进行行号显示
  • -n:表示对所有行进行行号显示
  • -v:表示显示控制字符

①查看文件内容

cat Hello.c

image-20230328214303539

②显示行号

cat -n Hello.c

image-20230328214401042

我们使用以下命令:

cnt=0; while [ $cnt -le 10000 ] ; do echo "hello [$cnt]"; let cnt++; done > Test.txt

再:

ll

发现多了一个很大的文件:

image-20230330143710078

使用:

cat -n Test.txt   #使用-n选项显示行号

查看文件内容:

image-20230330143845847

③tac

cat vs tac:其命令反过来打印,那么其打印的内容也反过来打印了

tac Test.txt
image-20230330144457453

10、man

man 可以用来查看系统命令的帮助文档,是系统命令的在线手册;man 是 “manual” 的缩写,它可以帮助用户快速了解和学习 Linux 命令。

语法:man [选项] [索引]

下面是 man 命令的一些常用选项及其作用:

  • -k--apropos:使用关键字查找相关命令
  • n 只在第n章节找

man手册分为 8 章:

1 是普通的命令;

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

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

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

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

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

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

①查找命令文档

man mkdir

image-20230328215000123

②在指定章查找

man 1 printf

image-20230328215101571

在查看帮助文档时,用户可以使用方向键和 PageUp/PageDown 键来滚动文档。按下 q 键退出文档

11、cp

cp 指令是用来复制文件和目录的命令(前提是目标文件或目录存在)

语法:cp [选项] 源文件或目录 目标文件或目录

下面是 cp 命令的一些常用选项及其作用:

  • -i:在复制前询问是否覆盖目标文件,避免误操作
  • -r :复制目录及其子目录和文件。如果不加 -r-R 选项,则只能复制单个文件,无法复制目录
  • -p:复制文件时保留文件属性,例如文件权限、修改时间等
  • -f:强制复制,即覆盖已存在的目标文件

①复制单个文件

//把 file1.txt 复制为 file2.txt
cp file1.txt file2.txt

②复制多个文件

file1.txt file2.txt file3.txt dir1/
image-20230328215813573

这个命令将把 file1.txtfile2.txtfile3.txt 复制到 dir1/ 目录下

③复制目录

//注意有空格
cp -r dir1/ dir2/

image-20230329154055521

这个命令将把 dir1/ 目录及其子目录和文件复制到 dir2/ 目录下

12、mv

mv指令用于移动或重命名文件或目录

语法: mv [选项] 源文件或目录 目标文件或目录

下面是 mv 命令的一些常用选项及其作用:

  • -f:强制执行,不询问用户
  • -i:交互式操作,询问用户是否覆盖目标文件

①将文件移动到目录中

mv file1.txt dir1/

image-20230330123913883

​ ②将文件重命名

mv file2.txt file.txt

这里将将文件file1.txt重命名为file.txt

③将目录中的所有文件移动到另一个目录中

mv dir1/* dir2/

image-20230330124228995

④将目录移动到另一个目录中

mv dir1/ dir2/

需要注意的是,mv指令会直接覆盖目标位置已有的文件,因此在执行mv指令前,一定要确认操作的目标位置是否正确。同时,对于重要文件的操作,建议备份文件,以防止误操作导致文件丢失

13、tree

tree指令是一个用于显示目录结构的工具,其可以以树形结构展示目录及其子目录中的文件和文件夹。使用tree指令可以更直观地了解目录结构,方便用户查找和管理文件

语法:tree 目标目录

tree指令需要安装,安装指令为:

yum install -y tree

我们一般使用 :

tree .   #显示当前目录结构
tree ..  #显示上级目录结构

image-20230330130012899

14、echo

echo指令是一个用于在终端输出文本的工具,其可以输出字符串、变量、特殊字符等内容。使用echo指令可以方便地在终端输出信息,例如提示用户操作结果、输出日志等

语法:echo “内容”

需要注意的是:

输出内容时,一般建议加双引号;

如果不加重定向符号,默认在显示器输出,所以可以利用重定向操作符向某个文件中输出内容;

>    //输出重定向
>>   //追加重定向

①默认像屏幕输出

echo "hello"

image-20230330130726078

②利用追加重定向在文件中输出内容,若该文件不存在则会自动创建

echo "hello">>file.txt

image-20230330130841924

15、more

more指令用于分屏显示文本的工具,其可以将大文件分成一页一页的展示,方便用户逐页查看。使用more指令可以更好地阅读文本文件,方便用户在终端中查看大量的信息

功能类似cat

语法: more [选项] [文件]

下面是 more 命令的一些常用选项及其作用:

  • -d:显示每页的提示符,以便用户知道何时翻页
  • -c:在每页底部显示百分比和行号
  • -n:指定每页显示的行数
more Hello.c

image-20230330131243326

16、less

less指令也是一个用于分屏显示文本的工具,类似于more指令。它可以将大文件分成一页一页的展示,同时提供更多的功能,例如搜索、跳转、翻页等,方便用户快速查找和阅读文本文件

语法: less [选项] [文件]

less 的用法强于more,在 more 的时候,我们并没有办法向前面翻, 只能往后面看;但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易来查看一个文件的内容。

One more thing,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

下面是 less 命令的一些常用选项及其作用:

  • -d:显示每页的提示符,以便用户知道何时翻页
  • -N:显示行号
  • -i:忽略大小写

cat、more、less比较:

cat:不适合看大文本,适合小文本或者代码片段

more&less:查看大文本、大型代码,日志

17、head与tail

head指令用于展示文件的头部内容,默认情况下,它会展示文件的前10行内容

语法: head [参数] [文件]

我们创建一个有一万行的文件:

cnt=0; while [ $cnt -le 10000 ] ; do echo "hello [$cnt]"; let cnt++; done > File_10000.txt

image-20230330145228597

①展示文件前10行内容(默认):

head File_10000.txt

image-20230330150259233

②指定需要展示的行数

head -n 5 File_10000.txt

image-20230330150415932

tail指令用于展示文件的尾部内容,默认情况下,它会展示文件的后10行内容

语法:tail [参数] [文件]

①展示文件后10行内容

tail File_10000.txt

image-20230330150615871

②指定需要展示的行数

tail -n 5 File_10000.txt

image-20230330150710990

使用head和tail指令,我们可以方便地展示文件的头部和尾部内容,并且可以通过选项来自定义展示的行数


One more thing

有了head和tail指令,我们可以很轻松的实现取头尾的内容,那么如何取中间的内容呢?

假如我们需要取该文件1000-1010行的内容,如何实现❓

方式1:

我们先用head指令取前1010行内容,再使用>重定向将这1010行写入到一个临时文件中,再读取这个临时文件的尾部10行即可:

head -n 1010 File_10000.txt > tmp.txt
tail -n 10 tmp.txt

image-20230330151715077

这个方式有创建临时文件的操作

方式2:

head -1010 File_10000.txt| tail -10

image-20230330152152236

其中|符号称之为管道

18、date

date指令用于显示和设置系统的日期和时间。该指令可以输出当前的日期和时间,也可以用于修改系统的日期和时间

语法: date +[参数]

下面是 date 命令的一些常用选项及其作用:

  • %Y:表示4位数的年份。
  • %m:表示2位数的月份。
  • %d:表示2位数的日期。
  • %H:表示24小时制的小时数。
  • %M:表示分钟数。
  • %S:表示秒数。
  • %a:表示缩写的星期几。
  • %A:表示完整的星期几。

①显示当前时间

date

image-20230330152917258

②显示当前日期

date +%Y-%m-%d

image-20230330153055805

③显示当前时间戳

date +%s

image-20230330153153867

在Linux系统下,时间戳是指从“1970年1月1日 00:00:00 UTC”开始所经过的秒数

19、cal

cal是一个用于显示日历的命令。它可以显示当前月份的日历,也可以显示指定月份或年份的日历。

语法: cal [参数][月份][年份]

下面是 cal 命令的一些常用选项及其作用:

  • -1:只显示当前月份的日历,不显示前后月份的日期。
  • -3:显示当前月份及前后两个月份的日历。
  • -y:以年份为单位显示日历,每行显示3个月份。

①显示当前月份的日历

cal

image-20230330153649365

②显示指定月份的日历

cal 4 2023

image-20230330153737011

③显示与当前月相邻月的日历

image-20230330153819764

20、find、whereis&which

find命令可以在指定目录下查找文件或目录,并对找到的文件或目录进行指定的操作,比如打印、删除等

语法: find [参数] [文件]

find命令支持的选项非常多,以下是一些常用的选项:

  • -name:按照文件名查找。
  • -type:按照文件类型查找,包括普通文件、目录、符号链接等。
  • -mtime:按照文件修改时间查找。
  • -size:按照文件大小查找。
  • -user:按照文件所有者查找。
  • -group:按照文件所属组查找。
  • -perm:按照文件权限查找。

①查找所有扩展名为.txt的文件

find -name "*.txt"

image-20230330154357499

②查找所有修改时间内在7天以内的文件

find -mtime -7

image-20230330154451650


whereis命令可以查找指定命令的可执行文件、源代码文件和帮助文档

语法: whereis [command](whereis命令没有选项)

示例:

whereis ls

image-20230330154650913

从上面的输出可以看出,whereis命令找到了ls命令的可执行文件和帮助文档


which命令可以查找指定命令的可执行文件所在路径

语法:which [command](which命令没有选项)

示例:

which ls

image-20230330154840313

从上面的输出可以看出,which命令找到了ls命令的可执行文件所在路径

21、grep

grep是Linux下的一个强大的文本搜索工具,可以在指定的文件或标准输入流中查找匹配某个模式的行,并将其输出到标准输出流(搜索并打印出来)

语法:grep [选项] [字符串] [目标文件]

grep命令支持的选项非常多,以下是一些常用的选项:

  • -i:忽略大小写。
  • -n:输出匹配行所在的行号。
  • -v:输出不匹配的行。
  • -w:匹配整个单词。

例如我们用nano命令修改File_10000文件:

image-20230330155628188

①查找关键字"Hello"所在的行:

grep "Hello" File_10000.txt

image-20230330155813709

若要标出行号:

grep -n "Hello" File_10000.txt

image-20230330155820030

②查找关键字"hello world"的行,并忽略大小写

grep -i "hello world" File_10000.txt

image-20230330160032895

22、zip/unzip指令

在Linux系统中,zip和unzip是两个常用的文件压缩和解压工具,可以帮助我们将多个文件或目录压缩成一个zip格式的归档文件,并可以对已压缩的zip文件进行解压操作

语法: zip [压缩文件.zip] [目录或文件]

tree指令需要安装,安装指令为:

yum install -y zip unzip

以下是几个常用的选项:

  • -r:递归压缩子目录中的文件。
  • -q:不输出压缩进度信息。
  • -m:压缩后删除原文件。

①压缩单个文件

zip file.zip file.txt

②压缩多个文件:

zip files.zip file1.txt file2.txt file3.txt

unzip命令可以解压zip格式的归档文件

语法: unzip [选项] [目录或文件]

以下是几个常用的选项:

  • -d:指定解压缩后的目录。
  • -q:不输出解压进度信息。

①解压到当前目录

unzip file.zip

image-20230330162958766

②解压到指定目录

unzip file.zip -d /path/to/directory

③解压并覆盖原文件

unzip -o file.zip

总之,zip和unzip是Linux系统中常用的文件压缩和解压工具,它们的使用非常简单,可以大大提高文件的存储和传输效率

23、tar

tar(tape archive)命令是一个非常常用的文件打包和压缩命令,它可以将多个文件或目录打包成一个单独的文件,也可以对已打包的文件进行压缩操作。

语法:tar [选项] [文件或目录]

  • -c:打包文件。
  • -x:解包文件。
  • -v:显示详细信息。
  • -f:指定文件名。
  • -z:使用gzip压缩文件。
  • -j:使用bzip2压缩文件。
  • -r:追加文件到归档文件末尾。

使用tar命令打包文件非常简单,只需要将要打包的文件或目录列表作为参数传递给tar命令即可:

tar -cvf Test.tar a.out dir1 dir2

image-20230330163457974

上述命令将a.out、dir1和dir2三个文件/目录打包成一个名为Test.tar的文件,并显示详细信息。

使用tar命令解压文件同样很简单,只需要指定-x选项并将打包文件名作为参数即可,例如:

tar -xvf Test.tar

image-20230330163628993

上述命令将Test.tar解压到当前目录下

总之,tar命令是Linux系统中非常强大的文件打包和压缩工具,可以帮助用户快速方便地打包、压缩和解压文件


✍当然,Linux系统指令非常丰富,本文所介绍的仅是其中的一部分,还有很多其他实用的指令没有涉及到。在实际应用中,需要根据具体的需求选择相应的指令进行操作。


One more thing

下面,我们试试理解一下Linux系统下的核心:📂文件系统!

👉 Linux下的“一切皆是文件”(Everything is a file)思想,它指的是在Linux系统中,所有的东西都是以文件的形式存在的,无论是硬件设备、网络连接还是进程等等,都可以被抽象成一个文件,并且可以使用文件的相关操作来进行管理!

思考:

Windows下创建一个空文件(文件里没有内容)
1.这个文件在哪里存着呢?磁盘?
2.这个文件要不要占据磁盘空间?——要占据空间!

文件存在属性数据的!属性也是一种数据,需要被保存在磁盘中

文件=内容+属性

对文件做操作:对内容和属性的操作

操作文件

操作属性


Linux下的根目录:

Windows下文件夹里可以新建文件夹
Linux目录里面也可以有新的目录

查看根目录文件夹:

image-20230330164238782

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

image-20221113152937561

所有的非目录文件一定是这棵树的叶子结点!

找到Window下的一个文件夹或文件,通常我们用什么定位这个文件呢?——路径

Linux下也是如此!

因为路径往往具备唯一性!

E:\Code_Clion\.idea         从根目录开始,定位文件的路径,称为绝对路径

除了绝对路径,我们还可以通过相对路径(相对当前所处的路径)来查找

绝对路径:麻烦,一般是某些配置文件中,进行对某种文件进行配置的时候采用
相对路径:用起来简单,后续指令操作的时候,常用路径定位方案

📣总之,熟练掌握Linux系统指令对于Linux系统的学习和使用都是非常重要的。希望本文可以为初学者提供一些指导和帮助,让大家更加轻松地学习和使用Linux系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值