熟悉Linux开发环境
一、Linux简介
1 Linux概述
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
2 Linux基本思想
Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
3 Linux的版本
Linux分为内核版本和发行版本两个大类。Linux内核版本在www.kernel.org网站下载。Linux的主要发行版本有Redhat,CentOS,Ubuntu,其中基于图形界面的Ubuntu不太适合服务器应用开发,没有其余两个稳定和安全。
4 Linux的应用领域
(1)服务器端应用开发。
(2)嵌入式系统。
5 Linux与Windows的不同
Linux严格区分大小写。
Linux中所有内容以文件形式保存,包括硬件。
Linux不靠扩展名区分文件类型。
Windows中的程序不能在Linux中直接安装和执行。
6 字符界面的优势
优势一:字符界面占用的系统资源更少。
优势二:字符界面减少了出错、被攻击的可能性。
二、Linux系统安装
1 虚拟机的安装和使用
下载安装VMware 8.x的破解汉化版。
配置设置VMware8.x环境。
下载安装CentOS6.5。
三、Linux文件和命令
1 Linux文件类型
普通文件(regular file):纯文本文件(ASCII)、二进制文件(binary)、数据格式的文件(data)。
目录文件(directory)、连接文件(link)、设备与设备文件(device)、块设备文件、字符设备文件、套接字(sockets)、管道(FIFO, pipe)
2 Linux文件结构
/:根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。
/bin:bin 就是二进制(binary)英文缩写。在一般的系统当中,都可以在这个目录下找到linux常用的命令。系统所需要的那些命令位于此目录。
/boot:Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录。
/cdrom:这个目录在刚刚安装系统的时候是空的。可以将光驱文件系统挂在这个目录下。例如:mount /dev/cdrom /cdrom
/dev:dev 是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这一点和常用的windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
/etc:etc这个目录是linux系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件,文件系统,x系统配置文件,设备配置信息,设置用户信息等都在这个目录下。
/home:如果建立一个用户,用户名是"xx",那么在/home目录下就有一个对应的/home/xx路径,用来存放用户的主目录。
/lib:lib是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作,一旦发生问题,系统就不能工作了。
/lost+found:在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
/mnt:这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom等目录。可以参看/etc/fstab的定义。
/media:有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
/opt:这里主要存放那些可选的程序。
/proc:可以在这个目录下获取系统信息。这些信息是在内存中,由系统自己产生的。
/root:Linux超级权限用户root的家目录。
/sbin:这个目录是用来存放系统管理员的系统管理程序。大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的,凡是目录sbin中包含的都是root权限才能执行的。
/selinux :对SElinux的一些配置文件目录,SElinux可以让linux更加安全。
/srv 服务启动后,所需访问的数据目录,举个例子来说,www服务启动读取的网页数据就可以放在/srv/www中
/tmp:临时文件目录,用来存放不同程序执行时产生的临时文件。有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。
/usr
这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。在这个目录下,可以找到那些不适合放在/bin或/etc目录下的额外的工具。
/usr/local:这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面。
/usr/share :系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。
/var:这个目录的内容是经常变动的,看名字就知道,可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/ www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地。
3 Linux通用命令
1. date :print or set the system date and time
2. stty -a: 可以查看或者打印控制字符(Ctrl-C, Ctrl-D, Ctrl-Z等)
3. passwd: print or setthe system date and time (用passwd -h查看)
4. logout, login: 登录shell的登录和注销命令
5. pwd: print or set thesystem date and time
6. more, less, head tail:显示或部分显示文件内容.
7. lp/lpstat/cancel,lpr/lpq/lprm: 打印文件.
8. 更改文件权限: chmod u+x...
9. 删除非空目录:rm -fr dir
10.拷贝目录: cp -R dir
11. fg jobid :可以将一个后台进程放到前台。
Ctrl-z 可以将前台进程挂起(suspend), 然后可以用bg jobid 让其到后台运行。
job & 可以直接让job直接在后台运行。
12. kill 的作用: send a signal to a process. eg: kill -9 发送的是SIG_KILL信号。。。 具体发送什么信号 可以通过 man kill 查看。
13. ps 的用法, ps -e 或 ps -o pid,ppid,session,tpgid, comm (其中session显示的sessionid, tpgid显示前台进程组id, comm显示命令名称。)
4 Ubuntu操作
Ctrl + Alt + T打开命令行终端
Ctrl + Alt + F1(~F6)打开命令行,Ctrl + Alt + F7从命令行退出到桌面
root权限的获取
四、文本编辑器vi(visual interface)
1 vi概述
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
2 vi基本概念
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
1) 命令模式(command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式、底行模式下。
2) 插入模式(Insert mode)
只有在插入模式下,才可以做文字输入,按ESC键可回到命令模式。
3) 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号。
不过一般我们在使用时把vi简化成两个模式,就是将底行模式也算入命令模式。
3 vi基本操作
a) 进入vi
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
$ vi myfile
不过有一点要特别注意,就是您进入vi之后,是处于命令行模式,您要切换到插入模式才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到插入模式再说吧!
b) 切换至插入模式编辑文件
在命令模式下按一下字母 i 就可以进入插入模式,这时候你就可以开始输入文字了。
c) 从插入模式切换至命令模式
处于插入模式时只能一直输入文字,按下ESC键可转到命令模式。
d) 退出vi及保存文件
在命令行模式下,按一下冒号键进入底行模式,例如:
:w (保存当前文件)
:w filename (将文件以指定的文件名“filename”保存)
:wq (保存并退出vi)
:wq filename(将正在编辑的文件保存为“filename”文件退出vi)
:q (退出vi)
:q! (不存盘强制退出vi)
:x (相当于 :wq 的功能)
4 vi命令模式操作
1)插入模式
按 i 切换进入插入模式后,是从光标当前位置开始输入文件;
按 a 进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按 o 进入插入模式后,是插入新的一行,从行首开始输入文字。
2)从插入模式切换为命令行模式
按 ESC 键。
3)移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母 h 、 j 、 k 、 l ,分别控制光标左、下、上、右移一格。
按 Ctrl+b :屏幕往后移动一页。
按 Ctrl+f :屏幕往前移动一页。
按 Ctrl+u :屏幕往后移动半页。
按 Ctrl+d :屏幕往前移动半页。
按数字 0 :移到当前行的开头。
按 G :移动到文章的最后。
按 $ :移动到光标所在行的行尾。
按 ^ :移动到光标所在行的行首。
按 w :光标跳到下个字的开头。
按 e :光标跳到下个字的字尾。
按 b :光标回到上个字的开头。
按 #l :光标往后移的第#个位置,如:5l,56l .
4)删除文字
x :每按一次,删除光标所在位置的后面一个字符。
#x :删除光标所在位置的后面#个字符,例如, 6x 表示删除光标所在位置的后面6个字符。
X :每按一次,删除光标所在位置的前面一个字符。
#X :删除光标所在位置的前面#个字符,例如, 20X 表示删除光标所在位置的前面20个字符。
dd :删除光标所在行。
#dd :从光标所在行开始删除#行。
5)复制
yw :将光标所在之处到字尾的字符复制到缓冲区中。
#yw :复制#个字到缓冲区。
yy :复制光标所在行到缓冲区。
#yy :复制从光标所在行往下#行文字,例如, 6yy 表示复制从光标所在行往下6行文字。
p :将缓冲区内的字符贴到光标所在位置。
注意:所有与 y 有关的复制命令都必须与 p 配合才能完成复制与粘贴功能。
6)替换
r :替换光标所在处的字符。
R :替换光标所到之处的字符,直到按下 ESC 键为止。
7)恢复上一次操作
u :如果您误执行一个命令,可以马上按下 u ,回到上一个操作。按多次 u 可以执行多次恢复。
8)更改
cw :更改光标所在处的字到字尾处
#cw :例如,「3cw」表示更改3个字
9)跳至指定的行
Ctrl+g 列出光标所在行的行号。
#G :移动光标至文件的第#行行首,例如,15G 表示移动光标至文件的第15行行首。
5 vi底行模式操作
在使用底行模式之前,请记住先按 ESC 键确定您已经处于命令行模式下后,再按冒号 : 即可进入底行模式。
A) 列出行号
set nu :在文件中的每一行前面列出行号。
B) 跳到文件中的某一行
# : # 号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
C) 查找字符
/关键字 :先按 / 键,再输入您想寻找的字符,可以按 n 寻找下一个关键字。
?关键字 :先按 ? 键,再输入您想寻找的字符,可以按 n 寻找上一个关键字。
D)语法加亮
vi编辑器默认不打开语法加亮功能,打开vi编辑器后在底行模式下使用syntax on命令即可打开语法加亮功能,此时编辑器会高亮显示文件中的关键字,方便编程使用,用syntax off命令可关闭该功能。
Reference
[1]百度百科
[2]慕课网视频课程《Linux达人养成计划I》
[3]慕课网视频课程《Linux达人养成计划II》第一章