Linux常见指令

前序

Linux中一切皆文件
对于文件又如何理解呢?从使用方面来说只是简单地用来存储数据;在点开一个普通文件之前,可以看到一些关于文件的数据,例如大小,日期,点开之后便是存储的数据(或者什么也没有)。所以这两种数据之间有何区别呢?
前一种称作文件的属性数据,用来介绍文件;后一种称作文件的内容数据,用来存放使用者的数据

所以文件便可表示为
文件=文件内容数据+文件属性数据

前面谈到的是文件的本身,文件与文件之间有什么关系呢?

文件之间一般存在两种关系:普通文件;文件夹中的文件

ls指令

语法:ls[选项][目录或文件]
功能:对于目录,该命令列出该目录下所有子目录与文件;对于文件,将列出文件名以及其他信息
常用选项

-a 列出目录下的所有文件,包括以.开头的隐含文件(a表示all)
-d 将目录像文件一样显示,而不是显示其下的文件
-i 输出文件的i节点的索引信息
-k 以k字节的形式表示文件的大小
-l 列出文件的详细信息(一般缩写为 ll)
-n 用数字的UID,GID代替名称
-F 在每个文件名后附上一个字符以说明该文件的类型
“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接
“|”表示套接字(目录类型识别)
-r 对目录反向排序
-s 在文件名后输出该文件的大小
-R 列出所有子目录下的文件
-1 一行只输出一个文件

pwd指令

语法:pwd
功能:显示用户当前所在的目录

cd指令

Linux系统中,磁盘上的文件和目录被组成一颗目录树,每个节点都是目录或文件

几乎任何操作系统文件的目录组织结构都是一颗多叉树
一个目录里面可以是目录也可以是普通文件
叶子节点可以是目录也可以是普通文件;非叶子节点只能是目录
在这里插入图片描述
语法:cd目录名
功能:改变工作目录,将当前工作目录改变到指定的目录下

cd ..   返回上级目录
cd -    返回最近访问目录
cd ~   进入用户家目录
进入/bin
绝对路径
cd /usr/bin
相对路径 此时在文件/local中
cd ../bin

touch指令

语法:touch[选项] 文件
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
常用选项

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

mkdir指令

语法:mkdir[选项] dirname
功能:在当前目录下创建一个名为"dirname"的目录(文件夹)
常用选项

-p,-parents 可以是一个路径名称,此时若路径中的某些目录尚不存在,
加上选项上后,系统将会自动建立尚不存在的目录,即一次可以建立多个目录

rmdir指令&&rm指令

rmdir是一个与mkdir像对应的命令。mkdir是建立目录,rmdir是删除命令
语法:rmdir[-p][dirname]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项

-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除

rm命令可以同时删除文件或目录
语法:rm[-f-i-r-v][dirname]
适用对象:所有使用者
功能:删除文件或目录
常见选项

-f 即使文件属性为只读,也直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件,递归删除
-rf 递归强制删除命令的目录,及其内部文件

man指令

linux命令的说明书
在这里插入图片描述
前三章较常用:指令,调用,C语言库

语法:man[选项]
常用选项

-k 根据关键字搜索联机帮助
num 只在第num章节找
-a 将所有章节都显示出来,默认从第一章开始查找

cp指令

语法:cp[选项]源文件或目录 目标文件或目录
功能:赋值文件或目录,即拷贝
说明:cp指令用于复制文件或目录,如果同时指定两个以上的文件或目录,且最后的目的地也是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中,若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项

-f 或--force强行复制文件或目录,不论目的文件或目录是否已经存在
-i 或--interactive覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件与子目录一并处理;若源文件或目录的形态不属于目录或符号链接,一律视为普通文件处理

mv指令

move缩写,用来移动文件或者将文件改名,经常用来备份文件或目录
语法:mv[选项]源文件或目录 目标文件或目录,即剪切
功能

  1. 视mv命令中第二个参数类型的不同(目标文件或不是),mv命令将文件重命名或将其移至一个新的目录中
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个,将所给的源文件或目录重命名为给定的目标文件名
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中

常用选项

-f force强制,如果目标文件已经存在,不会询问而直接覆盖
-i 若目标文件已经,先询问是否覆盖

cat指令

语法:cat[选项][文件]
功能:查看目标文件的内容,适合小文本或代码段
常用选项

-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行

more指令

语法:more[选项][文件]
功能:more命令,功能类似cat,适用查看大文件
常用选项

-n 对输出的所有行编号
q 退出命令

less指令

语法:less[参数]文件
功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,less在查看之前不会加载整个文件
常用选项

-i 忽略搜索时的大小写
-N 显示每行的行号
/ 字符串 向下搜索“字符串”的功能
?字符串 向上搜素“字符串”的功能
n 重复前一个搜素
N 反向重复前一个搜素
q 退出命令

head指令

用来显示开头或结尾某个数量的文字区块,head用来显示档案的开头至标准输出中,tail也就是查看档案的结尾

语法:head[参数][文件]
功能:head用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
常用选项

-n 显示行数

tail指令

tail命令从指定开始将文件写到标准输出中,使用tail命令的-f选项可以查阅正在改变的日志文件,tail-f会把文件里最尾部的内容显示在屏幕上,并且不断刷新,方便看到最新的文件内容
语法:tail[参数][选择参数][文件]
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理,常用来查看日志文件
常用选项

-f 循环读取
-n 显示行数

时间相关指令

date显示
date指定格式显示时间:date+%Y/%m/%d
用法:date[option]…[format]
1.显示方面,使用者可以设定欲显示的格式,格式设定一个加号后接标记,其中常用的标记列表如下

%H 小时
%M 分钟
%S 秒
%X 相当于%H/%M/%S
%d 日
%m 月份
%Y 完整年份
%F 相当于%Y/%m/%d

实例如下
在这里插入图片描述

2.设定时间方面

date -s 设置时间

3,时间戳
时间->时间戳:date +%s
时间戳是从1970年1月1日开始所经过的秒数

从1970年1月1日到现在的秒数如下(2023.3.15)

在这里插入图片描述

Cal指令

cal命令可以用来显示公历。公历是现在国际通用的历法。
命令格式:cal[参数][月份][年份]
功能:用于查看日历等时间信息
常用选项

-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天
-y 显示当前年份的日历

实例如下
在这里插入图片描述

find指令: -name

linux下find命令在目录结构中搜索文件,并执行指定的操作。在进行find搜索时,可能需要访问磁盘进而导致效率低下
语法:find pathname
功能:用于在文件中查找文件,并作出相应的处理
常用选项

-name 按照文件名查找文件

which指令

语法:which [命令]
功能:只能用来搜索命令

在这里插入图片描述

在搜索ll时,出现新的指令alias,该指令与mv有些类似,功能时对指令进行重命名

where指令

语法:whereis [指令或文档]
功能:在特定的路径下,查找指定的文件名对应的指令或文档

在这里插入图片描述

grep指令

语法:grep[选项]搜寻字符串文件
功能:在文件中搜索字符串,将找到的行打印出来
常用选项

-i 忽略大小写的不同
-n 顺便输出行号
-v 反向选择,显示出没有搜索字符串内容那一行

zip/unzip

语法:zip[压缩包(自定义)][待打包压缩的目录]
功能:zip压缩文件或目录,默认对一个目录进行打包压缩时,只会对目录文件打包压缩,其内部文件不进行操作
常用选项

-r 递归处理,将指定目录下的所有文件和子目录一并处理

既然存在压缩指令,就有其存在的意义。为什么要压缩,直接进行传输不是也可行吗???
原因是要是,在电脑中存在很多大小文件,在传输,保存时较麻烦。压缩的出现可以完美地解决这个问题,压缩可以将多个文件压缩成一个文件,且内容不会丢失,便于传输与保存

tar指令:打包/解包,不打开它,直接看内容

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

-c 建立一个压缩文件的参数指令
-x 解开一个压缩文件的参数指令
-t 查看tarfile里面的文件
-z 是否同时具有gzip的属性?亦即是否需要用gzip压缩?
-j 是否同时具有bzip的属性?亦即是否需要用bzip压缩?
-v 压缩的过程中显示文件
-f 使用档名,在f后直接接档名,不能加参数
-C 解压到指定目录

-czf 打包并压缩
-xzf 解包并解压

bc

bc命令可以很方便的进行浮点运算(计算器)
在这里插入图片描述

uname -r指令

语法:uname[选项]
功能:uname用来获取电脑和操作系统的相关信息
常用选项

-a 或-all 详细输出所有信息,以此为内核内容,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

热键[Tab],[ctrl]-c,[ctrl]-d

[Tab] 命令自动补全的功能
[Ctrl]-c 让当前的程序停止
[Ctrl]-d 结束取代exit

lscpu 查看cpu信息
lsmem 查看内存信息
df -h 查看磁盘使用情况
who (当前linux系统的在线用户)

关机

语法:shutdown[选项]
常见选项

-h 将系统的服务器停掉后直接关机
-r 系统的服务器停掉后立刻重启
-t sec -t后面加秒数,过几秒后立刻关机

shell命令及其运行原理

字面意思shell是外壳,既然是外壳,在这里只能是操作系统的外壳,命令行解释器。linux严格意义上是一个操作系统,称之为核心,一般用户不能直接与核心沟通,只能通过核心的外壳也是就shell,与核心进行沟通。所以便有疑问,为什么只能通过外壳,外壳是什么呢?接下来解密

用户不能与操作系统进行很好的沟通,也就是说两者的交流很困难,所以需要shell将用户的命令解释之后传递给操作系统,操作系统在进行相应的操作再通过shell反馈给用户。

当然并不是用户所有的命令,操作系统都会进行反馈。当用户进行非法命令时,通过shell的解释之后,操作系统不会进行任何操作,即拒绝执行。此举也是对操作系统的保护。

在这里插入图片描述

对比
linux的shell命令行解释,与windows的图形化界面本质上一样的,兄弟关系

linux权限的概念

linux下有两种用户:超级用户(root),普通用户

  1. 超级用户:可以在linux系统下可以做任何事情,不受限制
  2. 普通用户:在linux系统下做有些事会受到限制
  3. 超级用户的命令提示符是#,普通用户的命令提示符是$

命令:su[用户名]
功能:切换用户

普通用户切换为root
su/su - 输入用户密码即可

root切换为普通用户
su XXX

linux权限管理

权限是什么?简单来说就是事情是否允许某某某谁做
事情在这里就是文件;某某某在这里就是角色
所以文件的权限可以解释为

文件权限=角色+文件

文件访问者的分类(角色)

  1. 文件和文件目录的所有者:u-user
  2. 文件和文件目录的所有者所在的组的用户:g-group
  3. 其他用户:o-others

文件类型和访问权限(属性)

在这里插入图片描述

a:文件类型

linux和Windows的文件类型的后缀差别很大。Linux的文件类型与文件后缀无关,因为文件名课随意修改。

  1. d:文件夹
  2. -:普通文件

b:基本权限;b1:文件所有者的权限;b2:文件所属用户组的权限;b3:其他用户的权限

  1. r:read对于文件而言,具有读取文件的权限;对于目录而言,具有浏览目录信息的权限
  2. w:write对于文件而言,具有修改文件内容的权限;对于目录而言,具有删除移动目录内文件的权限
  3. x:execute对于文件而言,具有执行文件的权限;对于目录而言,具有进入目录的权限
  4. -:表示不具有该权限

c:所属用户

d:所属用户组

e:文件大小

f:文件最新修改日期

g:文件名

文件权限值的表示方法

  1. 字符表示法
Linux表示说明Linux表示说明
r- -只读-w-仅可写
- -x仅可执行rw-可读可写
-wx可写可执行r-x可读可执行
rwx可读可写可执行- - -无权限
  1. 进制数值表示方法
权限符号八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
- - -0000

文件访问权限的相关设置

  1. chmod
    功能:设置文件的访问权限
    格式:chmod[参数] 权限 文件名

用户标识符

u:拥有者
g:拥有者同组
o:其他用户
a:所有用户
    • = 权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限

在这里插入图片描述

  1. chown
    功能:修改文件的拥有者
    格式:chown[参数] 用户名 文件名

  2. chgrp
    功能:修改文件或目录的所属组
    格式:chgrp[参数] 用户组名 文件夹

  3. umask
    功能:查看或修改文件掩码
    为什么会存在这个权限设置呢?
    在电脑中,新建文件夹的默认权限为0666,也就是 rw-;新建目录默认权限为0777,也就是 rwx。但实际上所创建的新文件和目录却不是如此
    在这里插入图片描述
    与预期不同的原因是,在创建文件或目录是还要受到umask的影响
    凡是在umask中出现的权限,都必须在起始权限中去掉
    Umask的默认值是0002,也就解释上面出现的情况

上面提到的去掉,难道是减去吗?
umask默认要去掉的权限位是 1,要保留的位是 0
~umask要去掉的权限位是 0,要保留的位是 1

这里的去掉是先将umask取反,再异或得到的结果便是新建文件或目录的权限

最终权限=起始权限&(~umask)

file指令

功能:辨识文件类型
语法:file[选项] 文件或目录
常用选项

 -c 详细显示指令执行过程,便于排错或分析程序执行的情形
 -z 尝试去解读压缩文件的内容

目录的权限

  1. 可执行权限:如果目录没有可执行权限,则无法cd到目录中
  2. 可读权限:如果目录没有可读权限,则无法使用ls等命令查看目录中的文件内容
  3. 可写权限:如果目录没有可写权限,则无法再目录中创建文件,也无法再目录中删除文件

由于目录中的文件权限会受到目录权限的影响,是不是只要拥有目录的写权限,用户便可以删除目录中的文件,而不需要关系文件的写权限呢?

答案是,对的。也就是说,张三在一个共同目录中创建一个文件,李四便可以通过共同目录删除张三所创建的文件。
这不就会造成很大的问题吗?那么又该如何解决这个问题呢?

接下来介绍的粘滞位便可解决这个问题

粘滞位

当一个目录被设置为粘滞位(chmod+t),该目录下的文件只能由

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

总结

  1. 目录的可执行权限表示使用者是否可以再目录中执行命令
  2. 如果目录没有 -x权限,则无法对目录执行任何命令,甚至无法 cd进入到目录中
  3. 如果目录具有 -x权限,但没有 -r权限,则用户可以执行命令,可以 cd进入目录中,但是由于没有读取目录的权限,所以即使在目录中执行 ls命令,也不会读出目录中的文件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值