前言
文章细分了各个知识点,可在目录中快速跳转。
本文将解析linux常见的对文件进行增删查改等一系列操作的指令,并插入介绍一些常见概念。
一、常用指令
1. 基本查看与路径跳转
1.1文件与目录
- 文件
文件 = 文件属性 + 文件内容
文件属性:文件名、文件类型、文件的创建时间等
因此我们对文件的操作都可以归为两类,一类是对文件属性,一类是对文件内容。
- 目录
可以粗略理解为window中的“文件夹”。
- 任何目录下都默认具有两个隐藏目录
.
和..
.
表示当前路径
..
表示上一级路径
- 相对路径:
./......
表示从.
(当前路径)开始向下级路径访问- 路径分隔符:在window中我们使用
\
, 而linux中使用/
1.两个路径分隔符之间一定是一个目录
2.路径最末端,一定是一个普通文件或者目录
1.2 ls 指令(显示文件)
语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
常用选项:
ls -l
,查看详细的文件属性ls -a
,格外显示隐藏文件(以.
开头的文件)
1.3 pwd (查看当前目录)
显示用户当前所在的目录
1.4 clear (清屏)
清空屏幕显示的内容
1.5 whoami (查看用户名)
查看当前登陆的用户名
1.6 cd (跳转路径)
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法 : cd [路径]
(可使用绝对路径与相对路径)
功能:改变工作目录。将当前工作目录改变到指定的目录下。
常用选项:
cd -
跳转到上一次访问的路径cd ~
跳转到家目录(usr,每个用户都拥有独立的家目录)
window的桌面本质是一个文件夹,存放在家目录(一般在C盘,名为“用户”)中,当用户开机登录时流程如下:
- 确认用户名
- 根据用户名找到该用户家目录下的桌面文件夹
- 将桌面文件夹图形化显示
1.7 指令的本质
- 指令的本质就是程序,安装/卸载就是把可执行程序拷贝/删出到系统路径下。
which
指令,可以打印出指定的指令名称在系统中存放的路径。可以用来检验指令是否存在。
alias
指令,用于重命名指令。我们注意到使用which查看 ls 时,显示了上图红线代码,再显示ls所在路径,这就是系统默认对ls进行了重命名,使其显示的内容带有颜色。还有常用的系统自带的ll
(ls -l
)也是同理。
2. 文件的增删查改
2.1 对文件属性(外壳)
touch(创建文件)
语法 : touch [文件名]
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件 。
- 不能创建目录
mkdir(创建目录)
语法 : mkdir [选项] [目录名]
功能:在当前目录下创建一个名为 “xxx”的目录
常用选项:
–p (目录名)/(目录名)/...
可以一次创建多个目录,每一个目录都在前一个目录下创建。
rmdir(删除空目录)
语法 : rmdir [-p] [目录名]
功能:删除空目录,不能是文件
常用选项:
remdir -p
当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
rm(删除)
语法 : rm [选项] [文件名或目录名]
功能:删除文件或目录
常用选项:
- 删除普通文件,若用户为root,需要二次确认输入y(yes)/ n(no)
-f
跳过二次确认
-r
删除目录(非空为空均可)
-rf
跳过二次确认
rm (前缀)*(后缀)
删除当前目录下所有文件。
*
:一个通配符,匹配任意文件名
start(查看acm时间)
查看超详细的文件属性,如文件的acm时间(即最后一次访问,最后一次修改文件内容,最后一次修改文件属性)。
man(指令手册)
语法 : man [选项] 命令
功能:查找linux中指令的解析
- 云服务器读者可以输入代码
yum -y install man-pages
恢复被精简的man man
指令,该指令可查看man本身作为查找工具的指令的用法,如语法man [对应数字选项] man
使用对应选项的范围进行查找
1 普通的命令
2 系统调用, 如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 库函数, 如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 文件的格式, 比如passwd, 就会说明这个文件中各个字段的含义
6 给游戏留的, 由各个游戏自己定义
7 附件和一些变量, 比如向environ这种全局变量在这里就有说明
8 系统管理用的命令, 这些命令只能由root使用,如ifconfig
tree(树状图展示目录结构)
语法 : tree
功能:以树状图形式打印当前目录(简易的图形化页面)
- 安装:
yum -y install tree
- 使用时,如果打印如根目录,会由于文件过多疯狂打印,对于这种指令失控的情况,连续使用
ctrl + c
,可以终止运行
cp(拷贝)
语法:cp [选项] [源文件或目录] [目标文件或目录] (/重命名)
,可使用绝对和相对路径,如果想重命名拷贝的文件,可以在目标路径后加上 / [新名] 。
功能:复制文件或目录
常用选项:
-r
递归处理,将指定目录下的文件与子目录一并处理,需要二次确认
-rf
跳过二次确认
- 同一目录下不能存在同名文件
mv(移动)
语法:mv [选项] [原文件或目录] [目标路径 / 新文件名] (/新名)
,可使用绝对和相对路径,如果想重命名文件,可以在目标路径后加上/ [新名] 。
功能:移动文件或者将文件改名
- 当第二个参数类型是文件时,mv命令完成文件重命名
- 第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
2.2 重定向
2.2.1 Linux设计理念
设计理念:一切皆文件。
将各种东西都看作文件,对文件进行操作,这样可以使系统以统一的方式进行管理。如对于显示器,我们想把内容打印到显示器上,在linux中的操作就是向显示器对应的文件中写入内容。
2.2.2 概念与性质
输出重定向:
>
- 概念:改变写入的方向(文件)。
- 使用方法:
指令名 >
- 示例:如 echo 指令本来是用来在显示器上打印数据,由设计理念可知,其实是对显示器文件进行写入。使用重定向后,由向显示器文件写入变为对普通文件的写入,此时
“hello linux”
作为文本内容存储到了text文件中,这就是改变了写入的方向(文件),由于是输出操作,所以叫输出重定向。- 性质:
- 清空文件:每次重定向,都会清空文件内容再进行写入
> 文件名
- 创建新文件:不存在文件时,会创建一个空文件
> 文件名
- 与C语言关系:相当于fopen (“text.txt”,“w”) + fclose
- 追加重定向:
>>
不清空文件,在原文件末尾新增操作。相当于C语言中的fopen (“text.txt”,“a”) + fclose
# echo "hello linux" //输出到显示器
# echo > text.txt //输出到text文件
输入重定向:
<
- 概念:同上,只不过为输入操作。
- 使用方法:
指令名 <
2.3 对文件内容
echo(打印)
语法 :echo [内容]
功能:打印文本到显示器
- 与C关系:相当于 printf 。
cat(查看文件内容 - 初级)
语法 :cat [选项][文件名]
功能:查看目标文件的内容
常用选项:
-n
: 附加输出行号-s
: 存在连续空行时,只显示一行空行
- 与C关系:相当于 fopen(“文件名” , “r”)+ fclose
- 缺点:只适合显示小型文件,行数多的文件不利于查看
more(查看文件内容 - 高级)
语法 :more [选项][文件]
功能:同cat,打印满屏幕后会停下,输入回车可进行逐行下翻
常用选项:
q
: 执行后,按q退出-n
: 附带行号
less(查看文件内容 - 终极)
语法 : less [参数][文件]
功能:与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
常用参数:
-i
: 忽略搜索时的大小写-N
: 显示行号/字符串
:向下搜索“字符串”的功能?字符串
:向上搜索“字符串”的功能n
:重复前一个搜索(与 / 或 ? 有关)N
:反向重复前一个搜索(与 / 或 ? 有关)q
:退出查看
head(查看文件头部内容)
语法 : head [参数][文件]
功能: 显示文件头部内容至标准输出(默认显示前10行)
常用参数:
-数字
:指定显示前X行
tail(查看文件尾部内容)
语法 : tail [参数][文件]
功能: 显示文件尾部内容至标准输出(默认显示倒数10行),常用于查看日志信息
常用参数:
-数字
:指定显示倒数X行
2.4 管道
- 定义:
(入口) | (出口)
将数据由入口传输到出口,可用于级联多条指令
- 举例:查看文件中部内容。先用 head 提取前X行(使尾部刚好包含需要的中部内容),再用 tail 提取尾部内容。
# head -20 文件名 | tail -5
3. 其他
3.1 与时间相关
cal(显示日历)
语法 : cal [参数][月份][年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
-3
: 显示系统前一个月,当前月,下一个月的月历-j
: 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)-y
: 显示当前年份的日历
date(显示时间)
语法 : date +[OPTION]... [+FORMAT]
功能: 打印当前时间
常用参数:
- 指定格式打印时间
date +%Y:%m:%d
(后接 “+” 号,附带任意参数,各参数之间可使用任意分隔符使观感清晰)
%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 +%s
时间戳 -> 时间:date -d@[时间戳]
3.2 搜索
find(检索文件)
语法 : find [路径名] [选项]
功能: 用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name
:按照文件名查找文件
grep(文件内检索)
语法 : grep [选项] [要查找的字符串] [文件]
功能 :在文件中搜索字符串,将所在的行打印出来
常用选项:
-i
:忽略字母大小写的不同,都搜索出来
-n
:顺便输出行号
-v
:反向选择,即显示出没有 ‘搜寻字符串’ 内容的那一行
3.3 打包与压缩
打包和压缩的意义 :
- 缩小体积,减少所占的磁盘空间;下载快
- 不易丢失文件(传输大量文件时,可能会发生丢包,在众多文件中寻找丢失的很麻烦,如果打包和压缩,只要压缩包传输成功,所有文件都传输成功)
zip(压缩)
语法 : zip [选项] [name.zip] [目录或文件名]
功能 :将目录或文件压缩成zip格式
常用选项:
-r
: 递归处理,将指定目录下的所有文件和子目录一并处理
unzip(解压)
语法 : unzip [name.zip] [选项]
常用选项:
-d 路径名
: 解压到指定路径下
tar(压缩/解压)
语法 :tar [选项] name.tgz [文件名/目录名]
常用选项:
-czf
:压缩
-cvzf
:格外显示压缩过程-xzf
: 解压
-xvzf
:格外显示解压过程
3.4 其他
bc(计算器)
功能:很方便的进行浮点运算
示例:临时计算,直接打印出结果
# echo 1+1 | bc
uname(获取电脑软硬件信息)
语法 :uname [选项]
功能: 用来获取电脑和操作系统的相关信息
常用选项:
-a或–all
:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
重要的热键
[Tab]
:具有『命令补全』和『档案补齐』的功能[Ctrl] + c
:终止当前指令,可能需要连按几次
总结
本文介绍了Linux的常用指令与常见概念。
文章中有什么不对的丶可改正的丶可优化的地方,欢迎各位来评论区指点交流,博主看到后会一一回复。
- 24/3/6 修订