本文主要是介绍imooc-Linux达人养成计划 I,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
imooc-Linux达人养成计划 I
第1章 Linux简介
1-1 Linux简介
- Linux发展史
- Minix
- 版本
- Linux内核版本
- Linux内核官网:www.kernel.org
- 内核版本说明:2.6.18
- 2:主版本(如果更新发生了很大的质变化)
- 6:此版本(如果更新比较大,累计到了一定的程度,就更新次版本)
- 18:末版本(如果更新不重要,比较小,就修改末版本)
- 目前最新的内核版本:3.16
- Linux发行版本
- 不同的发行版本,使用的内核是基本一致的,都是有内核官网提供,然后加入自己的理解
- redhat,CentOS,fedora,SuSE,ubuntu,debian …
- 服务器领域redhat更加常见
- Ubuntu的图形界面更加常用
- fedora是redhat公司开发的“个人版”,有图像化界面
- centos和redhat的版本功能一样
- Linux内核版本
1-2 开源软件简介
-
开源:开放源代码(未经编译的)
-
Apache:网站服务的搭建软件
- 服务器端使用Apache将写好的网站发布到互联网上,客户端通过浏览器访问
-
NGINX:和Apache一样
- 占用的服务器更少
- 可以支持更大的并发环境
-
MySQL,PHP
Linux+Apache+MySQL+PHP 是一套经典的服务器架构体系
-
MongoDB:nosql的数据库
-
python:一种脚本语言
-
Samba,Ruby,sphinx
-
-
开源软件
- 使用的自由(绝大多数开源软件免费)
- 研究的自由(可以获得软件源代码)
- 散布及改良的自由(可以自由传播,改良甚至销售)
1-3 练习题
Linux严格区分大小写
1-4 Linux应用领域
- 基于Linux的企业服务器
- 嵌入式应用
- ssh:Linux与Linux之间,进行远程安全管理的协议
- 安卓的底层实现是Linux,mac的底层实现是Unix
- 其他应用:机顶盒,小米盒子,智能电视,3D效果的制作……
1-5 练习题
CentOS是RedHat系列的Linux
Debian是由社区开发和维护的Linux
Ubuntu是一个以桌面应用为主的Linux
AIX是IBM开发的Unix
1-6 Linux学习方法
- 应该如何提问?
- 先要尝试自己解决
- Linux的帮助文档
- 网络示例
- 提问的智慧
- 问题详尽
- 报错信息截图
- 先要尝试自己解决
1-7 Linux与windows的不同
-
Linux严格区分大小写(windows下dos)
-
Linux中所有内容以文件形式保存,包括硬件
-
Linux不靠扩展名区分文件类型(通过权限区分)
有些约定俗成的后缀:
- 压缩包:".gz"、".bz2"、".tar.bz2"、".tgz"等
- 二进制软件包:".rpm"
- 网页文件:".html"、".php"
- 脚本文件:".sh"
- 配置文件:".conf"
-
windows下的程序不能直接在Linux中安装和运行
- Linux当中有windows模拟器,装了模拟器之后可以执行windows程序
- 好处:windows中的病毒不会被执行
- 坏处:linux中的软件都必须专门编写
1-8 字符界面的优势
- 字符界面占用的系统资源更少
- 字符界面减少了出错、被攻击的可能性
1-9 练习题
第2章 Linux系统安装
2-1 虚拟机的安装
- VMware简介
- VMware是一个虚拟PC的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的PC,以此来实现在一台机器上真正同时运行两个独立的操作系统
- VMware主要特点:
- 不需要分区或重新开机就能在同一台PC上使用两种以上的操作系统
- 本机系统可以与虚拟机系统网络通信
- 可以设定并随时修改虚拟机操作系统的硬件环境
- 快照功能:记录当前状态并使用恢复
- 建议的VMware配置
- CPU:建议主频为1GHz以上
- 内存:建议1GB以上
- 硬盘:建议分区空闲空间8GB以上
- 安装VMware
2-2 虚拟机的使用
VMware Install Cleaner 彻底删除虚拟机
(直接删除安装路径删除不干净,会有大量系统垃圾残留)
- 新建虚拟机
- 虚拟机硬件设置
- centos6.3至少需要628MB才能启动图形化界面
- 虚拟机网络设置
- 桥接(推荐):虚拟机和真实机之间通信利用真实的本地网卡
- 好处:配置简单;
- 缺点:虚拟机需要占用真实机网段中的IP
- 只要选择桥接可以直接进行虚拟机和真实机之间的通信
- 不仅可以和真实机通信,还可以和该网段下的其他主机或网络设备进行通信
- NAT:虚拟机利用VMware8这块网卡与真实机之间进行通信
- 虚拟机可以实现上网
- HostOnly:虚拟机利用VMware1网卡与真实机之间进行通信
- 虚拟机不能上网,只能在本地使用
- 选择NAT或HostOnly后,虚拟机只能跟真实机进行通信,而不能和局域网内其他的网络设备通信
- 桥接(推荐):虚拟机和真实机之间通信利用真实的本地网卡
- 虚拟机使用技巧
- 快照:将当前状态进行保存,以后可以恢复
- 克隆:将当前状态进行复制,建立一个新的虚拟机
- 链接克隆:只占用很小的空间,完全的模拟另一台机器;删除原始镜像后克隆也不存在
- 完整克隆:克隆虚拟机和原始虚拟机一模一样,互不影响
2-3 系统分区之分区与格式化
- 磁盘分区
- 磁盘分区是使用分区编译器在磁盘上划分几个逻辑部分。碟片一旦划分成数个分区,不同类的目录与文件可以存储进不同的分区。
- 分区类型(Linux和windows下都一样)
- 主分区:最多只能有4个
- 由硬盘的结构决定,硬盘划分成若干个扇区,每个扇区是512个字节,其中446个字节用于记录启动信息,剩下64个字节用来进行分区表示;64个字节当中,每16个字节表示一个分区
- 扩展分区:
- 将一块主分区作为扩展分区
- 最多只能有1个
- 主分区+扩展分区最多有4个
- 不能写入数据,只能包含逻辑分区
- 逻辑分区最多可以划23个(AB为软驱的盘,C为主分区1的盘,剩下23个字母)
- 主分区:最多只能有4个
- 格式化
- 格式化(高级格式化)又称逻辑格式化,它是根据用户选定的文件系统(如TAE16,FAT32,NTFS,EXT2,EXT3,EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间
- 文件系统:越新的文件系统越先进
- windows中:
- FAT16:最大只能支持2GB的分区
- FAT32:单个的文件大小不能超过4G,能支持2T的分区
- NTFS:目前windows中最先进的文件系统,支持更大的分区,更大的单个文件
- Linux中:EXT2,EXT3,EXT4
- centos中,默认的文件系统是EXT4
- windows中:
- 文件系统:越新的文件系统越先进
- 格式化的根本目的是为了写入文件系统
- 磁盘格式化是为了更好的放入和查找数据
- 格式化将分区分隔成等大小的数据块(block),每个数据块默认大小为4KB
- 默认的数据块大小是存储文件的最小空间
- 一个文件的大小超过默认数据块大小时,会将文件放到多个数据块中,这些数据块不一定连续
- 一个数据库放置了一个文件的一部分后还有空余,也不可以再存放其他文件
- 在分区列表中建立二维表格,写入:文件的ID号(I结点-INode),修改时间,权限,数据在块中的存放位置
- 格式化会将分区清空!
- 格式化(高级格式化)又称逻辑格式化,它是根据用户选定的文件系统(如TAE16,FAT32,NTFS,EXT2,EXT3,EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间
2-4 分区之分区设备文件名与挂载
-
硬件设备文件名
-
windows只要分区,格式化,分配盘符就可以使用;
Linux需要给每个分区,格式化,给每个分区起一个设备文件名,然后再分配盘符
硬件 设备文件名 IDE硬盘 /dev/hd[a-d] SCSI/SATA/USB硬盘 /dev/sd[a-p] 光驱 /dev/cdrom或/dev/hdc 软盘 /dev/fd[0-1] 打印机(25针) /dev/lp[0-2] 打印机(USB) /dev/usb/lp[0-15] 鼠标 /dev/mouse - “/”-根目录;“dev"-一级目录,专门用来存放硬件
- 分区设备文件名
- 设备文件名(Linux系统自动分配)
- /dev/hda1(IDE硬盘接口)
- /dev/sda1(SCSI硬盘接口、SATA硬盘接口)
- hd,sd代表硬盘接口
- a代表第一个硬盘,bcd以此类推
- 1代表第一个分区(1234只能给主分区使用,扩展分区从5开始)
- 接口
- IDE硬盘接口:现在的光驱使用的接口,传输速度比较慢,理论传输速度最大达到133Mbps
- SCSI硬盘接口:老式的服务器硬盘传输接口,理论传输速度可达到200Mbps
- SATA硬盘接口:目前硬盘使用最新式,最标准的接口。串口硬盘,分为SATA1,SATA2,SATA3,SATA3的传输速度可达到500Mbps
- 设备文件名(Linux系统自动分配)
-
-
挂载:给分区分配盘符的过程(挂载点——盘符)
Linux中不是以abc作为挂载点,而是以目录作为挂载点
-
必须分区
-
/:根分区
-
swap分区(虚拟内存):交换分区,一般为内存2倍,(实验条件下)不超过2GB
-
当内存<4G时,swap分区大小=2*内存大小;
内存>4G时,swap分区大小=内存大小
-
swap分区没有挂载点!不是给用户使用的,而是系统内核操作的
-
-
-
推荐分区
- /boot:启动分区,200MB
-
文件系统结构
- / - > /dev/sda3(从硬盘空间来看)
- /boot - > /dev/sad1
- /etc
- passwd
- shadow
- group
- /home - > /dev/sda2
- / - > /dev/sda3(从硬盘空间来看)
-
2-5 练习题
常用分区类型:主分区,扩展分区,逻辑分区
根分区不常用
2-6 Linux系统安装
虚拟机第一次启动时会自动从光盘启动,真实机需要手动修改!
-
安装欢迎界面
-
“Install or upgrade an existing system”:安装或升级现有系统
-
“Install system with basic video driver”:安装过程采用基本的显卡驱动
如果显卡不支持,不能被检测,该选项可以保证最基本的图形界面
-
“Rescue installed system”:进入系统修复模式
主要进行Linux的报错修复
-
“Boot from local drive”:退出安装从硬盘启动
当硬盘中有操作系统时可以选择
-
“Memory test”:存储介质检测
看看内存够不够
-
ctrl+alt+enter - > 虚拟机全屏
-
密码原则
- 复杂性
- 八位字符以上,大小写字母,数字,符号
- 不能是英文单词
- 不能是和用户相关的内容
- 易记忆性
- 时效性
- 复杂性
-
软件包选择
-
Desktop(桌面)
-
Minimal Desktop(最小化桌面)
-
Minimal(最小化)
一般在服务器安装,然后需要什么软件装什么软件
-
Basic Server(基本服务器)
常见的功能都有安装
-
Database Server(数据库服务器)
-
Web Server(网页服务器)
-
Virtual Host(虚拟主机)
-
software development workstation(软件开发工作站)
-
-
安装日志
- /root/install.log:存储了安装在系统中的软件包及其版本信息
- /root/install.log.syslog:存储了安装过程中留下的时间记录
- /root/anaconda-ks.cfg:以Kickstart配置文件的格式记录安装过程中设置的选项信息
2-7 练习题
- CentOS 6.x 的默认文件系统类型是ext4
- Linux安装时至少划分根分区和/SWAP分区才能正常安装使用
2-8 XShell的安装和使用
- setup工具
- 红帽专有图形化工具setup设置IP地址
- 使用XShell前先来配置IP地址
第3章 命令基本格式及文件处理命令
3-1 Linux命令格式
-
命令提示符
-
[root@localhost ~]#
-
root:当前登录用户
Linux中的管理员是root(windows是admin)
-
localhost:主机名(默认主机名)
windows在一个局域网内不能使用同一主机名
-
~:当前所在目录(家目录)
- 对管理员来讲,根目录是最高级目录 /root
- 普通用户:/home/user1/
-
#:超级用户的提示符(普通用户的提示符是$)
-
-
-
命令格式:命令 [选项] [参数]
- 中括号代表可选
- 个别命令使用不遵守此格式
- 当有多个选项时,可以写在一起
- 约定选项是调整命令的功能结构,简化选项与完整选项 -a 等于 --all
- 不加参数时只在当前目录进行操作
-
查询目录中内容:ls [选项] [文件或目录]
选项:
-
-a:显示所有文件,包括隐藏文件
Linux当中隐藏文件都以.开头命名
隐藏文件:该文件是系统文件,除非必要不要改动,避免误操作
-
-l:显示详细信息
-rw-r–r--. 1 root root 1207 1月 14 18:18 install.log
-
第一列代表文件权限
-rw-r–r--.
- 文件类型(- 文件 d目录 l软链接文件);特殊文件:块设备文件、字符设备文件、套接字文件和管道文件
- rw-,r–,r–
u所有者,g所属组,o其他人
- 所有者,所属组指代的都是用户和文件之间的关系
- 用户组:相同权限或者相同身份的人所组成的组
- r读,w写,x执行
- .代表ACL权限
-
第二列数字:引用计数,代表这个文件被调用几次,只在硬链接当中有
-
第三列:代表文件的所有者
-
第四列:代表文件的所属组
-
第五列数字:代表文件的大小,单位是字节
-
第六列日期:表示文件的最后一次修改时间
-
第七列:文件名
-
-
-d:查看目录属性
-
-h:人性化显示文件大小(以M,K为单位)
-
-i:显示inode
Linux当中每个文件都有一个id号,系统在查找文件的时候都是通过id号进行查找的文件所在位置
-
3-2 Linux目录处理命令(上)
- 建立目录:mkdir -p [目录名]
- -p 递归创建(先建立上级目录,再在新目录下创建目录)
- 命令英文原意:make directories
- 切换所在目录:cd [目录]
- 命令英文原意:change directory
- 简化操作:
- cd ~ :进入当前用户的家目录
- cd :进入当前用户的家目录
- cd - :进入上次目录
- cd … :进入上一级目录
- cd . :进入当前目录
- 路径
- 相对路径:参照当前所在目录,进行查找
- 绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下都能进入指定位置
- 查询所在目录位置:pwd
- 命令英文原意:print working directory
ctrl + L - > 清屏
Tab键可以进行目录补全,命令补全
3-3 Linux目录处理命令(下)
-
删除空目录:rmdir [目录名]
- 命令英文原意:remove empty directories
- 只能删除空白目录
-
删除文件或目录:rm -rf [文件或目录]
-
命令英文原意:remove
-
选项:
-
-r:删除目录(不加-r时删除目录报错)
-
-f:强制(不加-f时删除每一个文件时都会询问“是否删除”)
没有GUI的Linux是不会有回收站的
-
-
rm -rf /
:格式化,可以在运行时直接进行格式化
-
-
复制命令:cp [选项] [原文件或目录] [目标目录]
- 命令英文原意:copy
- 若目标目录后不加文件名,则为原名复制;添加文件名,即为改名复制
- 选项:
- -r:复制目录
- -p:连带文件属性复制
- 不带-p复制时,复制文件的时间为复制操作执行的时间,而不是原文件的最后修改时间
- -d:若源文件是链接文件,则复制链接属性
- -a:相当于 -pdr
-
剪切或改名命令:mv [原文件或目录] [目标目录]
- 命令英文原意:move
- 在剪切文件和目录都不需要加-r
- 原文件和目标文件在同一个目录下为改名指令:cp [原文件名] [新文件名]
ll 相当于ls -l
3-4 Linux中常见目录作用
- /:根目录
- /bin:命令保存目录(普通用户就可以读取的命令)
- /sbin:命令保存目录(超级用户才能使用的目录)
- /usr:系统软件资源目录
- /usr/bin:系统命令(普通用户)
- /usr/sbin:系统命令(超级用户)
- /home:普通用户的家目录;/root:超级用户的家目录
- /boot:启动目录,启动相关文件
- /dev:设备文件保存目录
- /etc:配置文件保存目录
- /lib:系统库保存目录
- /mnt,/media,/misc:三个空目录,用来挂载
- /mnt:系统挂载目录,用来挂载U盘,移动硬盘
- (习惯)创建cdroom来挂载光盘,创建usb来挂载U盘;因为老式的Linux下没有media和misc
- /media:挂载目录,用来挂载光盘
- /misc:挂载目录,用来挂外接的磁带机
- /mnt:系统挂载目录,用来挂载U盘,移动硬盘
- /tmp:临时目录
- /proc,/sys:这两个目录不能直接操作,保存的是内存的过载点,内容都是写入内存的
- /var:系统相关文档内容
Linux中每个一级目录都有特定作用
可以在家目录root或home,以及tmp目录下随便放东西
3-5 Linux链接命令
- 链接命令:ln -s [原文件] [目标文件]
- 命令英文原意:link
- 功能描述:生成链接文件
- 选项:-s:创建软链接
- 注意:创建软链接时,原文件一定要写绝对路径!
- 硬链接特征:
- 拥有相同的i节点和存储block块,可以看做是一个文件
- 可通过i节点识别
- 不能跨分区
- 不能针对目录使用
- 软连接特征:
- 类似windows的快捷方式
- 软链接拥有自己的I节点和Blick块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据
- Irwxrwxrwx I 软链接
- 软链接文件权限都为rwxrwxrwx
- 实际的文件权限还是由原文件进行限定
- 修改任意文件,另一个都改变
- 删除原文件,软链接不能使用
第4章 文件搜索命令
4-1 Linux中文件搜索命令locate
-
locate命令格式
-
locate 文件名
在后台数据库中按文件名搜索,搜索速度更快
-
/var/lib/mlicate:locate命令所搜索的后台数据库(不是实时更新的,而是按天更新)
-
updatedb强制更新数据库
-
-
优点:跟find相比搜索速度较快
-
缺点:只能按照文件名搜索,而不能搜索更加复杂的命令
-
默认情况下不搜索/tmp下文件
- /etc/updatedb.conf配置文件
- PRUNE_BIND_MOUNTS=“yes”:开启搜索限制
- PRUNEFS=“…":搜索时,不搜索的文件系统
- PRUNENAMES="…":搜索时,不搜索的文件类型
- PRUNEPATHS="…":搜索时,不搜索的路径
- /etc/updatedb.conf配置文件
4-2 Linux中命令搜索命令
-
搜索命令的命令whereis
- whereis 命令名:搜索命令所在路径及帮助文档所在位置
- 选项:
- -b:只查找可执行文件
- -m:只查找帮助文件
- 只能搜索命令,不能搜索文件
-
搜索命令的命令which
- which 文件名:搜索命令所在路径及别名
-
PATH环境变量
-
定义的是系统搜索命令的路径
-
Linux当中要想执行文件,脚本只能通过绝对路径
-
[]# echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
-
Linux执行命令时,是通过PATH环境变量,在其下每个目录中查找命令,找到才执行(Windows也是)
-
若想要自己写的命令能够不打绝对路径执行,需放到PATH的目录中
-
-
whereis和which
- 都无法找到shell本身自带的命令(如:cd),都只能看到外部安装的外来命令
- 都遵守/etc/updatedb.conf配置文件
4-3 Linux中find命令
-
优点:功能强大
-
缺点:选项多,比较耗费资源
-
find [搜索范围] [搜索条件]:搜索文件
-
find / -name install.log
- 避免大范围搜索,会非常耗费系统资源
- find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配(一模一样)
-
Linux中的通配符:
- *:匹配任意内容
- find /root -name “*”:展示当前目录下的所有文件(包括隐藏文件)
- ?:匹配任意一个字符
- []:匹配任意一个中括号内的字符
- *:匹配任意内容
-
find /root -iname install.log:不区分大小写
-
find /root -user root:按所有者搜索
-
find /root -nouser:查找没有所有者的文件
- Linux当中没有所有者的文件一般是垃圾文件,手动清除
- 文件是由内核产生的,内核直接调用不通过系统目录,它产生的文件可能没有所有者(在proc,sys目录中的很有可能)
- 外来文件,文件在windows中建立,由U盘拷入Linux(windows忽略了所有者的概念)
- Linux当中没有所有者的文件一般是垃圾文件,手动清除
-
find /var/log/ -mtime +10:查找10天前修改的文件
- -10:10天内修改的文件
- 10:10天当天修改的文件
- +10:10天前修改的文件
- atime:文件访问时间
- ctime:改变文件属性
- mtime:修改文件内容
- time的默认时间是天
-
find . -size 25k:查找文件大小时25KB的文件
- . :当前目录
- -25k:小于25KB的文件
- 25k:等于25KB的文件
- +25k:大于25KB的文件
- 默认的单位是数据块,千字节小写k,兆字节大写M
-
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用来连接两个操作,第二个操作需要对第一个操作的结果可以操作
- 有-exec就要有{} ;
- -exec/ok 命令 {} ; :对搜索结果执行操作
-
4-4 Linux中grep命令
- 搜索字符串命令grep
- grep [选项] 字符串 文件名:在文件当中匹配符合条件的字符串
- 选项:
- i:忽略大小写
- -v:排除指定字符串
- 选项:
- grep [选项] 字符串 文件名:在文件当中匹配符合条件的字符串
- find命令与grep命令的区别
- find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
- grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配
第5章 帮助命令
5-1 Linux中帮助命令
- man 命令:获取指定命令的帮助
- 英文原意:manual
- /-x:寻找文档中第一个出现-x的位置
- man的级别
- 1:查看命令的帮助
- 2:查看可被内核调用的函数的帮助
- 3:查看函数和函数库的帮助
- 4:查看特殊文件的帮助(主要是/dev目录下的文件)
- 5:查看配置文件的帮助
- 6:查看游戏的帮助
- 7:查看其它杂项的帮助
- 8:查看系统管理员可用命令的帮助
- 9:查看和内核相关文件的帮助
- 查看命令拥有哪个级别的帮助
- man -f 命令 相当于 whatis 命令
- 查看和命令相关的所有帮助
- man -k 命令 相当于 apropos 命令
- 查出所有包含命令关键字的帮助文档
5-2 Linux中其他帮助命令
-
选项帮助
- 命令 --help:获取命令选项的帮助
-
shell内部命令帮助
-
shell是Linux命令解释器,是用户和计算机交互的一个接口
- shell本身就是一个管理窗口(操作平台),会自带一些非常简单的命令,能执行一些简单的操作
-
help shell内部命令:获取shell内部命令的帮助
-
例:
whereis cd #确定是否是shell内部命令 help cd #获取内部命令帮助
-
-
详细命令帮助info
- info 命令
- 回车:进入子帮助页面(带有*号标记)
- -u:进入上层页面
- -n:进入下一个帮助小节
- -p:进入上一个帮助小节
- -q:退出
- info 命令
第6章 压缩命令
6-1 Linux中压缩命令1
- windows中常见的压缩格式:.zip,.rar,.7z
- .rar不能在linux中解压缩
- Linux当中常用压缩格式:.zip,.gz,.bz2,.tar.gz,.tar.bz2
- .zip格式压缩
- windows和linux中的.zip是可以互相通用的
- zip 压缩文件名 源文件:压缩文件
- zip -r 压缩文件名 源目录:压缩目录
- unzip 压缩文件:解压缩.zip文件
- .gz格式压缩
- linux当中的.gz格式是可以在windows当中解压缩的
- gzip 源文件:压缩为.gz格式的压缩文件,源文件会消失
- gzip -c 源文件 > 压缩文件:压缩为.gz格式,源文件保留
- 命令 > 文件:把命令的结果写入文件
- gzip -r 目录:压缩目录下所有的子文件(分别压缩),但是不能压缩目录
- gzip -d 压缩文件:解压缩文件
- gunzip 压缩文件:解压缩文件
- .bz2格式压缩
- bzip2 源文件:压缩为.bz2格式,不保留源文件
- bzip2 -k 源文件:压缩之后保留源文件
- 注意:bzip2命令不能压缩目录
- bzip2 -d 压缩文件:解压缩,-k保留压缩文件
- bunzip2 压缩文件:解压缩,-k保留压缩文件
压缩文件不一定比原文件小,因为压缩文件需要写入压缩格式
6-2 Linux中压缩命令2
- 打包命令tar
- tar -cvf 打包文件名 源文件
- 选项:
- -c:打包
- -v:显示过程
- -f:指定打包后的文件名
- 选项:
- 可以解决gz,bz2不能压缩目录的问题
- tar -xvf 打包文件名:解打包命令
- x:解打包
- tar -cvf 打包文件名 源文件
- .tar.gz压缩格式
- 其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式
- tar -zcvf 压缩包名.tar.gz 源文件
- 选项
- -z:压缩为.tar.gz格式
- -t:只查看其中的文件不解压
- 选项
- tar -zxvf 压缩包名.tar.gz
- 选项:-x:解压缩.tar.gz格式
- .tar.bz2压缩格式
- tar -jcvf 压缩包名.tar.bz2 源文件
- 选项:-z:压缩为.tar.bz2格式
- tar -jxvf 压缩包名.tar.bz2
- 选项:-x:解压缩.tar.bz2格式
- 压缩包前加目录可以指定生成文件的位置
- 可以同时压缩多个文件目录,中间用空格隔开
- tar -jcvf 压缩包名.tar.bz2 源文件
第7章 关机与重启命令
7-1 Linux中关机与重启命令
- shutdown命令
# shutdown [选项] 时间
- 选项
- -c:取消前一个关机命令
- -h:关机
- -r:重启
- 时间
- now
- 1h/
- 05:30 &
- &:将本条命令放到后台执行
- 选项
- 关机和重启时最好使用shutdown命令,因为会正确保存当前的状态
- 服务器关机的时候,一定要关闭当前的服务
- 其他关机命令
- []# halt
- []# poweroff
- []# init 0
- 这几种关机命令都不太安全
- 其他重启命令
- []# reboot
- []# init 6
- reboot相对安全
- 系统运行级别
- 0:关机
- 1:单用户
- 类似windows当中的图形安全模式:启用最小的程序,用在windows出现问题进行修复的时候
- 启动最小的程序(不会有图形界面的!)
- 进去主要是为了进行系统修复
- 2:不完全多用户,不含NFS服务
- NFS是Linux中的文件共享服务
- 3:完全多用户
- 4:未分配
- 5:图形界面(装过图形界面才可以使用)
- 6:重启
- []# init 0-6:来启动运行级别
- []#cat /etc/inittab:修改系统默认运行级别
- id:3:initdefault:
- Linux当中大写X代表图形界面
- 默认级别不可以设为0或6!!!
- []# run level:查询系统运行级别
- 第一个数字为上一个级别,第二个数字为当前级别
- N表示null空级别,即开机前
- 退出登录命令:# logout
第8章 其他常用命令
8-1 Linux中挂载命令
-
查询与自动挂载
- []# mount:查询系统中已经挂载的设备
- []# mount -a:依据配置文件/etc/fstab的内容,自动挂载
- /etc/fstab-Linux当中的自动挂载文件
- /,/boot,/home,swap开机自动挂载(写在~文件内)
- 只要写入该文件的分区都会自动挂载(不建议将U盘等挂载点写入,因为不一定每次开机的时候都需要执行)
- /etc/fstab-Linux当中的自动挂载文件
-
挂载命令格式
-
[]# mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
-
挂载点(盘符):已经存在的空白目录
-
选项:
-
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
-
-o 特殊选项:可以指定挂载的额外选项
参数 说明 atime/noatime 更新/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新 async/sync 异步/同步。默认为异步 auto/noauto 自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动 defaults 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项 exec/noexec 执行/不执行,设定是否允许在文件系统中执行课执行文件,默认是exec允许 remount 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 rw/ro 读写/只读,文件系统挂载时,是否就有读写权限,默认是rw suid/nosuid 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有 user/nouser 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区 usrquota 写入代表文件系统支持用户磁盘配额,默认不支持 grpquota 写入代表文件系统支持组磁盘配额,默认不支持 - 如果修改了系统分区的权限,记得修改回来,不然会影响系统启动
linux当中#开头都是注释
但是"#!/bin/bash"作起始行,代表下面的内容都是脚本文件
-
-
-
-
挂载光盘
-
[]# mkdir /nt/cdrom/#建立挂载点 []# mount -t iso9660 /dev/cdrom /mnt/cdrom/ #挂载光盘 []# mount /dev/sr0 /mnt/cdrom/
- /dev/cdrom - > sr0 软链接
- 挂载光盘时,iso9660可以不写,linux系统默认
-
[]# cd /mnt/cdrom []# ls #读取光盘内文件内容
-
-
卸载命令
- []# umount 设备文件名或挂载点
- 在光盘内需要先退出才能卸载
-
挂载U盘
-
[]# fdisk -l #查看U盘设备文件名 []# mount -t vfat /dev/sdb1 /mnt/usb/
-
vfat指的是windows中的fat32系统
-
Linux默认是不支持NTFS文件系统的,所以移动硬盘不能在Linux当中直接挂载
- 重新编译linux内核,把NTFS的文件系统类型选上
- 在系统中安装NTFS-3g,但是只能读
linux把能用到的驱动全部放到内核中,把它认为一些用不到的驱动不加载
-
-
8-2 Linux中用户登录查看命令
-
查看用户登录信息:w
- 第一行内容:
- 系统时间,本次运行时间,当前登录的用户数
- 系统在过去的1分钟,5分钟,15分钟之前的平均负载
- 平均负载:CPU和内存的栈的负载压力
- 值越高代表系统的压力越大
- 命令输出:
- USER:登陆的用户名
- TTY:登陆终端
- tty1代表本机终端(即虚拟机内登陆的
- pts/0代表第一个远程终端
- FROM:从哪个IP地址登陆
- LOGIN@:登陆时间
- IDLE:用户闲置时间
- JCPU:指的是和该终端链接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
- PCPU:是指当前进程所占用的时间
- JCPU,PCPU越大,代表当前的操作越耗费CPU资源
- WHAT:当前正在运行的命令
- 第一行内容:
-
查看登录用户信息:who
-
命令输出:
- 用户名
- 登录终端
- 登录时间(登录来源IP地址)
登录中
-
-
查询当前登录和过去登录的用户信息:last
- last命令默认是读取/var/log/wtmp文件数据
- 命令输出:
- 用户名
- 登录终端
- 登录IP
- 登录时间
- 推出时间(在线时间)
-
查看所有用户的最后一次登录时间:lastlog
- lastlog命令默认是读取/var/log/lastlog文件内容
- 命令输出:
- 用户名
- 登录终端
- 登录IP
- 最后一次登录时间
第9章 Shell基础
9-1 shell概述
- shell是什么
- shell是一个命令行解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序
- shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本语言,在shell中可以直接调用linux系统命令
- shell的分类
- Bourne Shell
- 从1979起Unix就开始使用Bourne Shell
- Bourne Shell的主文件名为sh
- 不支持历史命令(↑不能查看历史命令)
- C Shell
- C Shell主要在BSD版的Unix系统中使用
- 其语法和C语言相类似而得名
- Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容
- Bourne家族主要包括sh、ksh、Bash、psh、zsh
- C家族主要包括:csh、tcsh
- 主要给Unix使用
- Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell(不分版本)
- Bourne Shell
- Linux支持的shell
- /etc/shells
- []# sh可以将当前使用的shell切换成sh
- sh相对比较古老,但在Linux当中的一些特殊模式(单用户模式,系统的光盘修复模式)下使用
- 占用的资源更少
- exit退出
- 一个shell中可以调用其他shell,一个shell当中可以调用其他子shell
9-2 脚本执行方式
-
echo输出命令
-
echo [选项] [输出内容]
- 输出内容一旦有空格就需要加双引号
-
选项:
-
-e:支持反斜线控制的字符转换
-
控制字符
控制字符 作用 \a 输出警告音 \b 退格键,也就是向左删除键 \n 换行符 \r 回车键 \t 制表符,也就是Tab键 \v 垂直制表符 \0nn 按照八进制ASCII码表输出字符。其中0位数字零,nnn是三位八进制数 \xhh 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数 - 主要用来调整输出格式
- \e代表调用颜色,[1;代表开启颜色选项,\e[0m代表关闭颜色
- #30m=黑色,#31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=杨红,36m=轻奢,37m=白色
-
-
-
第一个脚本
[]# vim hello.sh #!/bin.bash #The first program echo -e "hello world!\n"
- #!/bin/bash:不是注释,也不是可有可无的
- 当脚本语言中,包含了除shell以外的语言,不含该行会报错
- #!/bin/bash:不是注释,也不是可有可无的
-
脚本执行
- 赋予执行权限,直接运行
- chmod 755 hello.sh
- 相对路径./hello.sh或绝对路径/root/hello.sh
- 通过Bash调用执行脚本
- bash hello.sh
- 赋予执行权限,直接运行
9-3 别名与快捷键
- 别名的作用:当原命令很长的时候,起一个别名可以简化操作
- 查看与设定别名
- alias:查看系统中所有的命令别名
- alias 别名=‘原命令’:设定命令别名
- 别名永久生效与删除别名
- vi ~/.bashrc:写入环境变量配置文件
- 每个用户的家目录下都有.bashrc配置文件
- 写入文件之后需要用户重新登录才可以生效或者执行source .bashrc
- unalias 别名:删除别名
- 临时删除
- vi ~/.bashrc:写入环境变量配置文件
- 命令生效顺序
- 第一顺位执行用绝对路径或相对路径执行的命令
- 第二顺位执行别名
- 一旦有了别名,原始命令就会失效
- 第三顺为执行Bash的内部命令
- 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
- 常用快捷键
- ctrl+c:强制终止当前命令
- ctrl+l:清屏
- 清空命令:clear
- ctrl+a:光标移动到命令行首
- ctrl+e:光标移动到命令行尾
- ctrl+u:从光标所在位置删除到行首
- ctrl+z:把命令放入后台
- ctrl+r:在历史命令中搜索
9-4 历史命令
- 历史命令
- history [选项] [历史命令保存文件]
- 选项:
- -c:清空历史命令
- 不是同步的,执行后还能查看,需要重启才可以
- -w:把缓存中的历史命令写入历史命令保存文件~/.bash_history
- 每个用户都有自己的历史命令保存文件,防止冲突
- 当前用户正确退出了,从新登录开始执行的命令都在缓存中,并没有写出来
- -c:清空历史命令
- 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
- 选项:
- 历史命令的调用
- 使用上、下箭头调用以前的历史命令
- 使用”!n“重复执行第n条历史命令
- 使用“!!”重复执行上一条命令
- 使用“!字串”重复执行最后一条以该字串开头的命令
- history [选项] [历史命令保存文件]
- 命令与文件补全
- 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全
- 命令的补全是依靠 P A T H 路 径 , 系 统 在 PATH路径,系统在 PATH路径,系统在PATH下目录进行寻找命令
- 文件补全依靠的是路径
- 一个加快输入,一个防止错误
- 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全
9-5 输出重定向
-
标准输入输出
设备 设备文件名 文件描述符 类型 键盘 /dev/stdin 0 标准输入 显示器 /dev/sdtout 1 标准输出 显示器 /dev/sdterr 2 标准错误输出 -
输出重定向
类型 符号 作用 标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备中 命令 >> 文件 以追加的方式,把命令的正确输出输出到指定的文件或设备中 标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备中 错误命令 2>>文件 以追加的方式,把命令的错误输出输出到指定的文件或设备中 正确输出和错误输出同时保存 命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到一个文件当中 命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到一个文件当中 命令 &>文件 以覆盖的方式,把正确输出和错误输出都保存到一个文件当中 命令 &>>文件 以追加的方式,把正确输出和错误输出都保存到一个文件当中 命令>>文件1 2>>文件2 将正确的输出追加到文件1中,把错误的输出追加到文件2中 - 把本身直接输出的命令放入文件中,相当于记录了一个日志
- 如果文件不存在,则会新建一个文件;否则直接修改文件
- 标准输出重定向只会保存正确命令的输出结果,错误命令会直接打印出来
- 注意:正确输出> 文件之间有空格,错误输出>文件之间没有空格
命令 >> 文件 2>&1
:如果命令正确,直接写入文件;如果文件错误,将命令写入2,再将2写入1命令 &>/dev/null
:将命令结果直接丢入“黑洞”(相当于回收站);既不会在文件中,也不会直接打印
- 把本身直接输出的命令放入文件中,相当于记录了一个日志
-
输出重定向
- []# wc [选项] [文件名]
- 选项:
- -c:统计字节数
- -w:统计单词数
- -l:统计行数
- 选项:
- []# wc<文件:把文件作为命令输入
- []# wc<<标识符:标识符把标识符之间内容作为命令的输入
- []# wc [选项] [文件名]
9-6 管道符
-
多命令顺序执行
多命令执行符 格式 作用 ; 命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系 && 命令1&&命令2 逻辑与
当命令1正确执行,命令2才会执行
当命令1执行不正确,命令2不会执行|| 命令1||命令2 逻辑或
当命令1执行不正确,命令2不会执行
当命令1正确执行,命令2才会执行date;命令;date
:可以测试命令的执行时间- ;分号分隔,不管中间有无报错,都会顺畅执行完毕全部操作
命令 && echo yes|| echo no
:可以判断命令有无正确执行
-
管道符
- 命令格式:
[]# 命令1 | 命令2
- 命令1的正确输出作为命令2的操作对象
- 命令1执行错误时,命令2不会执行
- 命令格式:
9-7 通配符
-
通配符
通配符 作用 ? 匹配一个任意字符 * 匹配0个或多个任意字符,也就是可以匹配任何内容 [] 匹配中括号中任意一个字符 [-] 匹配中括号中人任意一个字符,-代表一个范围 [^] 逻辑非,表示匹配不是中括号内的一个字符 - 用于匹配文件名或目录名的匹配,文件内容的匹配需要正则表达式
-
Bash中其他特殊符号
符号 作用 ‘’ 单引号,在单引号中所有的特殊符号都没有特殊含义 “” 双引号,在双引号中特殊符号都没有特殊含义,但是“$”、“`”和”\“是例外,拥有”调用变量的值“、”引用命令“和”转义符“的特殊含义 `` 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和 ( ) 作 用 一 样 , 不 过 更 推 荐 使 用 ()作用一样,不过更推荐使用 ()作用一样,不过更推荐使用(),因为反引号非常容易看错 $() 和反引号作用一样,用来引用系统命令 # 在Shell脚本中,#开头的行代表注释 $ 用于调用变量的值 \ 转移符,跟在\之后的特殊符号将失去特殊含义,变为普通字符
这篇关于imooc-Linux达人养成计划 I的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!