15.时间日期指令
date
1.查看日期。
2.修改日期。
cal
查看日历。
cal (看本月日历)
cal 2020 (看2020年的12个月所有日历)
16.搜索查找指令
1)find
递归向下搜索目录。
查询方式:文件名,用户名,文件大小
文件名:find /home -name *.txt (查找home目录下靠文件名的所有txt文件)
用户名:find /opt -user root | more (找opt目录 靠用户名 为root的所有文件,并实现分页功能)
文件大小:find / -size +200M (从根目录找 ,+表示大于200M,-则反之,不写则是=)
2)locate
快速定位文件路径。
直接后面输入文件名字就行了
首次使用需要updatedb指令,创建一个属于这个指令的小型数据库来检索文件。
updatedb
locate hello.txt
3)which
查看某条指令在哪个目录下。
which ls
4)grep(有选项)
从文件内容中查找指定内容。
一般和管道符号| 结合使用,表示将前一个命令的处理结果输出传递给后面的命令处理。
举例: (两个写法)
cat a.txt | grep "hello" (意思就先查找这个文件,且过滤掉除了hello的其他内容)
grep -n "hello" /home/hello.txt
管道还可以往后延伸cat a.txt| grep "hello"|more....等等
选项:
● -w:精准关键字搜索
● -r:递归搜索
● -n:显示行号
● -i:忽略字符大小写
● -o:仅显示匹配到的字符串本身
● -e:支持拓展的正则表达式元字符(egrep)
使用 -e 选项是为了在一个 grep 命令中指定多个模式,以便它能够匹配这些模式中的任何一个。
要匹配包含 hello 或 world 的行,可以使用 -E 选项来启用正则表达式,并使用管道运算符和 grep 命令来实现 或 操作,例如:
grep -E "hello|world" myfile.txt
● -q:不输出任何消息
● -v:显示不被模式匹配到的行(排除匹配结果)
● -c:只统计匹配的行数
17.压缩解压指令
1)gzip/gunzip(压缩和解压)
这两个只能压缩成.gz文件和解压.gz文件。
gzip /home/hello.txt
gunzip /home/hello.txt.gz
2)zip/unzip(压缩和解压)(有选项)
压缩:
zip -r myhome.zip /home 等效于zip -r myhome.zip /home/*
(压缩包括home以及home里面的文件夹,压缩完放到当前目录)
解压:
unzip -d /opt/tmp /home/myhome.zip
(把压缩文件递归解压到绝对路径/opt/tmp目录中。解压哪个呢?解压绝对路径/home/myhome.zip这个压缩文件)
3)tar(压缩和解压通用)(有选项)
tar[选项] xxx.tar.gz 打包的内容
1.压缩多个文件,将/home/pig.txt和/home/dog.txt压缩成一个pc.tar.gz
压缩:
tar-zcvf pc.tar.gz /home/pig.txt /home/dog.txt
(打包并压缩,产生.tar打包文件,显示详细信息,指定压缩后的文件名。指定文件名。指定文件,可以多个,用空格隔开即可,但是解压的时候发现会把home也压进去??)
2.将/home文件夹压缩成myhome.tar.gz
tar-zcvf myhome.tar.gz /home
3.将pc.tar.gz解压到当前目录
tar-zxvf pc.tar.gz
4.将myhome.tar.gz解压到/opt/tmp2目录下面
mkdir /opt/tmp2
tar -zxvf /home/myhome.tar.gz -c /opt/tmp2
(解压文件,解压哪个位置的压缩文件?
/home/myhome.tar.gz
解压到哪里 指定解压选项-c
指定位置/opt/tmp2)
18.组的基本介绍
有3个名词理解一下
1)所有者
文件被创建的时候,默认所有者是目前登录的用户
简单来说,谁生下我谁就是我妈,也可以换个妈
2)所在组
用户被创建的时候,默认所在组就是当前的用户名
文件被创建的时候,默认所有者是目前登录的用户。并且加入到所有者所在的组中
简单来说,你在哪个国家就是哪个国的,也可以改变国籍
3)其他组
除了文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
对于美国而言,我就是其他国家的
对于英国而言,我也是其他国家的
但对于中国而言,我就是所在组
查看文件所有者
ls -ahl
修改文件所有者
chown 用户名 文件名
组的创建
groupadd 组名
创建用户bb并放入到mm组
groupadd mm
useradd -g mm bb
id bb (显示bb用户的信息,看看是否在mm组里)
修改文件或者目录所在的组
默认在所有者当前的组。
chgrp 组名 文件名或者目录名
使用root用户创建文件orange.txt,看看当前文件属于哪个组,然后修改文件所在组到fruit。
groupadd fruit
touch orange.txt
ls-ahl
chgrp fruit orange.txt
修改用户所在的组
在添加用户时,可以指定将该用户添加到哪个组中,用root管理权限也可以改变某个用户所在的组。
usermod -g 新组名 用户名
实例:将zwj用户从原来的组修改到wudang组
1.id zwj (查看zwj用户的信息,看看现在属于哪个组)
2.cat /etc/group 或者cat /etc/group | grep wudang(查看配置文件中所有组,看看有没有wudang这个组)
usermod -g wudang zwj(修改组)
id zwj (再次查看zwj用户的信息,看看现在属于哪个组)
但是!当你修改完用户的组,可能还会出现权限不够,因为你在登录的时候身份就已经确定了,重新登录就好了。
修改用户登录的初始目录
usermod -d 目录名 用户名
注意:用户需要有进入到新目录的权限,否则登录的时候会失败
19.权限
当我们ls -al查看当前目录信息的时候,通常都会有一串-rwxrw-r--,什么乱七八糟的一共10位,分为4组。
来,我们讲解一下这一串烤串bushi
第一组或者说第一个:
有这5种类型(d ,-,l,c,b),上面的是第二种-
l链接,相当于快捷方式
d目录,相当于文件夹
c字符设备文件,相当于鼠标键盘,在/dev下能看到
b设备文件,相当于硬盘
-普通文件,比如.txt
第二组第2-4位:rwx
确认所有者(该文件的所有者)拥有该文件的权限---User
r表示read读,w表示write写,x表示execute执行
第三组第5-7位:rw-
确认所属组(同用户组的)拥有该文件的权限---Group
第四组第8-10位:r--
确认其他组拥有该文件的权限
rwx权限讲解
文件
r:可以打开文件,查看内容
w:可以修改文件里的内容,但不一定能删文件,要删的前提是对该文件所在的目录有写(w)权限。
x:可以被执行,前提是一个可执行文件
目录
r:可以读取目录下有什么文件(ls -l)
w:可以对目录内文件进行创建删除重命名目录
x:可以进入该目录
rwx所代表的数字
所有者rwx即4+2+1=7;
所属组r-x即4+1=5;
其他组r-x即4+1=5。
数字可以进行组合。
所以一个普通文件的–rwxr-xr-x转换成权限数字为755。
即所有者对此目录有全部权限7,所属组对此目录有读、执行权限5,其他组对此目录有读、执行权限5。
修改权限chmod
通过chmod指令,修改文件或者目录的权限
用+,-,=变更权限
u:所有者, g:所有组, o:其他人,a:所有人(u,g,o的总和)
chmod u=rwx,g=rx,o=x 文件名或者目录名
chmod o+w 文件名或者目录名
chmod a-x 文件名或者目录名
用数字变更权限
r=4,w=2,x=1
chmod u=rwx,g=rx,o=x 文件名或者目录名 等效于 chmod 751 文件名或者目录名
20.ls -l显示的内容详解
第一个是权限
第二个对于目录来说,是目录打开里面的文件数+目录数(不包括子子目录)
对于文件来说,直接就是一个固定1
第三个是用户
第四个是用户组
第五个是文件大小(字节),如果是文件夹,直接显示4096字节
第六个是最后修改时间
第七个是文件名或目录名
21.修改文件/目录所有者chown
chown新的所有者 文件/目录 (改变文件/目录所有者)
chown tom /home/abc.txt (把abc文件的所有者改成tom)
chown 新的所有者:新的组 文件/目录 (改变文件/目录所有者和所在组)
chown -R tom /home/tmp(用递归把tmp目录所有文件和目录的所有者改成tom)
目录需要递归-R
22.修改文件/目录所在组chgrp
chgrp 新的组 文件/目录
groupadd shaolin(添加组)
chgrp shaolin /home/abc.txt(改变普通文件的组)
chgrp -R shaolin /home/test(用递归改变目录的组)
23.定时调度任务指令
1)crontab(有选项)
进行连续定时任务的设置。
-e:编辑任务,里面可能有很多命令,往后加就行了
-l:查询全部任务
-r:删除全部任务
sevice crond restart:重启任务调度
*/1 * * * * ls -l /etc > /tmp/to.txt (每分钟执行一次)
分钟 小时 天 月 周(特殊)
2)at(有选项)
一次性定时任务,可以执行指令或shell脚本。
注意:需要保证atd进程在运行。
怎么看:
ps -ef (查看线程)| grep atd(筛选atd)
at 选项 时间 +回车键+需要的指令+(2次ctrl+d)
两天后下午5点查询home目录
24.磁盘分区,挂载
目录实际存放数据的位置是硬盘/磁盘。
传统MBR分区方案:Linux规定主分区(或扩展分区)占用从1到16的前4个数字。以第一个IDE硬盘为例,硬盘最多只能划分4个主分区或3个主分区和1个扩展分区。如果都是主分区,那么只有4个分区。但如果一个硬盘使用扩展分区,则可以在扩展分区内创建多个逻辑分区。在这种情况下,总的分区数量包括主分区和逻辑分区,可以达到16个分区。
GPT(GUID Partition Table)分区方案:每个磁盘可以划分为128个主分区,并且没有扩展和逻辑分区之间的限制。
linux硬盘
如果第一块硬盘叫sda,那么第二块就叫sdb,sdc...依次下去。
IDE
hdx~(x:盘号a,b,c...)(~: 其中1,2,3,4都是主分区,从第5开始为逻辑分区,最大到16)
IDE类型不常用。
SCSI
sdx~
SCSI类型常用。
查看所有硬盘分区的挂载情况
lsblk或lsblk -f(会显示唯一的标识符UUID),硬盘的类型TYPE是disk,分区的类型TYPE是part。
查看所有硬盘存储的使用情况
df -h
查看指定目录的硬盘存储的使用情况
du -h (默认当前目录)
选项:
-s指定目录占用大小汇总
-h 带计量单位
-a 含文件
-c 总计
--max-depth=1 子目录深度
ls -l /opt | grep "^-" | wc -l (打印opt下的普通文件并输出个数)
ls -l /opt | grep "^d" | wc -l (打印opt下的目录并输出个数)
ls -lR /opt | grep "^d" | wc -l (递归打印opt下的目录还有所有子文件夹并输出个数)
分区概念
磁盘容量与主分区、扩展分区、逻辑分区的关系:
硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和
主分区:是独立的,是看得到的。对应磁盘上的第一个分区,“一般”就是C盘。
扩展分区:是一个概念,是看不到的。当整个硬盘分为一个主分区的时候,就没有了扩展分区。一个硬盘只能有一个扩展分区,但一个扩展分区可以有多个逻辑分区。
逻辑分区:是看得到的。Linux规定它们必须在扩展分区上构建(DOS和Windows系统也是如此),而不是在主分区上。因此,我们可以看到扩展分区可以提供更灵活的分区模式,但是不能用作操作系统引导,一般为D,E盘。
在Windows系统把所有的主分区和逻辑分区都叫做“盘”或者“驱动器”,并且把所有的可存储介质都显示为操作系统的“盘”。
因此,从“盘”的概念上无法区分主分区和逻辑分区。
分区指令
fdisk 硬盘位置
Linux系统中硬盘位置:/dev/sdb
输入后发现有a-x的字母让我们输入。
n就是添加新分区。
回车后发现有p和e让我们输入,二选一。第一个是主分区,第二个是拓展分区。
选择p主分区。然后让你选择1-4,代表你要在这个硬盘创建几个p主分区,1就是只创建一个分区。接下来默认即可。
最后输入w保存即可退出。
格式化分区
mkfs -t ext4 /dev/sdb1 (固定指令+选项 文件类型 分区位置)
如果格式化完成,输入lsblk -f查询一下所有硬盘分区的挂载情况,成功的话就会为这个分区分配一个唯一不重复的40位字符串。
挂载(重启重置)
mount /dev/sdb1 /newdisk(固定指令 分区位置 目录)
linux的文件系统包含了一整套文件和目录,且将一个分区和一个目录绑定起来。
但是用命令行挂载重启会失效。
挂载(重启不重置,持久化)
通过修改/etc/fstab实现挂载。
在此文件中前面输入分区位置或者分区UUID,后面输入目录路径,以及最后的0 0
最后重启系统或者执行命令行指令mount -a即可挂载。
卸载
umount /dev/sdb1 或者 umount /newdisk (写上分区或者目录名都可以)
怎么增加一块硬盘并绑定到目录
1.虚拟机增加硬盘(在vmware软件左上角添加)
2.分区(/dev文件夹是我们的设备文件)
3.格式化(安装文件系统,格式化是针对主分区和逻辑分区的。要格式化是因为这和操作系统管理文件系统有关系。没有格式化的分区就像一张白纸,要写入数据,必须对白纸打上“格子”,每个格子里面写一块。而操作系统只认这些格子。)
4.挂载(重启重置)
5.设置自动挂载(重启不重置)