常见的硬件设备及其在Linux中的代号:
IDE硬盘 /dev/hd[a-d]
SCSI硬盘 /dev/sd[a-p]
光驱 /dev/cdrom
软驱 /dev/fd[0-1]
打印机 /dev/lp[0-2]
鼠标 /dev/mouse
磁盘 /dev/ht0(IDE) 或/dev/st0(SCSI界面)
网卡 /dev/ethn(n由0开始)
基本的硬盘分区模式
这里必须要给Linux新手一些硬盘分割方面的建议。
甲、初次使用Linux:
Swap约100MB
其他的都给/
乙、较熟练用户:
Swap约100MB
/var给3~5GB
/usr给3~5GB
/给1GB以上
/home可以给大一些
/backup用来作为备份分区
通常我们会建议将磁盘区块划分为下列几个区:
/
/boot
/usr
/home
/var
这样划分有好处,例如,/var是系统默认的数据暂存目录或者是cache数据的储存目录,
像e-mail就放在这里。如果还使用了proxy,因为常常存取,所以有可能造成磁盘损坏,而
当这部分磁盘损坏时,由于其他地方没问题,因此数据得以保存,而且在处理时也比较容
易。
图形模式与文字模式的切换
Linux提供了6个文字界面终端。您可以直接按下Ctrl+Alt+F1~F6功能键切换到不同的文字界面终端,这也是我们上面提到的tty1。当您以Ctrl + Alt + F1登入主机时,它所在的位置就是tty1终端,而以Ctrl + Alt + F2登入主机时,所在位置就是tty2终端。那么怎样回到图形界面呢?很简单,按下Ctrl + Alt + F7就可以了(注:某些Linux版本会用到F8这个终端接口作为它的桌面终端机,例如OpenLinux Server
· Ctrl + Alt + [F1] ~ [F6] :文字界面tty1 ~ tty6终端
· Ctrl + Alt + [F7] :图形界面
[root@chinastor root]# startx
就可以启动图形界面,前提是您的XFree86需要设定OK才行。那么,如果要修改预设的启
动界面呢?例如由文字界面变为图形界面,可以修改/etc/inittab文件
查看日期
[root@localhost ~]# date +%Y/%m/%d
[root@localhost ~]# date +%H:%M
09:37
[root@localhost ~]# date
Sun Oct 24 09:36:38 CST 2010
显示日历的指令:cal
简单好用的计算器:bc
Man 用法
· 空格键: 向下翻页;
· page up: 向上翻页;
· page down: 向下翻页;
· home: 回到最前面;
· end: 转到最终页;
· /word: 搜寻word所代表的文件。
Linux关机注意事项:
正常情况下,关机时需要注意
下面几件事:
· 观察系统的使用状态:如果要看目前有谁在线,可以输入who指令,而如果要看网
络的联机状态,可以输入netstat -a指令,而要看背景执行的程序可以执行ps -aux指
令。使用这些指令可以让您稍微了解主机当前的使用状态。当然,就可以让您判断
是否可以关机了(这些指令在后面会提及)。
· 通知在线用户关机的时刻:要关机前总得给在线用户一些时间用于结束他们的工
作,所以,这个时候您可以使用shutdown特别指令达到这一目的。
· 正确的关机指令:例如shutdown与reboot两个指令。
改变群组chgrp
改变一个文件的群组很简单,直接使用chgrp指令即可,这个指令就是change group的
缩写。但要注意,改变的目标群组名称必须在/etc/group中存在,否则会显示错误。例如下
面的例子中,我们要改变tmp的群组,而users这个群组已经存在于/etc/group中,但chinastoring群
组名称就不存在于/etc/group中,所以会产生错误信息。
语法:
chgrp 群组名称文件或目录
范例:
[root@chinastor root]# chgrp users tmp
[root@chinastor root]# ls –l
drwx------ 2 root root 4096 Oct 19 11:43 drakx/
drwx------ 2 root users 4096 Oct 19 21:24 tmp/
[root@chinastor root]# chgrp chinastoring tmp
chgrp: invalid group name `chinastoring' <==发生错误信息啰!
改变拥有者chown
那么,如何改变一个文件的拥有者呢?很简单。既然改变群组是change group,那么改
变拥有者就是change owner,也就是chown这个指令的用途。要注意的是,文件的拥有者必
须已经存在于系统中,也就是说,拥有者名称在/etc/passwd文件中存在才能改变。chown的
用途很多,它还可以直接修改群组的名称。此外,如果要将目录下的所有子目录或文件同
时更改文件拥有者,直接加–R参数即可。下面看看语法与范例:
语法:
chown [ -R ] 账号名称文件或目录
chown [ -R ] 账号名称:群组名称文件或目录
Linux主要有下面几种文件种类:
正规文件(regular file):就是一般类型的文件,即由ls -al显示出的文件中其第一
个属性为[ - ]的文件。另外,依照文件的内容,又可以将其细分为下列两种:
纯文本文件(ASCII):这是Unix系统中最多的一种类型,我们可以用来设定的
文件几乎都属于这一种;
二进制文件(binary):通常除了脚本(文字型批处理文件)之外,执行文件就
是这种文件格式。
· 目录(directory):就是目录,其第一个属性为[ d ]。
· 链接文件(link):类似Windows下的快捷方式,其第一个属性为[ l ]。
· 设备文件(device):与系统外设相关的文件,通常都集中在/dev目录下。通常又
分为两种:
?? 块(block)设备文件:就是用于储存数据以提供系统存取的接口设备,简单地
说就是硬盘。例如您的主硬盘代码是/dev/hda1。这类文件的第一个属性为[ b ];
?? 字符(character)设备文件:即一些串行端口的接口设备,例如键盘、鼠标等。
这类文件的第一个属性为[ c ]。
Linux树状目录结构
每个目录的大致内容如下表所示。
/bin 这是存放诸如ls,mv,rm,mkdir,rmdir,gzip,tar,telnet和ftp等常用执行文件的地方(这
些执行文件的执行方法会在后面提到)。有时这个目录的内容与/usr/bin一样(有时甚至
会使用链接文件),是专门用于放置一般用户使用的执行程序
/boot 这里是放置您的Linux核心与启动相关文件的地方,目录下的vmlinuz-xxx就是Linux的内
核。如果您的启动管理程序选择grub,那么这个目录内还有/boot/grub子目录
/dev 存放与设备有关的文件。基本上,Unix或Linux系统均把设备当成文件,例如/dev/fd0代表
软驱,相当于Windows系统下的A区,而/dev/cdrom则代表光驱。如前所述,这个目录下
的文件通常分为两种,分别是管理硬盘I/O的块文件与外设的字符文件
/etc 系统在启动过程中需要读取的文件均在这个目录下,例如Lilo的参数、用户账号与密码、
系统的主要设定、http架站参数、您要启动的服务项等,所以在这个目录下工作的时候一
定要记得备份,否则文件被意外修改后会很麻烦
/etc/rc.d 这个目录主要存放开关机过程中用到的脚本文件。脚本文件有点像DOS下的批处理文档
(以.bat作为后缀名)
/etc/rc.d/init.d 所有服务默认的启动脚本文件都放在这里,例如,要启动与关闭iptables,可以使用:
/etc/rc.d/init.d/iptables start
/etc/rc.d/init.d/iptables stop
/etc/xinetd.d 这个路径在较新的Linux版本中才有,由于早期版本中用来启动服务的文件是inetd.conf,
但是在较新版本中,启动服务已经变成使用xinetd.conf文件,因此,您若需要启动一些额
外服务,在Mandrake 9.0以后的版本就要到/etc/xinetd.d目录下查找
/etc/X11 这是与X windows有关的配置文件所在的目录,尤其重要的是里面的XF86Config-4
/home 基本上,这是系统默认的用户根目录(home directory),在您新增一个一般用户的账号
时,默认的用户根目录已在这里设定好
/lib 在Linux执行或编译某些程序时要用到的函数库(library)就在这个目录下
/lost+found 系统产生异常错误时,会将一些遗失的片段放置在此目录下,通常这个目录会自动出现
在设备目录下。例如您在/disk中加装一块硬盘, 这个目录下就会自动产生目录
/disk/lost+found
/mnt 软驱与光驱接默认装载点的地方。通常,软驱挂在/mnt/floppy下,光驱挂在/mnt/cdrom下,
不过也不一定,只要您高兴,随便找一个地方装载也可以
/proc 用于放置系统核心与执行程序所需的一些信息,例如您的网络状态等问题。这个目录将
在启动Linux的时候自动被挂上,而且该目录不会占用硬盘空间,因为里面都是内存中的
数据
/root 系统管理员的根目录
/sbin 放置系统管理常用的程序,例如fdisk,mke2fs,fsck,mkswap和mount等。与/bin不太一
样,这个目录下的程序通常是root等系统管理员使用的程序
/tmp 这是让一般用户存放临时文件的地方,例如您在安装Linux下的软件时,可能软件的默认
安装目录就是/tmp,所以您要定期清理,当然,重要数据最好不要放在这里
/usr 这是最重要的一个目录,里面含有很多系统信息,其下包含许多子目录,用来存放程序
与指令。这个目录有点类似Windows下的Program Files目录
/usr/include 一些套件的头文件。基本上,当我们以Tarball方式(*.tar.gz方式)安装某些数据时会用到
的函数库都在这个目录下
/usr/lib 内含许多程序与子程序所需的函数库
/usr/local 在安装完Linux之后,基本上所有的配备您都有了,但软件总要升级,例如您要升级代理
服务,则通常软件默认的安装目录就是在/usr/local中(local是“本地”的意思),同时,
为了与系统原先的执行文件有所区别,升级后的执行文件通常放在/usr/local/bin目录下(通
常,为了便于管理,鸟哥都会将后来安装的软件放在这里)
/usr/share/doc 放置一些系统说明文件的地方。例如您安装了Lilo,那么在该目录下就可以查到Lilo的说
明文件,很是便利
/usr/share/man 放置一些程序的说明文件的地方,就是您使用man时会查询的路径。例如您使用man ls指
令时,就会查出 /usr/share/man/man1/ls.1.bz2这个说明文件的内容
/usr/src 是放置核心源代码的默认目录,未来我们要编译核心的时候,就必须到这个目录下
/usr/X11R6 X Window System存放相关文件的目录
/var 这个目录也非常重要,所有服务的登录文件或错误信息文件(log files)都在/var/log下,
此外,一些数据库如MySQL则在/var/lib下,还有,用户未读邮件的默认存放地点为
/var/spool/mail
查看文件内容
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出,tac是cat的倒写
more 一页一页地显示文件内容
less 与more类似,但其优点是,可以往前翻页
head 只看头几行
tail 只看末尾几行
nl 显示时同时输出行号
od 以二进制方式读取文件内容
搜寻文件或目录
which 查看可执行文件的位置
whereis 查看文件的位置
locate 配合数据库查看文件位置
find 实际搜寻硬盘查询文件名称
which的基本功能是通过PATH环境变量到该路径内寻找可执行文件,所以基本的功能
在于寻找可执行文件。
locate的使用方式就更简单了,直接输入要找的文件名即可。但是,这个工具有一些使
用限制。您会发现,使用locate查找数据特别快,这是因为locate是从已建立的数据库
/var/lib/slocate中查找数据,不用直接在硬盘中存取数据,所以自然很快。那么有什么限制
呢?正因为它是通过数据库来搜寻,而数据库的更新默认是每周执行一次,所以,在数据
库更新之前新建的文件就会找不到,必须要在更新数据库之后。
那么到底要建立哪些数据库?是否全部都要建立?似乎不需要,您可以自己选择需要
建立文件数据库的目录。在/etc/updatedb.conf内设定。
## Linux-Mandrake configuration.
# 由根目录处开始查询数据,所以填入 / 即可
FROM="/"
# 哪些目录不需要建立文件搜寻数据?那些不要的数据
第2篇 Linux文件、目录与磁盘格式
118
# 请回顾上一章的内容,了解为何如此设定
PRUNEPATHS="/proc,/tmp,/var/tmp,/usr/tmp,/net,/afs,/mnt"
# 安全等级
# 0 代表关闭安全检验,速度较快,但安全性较低;
# 1 启动安全检验,这是系统的默认值;
SECURITY="1"
# 查询过程是否由屏幕输出?当然不要,否则很麻烦
VERBOSE="NO"
# 数据库所在处!这是默认值,不要随意移动,否则会找不到
DATABASE="/var/lib/slocate/slocate.db"
# 哪些文件系统不需要搜寻建立信息?光盘、非Linux的文件格式等
# 不需要搜寻信息的建立
PRUNEFS="nfs,smbfs,ncpfs,proc,devpts,supermount,vfat,iso9660,udf,usbdevf
s,devfs"
通常我们都是先使用whereis或locate来查找,
如果真的找不到,才使用find,因为whereis与locate是利用数据库来搜寻数据,所以相当快,
而且没有实际搜寻硬盘,比较省时间。
VI常用指令
一般模式 光标移动
Ctrl + f 屏幕向前翻动一页(常用)
Ctrl + b 屏幕向后翻动一页(常用)
Ctrl + d 屏幕向前翻动半页
Ctrl + u 屏幕向后翻动半页
+ 光标移动到非空格符的下一列
- 光标移动到非空格符的上一列
n<space> 按下数字后再按空格键,光标会向右移动这一行的n个字符。例如
20<space>,则光标会向右移动20个字符
0 (这是数字0)移动到这一行的第一个字符处(常用)
$ 移动到这一行的最后一个字符处(常用)
H 光标移动到这个屏幕最上方的那一行
M 光标移动到这个屏幕中央的那一行
L 光标移动到这个屏幕最下方的那一行
G 移动到这个文件的最后一行(常用)
nG 移动到这个文件的第n行。例如20G,则会移动到这个文件的第20
行(可配合:set nu)
n<Enter> 光标向下移动n行(常用)
一般模式 查找与替换
/word 在光标之后查找一个名为word的字符串(常用)
?word 在光标之前查找一个名为word的字符串
:n1,n2s/word1/word2/g 在第n1与n2行之间查找word1这个字符串,并将该字符串替换为
word2(常用)
:1,$s/word1/word2/g 从第一行到最后一行查找word1字符串,并将该字符串替换为word2
(常用)
:1,$s/word1/word2/gc 从第一行到最后一行查找word1字符串,并将该字符串替换为
word2,且在替换前显示提示符让用户确认(conform)(常用)
一般模式删除、复制与粘贴
x, X x为向后删除一个字符,X为向前删除一个字符(常用)
nx 向后删除n个字符
dd 删除光标所在的那一整列(常用)
ndd 删除光标所在列的向下n列,例如,20dd则是删除20列(常用)
d1G 删除光标所在行到第一行的所有数据
dG 删除光标所在行到最后一行的所有数据
yy 复制光标所在行(常用)
nyy 复制光标所在列的向下n列,例如,20yy则是复制20列(常用)
y1G 复制光标所在列到第一列的所有数据
yG 复制光标所在列到最后一列的所有数据
p, P p为复制的数据粘贴在光标下一行,P则为粘贴在光标上一行(常用)
J 将光标所在列与下一列的数据结合成一列
u 恢复前一个动作(常用)
编辑模式
i, I 插入:在当前光标所在处插入输入的文字,已存在的字符会向后退
(常用)
a, A 添加:由当前光标所在处的下一个字符开始输入,已存在的字符会
向后退(常用)
o, O 插入新的一行:从光标所在处的下一行行首开始输入字符(常用)
r, R 替换:r会替换光标所指的那一个字符;R会一直替换光标所指的文
字,直到按下Esc为止(常用)
Esc 退出编辑模式,回到一般模式(常用)
命令行模式
:w 将编辑的数据写入硬盘文件中(常用)
:w! 若文件属性为只读,强制写入该文件
:q 退出vi(常用)
:q! 若曾修改过文件,又不想保存,使用!为强制退出不保存文件
:wq 保存后退出,若为:wq!,则为强制保存后退出(常用)
:w [filename] 将编辑数据保存为另一个文件(类似另存新文档)
:r [filename] 在编辑的数据中,读入另一个文件的数据。亦即将 filename这个文
件内容加到光标所在行的后面
:set nu 显示行号,设定之后,会在每一行的前面显示该行的行号
:set nonu 与set nu相反,为取消行号
n1,n2 w [filename] 将n1到n2的内容保存为filename这个文件。
命令别名(alias)设定功能
若要知道某个目录下的所有文件(包含隐藏文件)及所有的文件属性,必须输入ls -al
这样的指令,这挺麻烦,更快的替代方法是用命令别名。例如我喜欢直接用lm这个自定义
命令来取代上面的命令,也就是说,lm等于ls –al。要实现自定义命令可以使用alias,在命
令行输入alias就可以知道当前的命令别名都有哪些。也可以直接输入下列命令来设定别名:
alias lm='ls -al'
env
查看环境变量
set
set的使用方法就是直接输入set。它除了会显示当前的环境变量,也会显示您的自定义
变量
变量设定规则
1. 变量与变量内容以等号“=”连结;
2. 等号两边不能直接接空格符;
3. 变量名称只能是英文字母与数字,其中数字不能是开头字符;
4. 若有空格符,可以使用双引号或单引号将变量内容结合起来,但要特别留意,双引
号内的特殊字符可以保留变量特性,单引号内的特殊字符则仅为一般字符;
5. 必要时以跳转字符“”将特殊符号(如Enter,$,,空格符,'等)变成一般符号;
6. 在一串指令中,还需要借助其他指令提供的信息,这时可以使用quote“` command`”;
7. 若该变量为扩增变量内容时,则需以双引号及$变量名称(如"$PATH":/home)继续
累加内容;
8. 若该变量需要在其他子程序执行,则以export使变量可以动作,如export PATH;
9. 通常大写字符为系统预设变量,自定义变量可以使用小写字符,方便判断(纯粹依
照用户兴趣与嗜好);
10. 取消变量的方法为:unset 变量名称。
Export
在引用他人的文件或其他程序时,export相当重要,尤其在需要两三个文件互相引用时,
如果忘记设定export,那么不同文件中的相同变量值将需要一再地重复设定。所以,只要在
头一个文件使用export,那么后续的文件引用该变量时,将会自动读取该变量内容。
unset
直接取消该变量内容。
unset 变量
bash shell 的配置文件
通配符与特殊符号
符号 内容
* 通配符,代表任意字符(0到多个)
? 通配符,代表一个字符
# 注释,这个最常用在脚本中,视为说明
跳转符号,将特殊字符或通配符还原成一般字符
| 分隔两个管线命令的界定
; 连续性命令的界定(注意,与管线命令不同)
~ 用户的根目录
$ 即变量前需要加的变量值
& 将指令变成在背景下工作
! 逻辑运算中的“非”(not)
/ 路径分隔符号
>, >> 输出导向,分别为“取代”与“累加”
' 单引号,不具有变量置换功能
" 具有变量置换功能
` ` 两个“`”中间为可以先执行的指令
( ) 中间为子shell的起始与结束
[ ] 中间为字符组合
{ } 中间为命令区块组合
组合键 执行结果
Ctrl + C 终止当前命令
Ctrl + D 输入结束(EOF),例如邮件结束的时候
Ctrl + M 就是Enter
Ctrl + S 暂停屏幕的输出
Ctrl + Q 恢复屏幕的输出
Ctrl + U 在提示符下,将整行命令删除
Ctrl + Z 暂停当前命令
SHELL编程
Echo
[root @chinastor root]# echo $PATH
/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/loc
al/bin:/bin:/usr/bin:/usr/X11R6/bin
如上所示,要显示当前的PATH变量,可以使用echo指令,而为了要分辨其是否为变量,
Linux系统预设变量名称前会加一个$符号,所以就写成echo $PATH的形式。
例题:请在屏幕上显示您的环境变量PATH,HOME与MAIL。
[root@chinastor root]# echo $PATH
/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local
/sbin
[root@chinastor root]# echo $HOME
/root
env
既然环境变量很重要,那么在Linux系统中到底有多少环境变量呢?简单地使用env指
令就可以知道了。基本上,在Linux默认情况下,使用{大写字母}设定的变量一般都是系统
的预设变量,下面列出Linux系统中的预设变量。
set
set的使用方法就是直接输入set。它除了会显示当前的环境变量,也会显示您的自定义
变量。
$与?,尤其是?变量,如果您上一个命令执行过程中没有发生错误,那么这个变量会被设为0,如果上个命令出现错误信息,那么这个变量会变成1。
变量设定规则
设定变量的规则如下:
1. 变量与变量内容以等号“=”连结;
2. 等号两边不能直接接空格符;
3. 变量名称只能是英文字母与数字,其中数字不能是开头字符;
4. 若有空格符,可以使用双引号或单引号将变量内容结合起来,但要特别留意,双引
号内的特殊字符可以保留变量特性,单引号内的特殊字符则仅为一般字符;
5. 必要时以跳转字符“”将特殊符号(如Enter,$,,空格符,'等)变成一般符号;
6. 在一串指令中,还需要借助其他指令提供的信息,这时可以使用quote“` command`”;
7. 若该变量为扩增变量内容时,则需以双引号及$变量名称(如"$PATH":/home)继续
累加内容;
8. 若该变量需要在其他子程序执行,则以export使变量可以动作,如export PATH;
9. 通常大写字符为系统预设变量,自定义变量可以使用小写字符,方便判断(纯粹依
照用户兴趣与嗜好);
10. 取消变量的方法为:unset 变量名称。
一般变量设定:
[chinastor @chinastor chinastor]# name=VBird’s name <==正确。
[root @chinastor root]# name=VBird <==正确。echo $name显示VBird
[chinastor @chinastor chinastor]# name="VBird name" <==正确。
[chinastor @chinastor chinastor]# name="VBird's name" <==正确。
变量累加设定:
[chinastor @chinastor chinastor]# name="$name"isme <==正确。
[chinastor @chinastor chinastor]# PATH="$PATH":/home/chinastor <==正确。
[chinastor @chinastor chinastor]# PATH="$PATH:/home/chinastor" <==正确。这个形式对于PATH来说也是
正确的格式
变量延伸到下一个子程序:
[chinastor @chinastor chinastor]# name="VBird's name" <==设定name变量
[chinastor @tset chinastor]# echo $name <==显示name变量的指令
[chinastor @chinastor chinastor]# VBird's name
[chinastor @chinastor chinastor]# /bin/bash <==另开一个bash的子程序
[chinastor @tset chinastor]# echo $name <==显示name变量
[chinastor @tset chinastor]# <==会显示空字符串,因为name这个变
量不能用在子程序
[chinastor @chinastor chinastor]# exit <==退出子程序bash shell
[chinastor @chinastor chinastor]# export name <==正确。如此则$name可以用于下一个
子程序中
在设定变量时,单引号与双引号有什么不同?
单引号与双引号的最大不同在于双引号仍然可以保留变量的内容,但单引号内仅能是
一般字符,而不会有特殊符号。我们以下面的例子说明:假设您定义了一个变量,
name=VBird,现在想以name变量定义myname显示VBird its me这个内容,要如何定义?
[root @chinastor root]# name=VBird
[root @chinastor root]# echo $name
VBird
[root @chinastor root]# myname="$name its me"
[root @chinastor root]# echo $myname
VBird its me
[root @chinastor root]# myname='$name its me'
[root @chinastor root]# echo $myname
$name its me
在输入指令的过程中,quote ( ` )这个符号代表的意义是什么?
在一串指令中,在 ` 之内的指令将被首先执行,而其执行结果将作为外部的输入信息。
例如uname –r会显示当前的核心版本,而我们的核心版本在/lib/modules中,因此,您可以
先执行uname –r找出核心版本,然后用“cd 目录”转到该目录下,当然也可以执行
cd /lib/modules/`uname –r`
直接转到该目录下。
Export
当您取得一个bash之后,即得到了一个程序,但是若您再次执行bash,那么将进入子
程序。由于您已经进入了该子程序,所以父程序中的变量设定将不继续存在。如果想让该变量内容继续在子程序中使用,请执行
export 变量
unset
直接取消该变量内容。
unset 变量
HISTSIZE可以控制历史指令的多少
命令别名与历史命令
Linux的启动步骤
1. 加载内核
/boot/vmlinuz-xxxx
2. 内核执行init 并由/etc/inittab取得系统登入状态
加载内核之后由内核执行的第一个程序是/sbin/init,这时必须以/sbin/init加载/etc/inittab的信息
3. Init的第一个执行内容/etc/rc.d/rc.sysinit
这个文件的内容包括设定默认路径(PATH)、设定主机名称、执行/etc/sysconfig/network所记录的网络信息、装载/proc这个保存在内存中的主机基本信息,以及Linux操作系统最基本的其他几个信息。
4. 启动内核的外挂式模块(/etc/modules.conf)
5. init 执行运行级的各脚本
该目录下应该有8个目录和3个文件,目录rc0.d ~ rc6.d分别代表各个run-level的脚本,这些目录中的文件名称都以S及K(大写)打头,后接两位数的数字与该服务的名称。这个目录下的文件都是链接文件,均指向etc/rc.d/init.d这个目录,而/etc/rc.d/init.d目录则是以Linux的RPM安装方法时用于设定一些服务的启动目录。
6. init 执行/etc/rc.d/rc.local
完成启动之后,第一个要读取的内容
7. 启动配置文件/etc/sysconfig
使用最多的配置文件大多放置在/etc/sysconfig目录下
Grub
可以依据/boot/grub/menu.lst的配置而改变其配置
Linux与unix_shell编程指南
文件类型有七种类型:
1.d 目录
2.l 符号链接
3.s 套接字文件
4.b 块设备文件
5.c 字符设备文件
6.p 命名管道文件
7.- 普通文件
改变权限位
Chmod [who] operator [permission] filename
Who的含义是:
U 文件属主权限
G 同组用户权限
O 其他用户权限
A 所有用户
Operator的含义:
+ 增加权限
- 取消权限
= 设定权限
Permission的含义:
R 读权限
W 写权限
X 执行权限
S 文件属主和组set-ID
T 粘性位*
L 给文件加锁,使其他用户无法访问
Find和xargs
Linux正则表达式
1. .用来匹配任何单个字符.
2. $ 用来匹配行结束符. 例如正则表达式weasel$ 能够匹配字符串"He's a weasel"的末尾,但是不能匹配字符串"They are a bunch of weasels."。
3. ^ 匹配一行的开始。例如正则表达式^When in能够匹配字符串"When in the course of human events"的开始,但是不能匹配"What and When in the"。
4. * 匹配0或多个正好在它之前的那个字符。例如正则表达式.*意味着能够匹配任意数量的任何字符。
5. 这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配。例如正则表达式$被用来匹配美元符号,而不是行尾,类似的,正则表达式.用来匹配点字符,而不是任何字符的通配符。
6. [] [c1-c2] [^c1-c2] 匹配括号中的任何一个字符。例如正则表达式r[aou]t匹配rat、rot和rut,但是不匹配ret。可以在括号中使用连字符-来指定字符的区间,例如正则表达式[0-9]可以 匹配任何数字字符;还可以制定多个区间,例如正则表达式[A-Za-z]可以匹配任何大小写字母。另一个重要的用法是“排除”,要想匹配除了指定区间之外 的字符——也就是所谓的补集——在左边的括号和第一个字符之间使用^字符,例如正则表达式[^269A-Z] 将匹配除了2、6、9和所有大写字母之外的任何字符。
7. < > 匹配词(word)的开始(<)和结束(>)。例如正则表达式<the能够匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the"。注意:这个元字符不是所有的软件都支持的。
8. ( ) 将 ( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 1 到9 的符号来引用。
9. | 将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:这个元字符不是所有的软件都支持的。
10. + 匹配1或多个正好在它之前的那个字符。例如正则表达式9+匹配9、99、999等。注意:这个元字符不是所有的软件都支持的。
11. ? 匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。
12. {i}
{i,j} 匹配指定数目的字符,这些字符是在它之前的表达式定义的。例如正则表达式A[0-9]{3} 能够匹配字符"A"后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A1234。而正则表达式[0-9]{4,6} 匹配连续的任意4个、5个或者6个数字字符。注意:这个元字符不是所有的软件都支持的。
13. {}匹配模式结果出现的次数
Pattern{n} 匹配模式出现n次
Pattern{n,} 匹配模式出现最少n次
Pattern{n,m} 匹配模式出现n到m次之间,n,m为0-255中的任意数
A{2}B匹配值为AAB
A{4,}B 匹配A至少4次,AAAAB或AAAAAAB,但不能为AAAB
A{2,4}B 匹配A出现2次到4次之间:AAB,AAAB,AAAAB,而不是AB或AAAAAAB
Grep
Grep一般格式:
grep [选项] 基本正则表达式 [文件]
基本正则表达式可是字符串
双引号引用
在grep命令中输入字符串参数时,最好将其用双引号括起来。
例如: “mystring” “my string”
在调用变量时,也应该使用双引号,grep “$MYVAR”
grep选项
-c 只输出匹配行的计数
-i 不区分大小写
-h 查询多文件时不显示文件名
-l 查询多文件时只输出包含匹配字符的文件名
-n 显示匹配行及行号
-s 不显示不存在或无匹配文本的错误信息
-v 显示不包含匹配文本的所有行
Awk
有三种方式调用awk:
第一种是命令行方式
awk [-F field-separator] ‘commands’ input-file(s)
commands是真正的awk命令。
[-F 域分隔符]是可选的,因为awk使用空格作为缺省的域分隔符,因此要浏览域间有空格的文本,不必指定这个选项。
第二种方法是将所有awk命令插入一个文件,并使awk程序执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。
第三种方式是将所有的awk命令插入一个单独的文件,然后调用:
awk –f awk-script-file input-files(s)
-f 选项指明在文件awk-script-file中的脚本,input-files是使用awk进行浏览的文件名。
在c函数的头文件*.h中
#ifdef __cplusplus
extern "C" {
#endif
函数声明
#ifdef __cplusplus
}
#endif
extern"C"为了混合联编而出现的。
C++在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。