1. Linux由四部分构成:
内核:系统的心脏,是运行程序和管理磁盘、打印机等硬件设备的核心程序。
用户界面:提供字符界面和图形界面
文件结构:目录采用多级树形结构
实用工具:编辑器(用于编辑文件)
过滤器(用于接收数据并过滤数据)
交互程序(允许用户发送信息或接收来自其他用户的信息)
2安装
3. Linux至少需要两个分区,一个是主分区根目录(/),另外一个是交换分区(swap)
并不需要为“/”下的每个目录都建立独立的分区,如果某个目录没有单独建立分区,它会使用“/”分区的空间。
4. 更改启动方式:
1) 0:停机
2) 1:单用户模式(安全模式)
3) 2:多用户模式,没有NFS
4) 3:多用户模式,标准的运行级
5) 4:保留,一般不用
6) 5:X Window图形模式
7) 6:重新启动
更改方式:在配置文件/etc/inittab中可以更改上述级别,或用命令telinit 设定级别为n
5. Shell命令
1) Linux命令严格区分大小写,可以使用“;”将两个命令隔开,从而在一行中输入多个命令。
2) 命令自动补齐——> <Tab>/ Ctrl + r
3) Shell提示符:#(用户为root用户)$(用户为普通用户)
4) 命令:
a) 文件查看和连接——cat
-n或—number : 由1开始对所有输出的行数进行编号
-b 或—number-nonblank : 对空白行不编号
-s 或—squeeze-blank : 当遇到两行以上的空白时,就替换为一行空白行
-v或—show-nonprinting : 显示不可打印字符
b) 分屏显示命令——more
-d:在屏幕下方显示提示信息
-l:取消遇到送纸符暂停功能
-f:计算实际的行数而非自动换行后的行数
-p:不以卷动的方式显示每一页,先清除屏幕再显示内容
-c:先从顶部开始显示内容,再清除每行后剩余的旧内容
-s:当遇到连续两行以上的空白行时就替换为一行空白行
-u:不显示下划线
+/<string>:在文件中搜寻字符串,然后显示字符串所在页的内容
+/<num>:从地num行开始显示
c) 按页显示命令——less
less命令允许用户浏览已经看过的部分,同时less 并不在一开始就读入整个文件,因此在处理大型文件时的速度比较快。
-i :查找时忽略大小写
-p<string>:搜索指定的字符串,并从第一个符合条件的地方开始显示
-<显示列数> :改变页面的显示列数
-s:当某列的内容超过显示画面的宽度时,直接将超出的部分截断舍弃。
d) 复制命令——cp
cp [选项] <source> <dest> / cp [] <source> … <directory>
-r:若source中含有目录,则递归的将目录下的文件依次拷贝至目的地
-f:若目的地已经有同名文件存在,则在复制前先删除原有文件再进行复制
-a:尽可能将文件模式、所有者、时间标签、链接等信息照原状复制,并且递归的复制子目录中的文件。
e) 删除命令——rm
-i:删除前逐一询问确认
-f:强制删除
-r:递归的删除目录下的内容
f) 移动或重命名命令——mv
用法类似cp
-i:若目的地已有同名文件,则先询问是否覆盖原文件
-f:强制移动
g) 创建目录命令——mkdir
mkdir [-p] <dirName>
h) 删除空目录命令——rmdir
rmdir [-p] <dirName>
i) 切换工作目录——cd
j) 显示当前路径——pwd
k) 查看目录内容——ls
-a:显示所有文件及目录
-l:使用长格式
-r:以相反次序显示文件
-t:将文件以修改时间排序
-A:不列出“.”及“..”文件
-F:列出文件类型
-R:递归的列出目录下的文件
l) 查找文件或目录命令——find
find [path…] [expression]
expression:
-amin<n>:在过去n分钟内被访问过的文件
-anewer<file>:比文件file更晚被访问过的文件
-atime<n>:在过去n天内访问过的文件
-cmin<n>:在过去n分钟内修改过的文件
-cnewer<file>:比文件file更新的文件
-ctime<n>:在过去n天内修改过的文件
-empty:内容为空的文件
-gid<n> or -group<name>:gid是n或是group名称是name的文件
-ipath<p>, -path<p>:路径名称符合p的文件,ipath表示忽略大小写
-name<name>, -iname<name>:文件名称符合name的文件。iname表示忽略大小写
-size<n单位>:文件大小是n个单位。其中b代表512位的区块,c表示字符数,k表示kilobytes,w表示由两个字节组成的字
-type<c>:文件类型是c的文件。其中文件类型可以是d、c、b、p、f、l、s之一,它们的含义与命令ls选项-l的说明一样
-pid<n>:进程id是n的文件
exp1 exp2或者exp1 -a exp2或者exp1 –and exp2:同时满足规定exp1和exp2.
!expr或者-not expr:表示expr的否定
exp1 -o exp2或者exp1 -or exp2:表示满足exp1或者exp2之一便可。
例:find / -name test
find . –ftype f
find . –cmin -20
find /usr/ -size 50K
m) 文件定位命令——locate/slocate
locate [选项] <search string>
-u:从根目录/开始创建数据库(slocate)
n) 链接命令——ln
ln [] <source> <dest>
-f:链接时先将与dest同名的文件删除
-d:允许系统管理员创建对目录的硬链接
-i:在删除与dest同名的文件时先进行询问。
-n:在进行软链接时,将dest视为一般的文件
-s:创建软链接,默认情况下创建硬链接
-v:在链接之前显示每个文件的文件名。
-b:在链接时可能被覆盖或删除的文件进行备份。
o) 改变文件或目录时间命令——touch
-a:只改变文件的访问时间记录
-m:只改变文件的修改时间记录
-c:如果文件不存在,不会建立新的文件
-t<stamp>:设定文件的时间记录
-d<datestring>:根据string设定文件的时间与日期
-r<参考文件或目录>:使用参考文件的时间与日。
p) 备份命令——tar
tar <主选项> [辅选项] <文件或者目录>
主选项:
-c:创建新的备份文件,备份选择
-r:将要存档的文件追加到备份文件的末尾
-t:列出备份文件的内容
-u:更新备份,用新增的文件取代原备份文件
-x:从备份文件中释放文件
辅助选项:
f:使用备份文件或设备,通常必选
k:保存已经存在的文件
m:还原文件时,把所有文件的修改时间设定为当前时间
v:详细报告tar处理的文件信息
w:每一步都要求确认
x:用gzip来压缩/解压缩文件
备份不压缩:cvf
解备份:xvf
压缩备份:czvf
还原并解压缩:xzvf
查看备份文件内容:tvf
q) 压缩命令——gzip——?
gzip [选项] <文件名>
-c:将输出写到标准输出上,并保留原有文件
-d:将压缩文件解压
-l:对每个压缩文件显示文件大小、未压缩文件大小、压缩比、未压缩文件名
-r:递归查找指定目录并压缩
-t:测试,检查压缩文件的完整性
-v:对每个压缩文件显示文件名和压缩比
r) 解压命令——unzip
-d<目录>:把压缩文件在指定目录下解压
-n:不覆盖已经存在的文件
-o:覆盖已存在的文件且不要求用户确认
-j:不重建文档的目录结构,把所有文件解压到同一目录下
-v:查看压缩文件,但不解压
-t:测试文件是否完整,但不解压
s) 显示日历命令——cal
cal [选项] [[月]年]
-1:显示一个月的日历
-3:显示前一个月,本月,下一个月的日历
-s:以星期天作为一周的第1天显示
-m:以星期一作为一周的第一天显示
-j:显示指定月中的每一天是一年中的第几天
-y:显示出当年的完整日历
t) 日期时间命令——date
date [] [+formatstring]:
date <setstring>:
-d <datestr>:显示由datestr描述的日期和时间而不是系统当前的日期和时间
-s <datestr>:系统时钟设置为datestr描述的日期和时间
u) 显示文字命令——echo
v) 清除屏幕命令——clear
w) 软件包管理命令——rpm
安装:rpm –i [安装选项] <file1.rpm> .... <fileN.rpm>
主要的安装选项:
-h:安装时输出hash标记。
--test:只对安装进行测试,并不实际安装
--percent:以百分比的形式输出安装的进度
--excludedocs:不安装软件包中的文档文件
--includedocs:安装文档文件。
--replacepkgs:强制重新安装已经安装的软件包
--replacefiles:替换属于其它软件包的文件
--force:忽略软件包及文件的冲突
--noscripts:不运行与安装和后安装脚本。
--prefix<path>:将软件包安装到由<path>指定的路径下
--ignorearch:不校验软件包的结构
--ignoreos:不检查软件包运行的操作系统
--root<path>:让rpm将<path>指定的路径作为“根目录”
删除:rpm –e[]
升级:rpm –U[]
查询:rpm –q
校验:rpm –V
x) 联机帮助命令——man / info / help
6. 文件类型
1) 普通文件:文本文件和二进制文件
2) 目录文件:相关文件的位置、大小等信息
3) 设备文件:每一个I/O设备都看成一个文件(又可分为块设备文件和字符设备文件)
4) 通配符:*(任意字符或字符串)?(任意一个字符) \(转义字符)
7. 目录
1) Linux系统以目录的方式来组织和管理系统中的所有文件。
2) 工作目录:用户登录系统后处在的某个目录
3) 用户主目录:系统管理员增加用户时为该用户建立起来的目录,使用“~”表示
8. vi编辑器
1) 分类:行编辑器(ed和ex);全屏幕编辑器(vi和emacs)
2) 描述:全屏幕交互式编辑程序,做行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。
3) 工作模式:命令模式、插入模式和末行模式
5) 进入vi:命令“vi 文件名
6) 退出vi
a) 在命令模式下:连按两次大写字母Z,保存后推出。
b) 在末行模式下:
i. :w vi保存当前编辑的文件,但并不退出vi
ii. :w <newfile> 把当前文件内容保存到指定的文件newfile中,而原有文件保持不变
iii. :w!<newfile> 把当前文件的内容保存到指定的文件newfile中,如果newfile已经存在,则覆盖原有内容。
c) 在末行模式下:
i. :q 系统推出vi返回到shell。编辑文件没有被保存,给出提示信息。
ii. :q! vi放弃所做修改而直接退到shell下
iii. :wq 先保存文件,然后再退出vi返回到shell
iv. :x 同ZZ
7) View 命令:以只读的方式打开文件,但文件的内容不会发生变化,在末行方式下输入:set number或者:set nu可给文本加行号。[行号]G表示将光标移至行号所指定的行的行首
8) 屏幕光标移动命令:
– H命令:该命令将光标移至屏幕首行的行首。
若在H命令之前加上数字n,则将光标移至屏幕第n行的行首。
– M命令: 该命令将光标移至屏幕显示文件的中间行的行首。
– L命令:该命令将光标移至屏幕显示文件的底行的行首。
9) 文本删除:
a) x:删除当前字符
b) dh:删除前一个字符
c) dw:删除当前字
d) db:删除前一个字
e) dd:删除当前行
f) d$:删除从当前字符开始到行尾的所有字符
10) 屏幕调零命令:
a) [行号]z[行数]<回车>:将文件中的[行号]作为屏幕显示的首行,屏幕显示行数为[行数]
b) [行号]z[行数].:将文件的第[行号]作为屏幕显示的中间行
c) [行号]z[行数]_:将文件的第[行号]作为屏幕显示的最末行,屏幕显示行数为[行数]
11) 常用的查找命令:
a) ?<pattern> 向文件头方向查找符合该模式的文本
b) /<pattern> 向文件尾方向查找符合该模式的文本
12) 修改命令:
a) c命令:c后紧跟光标移动命令,表示修改内容的范围是从光标当前位置开始到指定位置为止
b) C命令:修改光标当前位置开始到该行末尾或从光标当前位置开始到某行末尾范围内的内容
c) cc命令:修改从光标所在行的行首到该行末尾或指定某行末尾范围内的内容
13) 文本的复制与黏贴
a) yw:将光标所在位置到字尾的字符复制到缓冲区
b) [n]yw:将光标所在位置开始的n个字符复制到缓冲区
c) yy:将光标所在的行复制到缓冲区
d) [n]yy:将从光标所在行及其后的n-1行复制到缓冲区
14) 取消命令:u或U 不同:u取消先前多次操作,把当前行恢复成编辑前的状态
15) 重复命令:“.”键
9. X Window:
a) X Window由三个部分组成:
i. X Server:控制输出及输入设备并维护相关资源的程序,它接收输入设备的信息,并将其传给X Client,而将X Client传来的信息输出到屏幕上。
ii. X Client:是应用程序的核心部分,与硬件无关,每个应用程序就是一个X Client.
iii. X protocol:X Client与X Server之间的通信协议
10. 设备挂载:
a) 确定信息:挂载对象的文件系统类型,挂载对象的设备名称,设备挂载到哪个目录
b) 挂载对象设备名称:放在/dev下,”hd”硬盘或IDE设备,“sd”代表SCSI或USB设备
c) 挂载命令:mount [选项] <挂载设备名称> <挂载点>
i. –t:挂载文件系统
d) 查看设备:fdisk
e) 写在设备:umount [挂载点或设备名]
f) 自动挂载:配置文件/etc/fstab
11. 磁盘格式化:mkfs [选项][-t <文件系统类型>] [设备名称] [区块数]
12. 网络接口配置:
a) 终端中输入命令netconfig
b) Ifconfig命令:ifconfig <设备名> <IP地址> netmask <掩码>
c) 接口的启用和禁用:ifconfig <设备名> [up|down]
d) 查看命令:ifconfig,ifconfig <设备名>
13. 常用网络命令:
a) 网络测试命令:ping [选项] <目的主机名或IP地址> 控制数据包个数时用 –c <个数>
b) 显示数据包经过路由的命令:traceroute <目的主机IP或域名>
c) 显示路由表内容:route
d) 添加/删除路由记录:route add|del –net <网络号> netmask <网络掩码> dev <设备名>
e) 添加/删除默认网关:route add|del default gw <网关名或网关IP>
14. 远程登录命令:telnet <主机名/IP>
rlogin <主机名/IP>
ssh <主机名/IP>
15. 服务管理:
a) 文本界面管理:root用户下输入ntsysv命令,选择启动的服务
b) 命令行界面管理:chkconfig检查和设置系统的各种服务
service用于设置服务当前状态
service 服务名 [start|stop|restart]
查看进程树命令pstree获知系统正在运行哪些服务
pstree | grep httpd
16. 超级服务器:xinetd 配置文件:/etc/ xinetd.conf
17. shell是用户和系统内核之间的接口程序,是命令解释器。
a) 查看:cat /ect/shells
18. shell程序的特点及用途:
a) 认为是将shell命令按照控制结构组织到一个文本文件中,批量的交给shell执行
b) 不同shell解释器使用不同命令语法
c) 不生成可以执行的二进制文件
d) 帮助用户完成特定任务,提高使用、维护系统的效率
e) 更好的配置和使用Linux
19. shell程序定义:
a) 以“#!”开始其后是解释器的路径
b) #作为注释的标识
c) function开始定义函数
d) ll查看权限
e) chmod增加可执行的权限:chmod +x <文件名>
f) 变量的声明:弱类型——变量=值(注意:等号两侧不能有空格)
g) 变量的引用:$变量名或者${
变量名}h) 计算表达式的值:expr arg(运算符号和参数之间要有空格分开,通配符*作为惩罚运算时要用\、“”、``符号修饰)
i) 使用let命令指明表达式:let arg1 [agr2 …]
j) 条件判断:格式:test condition或[ condition ](左右括号和判断条件之间要用空格分开)判断结果:真——0,假——1 逻辑与 –a,逻辑或 –o ,逻辑非 !
k) 控制结构:
i. 分支结构:if、case
ü if分支:if 条件1
then
命令
[elif 条件2
then
命令]
[else
命令]
fi
ü case分支:case 条件in
模式1)
命令1
;;
[模式2
命令2
;;]
esac
ii. 循环结构:for、while、until
ü for循环:for 变量 [in 列表]
do
命令
done
ü while/until循环:while/until 条件
do
命令
done
l) 函数引用:函数名 [参数1参数2……参数n]
20. gcc = GNU project C and C++ Complier / GNU Complier Collection可以对C/C++进行预处理,编译,汇编以及链接。
a) 基本使用格式:$ gcc [选项] <文件名>
b) 常用选项:
i. -o file:将经过gcc处理过的结果存为文件file,这个结果文件可能是预处理文件、汇编文件、目标文件或者最终的可执行文件。假设被处理的源文件为source.suffix,如果这个选项被省略了,那么生成的可执行文件默认名称为a.out;目标文件默认名为source.o;汇编文件默认名为source.s;生成的预处理文件则发送到标准输出设备。
ii. –c:仅对源文件进行编译,不链接生成可执行文件。在对源文件进行差错时,或只需产生目标文件时可以使用该选项。
iii. –g[gdb]:在可执行文件中加入调试信息,方便进行程序的调试。如果使用中括号中的选项,表示加入gdb扩展的调试信息,方便使用gdb来进行调试。
iv. –O[0、1、2、3]:对生成的代码使用优化,中括号中的部分为优化级别,缺省的情况为2级优化,0为不进行优化。采用更高级别的优化,并不一定得到效率更高的代码。
v. –Dname[=definition]:将名为name的宏定义为definition,如果中括号中的部分缺省,则宏被定义为1
vi. –w:禁止所有警告
vii. –Wwarning:允许产生warning类型的警告
c) 根据文件扩展名执行操作
d) 生成预处理文件:$gcc –E <源文件名> -o <生成预处理文件名> -o可省略,生成的预处理文件将被定向到标准输出设备上。
e) 生成汇编文件:$gcc –S <源文件名> -o <生成的汇编文件名>
f) 生成目标文件:$gcc –c <源文件名> -o <目标文件名>
g) 编译多个文件:$gcc my_app.c functions/greeting.c –o my_app –Ifunctions
21. makefile
a) 基本格式:目标:依赖项列表
命令(命令行必须以tab开头)
b) 使用格式:make [[命令选项] [命令参数]]
22. 调试:
a) 静态调试::$gcc –g –Wall –c functions/greeting.c,主要为语法错误
b) 动态调试:
i. file:指定需要进行调试的程序
ii. step:单步执行
iii. next:单步执行
iv. run:启动被执行的程序
v. quit:退出调试
vi. print:查看变量或者表达式的值
vii. break:设置断点
viii. shell:执行其后的shell命令
ix. list:查看指定文件或者函数的源代码