尊敬的用户们,欢迎来到本次关于Linux指令的博客。作为开源操作系统的代表,Linux一直以来备受用户们的欢迎和喜爱。然而,对于新手来说,Linux系统中的指令却可能显得有些陌生和复杂。因此,本次博客旨在为大家介绍一些Linux系统中常用的指令,并提供简单易懂的使用方法,帮助大家更好地使用Linux系统。让我们一起开始探索Linux指令的奥秘吧!
✍作者:电子科大不知名程序员
关于指令操作:几乎所有平台都是支持的,只不过指令操作是Linux专业程序员应该懂的
1.什么是操作系统?
操作系统的概念:操作系统是一款进行软硬件管理的软件
2.操作系统存在的意义是什么?
操作系统对软硬件进行合理管理(手段),以达到为上层用户提供良好的、稳定的、安全的运行环境的目的
指令究竟是在做什么?
Windows最开始是没有图形化界面的,因此我们目前使用的指令,就是模拟Windows的操作,在Linux系统中,指令是完成各种操作和任务的基础,具体介绍如下:
我们可以使用 ls 命令列出当前目录下的所有文件和目录,语法如下:
语法:ls [选项] [目录或文件]
ls
ls directory_name
下面是 ls
命令的一些常用选项及其作用:
同时我们亦可采用ls -l -a
的方式:
ls -l -a
这个命令可以简写为ls -la
ls -l -a
的后面几个命令选项可以交换顺序
-l
和 -a
可能是最常用的选项,因为它们可以提供非常详细的文件信息,同时也可以显示隐藏文件。其他选项则根据需要选择使用
pwd
用于显示当前工作目录的路径名
语法:pwd
pwd
touch
用于在当前路径创建空白文件或者更新已有文件的访问和修改时间戳
语法:touch [选项] [文件名]
①创建空白文件
$ touch empty_file.txt
②修改文件的访问和修改时间戳
$ touch file1.txt
$ touch -a file1.txt # 仅更新访问时间戳
$ touch -m file1.txt # 仅更新修改时间戳
$ touch -d "yesterday" file1.txt # 使用指定日期时间更新时间戳
$ touch -r file2.txt file1.txt # 使用另一个文件的时间戳更新指定文件的时间戳
cd
用于改变当前 shell 的工作目录,也就是进入一个指定的目录
语法:cd [目录名]
当我们查看隐藏文件时发现:
对于.
作为文件名,表示当前路径; . .
作为文件名,表示上级路径
以上我们使用的是相对路径,我们还可以通过cd
+绝对路径的方式访问:
总结如下:
①进入指定目录
cd /home/user/test # 进入 /home/user/test 目录
cd ../test # 进入当前目录的上一级目录中的 test 目录
②进入主目录
cd # 进入当前用户的主目录
cd ~ # 进入当前用户的主目录
③进入上一级目录
cd .. # 进入上一级目录
注意:
如果用户没有进入指定目录的权限,则会提示
"permission denied"
如果用户输入的目录不存在,则会提示
"No such file or directory"
用户可以使用
pwd
指令查看当前所在的工作目录。
mkdir
用于创建目录
语法:mkdir [选项] dirname(目录名)
①创建单个目录:
mkdir dir1
mkdir dir2
mkdir dir3
②创建多个目录:
mkdir dir4 dir5 dir6
③递归创建多个目录
-p
选项表示递归创建目录,如果上层目录不存在,则会一并创建上层目录和目标目录
mkdir -p dir1/dir1.1/dir1.1.1
因此,-p
选项非常方便,可以一次性创建多个目录,并且可以避免因为上层目录不存在而导致创建目录失败的问题
rmdir
用于删除空目录
语法:rmdir [选项] [文件名]
只能删除空目录!
①删除单个空目录:
rmdir dir2
rmdir dir3
②递归删除目录
rmdir dir1/dir1.1/dir1.1.1
注意:
如果用户没有删除目录的权限,则会提示
"permission denied"
如果用户尝试删除非空目录,则会提示
"Directory not empty"
,除非用-p
选项递归删除目录
rm
用于删除文件或目录
语法:rm [选项] [文件名】
下面是 rm
命令的一些常用选项及其作用:
-f
:表示强制删除,不提示用户确认-r
:表示递归删除目录,可以删除非空目录及其子目录和文件-i
:表示交互式删除,每个文件或目录删除前会提示用户确认-v
:表示详细模式,打印每个被删除的文件或目录名称①删除单个文件:
rm empty_file.txt
②删除空目录:
//rmdir 用于删除空目录
rmdir dir6
//rm -r 用于删除目录(可以删除非空目录及其子目录和文件)
rm -r empty
③交互式删除
使用 -i
选项交互式删除,每个文件或目录删除前会提示用户确认
rm -i file.txt
④强制删除
使用 -f
选项强制删除,不提示用户确认
rm -f file2.txt
nano
是一个简单易用的文本编辑器,可用于编辑文本文件和配置文件等
语法:nano [文件名]
执行后进入编辑界面:
Ctrl+O
保存文件Ctrl+X
退出编辑器我们可以试着书写一个代码:
touch Hello.c //创建
nano Hello.c //编辑
gcc Hello.c
用gcc编译C文件,再./a.out
执行刚才编译好的可执行文件:
我们在Linux中写下了第一个C代码!
cat
指令是一个常用的文本文件操作工具,用于查看、连接、创建和编辑文本文件
语法:cat [选项] [文件名]
下面是 cat
命令的一些常用选项及其作用:
-b
:表示对非空白行进行行号显示-n
:表示对所有行进行行号显示-v
:表示显示控制字符①查看文件内容
cat Hello.c
②显示行号
cat -n Hello.c
我们使用以下命令:
cnt=0; while [ $cnt -le 10000 ] ; do echo "hello [$cnt]"; let cnt++; done > Test.txt
再:
ll
发现多了一个很大的文件:
使用:
cat -n Test.txt #使用-n选项显示行号
查看文件内容:
③tac
cat vs tac:其命令反过来打印,那么其打印的内容也反过来打印了
tac Test.txt
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
②在指定章查找
man 1 printf
在查看帮助文档时,用户可以使用方向键和 PageUp/PageDown 键来滚动文档。按下 q
键退出文档
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/
这个命令将把 file1.txt
、file2.txt
、file3.txt
复制到 dir1/
目录下
③复制目录
//注意有空格
cp -r dir1/ dir2/
这个命令将把 dir1/
目录及其子目录和文件复制到 dir2/
目录下
mv指令用于移动或重命名文件或目录
语法: mv [选项] 源文件或目录 目标文件或目录
下面是 mv
命令的一些常用选项及其作用:
①将文件移动到目录中
mv file1.txt dir1/
②将文件重命名
mv file2.txt file.txt
这里将将文件file1.txt重命名为file.txt
③将目录中的所有文件移动到另一个目录中
mv dir1/* dir2/
④将目录移动到另一个目录中
mv dir1/ dir2/
需要注意的是,mv指令会直接覆盖目标位置已有的文件,因此在执行mv指令前,一定要确认操作的目标位置是否正确。同时,对于重要文件的操作,建议备份文件,以防止误操作导致文件丢失
tree指令是一个用于显示目录结构的工具,其可以以树形结构展示目录及其子目录中的文件和文件夹。使用tree指令可以更直观地了解目录结构,方便用户查找和管理文件
语法:tree 目标目录
tree指令需要安装,安装指令为:
yum install -y tree
我们一般使用 :
tree . #显示当前目录结构
tree .. #显示上级目录结构
echo指令是一个用于在终端输出文本的工具,其可以输出字符串、变量、特殊字符等内容。使用echo指令可以方便地在终端输出信息,例如提示用户操作结果、输出日志等
语法:echo “内容”
需要注意的是:
输出内容时,一般建议加双引号;
如果不加重定向符号,默认在显示器输出,所以可以利用重定向操作符向某个文件中输出内容;
> //输出重定向
>> //追加重定向
①默认像屏幕输出
echo "hello"
②利用追加重定向在文件中输出内容,若该文件不存在则会自动创建
echo "hello">>file.txt
more指令用于分屏显示文本的工具,其可以将大文件分成一页一页的展示,方便用户逐页查看。使用more指令可以更好地阅读文本文件,方便用户在终端中查看大量的信息
功能类似cat
❓
语法: more [选项] [文件]
下面是 more
命令的一些常用选项及其作用:
more Hello.c
less指令也是一个用于分屏显示文本的工具,类似于more指令。它可以将大文件分成一页一页的展示,同时提供更多的功能,例如搜索、跳转、翻页等,方便用户快速查找和阅读文本文件
语法: less [选项] [文件]
less 的用法强于more,在 more 的时候,我们并没有办法向前面翻, 只能往后面看;但若使用了 less 时,就可以使用
[pageup][pagedown]
等按键的功能来往前往后翻看文件,更容易来查看一个文件的内容。One more thing,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
下面是 less
命令的一些常用选项及其作用:
cat、more、less比较:
cat:不适合看大文本,适合小文本或者代码片段
more&less:查看大文本、大型代码,日志
head指令用于展示文件的头部内容,默认情况下,它会展示文件的前10行内容
语法: head [参数] [文件]
我们创建一个有一万行的文件:
cnt=0; while [ $cnt -le 10000 ] ; do echo "hello [$cnt]"; let cnt++; done > File_10000.txt
①展示文件前10行内容(默认):
head File_10000.txt
②指定需要展示的行数
head -n 5 File_10000.txt
tail指令用于展示文件的尾部内容,默认情况下,它会展示文件的后10行内容
语法:tail [参数] [文件]
①展示文件后10行内容
tail File_10000.txt
②指定需要展示的行数
tail -n 5 File_10000.txt
使用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
这个方式有创建临时文件的操作
方式2:
head -1010 File_10000.txt| tail -10
其中|
符号称之为管道
date指令用于显示和设置系统的日期和时间。该指令可以输出当前的日期和时间,也可以用于修改系统的日期和时间
语法: date +[参数]
下面是 date
命令的一些常用选项及其作用:
%Y
:表示4位数的年份。%m
:表示2位数的月份。%d
:表示2位数的日期。%H
:表示24小时制的小时数。%M
:表示分钟数。%S
:表示秒数。%a
:表示缩写的星期几。%A
:表示完整的星期几。①显示当前时间
date
②显示当前日期
date +%Y-%m-%d
③显示当前时间戳
date +%s
在Linux系统下,时间戳是指从“1970年1月1日 00:00:00 UTC”开始所经过的秒数
cal是一个用于显示日历的命令。它可以显示当前月份的日历,也可以显示指定月份或年份的日历。
语法: cal [参数][月份][年份]
下面是 cal
命令的一些常用选项及其作用:
-1
:只显示当前月份的日历,不显示前后月份的日期。-3
:显示当前月份及前后两个月份的日历。-y
:以年份为单位显示日历,每行显示3个月份。①显示当前月份的日历
cal
②显示指定月份的日历
cal 4 2023
③显示与当前月相邻月的日历
find命令可以在指定目录下查找文件或目录,并对找到的文件或目录进行指定的操作,比如打印、删除等
语法: find [参数] [文件]
find
命令支持的选项非常多,以下是一些常用的选项:
-name
:按照文件名查找。-type
:按照文件类型查找,包括普通文件、目录、符号链接等。-mtime
:按照文件修改时间查找。-size
:按照文件大小查找。-user
:按照文件所有者查找。-group
:按照文件所属组查找。-perm
:按照文件权限查找。①查找所有扩展名为.txt
的文件
find -name "*.txt"
②查找所有修改时间内在7天以内的文件
find -mtime -7
whereis命令可以查找指定命令的可执行文件、源代码文件和帮助文档
语法: whereis [command](whereis命令没有选项)
示例:
whereis ls
从上面的输出可以看出,whereis命令找到了ls命令的可执行文件和帮助文档
which命令可以查找指定命令的可执行文件所在路径
语法:which [command](which命令没有选项)
示例:
which ls
从上面的输出可以看出,which命令找到了ls命令的可执行文件所在路径
grep是Linux下的一个强大的文本搜索工具,可以在指定的文件或标准输入流中查找匹配某个模式的行,并将其输出到标准输出流(搜索并打印出来)
语法:grep [选项] [字符串] [目标文件]
grep
命令支持的选项非常多,以下是一些常用的选项:
-i
:忽略大小写。-n
:输出匹配行所在的行号。-v
:输出不匹配的行。-w
:匹配整个单词。例如我们用nano
命令修改File_10000文件:
①查找关键字"Hello"所在的行:
grep "Hello" File_10000.txt
若要标出行号:
grep -n "Hello" File_10000.txt
②查找关键字"hello world"的行,并忽略大小写
grep -i "hello world" File_10000.txt
在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
②解压到指定目录
unzip file.zip -d /path/to/directory
③解压并覆盖原文件
unzip -o file.zip
总之,zip和unzip是Linux系统中常用的文件压缩和解压工具,它们的使用非常简单,可以大大提高文件的存储和传输效率
tar(tape archive)命令是一个非常常用的文件打包和压缩命令,它可以将多个文件或目录打包成一个单独的文件,也可以对已打包的文件进行压缩操作。
语法:tar [选项] [文件或目录]
-c
:打包文件。-x
:解包文件。-v
:显示详细信息。-f
:指定文件名。-z
:使用gzip压缩文件。-j
:使用bzip2压缩文件。-r
:追加文件到归档文件末尾。使用tar命令打包文件非常简单,只需要将要打包的文件或目录列表作为参数传递给tar命令即可:
tar -cvf Test.tar a.out dir1 dir2
上述命令将a.out、dir1和dir2三个文件/目录打包成一个名为Test.tar的文件,并显示详细信息。
使用tar命令解压文件同样很简单,只需要指定-x
选项并将打包文件名作为参数即可,例如:
tar -xvf Test.tar
上述命令将Test.tar解压到当前目录下
总之,tar命令是Linux系统中非常强大的文件打包和压缩工具,可以帮助用户快速方便地打包、压缩和解压文件
✍当然,Linux系统指令非常丰富,本文所介绍的仅是其中的一部分,还有很多其他实用的指令没有涉及到。在实际应用中,需要根据具体的需求选择相应的指令进行操作。
下面,我们试试理解一下Linux系统下的核心:文件系统!
Linux下的“一切皆是文件”(Everything is a file)思想,它指的是在Linux系统中,所有的东西都是以文件的形式存在的,无论是硬件设备、网络连接还是进程等等,都可以被抽象成一个文件,并且可以使用文件的相关操作来进行管理!
思考:
Windows下创建一个空文件(文件里没有内容)
1.这个文件在哪里存着呢?磁盘?
2.这个文件要不要占据磁盘空间?——要占据空间!
文件存在属性数据的!属性也是一种数据,需要被保存在磁盘中
文件=内容+属性
对文件做操作:对内容和属性的操作
操作文件
操作属性
Linux下的根目录:
Windows下文件夹里可以新建文件夹
Linux目录里面也可以有新的目录
查看根目录文件夹:
Linux的目录结构,整体是一个多叉树的样子
所有的非目录文件一定是这棵树的叶子结点!
找到Window下的一个文件夹或文件,通常我们用什么定位这个文件呢?——路径
Linux下也是如此!
因为路径往往具备唯一性!
E:\Code_Clion\.idea 从根目录开始,定位文件的路径,称为绝对路径
除了绝对路径,我们还可以通过相对路径(相对当前所处的路径)来查找
绝对路径:麻烦,一般是某些配置文件中,进行对某种文件进行配置的时候采用
相对路径:用起来简单,后续指令操作的时候,常用路径定位方案
总之,熟练掌握Linux系统指令对于Linux系统的学习和使用都是非常重要的。希望本文可以为初学者提供一些指导和帮助,让大家更加轻松地学习和使用Linux系统。