前言
什么是linux
linux 你可能没听说过,但是win7、win8、win10、Android、iOS,你应该听说过,并且用过其中的几种吧?!没用过的是不是火星人?开个玩笑。这些东西是什么?它们有一个共同的称呼 操作系统。
操作系统
操作系统又是干嘛的?主要作用就是接收指令和处理指令。
简单点说就是操作系统将我们点击键盘或者鼠标等设备的操作转化成指令,然后操作系统将指令进行处理,让显示设备或者软件给我们一个反馈。
概括来说,操作系统就是软件和硬件之间的桥梁。
- 对上支持软件,将我们通过硬件给软件发送的指令送给指定的软件,例如可通过鼠标可以打开音乐软件。
- 对下控制硬件,将我们通过软件给硬件发送的指令给出一定的反馈,例如通过音乐软件可以听到歌曲。
那么操作系统都有哪些?上面提到了linux、win7、win8、win10、Android、iOS,还有没有其它的操作系统?他们之间又有什么不同?
按照不同的应用领域可以将主流的操作系统大致分如下几类
- 桌面操作系统
- 服务器操作系统
- 嵌入式操作系统
- 移动设备操作系统
桌面操作系统
- Windows 系列
- 用户群体大
- 应用丰富
- 修复问题迅速
- 安全性较差
- macOS
- 适合于开发人员
- 安全性较高
- 稳定性较强
- 应用软件相对较少
- 修复问题较慢
- Linux
- 安全性较高
- 稳定性较强
- 用户群体少
- 应用软件少
服务器操作系统
- Linux
- 安全、稳定、免费
- 占有率极高
- Windows Server
- 付费
- 占有率低
嵌入式操作系统
- Linux
移动设备操作系统
- iOS
- Android(基于 Linux)
Linux操作系统发展简史
要说Linux,不得不提另一个操作系统Unix。 Unix的开发是在1969年由贝尔实验室的Ken Thompson 利用实验室一台闲置的PDP-7计算机开发的多用户、多任务的操作系统。在Unix项目开始不久Dennis M.Ritchie 便加入了项目,在他们的共同努力下Unix操作系统诞生。
在 Version 7 Unix 推出之后,发布新的使用条款,将 UNIX 源代码私有化,在大学中不能再使用 UNIX 源代码。Andrew S. Tanenbaum(塔能鲍姆) 教授为了能 在课堂上教授学生操作系统运作的细节,自行开发与 UNIX 兼容的操作系统,以避免版权上的争议,并以 小型 UNIX(mini-UNIX)之意,将它称为 MINIX。
1991 年,林纳斯(Linus) 就读于赫尔辛基大学期间,对 Unix 产生浓厚兴趣,尝试着在Minix 上做一些开发工作,于是在1991年十月五号Linux 内正式发布。Linus 从一开始就决定将Linux 内核扩散出去,Linux 内核源码发布到网络上之后,随即就引起了广大的关注,全球各地越来越多的人加入到linux的开发队伍中。
Linux 内核及发行版
Linux 内核版本
内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层
Linux 内核版本又分为 稳定版 和 开发版,两种版本是相互关联,相互循环
- 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些 bug 或加入一些新的驱动程序
- 开发版:由于要试验各种解决方案,所以变化很快
- 内核源码网址:http://www.kernel.org
Linux 发行版本
Linux 发行版(也被叫做 GNU/Linux 发行版)通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件
-
常见的发行版本如下:
- Ubuntu
- Redhat
- Fedora
- openSUSE
- Linux Mint
- Debian
- Manjaro
- Mageia
- CentOS
- Arch
十大最佳 Linux 服务器发行版:https://blog.csdn.net/zuochao_2013/article/details/78570726
Windows 和 Linux 区别
单用户操作系统和多用户操作系统
单用户操作系统:指一台计算机在同一时间 只能由一个用户 使用,一个用户独自享用系统的全部硬件和软件资源
Windows XP 之前的版本都是单用户操作系统
多用户操作系统:指一台计算机在同一时间可以由 多个用户 使用,多个用户共同享用系统的全部硬件和软件资源
Unix 和 Linux 的设计初衷就是多用户操作系统
文件系统区别
-
在 Windows 下,打开 “计算机”,可以看到C、D、E、F等盘符
-
在 Linux 下,我们看不到这些盘符,我们看到的是文件夹(目录),Ubuntu 没有盘符这个概念,只有一个根目录 /,所有文件都在它下面
Linux 目录
用户目录
- 位于 /home/user,称之为用户工作目录或家目录,表示方式: /home/user 或 ~
主要目录
/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始
当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录
/bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
/boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件。
/etc/inittab
/etc/fstab
/etc/init.d
/etc/X11
/etc/sysconfig
/etc/xinetd.d
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下
~ 表示当前用户的家目录
~edu 表示用户 edu 的家目录
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
/opt:给主机额外安装软件所摆放的目录
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/root:系统管理员root的家目录
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
/usr:应用程序存放目录
/usr/bin:存放应用程序
/usr/share:存放共享数据
/usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
/usr/local:存放软件升级包
/usr/share/doc:系统说明文件存放目录
/usr/share/man:程序说明文件存放目录
/var:放置系统执行过程中经常变化的文件
/var/log:随时更改的日志文件
/var/spool/mail:邮件存放的目录
/var/run:程序或服务启动后,其 PID 存放在该目录下
Linux 终端命令格式
command [-options] [parameter]
说明:
- command:命令名,相应功能的英文单词或单词的缩写
- [-options]:选项,可用来对命令进行控制,也可以省略
- parameter:传给命令的参数,可以是 零个、一个 或者 多个
查看命令帮助信息
--help
command --help # 显示 command 命令的帮助信息,简要的使用说明
man
man command # 查阅 command 命令的使用手册,详细的使用说明
使用 man 时的操作键:
操作键 | 功能 |
---|---|
空格键 | 显示使用说明的下一页 |
Enter 键 | 一次滚动使用说明页的一行 |
b | 上一页 |
f | 下一页 |
q | 退出 |
/xxxx | 搜索 xxxx 字符串 |
常用 Linux 命令的基本使用
命令 | 对应英文 | 作用 |
---|---|---|
ls | list | 查看当前文件夹下的内容 |
pwd | print wrok directory | 查看当前所在文件夹 |
cd [目录名] | change directory | 切换文件夹 |
touch [文件名] | touch | 如果文件不存在,新建文件 |
mkdir [目录名] | make directory | 创建目录 |
rm [文件名] | remove | 删除指定的文件名 |
clear | clear | 清屏 |
Linux常用命令的参数
ls 查看当前目录的文件信息
- -a 显示指定目录下所有子目录与文件,包括隐藏文件
- -l 以列表方式显示文件的详细信息
- -h 配合 -l 以人性化的方式显示文件大小
cd 切换目录
- cd 目录名: 切换到指定目录
- cd ..: 切换到上一级目录
- cd .: 切换到当前目录
- cd ~: 切换到用户的工作目录 /home/python
- cd => cd ~ :切换到用户的工作目录 /home/python
- cd - : 切换到上一次目录
mkdir -p 一次创建多层目录
rm 默认删除的是文件
- -i: 删除之前有提醒
- -f: 如果文件存在就删除,不存在不会有错误提醒
- -r: 以递归方式删除文件夹里面的所有内容
- -d: 删除空目录
- -v: 删除文件后的描述信息
cp 拷贝文件
- cp 文件名 路径: 把文件拷贝指定路径里面
- cp 文件名 路径/新的文件名: 把文件拷贝的指定路径然后修改成新的文件名
- cp 路径/文件名 路径/新的文件名 : 把指定路径的文件拷贝的指定路径然后修改程新的文件名
- cp 文件夹 路径 -r: 把文件夹拷贝的指定路径里面 -r: 表示以递归的方式把文件夹里面的所有内容都拷贝过去
- -i:显示消息提醒
- -v:显示拷贝后的路径描述
- -r:拷贝文件夹,以递归的方式把文件夹里面的所有内容全部拷贝过去
- -f:直接覆盖不做提醒,默认就是直接覆盖,一般不用
mv 移动(剪切)
- mv 文件名 路径: 把文件移动到指定路径里面
- mv 文件名 新的文件名: 重命名, 提示还可以对文件夹进行重命名
- mv 文件名 路径/新的文件名: 把文件移动到指定路径里面然后修改成新的文件名
- mv 路径/文件名 路径/新的文件名 : 把指定路径的文件移动到指定路径里面然后修改成新的文件名
- -i:显示消息提醒
- -v: 显示移动后的路径描述
- -f:直接覆盖不做提醒,默认就是直接覆盖,一般不用
重定向
- 重新规定显示方向,把终端显示的内容保存到指定文件里面,以后数据的查看通过文件打开就能查看
- >: 如果文件存在先清空原文件里面的数据然后在写入
- >>: 如果文件存在在原有数据的基础上进行追加写入
文件查看
- gedit 文件名 -》 可读可编辑 # 大小文件均可使用
- cat 文件名 -> 在终端查看文件内容不能进行编辑 # 推荐小文件使用,大文件可以使用 管道 结合 more 查看
- 文件合并: cat 1.txt 2.txt > 3.txt
more 分屏显示
- f(空格):下一页
- 回车: 下一行
- b: 上一页, 注意点: 如果more结合管道使用上一页使用b实现不了,只能结合文件使用
- q: 退出
| 管道, 可以理解成存储数据的临时容器
ln 链接
- 软链接: 好比快捷方式, 原文件删除快捷方式不能使用,创建软链接不会对硬链接数加1
- 硬链接: 文件的别名,删除原文件通过硬链接文件依然可以获取文件的数据,创建硬链接会对硬链接数加1,硬链接数可以根据引用计数去理解,
- 目录不能创建硬链接
- 软链接的使用 ln -s 1.txt 1-s.txt
- 硬链接的使用 ln 2.txt 2-h.txt
- 如果创建的软链接没有和原文件在同一个目录里面,那么创建软链接的时候原文件的路径要使用绝对路径
grep 在指定文件查找对应的内容
- -n: 显示行号
- -i: 忽略大小写
- -v: 根据内容取反
- 使用 管道 结合 grep 可以对一些显示在终端的内容进行查找
- 支持的通配符: . , ^ , $ , []
find 根据通配符在指定路径查找文件
- -name: 根据名字去查找
- -size: 根据文件大小去查找,一般不用,不准确
- -perm: 根据文件权限去查找 r(4) w(2) x(1)
- find . -name "*.txt"
- 支持的通配符:. , ^ , $ , []
tar 打包及压缩(gzip)
- tar -cvf test.tar *.txt -> test.tar包, 注意点包没有进行压缩
- -c: 表示打包 -v:显示打包文件 -f:指定包名
- gzip test.tar -> test.tar.gz 压缩包,进行了压缩空间变小了
- tar -zcvf test.tar.gz *.txt -> test.tar.gz压缩包
- -z: 压缩
tar 解压缩及解包(gzip)
- tar -xvf test.tar -> 得到包里面的文件
- -x:解包
- gzip -d test.tar.gz -> 得到压缩包里面的文件
- -d: 解压缩
- tar -zxvf test.tar.gz -> 得到压缩包里面的文件
- tar -zxvf test.tar.gz -C BD -> 解压缩到指定BD路径
- -C: 指定解压缩的路径
tar 打包及压缩 (bz2)
- tar -jcvf test.bz2 *.txt -> test.bz2 压缩包
tar 解压缩及解包(bz2)
- tar -jxvf test.bz2 ->默认解压到当前目录
- tar -jxvf test.bz2 -C BD ->解压到指定路径
zip 打包及压缩
- zip test[.zip 可选] *.txt -> test.zip
- .zip的压缩包比.gz和.bz2要大
unzip 解压缩及解包
- unzip test.zip -> 解压缩到当前目录获取压缩包里面的文件
- unzip test.zip -d EF -> 解压缩到指定路径
chmod 修改文件权限
- 用户角色: u:当前用户 g:同组用户 o:其它用户
- 权限: r(4):可读 w(2):可写 x(1):可执行
- 使用字母法设置文件没有权限 chmod a=- 1.txt chmod a= 1.txt
- 使用数字法设置文件没有权限 chmod 000 1.txt
- chmod u=r,g=w,o=rw 1.txt 表示给不同用户设置不同权限
which : 查看命令的位置 注意只能是命令
passwd: 修改密码
whoami:当前用户
who:当前登陆的用户
exit: 退出某个用户
sudo
- sudo -s: 切换到管理员用户
- sudo apt-get update 更新源
- sudo apt-get install package 安装包
- sudo apt-get remove package 删除包
- apt list 查看支持的安装包
scp: 远程拷贝
- scp 本地文件路径 远程主机用户名@远程主机IP:远程主机路径 -> 把本地文件远程拷贝到服务器端的指定路径下(上传)
- scp -r 本地文件夹路径 远程主机用户名@远程主机IP:远程主机路径 -> 把本地的文件夹远程拷贝到服务器端(上传)
- scp 远程主机用户名@远程主机IP:远程主机文件路径 本地路径 -> 把服务端的文件远程拷贝到客户端的指定路径下(下载)
- scp -r 远程主机用户名@远程主机IP:远程主机文件夹路径 本地路径 -> 把服务端的文件夹远程拷贝到客户端的的指定路径下(下载)
ssh: 远程登陆
- ssh 远程主机用户名@远程主机IP 远程登陆某台电脑
vim
vim模式: 命令模式 , 编辑模式, 末行模式
- 命令模式进入编辑模式 :i
- 命令模式进入末行模式: 冒号(:), :wq-》保存退出 :w-》保存 :q:退出 , :x-》保存退出
- 编辑模式和末行模式进入命令模式: esc
vim的基本命令
- yy: 复制光标所在行
- p: 粘贴 ,提示:粘贴多次数字+p
- dd: 剪切(删除)
- V:选中光标经过的每一行, y:表示把复制选中的行
- gg: 回到第一行
- G:回到最后一行
- 15G:回到指定行
- shift+4:回到行末, shift+6:回到行首
- :/内容: 查找指定内容 n:查看下一个内容 N:查看上一个内容
- :%s/1/2/g 把文件里面的1替换2, %:整个文件 s:替换 1:要替换的内容 2:替换后的内容
- 38,39s/4/3 把38,29两行4的数据替换3
- ctr+f:下一页 ctr+b:上一页
- k:上 j:下 l:右 h:左 等同于方向键
- x: 从前往后删除 X:从后往前删除
- u:撤销 ctrl + r: 反撤销
- . : 重复上一次操作的命令
- >>: 表示往右缩进
- <<: 表示往左缩进
到此结 DragonFangQy 2018.4.19