Linux学习笔记

Linux简介

在计算机中软件分为两种,一种是应用软件,一种是操作系统软件,而Linux就是一种操作系统软件。在日常生活中,我们一般用到的是 Windows 或者 Mac 这样的操作系统软件,而 Linux 一般是运用在服务器上的。

操作系统软件的功能
1、控制硬件资源
2、提供计算机运作所需的功能
3、提供给程序员系统调用的接口,提供更容易的开发环境

Linux和Windows的区别

在这里插入图片描述
多用户:多个人可以同时的操作计算机
单用户:只能由一个用户进行操作。

Linux内核版本

内核是最基本的Linux系统,它提供了一个在设备和应用程序间的抽象层。Linux 最早是由芬兰人 Linus Torvalds 设计的。当时由于 UNⅨ的商业化,Andrew Tannebaum 教授开发了 Minix 操作系统以便于不受 AT&T 许可协议的约束,为教学科研提 供一个操作系统。Linus Torvalds 借鉴了 Minix 操作系统,自己动手写了一个“类 Minix”的 操作系统,即就是 Linux 系统的雏形。1991 年 11 月,Linux0.10 版本推出,0.11 版本随后在 1991 年 12 月推出,当时将它发布在 Internet 上,免费供人们使用。当 Linux 非常接近于一 种可靠的/稳定的系统时,Linus 决定将 0.13 版本称为 0.95 版本。1994 年 3 月,正式的Linux 1.0 出现了,这差不多是一种正式的独立宣言。截至那时为止,它的用户基数已经发 展得很大,而且 Linux 的核心开发队伍也建立起来了。

Linux目录结构

Linux的文件系统是采用层级式的树状目录结构,在此结构的最上层是根目录“ / ”,然后在此目录下创建其他的目录。深刻理解Linux的树状文件目录是非常重要的。Linux可以把硬件映射成文件来管理。在Linux的世界中,一切皆文件

在这里插入图片描述
/bin:存放常用的命令

/boot:存放系统内核及启动有关的文件,包括一些连接文件以及镜像文件

/dev:存放设备文件,键盘和鼠标在Linux中都可以映射为文件

/etc:存放系统配置文件,系统运行的相关属性等

/proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息

/mnt:临时挂载点,系统提供该目录是为了让用户临时挂载别的系统文件的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了

/lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows中的DLL文件。几乎所有的应用程序都需要用到这些共享库

/tmp:存放各种临时文件,所用用户均可访问

/usr:存放系统应用程序及文档,用户安装的软件,或者运行时不经常改变的文件。用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录

/var:存放系统运行中经常改变的文件,如系统日志

/home:所有普通用户的家目录

/root:管理员用户的家目录

小结:
1、Linux的目录中有且只有一个根目录
2、Linux的各个目录存放的内容是规划好的,不能乱放文件
3、Linux是以文件的形式管理我们的设备,因此在Linux的世界里,一切皆为文件

vi和vim编辑器

所有的Linux系统都会内建vi文本编辑器,而vim具有程序编辑的能力,可以看作是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补全,编译及错误跳转等方便编程的功能特别丰富,广泛的被程序员使用

vi和vim常用的三种模式

正常模式:以vim打开一个档案就直接进入一般模式了(默认模式)。在这个模式中,你可以使用“上下左右”按键来移动光标,你可以使用“删除字符”或“删除整行”来处理档案内容,也可以使用“复制、贴上”来处理你的文件

插入模式:按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入插入模式

末行模式:在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等动作

vi和vim的常用快捷键

1、拷贝当前行 yy,拷贝当前行向下的5行 5yy,并粘贴 p
2、删除当前行 dd,删除当前行向下的5行 5dd
3、在文件中查找某个单词(末行模式下下 “ /关键字”,回车查找,输入n就是查找下一个)
4、设置文件的行号,取消文件的行号。[末行模式下 :set nu 和 :set nonu]
5、编辑/etc/profile文件,使用快捷键到底文档的最末行[G]和最首行[gg]
6、在一个文件中输入"hello",然后又撤销这个动作 – u

关机&重启命令

shutdown -h now 立即进行关机
shutdown -h 1 1分钟后会关机了
shutdown -r now 重新启动计算机
halt 关机,作用和上面一样
reboot 重新启动计算机
init 1 关机
注意:不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中

Linux下的用户管理

用户家目录
/home/ 目录下有各个创建的用户对应的家目录,当用户登录时,对自动得进入到自己的家目
1、Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
2、Linux的用户至少要属于一个组

添加用户
基本语法:useradd [选项]用户名
选项:
-u 指定用户的uid
-g 执行新用户的主组(初始组)默认就是本身
-G 设置附加组 如果指定多个附加组可以用逗号隔开 。
-d :设置家目录 (一般不用)
-c 备注
-s 指定命令解释器
-m 自动传创建家目录
当创建用户成功后,会自动的创建和用户同名的家目录

指定/修改密码:passwd 用户名
修改密码的基本原则:复杂、易记、经常更换

删除用户
userdel 用户名 (保留家目录)
userdel -r 用户名 (连着家目录一块儿删除)

切换用户
在操作Linux中,如果当前用户的权限不够,可以通过【su 用户名】 命令来切换到高权限用户
1、从权限高的用户切换到权限低的用户不需要输入密码,反之需要
2、当需要返回到原来的用户时,使用exit指令

查看当前用户:whoami 、 who am i

用户组
类似于角色,系统可以对有共性的多个用户进行统一管理
创建组:groupadd 组名
删除组:groupdel 组名
修改用户组:usermod -g 用户组 用户名

用户和组的相关文件:

/etc/passwd文件

用户(user)的配置文件,记录用户的各种信息
在这里插入图片描述
这些字段对应的含义分别为:
用户名::密码::用户标识号::组标识号::用户名::用户主目录::命令解释程序

用户名
用于区分不同的用户。在同一系统中注册名是惟一的。在很多系统上,该字段被限制在8个字符(字母或数字)的长度之内

密码
系统用密码来验证用户的合法性。超级用户root或某些高级用户可以使用系统命令passwd来更改系统中所有用户的密码,普通用户也可以在登录系统后使用passwd命令来更改自己的密码。

用户标识号
UID是一个数值,是Linux系统中惟一的用户标识,用于区别不同的用户。0 代表超级用户;1~499 代表普通用户(不同的Linux发行版本可能会有所不同); 500 ~ 65535 代表普通用户。

组标识号
在使用useradd命令创建用户的时侯可以用-g 和-G 指定用户初始组和附属组。如果没有指定用户组,创建用户的时候系统会默认同时创建一个和这个用户名同名的组,这个组就是初始组;除了初始组之外,用户所在的其他组,都是附加组。用户是可以从附加组中被删除的。用户不论为与初始组中还是附加组中,就会拥有该组的权限。一个用户可以属于多个附加组。但是一个用户只能有一个初始组。

用户名
用户的说明信息(-c所指定的信息)。包含有关用户的一些信息,如用户的真实姓名、办公室地址、联系电话等。

用户主目录
该字段定义了个人用户的主目录,当用户登录后,他的Shell将把该目录作为用户的工作目录。超级用户root的工作目录为/root;而其它个人用户在/home目录下均有自己独立的工作环境,系统在该目录下为每个用户配置了自己的主目录。

命令解释程序
Shell是当用户登录系统时运行的程序名称,通常是一个Shell程序的全路径名,如/bin/bash。

/etc/shadow文件

密码的配置文件,用来存储经过加密后的密码。也就是说,里面存的密码都是密文,一般人员即使查看了该文件,也不会知道真正的密码究竟是什么。
在这里插入图片描述
这些字段对应的含义分别为:
用户名:加密密码:最后修改时间:修改时间间隔:密码有效期:过期前警告天数:过期后宽限天数:账号失效时间:保留字段

用户名
与/etc/shadow中的用户名类似,用于区分不同的用户。

加密密码
这里保存的是真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。需要注意的是,这段密码是不能直接在文件中直接修改的,哪怕只修改一个字符,也会导致原来的密码失效。很多软件透过这个功能,在密码串前加上 “!” 或 “x” 使密码暂时失效。所有伪用户的密码都是 “!!” 或 “*”,代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 “!!”,代表这个用户没有密码,不能登录。

最后修改时间
指的是最后一次修改密码的时间。可以从下图中看到,我自己创建的用户rym对应的数字是18653。在Linux操作系统中,时间是从1970年1月1日作为1,往后每过一天加1,所以18653经过换算后表示的时间是2021年1月26日
在这里插入图片描述
Linux中的日期换算命令:
date -d “1970-01-01 18653 days”

最小修改时间间隔
规定了密码可以被修改的频率。如果是0,则表示没有约束,密码可以随时修改;如果是5,则表示最后一次修改密码后,至少还需要相隔5天才能再次修改密码

密码有效期
规定了一次密码至多可以使用多长时间,如果超过了规定的时间,那么密码就会失效。为了保证安全性,管理服务器时,通过这个字段强制用户定期修改密码。

过期前警告天数
规定了密码需要变更前的警告天数,当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户 “再过 n 天你的密码就要过期了,请尽快重新设置你的密码!”。

密码过期后的宽限天数
规定了密码过期后,在宽限天数之内,用户还是可以登录自己的账号的,如果超过了款项天数,系统将不再允许此账户登录。如果是 0,则代表密码过期后立即失效;如果是 -1,则代表密码永远不会失效。

账号失效时间
该字段规定了一个账号的有效期,如果超过了有效期,无论密码是否失效,该账户都无法再使用了。它通常被使用在具有收费服务的系统中,其计算方法与密码的最后修改时间中的方法一致。

保留字段
目前没有使用,等待新功能的加入。

/etc/group文件

组的配置文件,记录Linux包含的组的信息
在这里插入图片描述
这些字段对应的含义分别为:
用户组名称:用户组密码:用户组ID:用户列表

用户组名称
规定了用户组的名称,由字母或者数字组成,组名不能重复

用户组密码
和 /etc/passwd 文件一样,这里的 “x” 仅仅是密码标识,真正加密后的组密码默认保存在 /etc/gshadow 文件中

用户组ID(GID)
也就是群组的ID号,Linux系统中就是GID来区分用户组的,组名只是为了便于管理员进行记忆和管理

用户列表
记录了该群组下有哪些用户,每个用户之间用逗号分隔;如果字段为空表示用户组为GID的用户名

/etc/gshadow文件:

组密码的配置文件,用来存储经过加密后的密码。
在这里插入图片描述
这些字段对应的含义分别为:
用户组名:加密组密码:管理员名称:组成员

用户组名
用户组的名称,由字母或者数字组成,组名不能重复

用户组密码
与/etc/shadow文件类似,该字段存储的是加密后的用户组密码,不能随意修改

管理员名称
用户组管理者,这个字段也可为空,如果有多个用户组管理者,用逗号分割

组成员
组成员,如果有多个成员,用逗号分割;

修改用户信息

usermod命令:

语法:

usermod [选项] [用户名]

选项说明:

-c<备注>  修改用户帐号的备注文字。
使用:usermod -c “it’s remarks” root

-d<登入目录>  修改用户登入时的目录。

-e<有效期限>  修改帐号的有效期限。

-f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。

-g<群组>  修改用户所属的群组。

-G<群组>  修改用户所属的附加群组。
使用:usermod -G root rym – 将用户rym加入root组

-l<帐号名称>  修改用户帐号名称。

-L  锁定用户密码,使密码无效。
使用:usermod -L rym – 将rym用户锁定

-s<shell>  修改用户登入后所使用的shell。

-u<uid>  修改用户ID。

-U  解除密码锁定。

修改用户状态

chage [选项] 用户名

选项说明:

-l: 列出用户的详细密码状态

-d<日期> : 修改密码的最后一次修改日期

-m<天数>: 两次修改密码的时间间隔

-M<天数>: 密码有效期

-W<天数>: 密码过期前警告天数

-I<天数>: 密码过期后宽限天数

-E<日期>: 账号失效时间

Linux下的文件类型

在Linux中一切皆文件,包括网卡、内存、外部设备等硬件资源,也可以被Linux系统抽象为文件进行管理

Linux中的五种文件类型:

1、“-” 表示普通文件
Linux中最多的一种文件类型, 包括文本文件、二进制文件、各种压缩文件,第一个属性为 [-]

2、“d” 表示目录文件
就是目录, 能用 cd 命令进入的。第一个属性为 [d],例如 [drwxrw-r-x]。创建目录可以用 mkdir 命令

3、“p” 表示管道文件
FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]

4、“l” 表示链接文件
和Windows操作系统中的快捷方式类似,可以使我们更快速方便的打开某些程序、或者编辑某些文件

5、设备文件(“b”为块设备、“c”为字符设备、“s”为套接字设备)
块设备文件 : 就是存储数据以供系统存取的接口设备,例如硬盘这样的设备。
字符设备文件:例如键盘、鼠标等。
套接字文件:这类文件通常用在网络数据连接。

通过命令 ls -l 可以查看该目录下的各种文件的类型,如下图:
在这里插入图片描述

Linux下的文件权限

文件权限规定的不同的用户能对文件进行怎样的操作

r:读权限 – 4

w:写权限 – 2

x:执行权限 – 1

-:无权限 – 0
在这里插入图片描述
u : 规定了文件属主的访问权限,文件是A建立的那么文件的属主就是A

g : 规定了文件同组用户的访问权限

o : 表示其他用户的访问权限

设定文件的权限

文字设定法:
通过rwx的组合、ugoa的组合与“+/-”配合使用,来设定文件的权限。
“+”: 代表给该文件加上某一权限
“-” :代表给该文件减去某一权限
a:代表所有人
例如:现在要给文件a的属主增加一个执行权限,则可以使用如下命令:
chmod u+x a
要给文件b的同组者减去一个写权限,则可以使用如下命令:
chmod g-w b

数字设定法:
要使用数字设定法,首先得知道每个权限所对应的数字是多少。
r(读)对应的数字是4;
w(写)对应的数字是2;
x(执行)对应的数字是1;
如果要将一个文件的权限设定为:属主可以读写执行、同组者可以读写、其他用户只能读,那么使用的命令就应该是:
chmod 764 文件名
其中 7 这个位置所对应的就是属主的权限,7 = 4 + 2 + 1(r+w+x)
6 对应的就是同组者的权限,6 = 4 + 2(r+w)
4 对应的是其他用户的权限,4 = 4 (r)

设定文件的属组

语法:
chgrp [-R] 属组名 文件名

选项说明:
-R:递归修改文件属组,就是在修改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会被修改。

例子:
chgrp -R rym test – 将test及test下的所有文件的属组都修改为rym

设定文件的属主

chown命令既可以更改文件的属主,也可以同时更改文件的属组。

语法:
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

选项说明:
-R:递归修改文件属组,就是在修改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会被修改。

例子:
chown rym demo – 将文件demo的属主改为rym用户
chown root:rym test – 将文件test的属主改为root用户,属组改为rym组

Linux下的进程管理

ps命令

只显示当前终端的进程
默认显示与当前终端有关的进程信息

选项说明:
-A ---- 列出所有的进程
-e ---- 等于“-A”
-a ---- 显示现行终端机下的所有进程,包括其他用户的进程
-u ---- 以用户为主的进程状态
x ---- 通常与 a 这个参数一起使用,可列出较完整信息。
-w ---- 显示加宽可以显示较多的资讯
-au ---- 显示较详细的资讯
-aux ---- 显示所有包含其他使用者的行程
-f ---- 做一个更为完整的输出
-L ---- 显示进程中的线程 ID

一般情况下,我们最常用的命令就是 ps -aux,其显示的信息如下图所示:
在这里插入图片描述
USER:表示哪个用户启动了这个进程
PID:表示进程的ID号
%CPU:表示CPU的占用率,占用率越高,则越消耗资源
%MEN:表示内存的使用率
VSZ:一个程序完全驻留在内存中一共需要多少内存(该进程所占虚拟内存的大小)
RSS:表示该进程当前实际上占用了多少内存
TTY:表示tty终端,tty1~tty7 代表本地控制台终端,tty1 ~ tty6代表本地字符界面终端,tty是图形终端。ps/0-256代表虚拟终端
STAT:表示当前进程的状态,(S表示处于休眠状态,D表示不可中断的状态,Z表示僵尸进程,X表示死掉的进程)
START:启动这个命令的时间点
TIME:进程执行到现在总的CPU占用时间
COMMAND:表示启动这个进程的命令

pstree命令

ps命令尽管可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰明了。而pstree命令以树状图的形式显示进程间的关系,使得我们更容易分别每个进程之间的关系是怎样的。
在这里插入图片描述

top命令

基本语法:
top [选项]

一般用于查看系统资源使用情况以及进程信息,类似于Windows操作系统中的任务管理器

选项说明:
-d:秒数,规定了top命令每个几秒进行更新,如果不进行规定,系统则会默认为三秒更新一次

执行top命令后,可以使用如下命令进行交互操作:
?或 h:显示交互模式的帮助信息
P:以CPU的使用率进行排序(默认就是此项)
M:以内存的使用率进行排序
N:以PID进行排序
q:退出top命令

执行top命令后,其基本显示如下图所示:
在这里插入图片描述
PID:进程ID,进程的唯一标识符
USER:进程拥有者的用户名
PR:进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态
NI:进程的优先级,越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:进程使用的共享内存。共享内存大小,单位kb
S:这个是进程的状态。它有以下不同的值:
D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比
%MEM:进程使用的可用物理内存百分比
TIME+:任务启动后到现在所使用的全部CPU时间,精确到0.01秒
COMMAND:运行进程所使用的命令。

前五行的信息含义如下:

第一行:任务队列信息
00:00:31 ---- 系统当前时间
up 12:30 ---- 主机已运行时间
1 user ---- 用户连接数
load average ---- 系统平均负载,统计了最近1,5,15分钟的系统平均负载

第二行:进程信息
Task 285 total ---- 进程总数
2 running ---- 正在运行的进程数
282 sleeping ---- 睡眠的进程数
1 stopped ---- 停止的进程数
0 zombie ---- 僵尸进程数

第三行:CPU信息(当有多个CPU时,这些信息可能会超过两行)
0.4 us ---- 用户空间所占CPU百分比
0.1 sy ---- 内核空间所占CPU百分比
0.0 ni ---- 用户进程空间内改变过优先级的进程占用CPU百分比
99.5 id ---- 空闲CPU百分比
0.0 wa ---- 等待输入输出的CPU时间百分比
0.0 hi ---- 硬件CPU中断占用百分比
0.0 si ---- 软中断占用百分比
0.0 st ---- 虚拟机占用百分比

第四行:内存信息(Mib Mem)
1790.0 total ---- 物理内存总量
114.6 free ---- 空闲交换区总量
1284.4 used ---- 已使用的交换分区总量
391.0 buff/cache ---- 用作内核缓存的内存量

第五行:swap信息(MiB Swap)
2048.0 total ---- 交换分区总量
1901.5 free ---- 空闲交换区总量
146.5 used ---- 已使用的交换分区总量
325.2 avail Mem ---- 缓冲的交换区总量

pidstat命令

基本语法:
pidstat [ 选项 ] [ < 时间间隔 > ] [ <次数> ]

选项说明:
-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数

pidstat -u
使用-u选项,pidstat将显示各活动进程的cpu使用统计,执行”pidstat -u”与单独执行”pidstat”的效果一样。

pidstat -r
使用-r选项,pidstat将显示各活动进程的内存使用统计:
PID:进程标识符
Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页
Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页
VSZ:虚拟地址大小,虚拟内存的使用KB
RSS:常驻集合大小,非交换区五里内存使用KB
Command:task命令名

pidstat -d
显示各个进程的IO使用情况(-d)
PID:进程id
kB_rd/s:每秒从磁盘读取的KB
kB_wr/s:每秒写入磁盘KB
kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。
COMMAND:task的命令名

Linux系统下的常用命令

ls命令
是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。

常用参数:
ls -a 列出目录所有文件,包含以.开始的隐藏文件
ls -A 列出除.及…的其它文件
ls -r 反序排列
ls -t 以文件修改时间排序
ls -S 以文件大小排序
ls -h 以易读大小显示
ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来

cd 命令
基本语法:cd [目录名] ---- 切换当前目录至【目录名】

举例:
1、进入根目录 ---- cd /
2、进入home目录 ---- cd /home
3、进入home目录下的rym目录 ---- cd /home/rym
4、进入上一级目录 ---- cd …
5、进入上一次所在的目录 ---- cd -

pwd命令
用于查看当前工作目录路径

举例:
1、查看当前路径 — pwd
2、查看软链接的实际路径 ---- pwd -P

mkdir命令
用于创建文件夹

常用参数:
-m: 对新建目录设置存取权限,也可以用 chmod 命令设置;
-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。

举例:
1、当前工作目录下创建名为 test 的文件夹 ---- mkdir test
2、在 etc 目录下创建路径为 demo/d/dd 的目录,若不存在,则创建 ---- mkdir -p /etc/demo/d/d1

rm 命令
删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

基本语法:
rm [选项] 文件

常用参数:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。

删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r"

mv 命令
移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命名该文件)。
当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。

举例:
1、将文件 test 重命名为 test1 ---- mv test test1
2、将文件 txt1,txt2,txt3 移动到/home下的 rym 目录中 — mv txt1 txt2 txt3 /home/rym
3、将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖 ---- mv -i file1 file2
4、移动当前文件夹下的所有文件到上一级目录 ---- mv * …/

cp命令
将源文件复制至目标文件,或将多个源文件复制至目标目录。
注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!

常用参数:
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样

举例:
1、复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖 ---- cp -ai a.txt test
2、为 a.txt 建议一个链接(快捷方式)---- cp -s a.txt link_a.txt

cat命令
cat命令主要用于查看文件的内容,也可以用于创建文件

举例:
1、一次显示整个文件 ---- cat filename
2、从键盘创建一个文件 ---- cat > filename
3、将几个文件合并为一个文件 ---- cat file1 file2 > file

more 命令
功能类似于 cat, 只是more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示

常用参数:
+n 从笫 n 行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉

常用操作命令:
Enter 向下 n 行,需要定义。默认为 1 行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more

less命令
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件

常用参数:
-i 忽略搜索时的大小写
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-s 显示连续空行为一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
-x <数字> 将“tab”键显示为规定的数字空格
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页

head 命令
head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行

常用参数:
-n<行数> 显示的行数(行数为复数表示从最后向前数)

tail 命令
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件

常用参数:
-f 循环读取(常用于查看递增的日志文件)
-n<行数> 显示行数(从后向前)

find 命令
ind 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法:
find path -option [ -print ] [ -exec -ok command ] {} ;

常用参数:
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket

举例:
1、查找 48 小时内修改过的文件 ---- find -atime -2
2、在当前目录查找以 .txt 结尾的文件。"." 代表当前目录 ---- find ./ -name ‘*.txt’
3、查找 /etc 目录下 权限为 777 的文件 ---- find /etc -perm 777
4、查找大于1K 的文件 ---- find -size +1000c
5、在当前目录中查找更改时间在10日以前的文件并删除它们
find . -type f -mtime +10 -exec rm -f {} ;

date 命令
显示或设定系统的日期与时间

常用参数:
-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u  显示GMT。
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示)。
%D 日期(
含年月日)。
%m 月份(以01-12来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。

举例:
显示下一天的日期 ---- date +%Y%m%d --date="+1 day"

grep命令
文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。

基本语法:
grep [option] pattern file|dir

常用参数:
-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值