目录
一、Linux的介绍
1、为什么要选择Linux?
无论你信与不信,Linux 已经成为这个世界上增长最迅速的操作系统!
在服务器领域,IBM、HP、Novell、Oracle 等厂商对Linux 系统提供了全方位的支持。2004年,IBM宣布其全线
服务器均支持Linux,思科公司在网络防火墙和路由器中也使用了定制的Linux,阿里云也开发了一套基于Linux的智能操作系统“YunOS”,可用于智能手机、平板电脑和网络电视。
2010年排名前500名的超级计算机中,92.4%(462台)都采用了Linux 操作系统。从2001年以来,基于Linux的服务器操作系统逐步发展壮大。国内几个主要的Linux厂商和科研机构,国防科技大学、中标软件、中科红旗
等先后推出了Linux服务器操作系统产品,并且已经在政府、企业等领域得到了广泛的应用。
市场价值
薪资待遇从月薪几千到年薪百万,你想要的薪资待遇都有!
岗位需求从初级开发到技术总监、CTO都需要具备Linux 开发技能!
市场应用
小到小孩用的玩具、小米的智能音箱手机、电脑、Pad 、智能手表、智能眼镜,以及电视等都是使用的Linux 系统。
大到火箭、航母(航天军工)等装备,淘宝、京东、网易、百度等BAT公司使用的大数据、云服务器集群,其内部使用的都是Linux 操作系统。
Linux因其稳定、开源、免费、安全、高效的特点,发展迅猛,在服务器市场占有率超过80%。
随着云计算的发展,Linux在未来服务器领域仍是大势所趋,大有可为!
2、学完Linux服务器开发能做什么?
(有网络的世界就离不开我)
棋牌、网络游戏服务器开发
微信小程序服务器开发
视频直播服务器开发
购物网站服务器开发
物联网服务器开发
区块链服务器开发
其它应用服务器开发
二、Linux服务器开发学习方法
多动手实践,理论结合实际。对于每个命令都要亲自操作实践,对于命令的每个参数也要亲自实践,只有这样才能理解其含义。
一定要习惯命令行方式工作。Linux下90%的操作都是通过命令行完成的,因此命令是必须要熟练掌握的。
学会使用Linux的联机帮助。Linux常用命令有上百个,如要识记每个命令,每个人都办不到。但是通过查询帮助文档,
执行man XX,即可列出XX命令的所有参数和用法。熟练、灵活运用联机帮助,在Linux下工作会有事半功倍的效果。学会利用网络资源。可以在网络上的Linux技术社区、网站、论坛上,发现很多Linux爱好者发表的个人学习经验,
这些免费的技术经验和资料是学习Linux的瑰宝。
国内外网站 | 说明 |
freecode.com | 最齐全的Linux/UNIX软件库 |
www.justlinux.com | 信息齐全的Linux学习网站 |
www.kernel.org | Linux 内核的官方网站 |
www.linux.com | 提供全方位的Linux 信息 |
提供内核信息和不定的汇总 | |
www.chinaunix.net | 国内最大的Linux/UNIX技术社区网站 |
www.linuxeden.com | Linux 伊甸园,最大的中文开源咨询门户网站 |
www.linuxfans.org | 中国Linux 公社 |
提供Linux各种资源。包括资讯、软件和手册 |
三、搭建Linux开发环境
1、开发平台的选择
如果已经了解Linux操作系统的基本使用,建议使用Linux平台
如果不了解Linux操作系统,就直接使用Windows平台,以后再学习Linux操作系统。
零基础的初学者,建议使用Windows平台。
2、Windows平台开发环境的搭建
这里主要使用ubuntu的Linux。通过以下链接下载
链接:https://pan.baidu.com/s/1celWkB64ObkXf3qpJeAVIQ?pwd=vuu8
3、安装VMware虚拟机
通过以上链接下载,因为安装简单,自行百度。
4、安装Linux操作系统
前提: 自己的Windows 系统一定要联网(安装参考我主页的Ubuntu安装博客)
Linux操作系统,可选择:
CentOS(建议:Centos 7.0以上)
补充:国内大部分企业的服务器是使用CentOS或(RedHat)
CentOS是Redhat的社区版,用法相同。
Ubuntu系统
注意:虚拟机启动ubuntu的安装以后,内部下一步按Enter 键来进行选择
5、访问我们的Linux系统
安装参考我主页的Putty安装博客或者MobaXterm安装博客
通过Vmware 界面操作
通过远程终端操作
* Putty(上述链接下载)
* MobaXterm
四、快速入门Linux必备命令
1、Shell简介
Shell 是运维和系统管理员操作Linux 系统的首选,简单说,它是一个命令解释器.
命令行相关:
行首“$” 或 “#” - 命令行提示符
行中 ## - 视为注释开始
注意: 命令行是区分大小写的!
使用命令行补全(Tab) 和通配符可以提高输入效率
通配符共有3个: “*”,“?”,“[]”
* - 用于匹配文件名中任意长度的字符串;
? - 只匹配一个字符;
[] - 用于匹配所有出现在方括号内的字符。可以使用短线“-”来指定字符集范围。如:ls text[1-3] 或 ls test[a-z]
Linux 下环境下有几种不同Shell ,常用的有 BASH 、TCSH Shell和 Z-Shell 等.BASH 是默认安装和使用的Shell。
2、寻求帮助——man命令
作用: Linux 为所有命令和系统调用编写了帮助手册。使用man 命令可以方便地获取某个命令的帮助信息。
用法: man [手册编号] 命令名
man 命令在显示手册页时实际调用less 完成显示,J K可以上下翻动,空格用于向下翻页。Q键退出。
手册总共分为9 节,各部分内容如下:
目 录 | 内 容 |
/usr/share/man/man1 | 普通命令和应用程序 |
/usr/share/man/man2 | 系统调用 |
/usr/share/man/man3 | 库调用,主要是libc()函数的使用文档 |
/usr/share/man/man4 | 设备驱动和网络协议 |
/usr/share/man/man5 | 文件的详细格式信息 |
/usr/share/man/man6 | 游戏 |
/usr/share/man/man7 | 文档使用说明 |
/usr/share/man/man8 | 系统管理命令 |
/usr/share/man/man9 | 内核源代码或模块的技术指标 |
3、用户间切换SU
作用: 切换到其他用户
用法: su [用户名]
$ su hacker #切换到 hacker 这个用户
$ su #切换到 特权用户 root
注意: Ubuntu 默认情况下,系统没有合法的root权限,不能直接使用su 命令提升到 root 权限,而必须要用 sudo 来获得 root 权限
4、特殊命令sudo
作用: 提升当前执行命令的权限,以root 身份执行它.
用法: sudo 命令行
$ sudo su #切换到root 用户
$ sudo rm root.txt #切换到 特权用户 root
5、显示当前目录 pwd 和改变目录 cd
pwd 命令
作用: 显示当前目录,即工作目录
用法: pwd
cd命令
作用: 改变目录位置
用法: cd . . .[OPTION] . . .[FILE]. . .
cd 目录路径 - 进入指定的目录中去
cd .. - 返回父目录
cd / - 进入根目录
cd 或 cd ~ - 进入用户主目录
cd ./* - 进入当前目录下*表示的子目录
6、ls 命令
用法: ls . . .[OPTION] . . .[FILE]. . .
常用参数:
- 不带任何参数 列出当前目录下的所有文件和子目录
- -F 分类显示,方便阅读
- -a 显示隐含文件
- -l 查看文件的各种属性
7、列出目录内容:dir 和 vdir
用法:
dir . . .[OPTION] . . .[FILE]. . .
vidr . . .[OPTION] . . .[FILE]. . .
dir 和 ls 差不多,就比ls 功能少
vdir 相当于 ls -l 命令
8、建立目录 mkdir
用法:
mkdir . . .[OPTION] . . .[FILE]. . .
mkdir 一次可以建立一个或 几个目录
常用参数:
不带任何参数 创建相应目录,如果目录的父级目录路径不存在,则创建失败;
-p 创建相应目录,如果目录的父级目录路径不存在,则一起创建;
9、移动、复制和删除
移动命令 mv
用法:
mv . . .[OPTION] 源文件 目标文件
常用参数:
不带任何参数 将源文件移动到目标文件,注意:如果目标文件存在则替换;
-i 将源文件移动到目标文件,如果目标文件存在则提示是否替换;
-b 将源文件移动到目标文件,如果目标文件存在则不进行覆盖,而是在目标文件后加~
复制命令 cp
用法:
cp . . .[OPTION] 源文件 目标文件
常用参数:
不带任何参数 将源文件复制到目标文件,注意:如果目标文件存在则替换;
-i 将源文件复制到目标文件,如果目标文件存在则提示是否替换;
-b 将源文件复制到目标文件,如果目标文件存在则不进行覆盖,而是在目标文件后加~
-r 将子目录及其中的文件一起复制到另一个子目录下
删除命令 rm
删除命令可以一次永久性删除一个或几个文件(包含目录)
用法:
rm . . .[OPTION]. . . [FILE]. . .
常用参数:
不带任何参数 删除文件或相应目录,不给予任何提示;
-i 删除文件或相应目录,删除时进行提醒;
-f 强制性删除文件或相应目录;
-r 将子目录及其中的文件一并删除。(慎用!特别时在root 权限下)
10、文件链接 ln
ln 建立文件链接
用法:
ln . . .[OPTION] 源文件 目标文件
常用参数:
不带任何参数 创建硬链接,ls -i 查看可以看到两个文件的inode 值一致;
-s 创建软链接,即别名,如果源文件删除,则软链接(别名)也无法访问。
11、改变文件所有权 chown 和 chgrp
chown 命令用于改变文件的所有权。
用法:
chown . . .[OPTION] [OWNER][:[GROUP]] FILE . . .
常用参数:
不带任何参数 改变单个或多个文件的属主和属组;
-r 改变一个目录及其下所有文件(和子目录)的所有权设置。
chgrd 用于单独设置文件的属组。
用法:
chown . . .[GROUP] FILE . . .
$ chgrp nogroup text.txt
12、改变文件权限chmod
chmod 用于改变一个文件的权限。它以“用户组 +/- 权限”的表达方式来增加/删除相应的权限。具体来说,用户组包括了文件属主(u)、文件属组(g)、其他人(o) 和所有人(a),而权限则包括读取(r、w、x)
用法:
chmod . . .[OPTION] . . .[FILE]. . .
例:
$chmod u+x test.txt
$chmod u-x test.txt
$chmod ug=wr、o=r text.txt
13、阅读文件的头部和尾部:head 和 tail
用法:
head/tail . . .[OPTION]. . . FILE
常用参数:
不带任何参数 显示文件的头部/尾部 10 行;
-n 按指定的行数显示文件的头部/尾部 ;
14、查看文本文件:cat 、more 和 less
cat命令用来一次性查看全部文本文件的内容,后跟文件名作为参数.也可以带上 -n 显示每行的行号。如果文件长达几十上百页,不建议使用 cat.
more 命令用来分页查看文本文件。空格翻页;回车向下滚动一行;Q键退出。
less更人性化的文本阅读工具。
15、编辑器:vim
vim 是UNIX 和 Linux 上标配的编辑器,功能十分强大。
用法 :
vim file
或 vim
编辑保存文件
分插入和命令两种模式。
插入模式:
操作:输入字符,并可以按光标键移动输入字符位置.
命令 | 操作 |
a | 在光标后插入 |
i | 在光标所在位置插入 |
o | 在光标所在位置的下一行插入 |
Esc | 进入命令模式 |
: | 进入行命令模式 |
命令模式
执行除输入字符之外的所有操作,包括保存、搜索、移动光标等。
vim 启动默认是在命令模式,如果在编辑模式,需要按 Esc 切换回命令模式.
可以使用光标键控制上下左右移动,或者 h、j、k、l移动。
保存和退出
保存文件、退出等需要切换到行命令模式,在插入模式下输入 Esc 再 输入:w :q 或 :wq 等。
前提:须切换到命令模式。注意组合命令执行的顺序:w ->q ->!
命令 | 操作 |
:w | 保存文件 |
:w filename | 另存为filename |
:q | 退出Vim |
:q! | 强行退出,放弃保存 |
搜索字符串
前提:须切换到命令模式
/string 用于向下搜索一个字符串
?string 用于向上搜索一个字符串
如果需要启动或关闭大小写敏感,执行:
:set ignorecase
或
:set noignorecase
替换字符串
前提:须切换到命令模式。
语法 :
:[range]s/pattern/string/[c、e、g、i]
这条命令将 pattern 所代表的字符串替换成 string。开头的range 用于指定替换作用的范围,如“1,10” 表示从第1行到第10行,“1,$”表示从第1行到最后一行,也就是全文。全文也可以用 “%” 表示。
最后的方括号是可选选项,含义如下:
标 志 | 含 义 |
c | 每次替换前询问 |
e | 不显示错误信息 |
g | 替换一行中的所有匹配项(这个选项通常需要使用) |
i | 不区分大小写 |
如Windows 环境下的源码经常会有 “^M”的字符,要清除可以使用下面的命令:
:%s/^M$//g
删除、复制、粘贴
前提:须切换到命令模式。
命令 | 操作 |
x | 删除光标所在位置的字符 |
dd | 删除光标所在的行, 2 dd 表示删除2行 |
D | 删除光标所在位置到行尾之间所有的字符 |
d | 普遍意义上的删除命令,和移动命令配合使用。例如dw 表示删除光标所在位置到下一单词词头之间所有的字符 |
yy | 复制光标所在的行 |
y | 普遍意义上的复制命令,和移动命令配合使用。例如yw表示复制光标所在位置到下一个单词词头之间所有的字符 |
p | 在光标所在位置粘贴最近复制/删除的内容 |
撤销和重做
前提:须切换到命令模式。
命令 | 操作 |
u | 撤销一次操作 |
Ctrl+R | 重做被撤销的操作 |
前提:须切换到命令模式。
语法 :
:[range]s/pattern/string/[c、e、g、i]
程序员特有配置
:syntax on ## 语法高亮
:set autoindent ## 自动缩进
:set shiftwidth=4 ## 设置Tab 键对应的空格数
16、查找命令——find
作用: 在指定范围内迅速查找到文件。
用法:
find [OPTION] [path . . .] [expression]
例:
$find /usr -name test.txt
【OPTION选项】
特殊情况才会使用,建议日后查帮助
常用参数:
-type 查找时指定文件的类型,可使用参数如下表;
-atime n 查找最后一次使用在n天前的文件,n 使用负数表示;
-mtime n 查找最后一次修改在n天前的文件;
-maxdepth n 查找目录的最大深度
-mindepth n 从指定的目录的第几层深度开始查找
参数 | 含义 | 参数 | 含义 |
b | 块设备文件 | f | 普通文件 |
c | 字符设备文件 | p | 命名管道 |
d | 目录文件 | l | 符号链接 |
17、更快速的定位文件——locate命令
作用: 火箭般的速度定位文件。
用法:
locate [expression] pattern
locate 并不进入子目录进行搜索,它通过检索数据库来确定文件的位置。可以使用 updatedb 来更新检索数据库。
18、查找文件内容——grep命令
作用: 在文件中寻找某些信息。
用法:
grep [OPTIONS] PATTERN [FILE...] ## pattern 使用基础正则表达式
$grep open ./test.c