一、Linux基础知识点
硬盘
硬盘是可以存储大量信息资源的媒介。我们平时看到的硬盘是方方正正的一块挺沉的铁匣子,但是其实硬盘是圆的,加上一些控制电路以后,为了便于携带而设计成为方形外壳。但是硬盘真是圆的,不骗你,要不怎么叫做盘呢?第二,你需要知道的是硬盘可以进行分区。可以把硬盘分区成为很多个分区,看来分区即是一个名次也是一个动词。什么叫做名次的分区呢?现在的硬盘越来越大,存放的资源越来越多。为了更合理的管理使用硬盘资源,更有效的提高查询速度和访问质量,我们可以把硬盘划分为很多分区,分别存放一些信息。当你需要读取某一个资料的时候,系统会自动使用最近的磁头去读取,加快读取速度。硬盘分区是从硬件的基础上对资源进行合理管理的手段。
分区已经了解了,但是我们不能只有分区啊,我们得用一个方法来控制分区。Windows操作系统使用了盘符这个概念,用单一的字母来表示硬盘上的不同分区,比如,C盘,D盘等等。在Windows2000以前,C盘对应了第一个分区,D盘对应第二个分区,依此类推。到了Winows2000,这个对应关系可以自己调整了。
在Linux里边,我们没有盘符这个概念,我们用目录的形式进行管理。
简单说说目录吧,其实大家都很清楚的。如果我们把数以万计的水果扔在一个箩筐里面是不是很难找?但是如果我们把苹果放在叫做苹果的箩筐里面,把梨放在叫做梨的箩筐里面……这样是不是大大简化了我们寻找指定水果的速度?这些水果如果是我们的文件,那么我们用的箩筐就叫目录。新的问题出现了,即使把桃子扔在叫做桃子的箩筐中,我们仍然很难从好几千个桃子里面找出来自四川成都龙泉驿的桃子啊。聪明的你一定想到在桃子的箩筐中再放入很多叫做四川啊,河北啊,广州啊这些名字的箩筐,把不同产地的桃子放进去。对!就这样!我们在一个文件目录下面可以再建立新的文件目录,把文件进行非常细致的管理。到这里你明白了什么叫做目录,还明白了目录是可以嵌套的,这就可以了。目录技术是从软件的基础上对资源进行管理的方法。
回到Linux对于硬盘的管理里面来:在Linux里边,我们没有盘符这个概念,我们用目录的形式进行管理。把每一个分区和某一个目录对应,以后对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一。这个把分区和目录对应的过程叫做挂载-mount。这种对应关系可以由用户随时中断和改变。
SWAP交换分区
这里需要提一下交换分区。我们如果没有足够的内存,也许就不能运行某些大型的软件,解决的办法是在硬盘上划出一个区域来当作临时的内存,好像内存变大了。Windows操作系统把这个区域叫做虚拟内存,Linux把它叫做交换分区swap。虽然随着硬件价格的下降内存已经不大会限制我们了,但是交换分区这个概念却保留下来,而且有继续保留下去的原因,当然涉及到内核的问题,我们不多讨论,我们要说明的是,安装Linux时候建立交换分区时,如果你的内存只有64M或则128M,那么交换分区最好设置成为它的3倍,如果你的分区足够大,有256M或则512M,那么设置成为相同大小就可以了。但是请注意,最好大小为2的N次幂的数字。
分区格式
硬盘只是一个用电磁的方式纪录信息的媒介,我们可以通过不同的格式来管理。不同的操作系统选择了不同的格式,同一种操作系统也可能支持多种格式。微软的操作系统选择了fat16格式作为DOS的分区格式,往后windows95和windows98支持fat32格式,windowsNT使用NTFS4格式,windows2000以及XP支持NTFS5,也支持fat32,但是她们都不支持Linux上常见的分区格式。Linux是一个开放的操作系统,它最初使用ext2格式,后来使用ext3格式,但是它同时支持非常多的分区格式,包括很多大型机上UNIX使用的XFS格式,也包括微软的那些fat以及NTFS格式。
在给硬盘分区时就需要指定使用的分区格式。
掌握Linux的目录结构
既然目录是用来方便文件管理的工具,那么Linux下面不同的目录到底保存了哪一类的文件呢?
目录名称 意义
/bin 该目录中存放Linux的常用命令,在有的版本中是一些和根目录下相同的目录。
/boot 该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息
/dev 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。例如在系统中键入”cd /dev/cdrom”,就可以看到光驱中的文件;键入”cd /dev/mouse”即可看鼠标的相关文件。
/cdrom 该目录在刚安装系统时是空的,你可以将光驱文件系统挂在这个目录下, 例如”mount /dev/cdrom /cdrom”
/etc 该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。
/sbin 该目录用来存放系统管理员的系统管理程序。
/home 如果建立一个名为”xx”的用户,那么在/home目录下就有一个对应的”/home/xx”路径,用来存放该用户的主目录。
/lib 该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库
/lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。
/mnt 该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。
/proc 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的
/root 如果你是以超级用户的身份登录的,这个就是超级用户的主目录
/tmp 用来存放不同程序执行时产生的临时文件
/usr 用户的很多应用程序和文件都存放在该目录下
二、Linux基础命令大全
关闭防火墙
systemctl stop firewalld.service
禁止防火墙开机启动
systemctl disable firewalld.service
关闭SELinux
nano -w /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled保存并退出:^x->y->回车
————–
命令:ls
-a 这个选项能显示.开头的隐藏文件
-i 显示每个文件的inode号
-m 所有项目以逗号分隔,并填满整行行宽
-R 同时列出所有子目录层
-h 将列出文件的大小以人性化格式输出
–color=tty(2个-号)显示文件的时候以色彩提示
目录 可执行文件 连接文件 一般文件
蓝色 绿色 淡蓝色 白色
查看文件状态修改时间
ls -lc [文件名]
查看文件的访问时间
ls -lu [文件名]
查看文件的最后修改时间
ls -l
显示文件的详细访问时间
ls –full-time
显示本地目录下以” .”开头的文件
ls -d .*
————
命令: date 显示系统当前时间
命令格式: date [选项]
-R 按照RFC822文档中的时间格式来实现时间
-r 文件名 显示文件的最后修改日期
-u 显示utc时间(通用时间)
使用date查看过去/将来的时间
1. 查看2045年8月15日是星期几(当前时间为2014-9-27)
date -d “+31year -1 month -12 day”
2. 显示2014年1月1日星期几
date -d “+3month +5day”或#date -d “+4month -26day”
————–
命令: hwclock 显示硬件时钟
将系统时钟同步至硬件时钟
hwclock –systohc
将硬件时钟同步至系统时钟
hwclock –hctosys
—————
命令: tzselect 功能:设置系统时区
1. 设置当前系统的时区
tzselect
命令: timedatectl 功能:设置系统时间及日期
语法格式:timedatectl [选项] [日期]
示例:
1. 显示各项当前时间
timedatectl
2. 显示系统所支持的时间区域
timedatectl list-timezones
3.设置当前系统的时间区域
timedatectl set-timezone Asia/Shanghai
4. 设置当前系统时间
timedatectl set-time “2014-09-0912:29:30”
5.设置NTP支持
timedatectl set-ntp true
————-
命令: mkdir 创建目录
-p 建立多级目录
-m 在建立目录的时候给目录赋于权限值
示例: mkdir -p /name/a/b/c
——–
命令: rmdir 删除空目录
-p 删除多级空目录
示例: mkdir -p /name/a/b/c
注意:目录本身一定要是空的
————
命令: rm 删除文件/目录
-i 在删除文件之前需要手工确认
-v 在删除文件的时候显示信息
-r 删除目录 -f 忽略提示
示例: rm -v filename
常用选项: rm -rf 目录名
———–
命令:cp 复制命令
cp [选项] 文件名(原件) 目的文件名(复印件)
-R 复制整个目录里的内容
-p 复制完后保持目录的权限值
-v 在复制文件的时候显示进度
-f 在复制的时候如果碰到目的文件名有重复就将原先的删除
————
命令: mv 移动文件或目录/修改文件或目录名
命令格式: mv [选项] 源文件 目的路径
-i 如果目的地有相同文件名时会出现提示
-v 在搬移文件时显示进度,在移动多文件时非常有用
-u 当移动时只有源文件比目的文件新的时候才会移动
-f 强制覆盖已有的文件
示例: mv -i 1.jpg /home/2.jpg
————-
命令: pwd 显示当前工作路径
———–
命令:cat 查看文本文件
命令格式: cat [选项] 文件名
-b 显示文件内容的时候显示行数
-n 显示文件内容包括空行
-s 将多个空行合并成一个空行输出
————-
命令: more 查看文本文件命令
命令格式: more [选项] 文件名
+行数直接从给定的行数开始显示
-s 将多个空行压缩成一个空行
-p 清除屏幕后再显示
提示: 用more打开一个文件后用空格向下翻页,用b向上翻页
————
命令: nano 功能:文本编辑器
命令格式:nano [选项] [行号] 文件名
————–
命令: head 查看文件头部
命令格式:head [选项] 文件
-n <行数> 显示文件的最前指定的行
-c <字节数> 显示文件前N个字节数里的内容
-q 不输出文件头的内容
-v 输出文件头的内容
示例: head -n 15 test.file
————-
命令: tail 查看文件尾部
命令格式:tail [选项] 文件
-f 循环读取
-c <字节数> 显示文件前N个字节数里的内容
-q 不输出文件头的内容
-n <行数> 指定所显示的行数
-v 输出文件头的内容
示例: tail -n 15 test.file
————-
命令:ln 生成链接文件
命令格式:ln [选项] 源文件 链接文件
-f 删除已存在的目的文件
-i 如果碰到有重复名字的提示如何操作
-v 显示操作信息
-s 软链接选项
————-
命令: file 功能:查看文件的类型
————-
命令: stat 功能:显示文件或文件系统状态
命令格式:stat [选项] <文件/目录>
-f:查看指定的文件系统
stat可查看:
1. 文件名 2. 文件尺寸 3. I节点号 4. 创建时间/访问时间/状态(属 主、组、权限)修改时间 5.权限 6.链接文件个数 7. 属主及属组等
—————
多命令配合或结果导入、导出符号
” |” 管道符号
” >” 输出重定向
” >>” 输出重定向
” <” 输入重定向
多命令配合或结果的引用符号
” ” 双引号
‘ ‘ 单引号
反引号
————–
命令: whereis
特点: 是查找工具中速度最快的一个,但是whereis查找的范围有限, whereis 只能查找2进制程序,文档和源码。
命令: which
which命令是查找工具中速度最快命令之一,但是which查找的范围有限,但是 它可以给用户显示出命令所在的路径
命令格式:which 文件名
———–
find -size n [c]
查找n值大小的文件,默认单位是块(1块=512字节)
1. 查找大于1500字节的文件
find ~ -size +1500c
2. 查找等于1500字节的文件
find ~ -size 1500c
3. 查找小于1500字节的文件
find ~ -size -1500c
4. 查找大于512k字节的文件
find ~ -size +512k
5. 查找等于1M字节的文件
find ~ -size 1M
6. 查找小于1G字节的文件
find ~ -size -1G
7. 查找大于10块的文件
find ~ -size +10
8. 查找等于10块的文件
find ~ -size -10
9. 查找大于10M小于20M的文件
find ./ -size +10M -size -20M
10. 查找小于10块的文件
find ~ -size -10
11. 查找文件/目录字节为0的文件(即空文件)
find / -empty
———–
命令: grep
功能: 通过正则表达式查找文件中的关键字
参数:
-i:忽略大小写
-c:打印匹配的行数
-C:打印出匹配的上下文(上N行,下N行)的多少行
-l:列出匹配的文件名
-L:列出不匹配的文件名
-n:打印包含匹配项的行和行标
-w:仅匹配指定的单词而非关键字
-e:索引匹配字串
-r:递归查询
-v:不输出匹配的行
-A <行号>:显示所找的匹配字段,并显示下面指定的行数的信息
-B <行号>:显示所找的匹配字段,并显示上面指定的行数的信息
正则表达式表示方法:
忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
< 从匹配正则表达式的行开始
> 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ n – m ] 范围 ;如[A-H]即包含A至H都符合要求
. 所有的单个字符
* 所有字符,长度可以为0
———
命令: egrep
信息: grep的增强版/扩充版(即grep -E)
特点:
1.支持?匹配,即匹配0到1个正则表达式
2.支持+匹配,即匹配1到N个正则表达式
3.支持”或关系”的匹配
4.在查找范围时,可直接用{a,z},而不需要””符号
5.可以被()来包含正则表达式进行分组
6.参数与grep基本通用
示例:
1. 递归且不区分大小写对test字段查找
grep -ri “test” ./
2. 打印匹配”test”关键字有多少行
grep -c “test” grepcmd.txt
3. 打印匹配”test”关键字的上下文各1行
grep -C 1″test” grepcmd.txt
4. 打印匹配test关键的行并显示行号
grep -n “test” grepcmd.txt
5. 查找开头为”#”的行,并显示行号
grep -n ^# grepcmd.txt
6. 查找在本地目录下(含子目录)结尾为”c”的文件
grep -r c$ ./
7. 查找以”man”开头的单词
grep ‘<man’* grepcmd.txt
8. 查找”man”仅匹配此三个字符
grep ‘<man>’ grepcmd.txt
9. 查找含有以”D”字符开头的行
grep -n ^[D] grepcmd.txt
10. 查找含有以”A-F”字符开头的行
grep -r “^[A-F]” ./
11. 查找含有以”A-F”字符开头,第2个字符为i的行
grep “^[A-F]i” grepcmd.txt
12. 查找含有以’nobody’字符的行及下面3行信息
grep -A 3 ‘nobody’ /etc/passwd
13. 查找含有以’nobody’字符的行及上面3行信息
grep -B 3 ‘nobody’ /etc/passwd
14. 查找以D或d字符为开头的行
egrep ‘(^D|^d)’ egrepcmd.txt
15.匹配以D开头的0个或1个字符
egrep ^D? egrepcmd.txt
16.查找不包含”chuai”及”lisa”的字段
egrep -v ‘^(chuai|lisa)’ egrepcmd.txt
———-
命令: cut
功能: 对所需字符进行截取
-d “n”:定义分界符,即点位
-f n:取第几位的字符
示例:
1. 以空格符为分界符,进行第2位截取.
cut -d ” ” -f 2 ./cutcmd.txt
2. 以空格符为分界符,进行第1,3位截取.
cut -d ” ” -f 1,3 ./cutcmd.txt
———
命令:sed
功能:通过指定的正则表达式完成指定关键字的过滤、截取、修改等操作
特点:
1.sed属于一个流线式的非交互式的编辑器
2. sed在输入命令和文件名后,将在屏幕上输出
3.在不用重定向至文件之前,是不会改变文件现有内容以避免修改文件时出现问题
示例:
1.将install.log的第1-3行删除 $sed ‘1,3d’ install.log
2.对install.log查找以A或a开头且后面字符为pache的字串 $sed -n ‘/^[Aa]pache/p’ install.log
3.打印匹配字段的行及所有行 $sed ‘/ftp/p’ install.log
4.打印匹配字段的行 $sed -n ‘/ftp/p’ install.log
5.默认删除第3行 $sed ‘3d’ install.log
6.默认删除第3行至末尾行 $sed ‘3,$d’ install.log
7.删除含有指定字段的行 $sed ‘/data/d’ install.log 8.将data替换为date $sed –n ‘s/data/date/p’ install.log 9.将行尾noarch为结尾后面增加.chuai字符 $sed ‘s/noarch$/&.chuai/’ install.log
8.将所有行尾noarch的单词替换为chuai单词 $sed -n ‘s/noarch$/chuai/gp’ install.log
9.显示包含ra及data字段的行 $sed –n ‘/ra/,/data/p’ install.og
10.从第5行开始显示直至包含有data的行 $sed -n ‘5,/data/p’ install.log
———–
命令:awk
功能:通过正则表达式,得到需要的行,列信息
示例:
1. 用awk 打印所有包含有data字段的行
$awk ‘/data/’ install.log
2. 查看df -h命令的第2列
$df -h | awk ‘{print $2}’
3. 查看df -h名ing的第2,5列
$df -h | awk ‘{print $2,$5}’
4. 显示install.log的第四行
$awk ‘NR==4’ install.log
5.打印install.log文件中包含data字段行的第二区域
$awk ‘/data/ {print $2}’ install.log
6. 列示月份及年份( 为换行符)
$date | awk ‘{print “Year:” $6 ” Month:” $2 }’
7. 在有/data关键字的行的第1列后面增加1个制表符,并增加RedHat,第2列后面!字符
$awk ‘/data/{print $1 “RedHat Linux”$2 “!” }’ install.log
8. 在有data关键字的行第1列前面增加1个制表符,并增加RedHat,第2列后面!字符)
$awk ‘/data/{print “RedHat Linux, “$1,$2 “!” }’ install.log
9. 在有noarch字段的行前增加记录号($0为行头前)
$awk ‘/noarch/{print NR, $0}’ install.log
10. 在有sda2字段的行前增加行的序号及显示第2列内容
$df -h | awk ‘/sda2/{print NR,$2}’
11. 匹配noarch字段,如果有,则显示整行
$awk ‘$2 ~ /noarch/’ install.log
12. 匹配不存在noarch字段的行,如果有,则显示整行
$awk ‘$2 !~ /noarch/’ install.log
—————
命令:sort
功能:默认以排序ASCII方式进行排序[a-z]
参数:
-u 去除重复的行
-r 降序排序[z-a]
-n 数值排序,默认情况10比2小,主要因为sort判断第一字符的值
-k 以文本的列进行判断
-t 设定分界符
示例:
1. 对/etc/passwd文件进行升序排序
sort /etc/passwd
2. 对/etc/passwd文件进行降序排序
sort -r /etc/passwd
3. 对/etc/passwd第3列进行数值排序,分界符为:
sort -n -k 3 -t : /etc/passwd
4. 对test.txt文件中重复的行删除并升序排序
sort -u test.txt
5. 对/etc/shadow文件进行降序排序
sort -r /etc/shadow
6. 对/etc/passwd第3列进行数值排序,分界符为:
sort -n -k 3 -t : /etc/passwd
7. 对/etc/passwd的第2列进行逆序排序,并对第3列进行数值排序,优先级为第2列
sort -k 2r -k 3n -t : /etc/passwd
8. 对/etc/passwd的第3列进行数值排序,第2列进行逆序排序,优先级为第3列
sort -k 3n -k 2r -t : /etc/passwd
———–
命令:wc
功能:统计行数、字数、字符数、文件总统计数
参数:
-l 统计行数
-c 统计字节数
-w 统计字数(单词数)
示例:
1. 统计/etc/passwd文件行数
wc -l /etc/passwd
2. 统计/etc/passwd文件的字数
wc -w /etc/passwd
3. 统计/etc/passwd文件的字节数
wc -c /etc/passwd
4. 统计/etc/passwd文件行数和字节数
wc -lc /etc/passwd
5. 统计/etc/passwd与/etc/fstab各文件的行、字、字节数
wc -lwc /etc/passwd /etc/fstab
————–
命令:uniq
功能:检查文本中重复出现的行
-c 显示输出,并在文本行前加出现的次数,但如果重复行不连续,则不认为是重 复的行
-d 只显示重复的行
-u 只显示不重复的行
1. 对test.txt内容进行检查并显示次数
uniq -c test.txt
2. 对test.txt的重复行不显示
uniq -u test.txt
3. 忽略test.txt的第1列,对第2列进行检查
uniq +1
4. 对test.txt的显示重复行
uniq -d test.txt
5. 忽略test.txt的第1个字符, 从第2个字符开始进行检查
uniq -s 1 test.txt
6. 对每行的第2个字符以后不在做检查
uniq -w 2 -c test.txt
————
命令:tac
功能:将行颠倒
说明:将最头行放置最底行,文本中所有的行均颠倒输出
———–
命令:tr
功能:大小写转换
语法格式:tr 现有小写范围 转换大写范围
tr 现有大写范围 转换小写范围