mv
mv 移动文件 与 目录或重命名
- 基本语法
- mv (oldNameFile) (newNameFile):(功能描述:重命名)
- mv (/temp/movefile) (/targetFolder):(功能描述:移动文件)
- 应用实例
- 案例1:将/home/aaa.txt文件重新命名为pig.txt(当前工作目录为/home)
- mv aaa.txt pig.txt
- 案例2:将/home/pig.txt文件移动到root目录下(当前工作目录为/home)
- mv pig.txt /root
- 案例1:将/home/aaa.txt文件重新命名为pig.txt(当前工作目录为/home)
cat
cat查看文件内容,是以只读的方式
- 基本语法
- cat [选项] 要查看的文件
- 常用选项
- -n:显示行号
- 应用实例
- 案例1: /ect/profile文件内容,并显示行号
- cat -n /ect/profile
- 案例1: /ect/profile文件内容,并显示行号
- 使用细节
- cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令| more
- cat -n /ect/profile | more
- cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令| more
more
more指令是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
more指令中内置了若干快捷键,详见操作说明:
操作 | 功能说明 |
---|---|
空白键 | 向下翻一页 |
Enter | 向下翻一行 |
q | 离开more |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行号 |
:f | 输出文件名和当前的行号 |
- 基本语法
- more 要查看的文件操作说明
- 应用实例
- 案例:采用more查看文件/etc/profile
- more /etc/profile
- 案例:采用more查看文件/etc/profile
less
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
- 基本语法
- less 要查看的文件
- 操作说明
功能说明 | |
---|---|
空白键 | 向下翻动一页 |
[PageDown] | 向下翻动一页 |
[PageUp] | 向上翻动一页 |
/字串 | 向下搜寻“字串”的功能:n:向下查我;N:向上查找; |
?字串 | 向上搜寻“字串”的功能:n:向上查我;N:向下查找; |
q | 离开less这个程序 |
- 应用实例
- 案例:采用less查看一个大文件文件
- less /opt/金庸-射雕英雄传txt精校版.txt
- 案例:采用less查看一个大文件文件
29_实用指令 >重定向 和 >>追加
>输出重定向 和 >>追加
-
基本语法
- ls -l > 文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))
- Is -al >> 文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
- cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)
- echo “内容”>>文件
-
应用实例
- 案例1:将/home目录下的文件列表写入到/home/info.txt中
- ls -l /home/ > /home/info.txt (如果文件不存在就创建)
- 案例2:将当前日历信息.追加到/home/mycal文件中[提示cal]
- cal >> /home/mycal
- 案例3:用cat覆盖文件内容
- cat /etc/profile > c.txt
- 案例1:将/home目录下的文件列表写入到/home/info.txt中
30_实用指令 echo head tail
echo
echo 输出内容到控制台。
-
基本语法
- echo [选项] [输出内容]
-
应用实例
- 案例:使用echo指令输出环境变量,输出当前的环境路径。
- echo $PATH
- 案例:使用echo指令输出hello,world!
- echo "hello,world!"
- 案例:使用echo指令输出环境变量,输出当前的环境路径。
head
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
- 基本语法
- head 文件路径(功能描述:查看文件头10行内容)
- head -n 5 文件路径(功能描述:查看文件头5行内容,5可以是任意行数)
- 应用实例
- 案例:查看/etc/profile的前面5行代码
- head -n 5 /etc/profile
- 案例:查看/etc/profile的前面5行代码
tail
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
- 基本语法
- tail 文件路径(功能描述:查看文件后10行内容)
- tail -n 5 文件路径(功能描述:查看文件后5行内容,5可以是任意行数)
- tail -f 文件路径(功能描述:实时追踪该文档的所有更新)
- 应用实例
- 案例1:查看/etc/profile最后5行的代码
- tail -n 5 /etc/profile
- 案例2:实时监控mydate.txt,看看到文件有变化时,是否看到,实时的追加日期
- tail -f mydate.txt
- 案例1:查看/etc/profile最后5行的代码
31_实用指令 ln history
ln(软链接尽量使用绝对路径)
软链接也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
- 基本语法
- ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)(如果软链接名是目录路径,cd 软链接名 就能跳到目录)
- 应用实例
- 案例1:在/home目录下创建一个软连接linkToRoot,连接到/root目录
- ln -s /root linkToRoot
- 案例2:删除软连接linkToRoot
- rm -r linkToRoot
- 细节说明
- 当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。
history
查看已轻执行过历史命令,也可以执行历史指令
-
基本语法
- history(功能描述,查看已经执行过历史命令)
-
应用实例
- 案例1:显示所有的历史命令
- history
- 案例2:显示最近使用过的10个指令。
- history 10
- 案例3:执行历史编号为5的指令
- !5
- 案例1:显示所有的历史命令
33_实用指令 find locate grep 管道符
find
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
-
基本语法
- find [搜索范围] [选项]
-
选项说明
选项 | 功能 |
---|---|
-name <查询方式> | 按照指定的文件名查找模式查找文件 |
-user <用户名> | 查找属于指定用户名所有文件 |
-size <文件大小>(+n大于-n小于n等于(n为数目)) | 按照指定的文件大小查找文件 |
应用实例
-
案例1:按文件名:根据名称查找/home目录下的hello.txt文件
- find /home -name hello.txt
-
案例2:按拥有者:查找/opt目录下,用户名称为nobody的文件
- find /opt -user nobody
-
案例3:查找整个linux系统下大于、等于、小于20m的文件
-
find / -size +20M
-
find / -size 20M
-
find / -size -20M
-
-
案例4:按文件名:根据名称查找/目录下的以txt结尾的文件
- find / -name *.txt
locate
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
-
基本语法
- locate 搜索文件
-
特别说明
- 由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
-
应用实例
- 案例1:请使用locate指令快速定位hello.txt文件所在目录
- updatedb
- locate hello.txt
- 案例1:请使用locate指令快速定位hello.txt文件所在目录
grep与管道符
grep过滤查找,管道符"|",表示将前一个命令的处理结果输出传递给后面的命令处理
-
基本语法
- grep [选项] 查找内容源文件
-
常用选项
选项 | 功能 |
---|---|
-n | 显示匹配行及行号。 |
-i | 忽略字母大小写 |
- 应用实例
- 案例1:请在hello.txt文件中,查找"yes”所在行,并且显示行号
- cat hello.txt | grep -n yes
- 案例1:请在hello.txt文件中,查找"yes”所在行,并且显示行号
34_实用指令 压缩和解压类指令
gzip/gunzip指令
gzip用于压缩文件,gunzip用于解压的
-
基本语法
- gzip (文件)(功能描述:压缩文件,只能将文件压缩为*.gz文件)
- gunzip (文件.gz)(功能描述:解压缩文件命令)
-
应用实例
- 案例1:gzip压缩,将/home下的hello.txt文件进行压缩
- gzip hello.txt
- 案例2:gunzip压缩,将/home下的hello.txt.gz文件进行解压缩
- gunzip hello.txt.gz
-
细节说明
- 当我们使用gzip对文件进行压缩后,不会保留原来的文件。
zip/unzip指令
zip用于压缩文件, unzip用于解压的,这个在项目打包发布中很有用的。
-
基本语法
- zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)
- unzip [选项] XXX.zip (功能描述:解压缩文件)
-
zip常用选项
- -r:递归压缩,即压缩目录unzip的常用选项
- -d <目录>:指定解压后文件的存放目录
应用实例(有书写顺序)
- 案例1:将/home下的所有文件进行压缩成mypackage.zip
- zip -r mypackage.zip /home/
- 案例2:将mypackge.zip解压到/opt/tmp目录下
- upzip -d /opt/tmp/ mypackage.zip
tar指令
tar指令是打包指令,最后打包后的文件是.tar.gz的文件。
- 基本语法
tar [选项] XXX.tar.gz 打包的内容(功能描述,打包目录,压缩后的文件格式.tar.gz)。
- 选项说明
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 通过gzip支持压缩或解压缩 |
-x | 解包.tar文件 |
- 应用实例
- 案例1:压缩多个文件,将/home/a1.txt和/home/a2.txt压缩成a.tar.gz
- tar -zcvf a.tar.gz a1.txt a2.txt
- 案例2:将/home的文件夹压缩成myhome.tar.gz
- tar -zcvf myhome.tar.gz /home
- 案例3:将a.tar.gz解压到当前目录
- tar -zxvf a.tar.gz
- 案例4:将myhome.tar.gz解压到/opt/temp2自录下
- tar -zxvf myhome.tar.gz -C /opt/temp2
- 案例1:压缩多个文件,将/home/a1.txt和/home/a2.txt压缩成a.tar.gz
C 表示解压到指定文件中
-
细节说明
- 指定解压到的那个目录,事先要存在才能成功,否则会抛错。
!!!组管理以及权限管理!!!
一.用户与组的概念
1.理解linux多用户,多任务的特性
Linux是一个真实的、完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响,例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内,root用户可能在查看系统日志,管理维护系统,www用户可能在修改自己的网页程序,ftp用户可能在上传软件到服务器,mysql用户可能在执行自己的SQL查询,每个用户互不干扰,有条不紊的进行着自己的工作,而每个用户之间不能越权访问,比如www用户不能执行mysql用户的SQL查询操作,ftp用户也不能修改www用户的网页程序,因此可知,不同用户具有不同的权限,每个用户是在权限允许的范围内完成不同的任务,linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
2.linux下用户的角色分类
在linux下用户是根据角色定义的,具体分为三种角色:
超级用户:拥有对系统的最高管理权限,默认是root用户。
普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如上面提到的www用户、ftp用户等。
虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等,一般运行的web服务,默认就是使用的nobody用户,但是nobody用户是不能登录系统的。
3.用户和组的概念
我们知道,Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。
用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。
17_用户管理 创建用户指定密码(root下才能使用)
- Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
- Linux 的用户需要至少要属于一个组。
添加用户
useradd [选项] 用户名
如:useradd xm
当创建用户成功后,会自动的创建和用户同名的家目录
也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
给用户指定或者修改密码
passwd 用户名
如:passwd xm
18_用户管理 删除用户(root下才能使用)
userdel 用户
删除用户 xm,但是要保留home目录
删除用户 xh 以及用户主目录
在删除用户时,我们一般不会将home目录删除的。
19_用户管理 查询用户(非root下)
查询用户
id 用户名
案例:
组 =0(root)
表示是root组
当用户不存在时,返回”无此用户”。
20_用户管理 组的管理(root权限)
类似于角色,系统可以对有共性的多个用户进行统一的管理。
增加组
groupadd 组名
删除组
groupdel 组名
增加用户时直接加上组
useradd -g 用户组 用户名
-g 作用:指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-u 作用:uid,用户的id(用户标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配,可以通过该选项自定义
-G 作用:指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
修改用户的组
usermod -g 用户组 用户名
同useradd
-l 作用:修改用户名,新用户名在前
usermod -l 新名 旧名
21_用户管理 用户和组的配置文件(root权限)
vim /etc/passwd文件
用户(user)的配置文件,记录用户的各种信息。
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
/etc/shadow文件
口令的配置文件(加密)。
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件
组(group)的配置文件,记录Linux包含的组的信息。
每行含义:组名:口令:组标识号:组内用户列表。
!!!这里又系统的学习了一下管理类知识!!!
35_组管理
在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其它组的概态。
- 所有者
- 所在组
- 其它组
- 改变用户所在的组
用户家目录的概念
/home/
目录下有各个创建的用户对于的家目录,当用户登录时,会自动的进入到自己的家目录。
- /home/xm
- /home/xh
- /home/zwj
文件/目录所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
- 查看文件的所有者
- 指令:ls -ahl a是显示隐藏 h 所有者
- 应用实例:创建一个组police,再创建一个用户tom,将tom放入police组,然后使用tom来创建一个文件ok.txt,看看情况如何。
- groupadd police
- useradd -g police tom
- passwd tom 修改密码
- touch ok.txt
- ls -ahl
-
修改文件所有者
- 指令:chown 用户名 文件名
- 应用案例:使用root创建一个文件apple.txt ,然后将其所有者修改成tom。
- chown tom apple.txt
组的创建
-
基本指令
- groupadd 组名
-
应用实例:
- 创建一个组monster
- groupadd monster
- 创建一个用户fox ,并放入到monster组中
- useradd -g monster fox
- id fox
- 创建一个组monster
增加用户时直接加上组
useradd -g 用户组 用户名
文件/目录所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。
- 查看文件/目录所在组
- 基本指令
- ls -ahl
- 应用实例
- 基本指令
- 修改文件所在的组
- 基本指令
- chgrp 组名 文件名
- 应用实例:使用root用户创建文件 orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到police组。
- touch orange.txt
- chgrp police orange.txt
- 基本指令
其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组
- 改变用户所在组
- usermod -g 组名 用户名
- usermod -d 目录名 用户名:改变该用户登陆的初始目录。
- 应用实例
- 创建一个土匪组(bandit)将tom这个用户从原来所在的police组,修改到 bandit(土匪)组。
- id tom:查看tom组信息
- groupadd bandit
- usermod -g bandit tom
- 创建一个土匪组(bandit)将tom这个用户从原来所在的police组,修改到 bandit(土匪)组。
36_权限详细介绍
主要指文件和目录的权限
权限的基本介绍
ls -l中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
前0~9位字符说明
- 第0位确定文件类型(d, -, l, c, b)
- -:普通文件
- l:软链接
- c:字符设备(键盘,鼠标)
- d: 目录
- b:块文件,硬盘
- 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User
- 第4-6位确定所属组(同用户组的)拥有该文件的权限,–Group
- 第7-9位确定其他用户拥有该文件的权限—Other
rwx权限详解
- rwx作用到文件
- [r]代表可读(read):可以读取,查看
- [w]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
- [x]代表可执行(execute):可以被执行
- rwx作用到目录
- [r]代表可读(read):可以读取,ls查看目录内容
- [w]代表可写(write):可以修改,目录内创建+删除+重命名目录
- [x]代表可执行(execute):可以进入该目录
文件及目录权限实际案例
ls -中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
- 前10个字符确定不同用户能对文件干什么
- 第一个字符代表文件类型:文件(-),目录(d),链接(I)
- 其余字符每3个一组(rwx)读(r)写(w)执行(x)
- 第一组rwx:文件拥有者的权限是读、写和执行
- 第二组rw-:与文件拥有者同一组的用户的权限是读、写但不能执行
- 第三组r–:不与文件拥有者同组的其他用户的权限是读不能写和执行
- 可用数字表示为:r=4,w=2,x=1因此rwx=4+2+1=7
- 1:
- 如果是文件,表示硬连接数
- 如果是目录,表示子目录数
- root:用户
- root:组
- 1213:文件大小(字节,如果是文件夹,显示4096字节)
- Feb 2 09:39:最后修改日期
- abc:文件名
37_权限管理
修改权限-chmod
- 基本说明:
- 通过chmod指令,可以修改文件或者目录的权限。
- 第一种方式:+、-、=变更权限
- 字符意义:
- u:所有者
- g:所有组
- o:其他人
- a:所有人(u、g、o的总和)
- 一些示例
- chmod u=rwx,g=rx,o=x(文件目录名)
- chmod o+w(文件目录名) 添加一个权限
- chmod a-x(文件目录名) 减少一个权限
- 案例演示
- 给abc文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
- chmod u=rwx,g=rx,o=rw abc
- 给abc文件的所有者除去执行的权限,增加组写的权限
- chmod u-x,g+x abc
- 给abc文件的所有用户添加读的权限
- chmod a+r abc
- 给abc文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
- 字符意义:
- 第二种方式:通过数字变更权限
- r=4 w=2 x=1 rwx=4+2+1=7
- (chmod u=rwx,g=rx,o=x 文件目录名)相当于 (chmod 751文件目录名)
- 案例演示
- 将/home/abc.txt文件的权限修改成rwxr-xr-x,使用给数字的方式实现
- chmod 755 /home/abc.txt
修改文件所有者-chown
- 基本介绍
- chown newowner file 改变文件的所有者
- chown newowner:newgroup file 改变文件的所有者和所有组
- -R 如果是目录则使其下所有子文件或目录递归生效
- 案例演示:
- 请将/home/abc .txt 文件的所有者修改成tom
- chown tom abc.txt
- 请将/home/kkk 目录下所有的文件和目录的所有者都修改成tom
- chown -R tom kkk/
- 请将/home/abc .txt 文件的所有者修改成tom
修改文件所在组-chgrp
- 基本介绍
- chgrp newgroup fle 改变文件的所有组
- 案例演示:
- 请将/home/abc .txt文件的所在组修改成shaolin
- chgrp shaolin /home/abc.txt
- 请将/home/kkk目录下所有的文件和目录的所在组都修改成shaolin
- chgrp -R shaolin /home/kkk
- chgrp -R shaolin /home/kkk
- 请将/home/abc .txt文件的所在组修改成shaolin
38_权限最佳实践
案例:警匪游戏
- 先用root修改xh的组
- usermod -g police xh
- 使用jack给他的家目录/home/jack的所在组一个rx的权限
- chmod g=rx jack/
- xh需要重新注销在到jack目录就可以操作jack的文件