慕课网课程的笔记
1.基础知识:
Linux分为内核版本和发布版本
Linux内核官网:www.kernel.org
Linux主要发行版本:debian ununtu redhat(用的最多) centos 等
开源软件:绝大多数开源软件免费、可以获得软件源代码、可以自由传播改良甚至销售。但是开源是指源代码开放,开源不等于免费。
www.netcraft.com :查看网站的一些技术信息。
AIX是IBM开发的Unix、CentOS是RedHat系列的Linux、Debian是由社区开发和维护的Linux、Ubuntu是一个以桌面应用为主的Linux。
windows里面才叫dos界面,Linux里面叫命令行操作/界面。
Linux中所有内容以文件形式保存,包括硬件。
Linux不靠扩展名区分文件类型(是通过权限区分),但有一些约定俗成的(扩展名不是说一定要有,只是方便用户操作):
- 压缩包:.gz、.bz2、.tar.bz2、.tgz等
- 二进制软件包:.rpm
- 网页文件:.html、.php
- 脚本文件:.sh
- 配置文件:.conf
虚拟机快照:保存虚拟机某一时间状态。
FAT16:最大只能支持2GB的分区
FAT32:单个文件不能超过4GB,分区小于4TB
NTFS:Windows最新的文件系统
Linux支持:EXT2、EXT3、EXT4。
Linux主分区:最多只能有4个。
Linux扩展分区:
- 最多只能有1个扩展分区。
- 主分区加扩展分区最多有4个,就是只能拿一个主分区当扩展分区。
- 不能写入数据,只能包含逻辑分区,就是将扩展分区划分为逻辑分区。
格式化:格式化又称逻辑格式化,它是指用户选定的文件系统(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。
格式化的最终目是写入文件系统,并不是清空数据,格式化时主要做两个事:
- 1、将硬盘分割成等大小的数据块(默认4kb,可以调节);
- 2、建立二维表格(分区相当于柜子,柜子上面又二维表格),表格内容包括ID号、修改时间、权限、文件保存位置等,目的是为了快速查找文件所在数据块,ID号这里面称为I node。每个分区里都有保存ID,修改时间,访问权限的区块。
Linux里面把目录(/etcpasswd/)当作盘符。
必须有的分区:
- /(根分区)
- swap分区(交换分区[可以理解为虚拟内存],内存2倍,不超过2GB)
推荐分区:
- /boot(启动分区,200MB)
分区设备文件名解析:
/dev/hda1 这个 hda1 的 a 代表第一个硬盘(若是b即代表第二个硬盘),1代表第一个分区,hd代表IDE硬盘接口
/dev/sda1 这个 sda1 的 a 代表第一个硬盘,1代表第一个分区,sd代表SCSI硬盘接口或者SATA硬盘接口
硬件设备文件名:
Linux:分区-格式化-给分区起设备文件名-分配盘符(Linux称为挂载点)
盘符—是软件级的概念,分区—是硬件级概念,当Windows启动的时候,它会检测电脑已连接的所有硬盘上它能够识别的分区(NTFS、FAT32等),并自动为其分配盘符。这个分配盘符的过程,就是挂载(mount)过程,只不过这个过程完全不用你参与。具体来说就是,Windows把第一分区关联到c:这个盘符,第二分区关联到d:这个盘符等等。这样,软件中的磁盘管理概念和实际的硬盘分区紧密关联,二者才具有真正的实用意义。
分区就是把磁盘分成几个逻辑部分,盘符就相当于给分好的这几部分各起一个名字,盘符是windows中的概念,就比如C盘、D盘之类的;盘符在linux中叫挂载点,在linux中是拿目录作为盘符的。
盘符是Windows里的概念,在Linux里类似的东西叫挂载点。分区是指把磁盘分为不同的数据存储区域,在Windows里,要经过三步,分区,格式化,盘符;而在Linux里,要多一步,分四步,分区,格式化,取名,挂载点,所以,分区与挂载点(盘符),是在不同步骤下做的不同的事。
关于挂载可以参考,很详细:
https://www.cnblogs.com/ma5on/p/4357625.html
http://forum.ubuntu.org.cn/viewtopic.php?t=257333
挂载:根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载”。
更多信息可以参考:https://www.linuxidc.com/Linux/2016-08/134666.htm
密码原则:
- 复杂性
八位字符以上、大小写字母、数字、符号
不能是英文单词
不能是和用户相关的内容 - 易记忆性
- 时效性(一般90天更换一次)
安装日志:
- /root/install.log 存储了安装在系统中的软件包及其版本信息。
- /root/install.log.syslog 存储了安装过程中留下的事件记录。
- /root/anaconda-ks.cfg 以Kickstart配置文件的格式记录安装过程中设置的选项信息。
2.命令基本格式:
root@localhost: ~#
yangyang@ubuntu:~$
yangyang@ubuntu:~/test$
参数:
- root:当前登录用户
- localhost:主机名
- ~:当前所在目录(家目录)[输入pwd可以看见这个目录],比如管理员的家目录:/root,user1的家目录是/home/user1
- # 超级用户的提示符 普通用户的提示符是$
命令格式:
命令 [选项] [参数]
注意:个别命令使用不遵循此格式;当有多个选项时,可以写在一起;简化选项与完整选项,-a等于–all。
查询目录中内容:
ls [选项] [文件或目录]
ls(ll命令就是ls -l的简写)
选项:
- -a 显示所有文件,包括隐藏文件
- -l 显示详细信息
- -d 查看目录属性
- -h 人性化显示文件大小
- -i 显示inode
- -lh 文件大小以易懂的方式显示
- -ld 查看目录本身的信息,例如权限等 [ls -ld /home/yangyang/test]
代码示例:
~$ ls -l
total 36
d rwxr-xr-x 3 yangyang yangyang 4096 Apr 10 05:36 Desktop
...
//上面3是引用计数,第一个yangyang是文件所有者,第二个yangyang是所属组,4096是文件大小。
3.文件处理命令:
目录处理命令:
mkdir -p [目录名]
-p 递归创建
mkdir bols
mkdir -p japan/cang/bols [创建多层次目录时,要加-p参数,这样才可以递归创建]
切换所在目录:
cd [change directory]
简化操作:
cd ~ 进入当前用户的家目录(直接跳到家目录,~本身就是代表家目录)
cd
cd - 进入操作的上一次目录
cd .. 进入上一级目录
cd . 进入当前目录(也可以使用pwd,查看现在的目录)
相对路径:参照当前所在目录,进行查找。如:[root@imooc ~]# cd ../usr/local/src/(../就是表示上一级目录,然后再添加后面目录,./就是指当前目录)
绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下,都能进入指定网址。
查询所在目录:
pwd
删除空目录:rmdir
rmdir [只能删除空目录,不能包含文件]
删除文件或目录:rm
rm -rf [文件或目录]
例如:rm -rf test 全部删除test下面所有的文件,包括test本身
选项:[rm本来是删文件的,加-r可以删除目录,加-f可以强制删除全部,不用一条条回复]
-r 删除目录
-f 强制
复制目录/文件:cp
cp [选项] [原文件或目录] [目标目录]
-r 复制目录 [不加-r只能复制文件到目录,加上可以复制目录到目录]
-p 连带文件属性复制
-d 若源文件是链接文件,则复制链接属性
-a 相对于-pdr(就是上面的总和,这样源文件和目标文件就一模一样了,属性,时间期限等)
注:
cp test1 demo/test2 复制文件时可以改名,这个就是复制到demo文件夹下面,且名字改为test2
cp test Picture/test1 复制文件夹,这个就是test复制到文件夹Picture下面文件夹test1里面。
剪切或改名命令:mv
mv [原文件或目录] [目标文件]
注:
不论是剪切文件还是文件夹,都不用-r这个选项
如果源文件和目标文件一样时,可以理解为改名命令。
4.常见目录作用:
根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的。(bin是一般用户就可以执行的命令,sbin是root用户才可以执行的命令)。
proc和sys目录不能直接操作,这两个目录保存的是内存的过载点。
可以在家目录root或home,以及tmp目录下随便放内容。
5.链接命令:
链接命令;ln(原文件生成一个目标文件)
ln -s [原文件] [目标文件]
选项:-s 创建软链接
硬链接特征:
- 拥有相同的i节点和存储blcok块,可以看做是同一个文件
- 可通过i节点识别
- 不能跨分区(创建硬链接)
- 不能针对目录使用
注:相当于不同名字,但是对应的信息列表一样,对应i节点一样,指向的block块也一样。因此删除一个硬链接,不影响另一个指向对应的block块。所以硬链接相当于一个文件的不同接入点。
软链接特征:
- 类似windows快捷方式
- 软链接拥有自己的I节点和Block块,但是数据中只有保存原文件的文件名和I节点号,并没有实际的文件数据
- lrwxrwxrwx |软链接 软链接文件权限都为rwxrwxrwx
- 修改任意文件,另一个都改变(注意:创建时原文件要写全路径,不然修改原文件,软链接不可用)
- 删除原文件,软链接不能使用
对于上面4、5两条的理解可以利用下面代码:
ln -s /home/yangyang/test/test3 test4
ln -s test3 test5
软链接是索引块中目标文件名,而不是目标文件inode,如果是inode,删除目标文件,因为有硬链接的存在,使得inode依然存在,则软连接依然有效,所以记录的不是文件inode;而且如果我们删除目标文件,在新建一个相同文件名的文件(内容不同),则软连接就再次有效了,所以软连接记录的是目标文件名,而不是inode;此时,硬链接和软连接的数据是不同的。
通俗理解:
- 一个是你原文件没有了,这个链接就失效了(软链接),类似于windows快捷方式。
- 一个是你原文件没有了。这个文件还在(硬链接)。
6.文件搜索命令:
- 文件搜索命令locate
- 命令搜索命令whereis与which
- 文件搜索命令find
- 字符搜索命令grep
- find命令与grep命令的区别
文件搜索命令locate命令格式:
locate 文件名
//在后台数据库中按文件名搜索,搜索速度更快
/var/lib/mlocate
//locate命令所搜索的后台数据库的路径,即会在上面的路径下进行搜索
updatedb(sudo updatedb)
//因为是在路径中搜索,不能保证实时搜到新创建的文件,所以搜索之前可以更新数据库
locate比较快,但是功能单一;find比较强大,但是速度相对较慢。
搜索命令的命令whereis、which:
whereis 命令 名
结果显示,搜索命令所在路径及帮助文档的所在位置
选项:
-b 值查找可执行文件
-m 值查看帮助文件
which:
相对whereis,还可以看见别名,配置文件等,如果命令有这些信息的话。
PATH环境变量:定义的是系统搜索命令的路径
find命令:
find [搜索范围] [搜索条件]
find /home/yangyang -name test1
find搜索的文件名必须与搜索条件中的文件名一模一样。如果需要模糊匹配,可以使用通配符。
避免大范围搜索,会非常耗费系统资源。
find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配。
通配符:
- *匹配任意多个内容
- ?匹配任意一个字符
- []匹配任意一个中括号内的字符
find /hoem/yangyang -name "ab[cd]"
那么可以找到abc abd这样的文件
find /root -iname install.log
不区分大小写
find /root -user root
按照所有者搜索(所有者是root)
find /root -nouser
查找没有所有者的文件
内核产生、外来文件(win拷进Linux)可以没有所有者。
find /var/log/ -mtime +10
查找10天前修改的文件
-10 10天内修改的文件
10 10天当天修改的文件
+10 10天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
find . -size 25k(.表示当前目录,也可以使用路径)
查找文件大小是25kb的文件
-25k 小于25kb的文件
25k 等于25kb的文件
+25k 大于25kb的文件
find . -inum 262422(.表示当前目录,也可以使用路径)
查找i节点是262422的文件
find /etc -size +20k -a-size -50k
查找/etc/目录下,大于20KB并且小于50KB的文件
-a and 逻辑与,两个条件都满足
-o or 逻辑或,两个条件满足一个即可
find /etc -size +20k -a -size -50k -exec ls -lh {}\;
查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息
-exec/-ok 命令 {}\;对搜索结果再次执行命令,进行筛选。
搜索字符串命令grep:
grep [选项] 字符串 文件名
在文件当中匹配符合条件的字符串
选项:
-i 忽略大小写
-v 排除指定字符串
grep "size" anaconda-ks.cfg
搜索anaconda-ks.cfg文件中,还有size的行。
find命令与grep命令的区别:
- find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,匹配符是完全匹配。
- grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配。
7.Linux帮助命令:
man 命令
获取指定命令的帮助
man ls
查看ls的帮助
man命令级别:
1 查看命令的帮助
2 查看可被内核调用的函数的帮助
3 查看函数和函数库的帮助
4 查看特殊文件的帮助(主要是/dev目录下的帮助)
5 查看配置文件的帮助
6 查看游戏的帮助
7 查看其它杂项的帮助
8 查看系统管理员可用命令的帮助
9 查看和内核相关文件的帮助
查看命令拥有哪个级别的帮助:
man -f 命令
相当于:
whatis 命令 [whereis 命令 更多的信息]
man -f passwd(含有两个级别)
passwd (1)
passwd (5)[然后查看1、5两个命令]
man 1 passwd
man 5 passwd