一、文件管理
1.cat命令
格式:cat [-bnsv] [--help] [--version] fileName说明:将文件输出或者冲顶想到指定的文件。在重定向的时候,“>”表示直接输出到指定的文件,覆盖原文件的内容,而“>>”表示追加到指定文件的末尾。
参数:
-n或--number:由1开始对所有输出,并在行前加行编号
-b或--number-nonblank:和-n相似,只不过对于空白行不编号
-s或--squeeze-blank:遇到连续两行以上空行,就代换为一空行
-v 或 --show-nonprinting
--help:显示帮助信息
--version:显示版本信息
例(1)textfile1 的文件内容加上行号后输出到textfile2文件里
cat -n textfile>textfile2
例(2)把textfile1和textfile2的内容加上行号后附加到textfile3里
cat -b textfile1 textfile2>>textfile3
例(3)清空/etc/test.txt文件内容
cat /dev/null > /etc/test.txt //dev/null表示控设备
例(4)制作软盘的镜像文件:
cat /dev/fd0 >floppy.img
例(5)把镜像文件写到软盘:
cat floppy.img > /dev/fd0
例(6)将~/test下的所有文件合为一个文件,文件名为aa
cat ~/test/* >aa
2.cd命令
格式:cd [dirName]说明:变换当前工作目录至dirName。其中dirName可为绝对路径或相对路径。若目录名称省略,则变换至用户主目录(也就是刚登录时所在的目录)。另外,“~”也表示为主目录的意思,“.”则是表示目前所在的目录,“..”则表示当前目录位置的上一层目录。
例(1)转到 /usr/bin/
cd /usr/bin
例(2)转到自己的主目录
cd ~
例(3)转到当前目录的上上两层
cd ../..
例(4)返回上层目录
cd –
3.chgrp命令
格式:chgrp [-cfhv][--help][-version][所属群组][文件或目录]chgrp [-cfhRv][--help][--reference = <参考文件或目录>][--version][文件或目录]
说明:更改文件或目录的所属群组。
参数:
-c或--changes 效果类似“-v”参数,但仅显示更改的部分
-f或--quiet或--silent:不显示错误信息
-h或--no-dereference:只对符号连接的文件作修改
-R或--recursive:递归处理,将指定目录下的所有文件及子目录一并处理
-v或--verbose:显示命令执行过程
--help:显示在线帮助。
--reference = <参考文件或目录>:把指定文件或目录的所属群组设成和参考文件或目录的所属群组相同
--version:显示版本信息
例(1)将/home下的文件aa授予root组
chgrp root /home/aa
例(2)将用户syd168主目录及子目录下的所有文件授予student组
chgrp -R student /home/syd168
4.chmod命令
格式:chmod [-cfvR] [--help] [--version] mode file...说明:修改文件或目录的权限。文件权限控制分别以读取(read),写入(write)和执行(execute)3种权限区分,而文件的所有权有用户(user)、组(group)和其它(other)三种。可以使用chmod命令去改变文件或目录的权限,可以用代表权限的字符或数字进行设置。但符号连接的权限无法变更,对符号连接权限的修改其实是改变它所链接的原始文件。
参数:
mode:权限设定字串,格式为:[ugoa...][[+-=][rwxX]...][,...],其中
u表示该文件的拥有者
g表示与该文件的拥有者属于同一个组(group)者
o表示其它以外的人
a表示这三者皆是
+表示增加权限
-表示取消权限
=表示设置设定权限,将替换原有权限
r表示可读取
w表示可写入
x表示可执行
X表示只有当该文件是个子目录或者该文件已经被设定为可执行时
-c:若该文件权限确实已经更改,才显示其更改动作
-f:若该文件权限无法被更改也不要显示错误信息
-v:显示权限变更的详细内容
-R:对当前目录下的所有文件与子目录进行相同的权限改变
--help:显示辅助说明
--version:显示版本
例(1)将文件 file1.txt 设为所有人皆可读取
chmod ugo+r file1.txt
例(2)将文件 file1.txt 设为所有人皆可读取
chmod a+r file1.txt
例(3)将文件file1.txt与file2.txt设为该文件拥有者,与其所属同一个组的用户可写入,但其它以外的用户则不可写入
chmod ug+w ,o-w file1.txt file2.txt
例(4)将ex1.py设定为只有该文件拥有者可以执行
chmod u+x go-x ex1.py
例(5)将当前目录下的所有文件与子目录皆设为任何人可读取
chmod -R a+r ./*
例(6)设置/home/user1下级子目录下的所有文件权限为755(用户可读写执行,组和其他用户只能读取和执行)
chmod -R 755 /home/user1
同样方法设置以上权限:
chmod -R u=rwx,g=r-x,o=r-x /home/user1 //多个权限项之间用逗号
例(7)给/home/share及子目录下的文件添加所有用户读取权限,组用户写的权限,去掉其他用户写的权限,去掉所有用户执行权限
chmod -R a+r,g+w,o-w,a-x /home/user1
注意:chmod也可以用数字来表示权限,语法格式为:
#chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。r=4,w=2,x=1。如若rwx属性则4+2+1=7;若rw-属性则4+2=6;若r-x属性则4+1=7。所以,如下的命令之间有等价关系:
chmod a=rwx file 和 chmod 777 file 效果相同
chmod ug=rwx,o=x file和chmod 771 file 效果相同
若用chmod 4755 filename可使此程序具有root的权限。
5.chown命令
格式:chmod [-cfhvR] [--help] [--version] user[:group] file...说明:改变文件或目录的所有者。
参数:
user:新的文件拥有者的用户
group:新的文件拥有者的用户组(group)
-c:若该文件拥有者确实已经更改,才显示其更改动作
-f:若该文件拥有者无法被更改也不要显示错误信息
-h:只对于链接(link)进行变更,而非该 link 真正指向的文件
-v:显示拥有者变更的详细内容
-R:对当前目录下的所有文件与子目录进行相同更改
--help:显示辅助说明
--version:显示版本
例(1)将文件file1.txt的拥有者设为users组的用户jessie
chown jessie.users file1.txt
例(2)将当前目录下的所有文件与子目录的拥有者皆设为users组的用户lamport
chmod -R lamport.users ./*
例(3)将/home/backup下的所有文件的所有者修改为root
chown root /home/backup
例(4)将/home/share及子目录下的所有文件的所有者修改为root,组改为share
chown -R root.share /home/backup
6.cp命令
格式:cp [options] source dest 或cp [options] source... directory说明:复制文件或目录
参数:
-a:尽可能将文件状态、权限等内容都照原状复制
-r:将目录及子目录下的文件一起复制
-f:如果目标文件已经存在,则覆盖之
例(1)将文件aaa复制为bbb
cp aaa bbb
例(2)将所有的C语言程序拷贝至 Finished 子目录中
cp *.c Finished/
例(3)将/home/backup下的所有文件复制到/root/下
cp /home/backup/* /root/
例(4)将/home/share及子目录下的所有文件复制到/root下
cp -R /home/backup /root
7.cut命令
格式:cut -c|f n-m [-d char] File…说明:显示文本文件每行第n-m字符。如无file 参数,cut命令将读取标准输入。
参数:
-c m-n:表示显示每一行的第m个字符到第n个字符。
-f m-n:表示显示第m栏到第n栏(使用tab分隔)。
-d char使用char指定的字符作为分栏定界符
例(1)显示/etc/passwd文件每行的前7个字符,并加行号
cut -c 1-7 /etc/passwd|cat -n
例(2)显示/etc/passwd中前三个栏目的内容,栏目之间用“:”分隔
cut -f 1-3 -d : /etc/passwd|cat -n
8.find命令
格式:find [path] [expression]说明:在指定的目录及其子目录中查找匹配条件(expression)的文件。expression可以是要搜索文件的名称、类别、时间、大小、权限等不同信息的组合,只有完全相符的才会被列出来。find根据下列规则判断path和expression,在命令中上第一个字符“-、( )、,或!”之前的部份为path,之后的是expression。如果path是空字串则使用目前路径,如果expression是空字串则使用-print为预设expression。
参数:
-mount,-xdev:只检查和指定目录在同一个文件系统下的文件
-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的文件,忽略大小写
-size nx:大小是n,单位是x的文件,x取值如下:
b代表512位元组的区块
c表示字符数
k表示KB
w是二个位元组
-type c:文件类型是c的文件。下面是可用的文件类型:
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 名命官道
f: 一般文件
l: 符号链接
s: socket
-pid n,查找进程id是n的文件。可用( )分隔,并使用如下格式比较:
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1 , exp2
例(1)将当前目录及其子目录下所有文件名的扩展名是c的文件列出来
find . -name "*.c"
例(2)将当前目录其其下子目录中所有一般文件列出
find . -type f
例(3)将当前目录及其子目录下所有最近20分钟内更新过的文件列出
find . –ctime -20
例(4)查找包含特殊字符xxx的文件
find / -name "*.conf"|xargs grep "xxx"
例(5)从/开始查找所有名为bashrc的文件
find / -iname bashrc
例(6)在/var/lib/下查找所有属于user1的文件,并忽略错误显示
find /var/lib -user user1 2>/dev/null
例(7)在/var下查找所有不属于root,bin,和user1的文件,并忽略错误显示
find /var ! -user root not -user bin not -user user1 2>/dev/null
9.grep命令
格式:grep expression [options] file…说明:grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。注意,expression一般要放到''中间,如'^aa'。
参数:
expression选项匹配字符,放于''中:
^:匹配行开始,如'^aa'匹配所有以grep开头的行
$:匹配行结束,如'grep$'匹配所有以grep结尾的行
*:匹配0个或多个前导字符,如'*grep'匹配所有一个或多个空格后紧跟grep的行,.*合用代表任意字符
[]:匹配1个指定范围内的字符,如'[Gg]rep'匹配Grep和grep
[^]:匹配1个不在指定范围内的字符
\(..\):标记匹配字符,如'\(love\)',love被标记为1
\<:匹配单词的开始,如:'\
\>:匹配单词的结束,如'grep\>'匹配包含以grep结尾的单词的行
x\{m\}:重复x为m次,如'0\{5\}'匹配包含5个o的行
x\{m,\}:重复x至少m次,如'o\{5,\}'匹配至少有5个o的行
x\{m,n\}:重复x至少m-n次,如'o\{5,10\}'匹配5--10个o的行
\w:匹配文字和数字字符,也就是[A-Za-z0-9]
\W:\w的反置形式,匹配一个或多个非单词字符,如点号句号等
\b:单词锁定符,如 '\bgrepb\'只匹配grep
3.:用于egrep和 grep -E的元字符扩展集 如zz
+:匹配1个或多个前导的字符
?:匹配0个或多个前导字符。如'r?p'匹配r后跟1个或没字符,然接p
a|b|c:匹配a或b或c。如grep|sed匹配grep或sed
():分组,如love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov
x{m},x{m,},x{m,n}:作用同x\{m\},x\{m,\},x\{m,n\}
options选项:
-? 同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行
-b,--byte-offset 打印匹配行前面打印该行所在的块号码
-c,--count 只打印匹配的行数,不显示匹配的内容
-f File,--file=File 从文件中提取模板。空文件中包含0个模板,所以什么都不匹配
-h,--no-filename 当搜索多个文件时,不显示匹配文件名前缀
-i,--ignore-case 忽略大小写差别
-q,--quiet 取消显示,只返回退出状态。0则表示找到了匹配的行
-l,--files-with-matches 打印匹配模板的文件清单
-L,--files-without-match 打印不匹配模板的文件清单
-n,--line-number 在匹配的行前面打印行号
-s,--silent 不显示关于不存在或者无法读取文件的错误信息
-v,--revert-match 反检索,只显示不匹配的行
-w,--word-regexp 如果被\<和\>引用,就把表达式做为一个单词搜索
-V,--version 显示软件版本信息
例(1)通过管道过滤ls -l输出的内容,只显示以a开头的行。
ls -l | grep '^a'
例(2)显示所有以d开头的文件中包含test的行。
grep 'test' d*
例(3)显示在aa,bb,cc文件中匹配test的行。
grep 'test' aa bb cc
例(4)显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
grep '[a-z]\{5\}' aa
例(5)在/etc/目录下查找所有包含root字符的conf文件
find /etc -name "*.conf" | xargs grep "^root"
10.head命令
格式:head [-cnqv] [--help] [--version] file说明:head命令在Linux系统中用来输出文本文件开头部分内容的工具
参数:
-c, --bytes=N:指定输出开头的N个字节
-n, --lines=N:指定输出开头的N行
-q, --quiet, --silent:不输出文件名称的信息
-v, --verbose:显示文件名称的信息
--help:显示帮助文件
--version:版本信息显示
例(1)显示Test文件的前 5 行
head -5 Test
head -n 5 Test
11.less命令
格式:less [Option] filename说明:less的作用与more 十分相似,都可以用来浏览文本文件的内容,不同的是less允许用户往回翻动以浏览已经看过的内容,同时因为less并未在一开始就读入整个文件,因此在遇上大型文件的打开时,会比一般的文本编辑器(如vi)快速。可以使用键盘的上下箭头前进或后退,看文件内容。按q键可立即退出。
例(1)浏览/etc/passwd文件的内容
less /etc/passwd
12.ln命令
格式:ln [-fdinsvbS] source dist说明:创建软链接或硬链接。Linux/Unix 文件系统中有所谓的链接,可以将其视为文件的别名,链接又可分为硬链接与软链接两种,硬链接的意思是一个文件可以有多个名称,软链接是指向另一个文件的位置,类似于Windows中的快捷方式。硬链接则是原文件(只能是文件)的一个特殊“副本”,并且指向同一物理文件,删除硬链接不会导致原文件的删除,同样删除原文件不会导致硬链接的删除,除非二者都被删除。所以,硬链接常用于重要文件的防删除保护。
参数:
-f:链接时先将与dist同文件名的文件删除
-d:允许系统管理者硬链接自己的目录
-i:在删除与dist同文件名的文件时先进行询问
-n:在进行软连结时,将dist视为一般的文件
-s:进行软链接
-v:在链接之前显示其文件名
-b:将在链接时会被覆写或删除的文件进行备份
-S SUFFIX:将备份的文件都加上SUFFIX的后缀
例(1)给文件yy产生一个软链接zz
ln -s yy zz
例(2)将文件 yy 产生一个硬连接zz
ln yy zz
例(3)在/home/user1下建立/etc/bashrc的软链接,链接名为bashrc
ln -s /etc/bashrc /home/user1/bashrc
例(4)在/home/user1下建立/etc/bashrc的硬连接,链接名为bashrc.h
ln /etc/bashrc /home/user1/bashrc.h
13.locate命令
格式:locate [-qv] file说明:快速搜寻文件系统内是否有指定的文件。其方法是先建立一个包括系统内所有文件名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入文件系统之中了。在一般的发布之中,数据库的建立都被放在contab中自动执行。
参数:
-n:至多显示n个输出
-v:显示更多的信息
例(1)寻找所有叫chdrv的文件
locate chdrv
例(2)寻找所有叫a.out 的文件,但最多只显示100个
locate -n 100 a.out
例(3)建立数据库:
updatedb
例(4)查找所有文件名包含bash的文件
locate bash
14.ls命令
格式:ls [-alrtAFR] [name...]说明:显示指定目录下之内容。
参数:
-a:显示所有文件及目录,但不显示以“.”开头的隐含文件
-l:详细列出文件名、权限、拥有者、文件大小等信息
-r:将文件以相反次序显示(原定依英文字母次序)
-t:将文件依建立时间之先后次序列出
-A:同-a,但不列出当前目录“.”及父目录“..”
-F:在可执行文件则加“*”,目录后加“/”
-R:若目录下有文件,则以下之文件亦皆依序列出
例(1)列出当前目录下所有名称是s开头的文件的详细信息,新建文件在后面
ls -ltr s*
例(2)将 /bin 目录以下所有目录及文件详细内容列出
ls -lR /bin
例(3)列出当前目录下所有文件,目录于名称后加“/”,可执行文件名后加“*”
ls -AF
例(4)显示/etc/下的所有文件
ls/etc
例(5)长格式显示/etc/profile.d下的文件信息
ls -l/etc/profile.d
15.mkdir命令
格式:mkdir [-p] [-m permit]dirName说明:建立名称为dirName目录
参数:
-p:确保目录名称存在,不存在的就建一个,可以用于建立多级目录
-m permit:同时指定权限,permit是用数字表示的权限
例(1)在当前目录下,建立一个名为AAA的子目录:
mkdir AAA
例(2)在当前目录下建立Test,t1,t2三个子目录。
mkdir -p Test,t1,t2
格式:mkdir[-p][-m权限] 目录……
例(3)在/home下创建share目录
mkdir /home/share
例(4)在/home/下创建多级目录pub/www/user1
mkdir -p /home/pub/www/user1
例(5)在/home/下创建多级目录pub/www/user2,并赋予755权限
mkdir -p -m 755 /home/pub/www/user2
16.more命令
格式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]说明:类似cat,不过会以一页一页地显示,按空白键(space)往后翻一页,按b键往回翻一页,而且还有搜寻字串的功能(与vi相似)。
参数:
-num:一次显示的行数
-d:提示用户,在画面下方显示[Press space to continue,'q' to quit.],如果用户按错键,则会显示 [Press 'h' for instructions.] 而不是“哔”声
-l:取消遇见特殊字符^L(送纸字符)时会暂停的功能
-f:计算行数时,以实际行数,而非自动换行过后的行数
-p:不以翻动的方式显示每一页,而是先清除屏幕后再显示内容
-c:跟-p相似,不同的是先显示内容再清除其它旧内容
-s:当遇到有连续两行以上的空白行,就代换为一行的空白行
-u:不显示下引号(根据环境变数 TERM 指定的 terminal 而有所不同)
+/:在每个文件显示前搜寻该字串,然后从该字串之后开始显示
+num:从第num行开始显示
fileNames:欲显示内容的文件,可为多个
例(1)逐页显示testfile文件内容,如有连续两行以上空白行则以一行空白行显示
more -s testfile
例(2)从第20行开始显示testfile之文件内容
more +20 testfile。
17.mv命令
格式:mv [-if] source dest或mv [-if] source... directory说明:将一个文件移至另一文件,或将数个文件移至另一目录。
参数:
-i:若目的地已有同名文件,则先询问是否覆盖旧文件
-f:直接覆盖存在的文件,而不提示
例(1)将文件 aaa 更名为bbb:
mv aaa bbb
例(2)将所有的C语言程序移至 Finished 子目录中:
mv -i *.c
例(3)将/home/user/tt.txt更名为/home/user/tt1.txt
mv/home/user/tt.txt/home/user/tt1.txt
例(4)将/home/user/tt.txt移动到/home/user1/下,并更名为user1.txt
mv/home/user/tt.txt/home/user1/user1.txt
18.pwd命令
语法:pwd [--help][--version]说明:显示当前所在的工作目录,即获得目前所在的工作目录的绝对路径名称。
参数:
--help:在线帮助。
--version:显示版本信息。
19.rm命令
格式:rm [options] name...说明:删除文件及目录。
参数:
-i 删除前逐一询问确认
-f 即使原文件属性设为唯读,亦直接删除,无需逐一确认
-r 将目录及以下之文件亦逐一删除
例(1)删除所有C语言文件;删除前逐一询问确认
rm -i *.c
例(2)将Finished子目录及子目录中所有文件删除
rm -r Finished
例(3)删除用户目录下的所有以tt结尾的文件。
rm -i ~/*tt //i表示删除不提示确认信息,~表示用户目录
例(4)删除/home/user1/目录及子目录下的所有文件。
rm -rf /home/user1 //r表示递归,f表示强行删除,不提示
20.rmdir命令
格式: rmdir [-p] dirName说明: 删除空的目录
参数:
-p:删除多级空目录
例(1)将当前目录下,名为AAA的子目录删除:
rmdir AAA
例(2)在当前目录下的BBB目录中,删除名为Test的子目录。若Test删除后,BBB目录成为空目录,则BBB亦予删除。
rmdir -p BBB/Test
注意:rmdir只能删除空目录,要删除包含文件或子目录的目录,请用rm –rf进行。
21.sort命令
语法:sort [options] file说明:sort命令的功能是对文件中的各行进行排序并显示。sort命令逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,将继续进行比较。如不指定file或file使用“-”,则表示排序内容来自标准输入。缺省情况下以整行为关键字按ASCII字符顺序进行排序。
参数:
- m:若给定文件已排好序,合并文件
- c:检查文件是否已排序,如果没有排好序,则显示出错信息
- u:对排序后认为相同的行只留其中一行
- o 输出文件:将排序输出写到输出文件
- d:按字典顺序排序,比较时仅字母、数字、空格和制表符有意义
- f:将小写字母与大写字母同等对待
-g:按照数字顺序排序
- I:忽略非打印字符。
- M:作为月份比较:"JAN"<"FEB"
- r:按逆序输出排序结果。
+posl - pos2:指定关键字,字段位置从posl开始,到pos2为止
- b:在每行中寻找排序关键字时忽略前导的空白(空格和制表符)
- t separator:指定字符separator作为字段分隔符
例(3)将/etc/passwd排序输出
sort /etc/passwd
例(4)将/etc/passwd排序并输出到~/passwd
sort /etc/passwd >~/passwd
例(5)统计/etc/下各个目录占用空间大小,并按顺序排列
du /etc/ |sort –g //请参考du命令
22.split命令
格式:split [OPTION] [INPUT [PREFIX]]说明:将一个文件分割成数个。而从INPUT分割输出成固定大小的文件,其文件名依序为PREFIXaa,PREFIXab...;PREFIX默认值为“x”。若没有INPUT文件或为“-”,则从标准输入读进内容。
参数:
-b,--bytes=SIZE:SIZE值为每一输出文件的大小,单位为Byte
-C,--line-bytes=SIZE:输出文件中单行的字节数。SIZE后可跟单位:
b代表512
k代表1K
m代表1M
-l,--lines=NUMBER:NUMBER值为每一输出文件的列数大小
-NUMBER:与-l NUMBER相同
--verbose:每个输出文件被打开前,显示出错误信息到标准错误输出
--help:显示辅助信息然后离开
--version:列出版本信息然后离开
例(1)将filename分割为以dump为文件名前缀的多个文件
split -b 1m filename dump
23.tail命令
格式:tail [-rf[-c Number|-n Number|-m Number|-b Number][File]将文件的末尾10行输出。如果有多个文件,则显示每个文件之前给出一行文件说明,如果没指定文件名,则以标准输入为输出内容。
-c, --bytes=N:输出文件的最后N字节。+N表示从第N个字符开始
-n, --lines=N:输出文件的最后N行,+N表示从第N行起显示
例(2)显示/etc/passwd文件的最后10行
tail /etc/passwd
例(3)显示/etc/passwd文件,从文件末尾的20行数
tail -n 20 /etc/passwd
例(4)显示notes文件,从第200字节开始,每次一页
tail -c +200 notes |pg
例(5)动态跟踪文件的增长
tail -f accounts //该命令很有用!如日志监视
这显示accounts文件的最后十行。tail命令继续显示添加到accounts文件中的行。显示会一直继续,直到按下Ctrl+C按键顺序来停止。
24.touch命令
格式:touch [-acfm] [-t MMDDhhmm[[CC]YY]] [-d time] file1 [file2 ...]说明:touch 命令改变文件的时间记录,如果文件不存在就创建空文件,所以该命令常常用于创建空文件。
参数:
-a:改变文件的读取时间记录
-m:改变文件的修改时间记录
-c:假如目的文件不存在,不会建立新的文件。
-r:使用参考文件的时间记录
-d:设定时间与日期,可以使用各种不同的格式
-t:设定文件的时间记录,格式与 date 命令相同
例(1)建立新文件
touch file
touch file1 file2
touch temp{1,2,3,4} //建立了4个文件,temp1…
例(2)将file的时间记录改为5月6日18点3,公元2007年
touch -c -t 05061803 file
touch -c -t 050618032007 file
例(3)将file 的时间记录改变成与reffile一样。
touch -r reffile file
例(4)将file的时间记录改成5月6日18点3分,2007年
touch -d "6:03pm" file
touch -d "05/06/2007" file
touch -d "6:03pm 05/06/2007" file
例(5)在用户目录下创建一个叫test的文件。
#touch ~/test
例(6)批量创建文件
touch {a,b,c}_{d,e,f}{g,h} //将创建18个文件,请自己实践并思考
25.wc命令
格式:wc [options] files…说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
参数:
- c:统计字节数
- l:统计行数
- w:统计字数
注意:这些选项可以组合使用,输出列的顺序和数目不受选项的顺序和数目的影响,
总是按固定顺序显示并且每项最多一列。
例(1)显示一个文件的行数、字数和字节数统计
wc /etc/passwd
例(2)仅显示字节数和字数统计
wc -c /etc/passwd
二、网络管理
1.ifconfig 命令
格式:ifconfig [interface]ifconfig interface options IP
说明:配置或查看网络接口参数。如果没指定参数,就显示当前激活的网卡配置参数。如果仅仅给出接口,则显示该接口的状态,通过指定选项参数可以配置网卡参数。
参数:
interface:网络设备的唯一名称,如eth0表示第一块网卡
up:激活网卡
down:关闭网卡
[-]arp:启用或禁止ARP地址绑定
[-]promisc:将接口置入promiscuous(混乱)模式。广播网中,这样将导致该接口接收所有的数据包,不管其目标是不是另一台主机。该选项允许利用包过滤器和所谓的以太网窥视技术,对网络通信进行分析。通常情况下,这对查找网络故障的原因是相当有用的。但另一方面,如果有人蓄意攻击你的网络,也可浏览到s通信数据,进而获得密码,破坏你的网络。一项重要的保证措施是杜绝任何人将他们的计算机接入你的以太网。另一个选项用于保护某些身份验证协议的安全,比如Kerberos或SRA登录套件(该选项对应的标记是PROMISC)
[-]allmulti:启用或禁止多播模式,多播地址即是向不在同一个子网上的一组主机广播数据
metric N:该选项可用于为接口创建的路由表分配度量值。路由信息协议( RIP)利用度量值来构建网络路由表。ifconfig所用的默认度量值是0。如果不运行RIP程序,就没必要采用这个选项。如果要运行RIP程序,就尽量不要改变这个默认的度量值
mtu N 该选项用于设置最大传输单元,也就是接口一次能处理的最大字节数。对以太网接口来说, MTU的默认设置是1500 个字节;对SLIP接口来说,则是296个字节
dstaddr addr:为PPP设置远程IP地址,此关键字可用pointopoint代替
netmask addr:标分配子网掩码,供接口所用。要么给一个前面是0x的32位十六进制号码,要么采用只适用于两台主机所用的点分四段式号码。对SLIP和PLIP接口来说,这个选项是必须配置的
add addr/prefixlen:添加IPv6地址
del addr/prefixlen:删除IPv6地址
irq addr:设置网络设备的中断地址,但不是所有网络设备都可以设置的
io_addr addr
设置网络设备I/O操作的开始地址
[-]broadcast [addr] 设置广播地址
address:指定IP地址
例(1)设置网卡eth0的地址为192.164.0.1,子网掩码为251.251.251.0,并激活
ifconfig eth0 192.164.0.1 netmask 251.251.251.0 up
service network restart
例(2)显示目前本地所有网络适配卡及其网络配置信息
ifconfig //显示up的网络接口信息
2.mesg命令
格式:mesg y|n //y表示允许,n表示禁止说明:打开或关闭其他用户对自己登录终端的广播功能。但不能限制root。
例(1)禁止其他用户向你的终端广播信息。广播信息可以使用#wall 信息
mesg n //这样,将看不到其他用户的广播信息
3.netstat命令
格式:netstat [options]Netstat说明:用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。如果我们的计算机有时候接收到的数据报会导致出错数据删除或故障,我们不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么我们就应该使用Netstat查一查为什么会出现这些情况了。
–s:按照各个协议分别显示其统计数据
–e :显示关于以太网的统计数据。包括传送数据报的总字节数、错误数、删除数、数据报的数量和广播的数量,可以用来统计一些基本的网络流量
–r :显示路由表信息,类似route print命令,还显示当前有效的连接。
–a :显示所有有效连接信息列表,包括已连接(ESTABLISHED)监听和连接请求(LISTENING)
–n :显示所有已建立的有效连接
例(1)显示所有连接的socket
netstat -a
例(2)显示路由表信息
netstat -rn
4.ping命令
格式:ping [-dfnqrRv] [-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]说明:检测本地到目的主机是否连通。
参数:
-d:使用Socket的SO_DEBUG功能
-c<完成次数>:设置完成要求回应的次数
-f:极限检测
-i<间隔秒数>:指定收发信息的间隔时间
-I<网络界面>:使用指定的网络界面送出数据包
-l<前置载入>:设置在送出要求信息之前,先行发出的数据包
-n:只输出数值
-p<范本样式>:设置填满数据包的范本样式
-q:不显示指令执行过程,开头和结尾的相关信息除外
-r:忽略普通的Routing Table,直接将数据包送到远端主机上
-R:记录路由过程
-s<数据包大小>:设置数据包的大小
-t<存活数值>:设置存活数值TTL的大小
-v:详细显示指令的执行过程
例(1)检查网卡驱动是否正常
ping 127.0.0.1
例(2)检查IP配置是否正常
ping 172.16.0.3
例(3)检查到某个服务器是否连通
ping www.yahoo.com.cn
5.traceroute命令
语法:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络接口>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名或IP地址][数据包大小]说明:显示数据包到主机间的路径。追踪网络数据包的路由途径,预设数据包大小是40字节,用户可另行设置
参数:
-d:使用Socket层级的排错功能。
-f<存活数值>:设置第一个检测数据包的存活数值TTL的大小。
-F:设置勿离断位。
-g<网关>:设置来源路由网关,最多可设置8个。
-i<网络界面>:使用指定的网络界面送出数据包。
-I:使用ICMP回应取代UDP资料信息。
-m<存活数值>:设置检测数据包的最大存活数值TTL的大小。
-n:直接使用IP地址而非主机名称。
-p<通信端口>:设置UDP传输协议的通信端口。
-r:忽略普通的Routing:Table,直接将数据包送到远端主机上。
-s<来源地址>:设置本地主机送出数据包的IP地址。
-t<服务类型>:设置检测数据包的TOS数值。
-v:详细显示指令的执行过程。
-w<超时秒数>:设置等待远端主机回报的时间。
-x:开启或关闭数据包的正确性检验。
例(1)检查本地到www.yahoo.com主机的路由
traceroute www.yahoo.com.cn
6.wall命令
格式:wall message说明:给在线用户广播信息,用户是否接收取决于mesg的设置。
参数:
message:要发送的信息
例(1)告诉所有在线的用户“System is going down! Please save your data”。
wall System is going down! Please save your data.
7.write命令
格式:write [用户] [终端]说明:向指定的用户发送信息
例(1)给syd168发送一段信息,表示欢迎
#write syd168
You are welcome! //用CTRL+D结束输入
8.route
格式:route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]说明:使用 Route 命令行工具查看并编辑计算机的 IP 路由表。
参数:
-f:清除所有网关入口的路由表
-p:与add命令一起使用时使路由具有永久性
Command:指定想运行的命令(Add/Change/Delete/Print)
Destination:指定该路由的网络目标
mask Netmask:指定与网络目标相关的网络掩码
Gateway:指定网络可达的前进或下一跃点IP地址
metric Metric:为路由指定一个整数成本指标(从1至9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用
if Interface:为可以访问目标的接口指定接口索引
例(1)显示 IP 路由表的全部内容
route print
例(2)显示以10起始的IP路由表中的路由
route print 10.*
例(3)添加带有 192.168.12.1 默认网关地址的默认路由
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
例(4)向255.255.0.0 子网和10.27.0.1下一跃点地址的10.41.0.0添加一个路由
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
例(5)向255.255.0.0 子网和10.27.0.1下一跃点地址的10.41.0.0添加一个永久路由
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
例(6)删除到带有 255.255.0.0 子网掩码的 10.41.0.0 目标的路由
route delete 10.41.0.0 mask 255.255.0.0
三、进程管理
1.kill命令
格式:kill [ -s signal | -p ] [ -a ] pid ...说明:kill发出一个特定的信号给id为pid的进程,若没有指定,默认是终止信号
参数:
-s (signal):其中可用的信号有HUP (1),KILL(9),TERM(15),分别代表重启、杀死、结束;详细的信号可以用kill -l得出
-p:显示pid,并不发出信号
-l (signal):列出所有可用的信号名称
例(1)将 pid 为 323 的进程砍掉 (kill):
kill -9 httpd //杀死httpd进程
例(2)将 pid 为 456 的进程重跑 (restart):
kill -HUP 456 //重启PID为456的进程
2.ps命令
格式:ps [options]说明:显示当前运行进程的状态
参数:
ps:的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A:列出所有的进程
-w:显示加宽可以显示较多的信息
-au:显示较详细的信息
-aux:显示所有包含其他用户的进程
au(x):输出格式如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
它们分别代表:
USER表示进程拥有者
PID表示进程ID
%CPU表CPU占用率
%MEM表示内存占用率
VSZ表示虚拟内存占用率
RSS表示大小
TTY表示终端的次要设备号码
STAT表示该进程的状态:
D:不可中断的状态
R:正在执行中
S:静止状态
T:暂停执行
Z:不存在但暂时无法消除
W:没有足够的内存分页可分配
<:高优先序的进程
N:低优先序的进程
L:有内存分页分配并锁在内存 (实时系统)
START表示进程开始日期
TIME表示进程开始时间
COMMAND表示进程文件名
3.top命令
格式:top [-] [d delay] [q] [S] [s] [n]说明:实时显示 process 的动态
参数:
d:改变显示的更新速度,或是在交互式命令列表
q:以最高的优先序执行
s:安全模式,将交互式命令取消,避免潜在的危机
n:更新的次数,完成后将会退出 top
例(1)显示更新十次后退出
top -n 10
例(2)将更新显示二次的结果输入到名称为 top.log 的文件里
top -n 2 -b < top.log
四、日期时间
1.at命令
格式:at [-q queue] [-f file] [-mldbv] TIME说明:at可以让用户指定在TIME这个特定时刻执行某个程序或命令,TIME的格式是 HH:MM。其中的HH为小时,MM为分钟,甚至可以指定am,pm,midnight,noon。如果想要指定超过一天的时间,则可以用MMDDYY或者MM/DD/YY格式,其中MM是月份,DD是第几日,YY是指年份;也可以使用now + 时间间隔来弹性指定时间,其中的时间间隔可以是minutes,hours,days,weeks;另外,用户也可指定today或tomorrow来表示今天或明天。当指定了时间并按下enter之后,at会进入交互模式并要求输入命令或程序,当输入完后按下CTRL+D 即可完成所有动作,至于执行的结果将会发送信息到用户的账号邮箱中。
参数:
-q:使用指定的队列储存,at的内容是存放在所谓的queue(队列)中,用户可以同时使用多个queue,而queue的编号为a,b,c...z以及A,B,...Z 共52个
-m:即使程序/命令执行完成后没有输出结果,也要寄封信给用户
-f file:读入预先写好的命令文件。用户不一定要使用交互模式来输入,可以先将所有的指定先写入文件后再一次读入
-l:列出所有的设置 (用户也可以直接使用atq而不用at -l)
-d:删除设置(用户也可以直接使用atrm而不用at -d)
-v:列出所有已经完成但尚未删除的设置
例(1)三天后的下午5点执行/bin/ls:
at 5 pm +3days /bin/ls
例(2)三个星期后的下午5点执行/bin/ls:
at 5pm +32weeks /bin/ls
例(3)明天的 17:20 执行 /bin/date:
at 17:20 tomorrow /bin/date
例(4)1999 年的最后一天的最后一分钟显示the end of year!
at 23:59 12/31/1999 echo the end of year!
2.cal命令
格式:cal [-mjy] [month [year]]说明:显示日历。若只有一个参数,则显示当年当月。如果指出年份必须全部写出。
选项:
-m:以星期一为每周的第一天方式显示
-j:以凯撒历显示,即以一月一日起的天数显示
-y:显示今年年历
例(1)显示本月的月历
cal //显示当前月日历
例(2)显示2007年5月的日历
cal 7 2007
3.crontab命令
格式:crontab [ -u user ] filecrontab [-u user ] { -l | -r | -e }
说明:crontab是用来让用户在固定时间或固定间隔执行程序,类似Windows下的计划任务功能。-u user 是指设定指定user的计划任务,前提是必须要有其权限(比如说是 root)才能够指定他人的计划任务。如果不使用-u user的话,就是表示设定自己的计划任务。也可以将所有的设定先存放在文件file中,用“crontab file”的方式来设定计划任务。
参数:
-e:打开vi来设定计划任务
-r:删除目前的计划任务
-l:列出目前的计划任务
计划任务的格式如下:
f1 f2 f3 f4 f5 program
f1表示分钟,f2表示小时,f3表示月中第几日,f4表示月份,f5表示星期中第几天。program表示要执行的程序
当f1为*时表示每分钟都执行,f2—f5依次类推
当f1为a-b时表示从第a分钟到第b分钟内都执行,f2—f5依次类推
当f1为*/n时表示每n分钟执行一次,f2—f5类似
当f1为a,b,c,... 格式时表示第a,b,c,...分钟执行,f2—f5类似
例(1)每月每天每小时第0分钟执行一次 /bin/ls
0 * * * * /bin/ls
例(2)在12月内,每天的早上6点到12点中,每隔20分钟执行一次/usr/bin/backup:
*/20 6-12 * 12 * /usr/bin/backup
例(3)周一到周五每天下午 5:00 寄一封信给 alex@domain.name:
0 17 * * 1-5 mail -s "hi" syd168@yahoo.com.cn < /tmp/maildata
例(4)每月每天的每点20分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
注意:
(1)另外,该命令执行后,会打开计划任务的编辑环境,直接在其中输入上面介绍的计划任务的设置就行了,每行一条计划任务。
(2)当程序在指定的时间执行后,系统会寄一封信给计划任务的所有者,显示该程序执行的内容,若不希望收信,在行计划任务之后“ >/dev/null 2>&1”。
(3)crontab设置的计划任务只对计划任务的设定者(所有者)起作用。要设置针对所有用户的计划任务,需要编辑/etc/crontab文件,该文件的设置方法,请参考其它资料。
(4)crotab和at不同,at是设置一次新的计划任务,而crotab是设置重复执行的计划任务,系统计划任务的设置在/etc/crontab中。
(5)计划任务还有权限的问题。at受/etc/at.allow和/etc/at.deny的限制,crontab受/etc/allow.crontab和/etc/deny.crontab的限制,而系统计划任务受/etc/cron.allow和/etc/cron.deny的限制。at计划任务保存在/var/spoon/at下,crontab计划任务在/var/spoon/crontab下,而系统计划任务在/etc/crontab中。
五、软件包管理
rpm命令是个很常用的命令,RHEL和Fedora下管理软件包的强有力工具。这里,我们按照安装、卸载、更新等不同的用途详细介绍rpm的命令格式和参数。rmp是Red Hat Linux发行版专门用来管理Linux各项套件的程序,它遵循GPL规则且功能强大方便,因而广受欢迎,逐渐受到其它发行版的采用。1.安装RPM软件包
格式:rpm -i options rpm1...rpmn参数:
rpm1...rpmn:要安装的RPM包名,多个之间用空格分开,可使用通配符
--test:只对安装进行测试,并不实际安装
--percent:以百分比的形式输出安装的进度
--excludedocs:不安装软件包中的文档文件
--includedocs:安装文档
--replacepkgs:强制重新安装已经安装的软件包
--replacefiles:替换属于其它软件包的文件
--force:忽略软件包及文件的冲突
--noscripts:不运行预安装和后安装脚本
--prefix:将软件包安装到指定的路径下
--ignorearch:不校验软件包的结构
--ignoreos:不检查软件包运行的操作系统
--nodeps:不检查依赖性关系
--root:让RPM将指定的路径做为"根目录"
2.删除软件包
格式:rpm -e options pkg1 ... pkgN参数:
pkg1 ... pkgN:要删除的软件包
--test:只执行删除的测试
--noscripts:不运行预安装和后安装脚本程序
--nodeps:不检查依赖性
3.升级软件包
格式:rpm -U options file1.rpm ... fileN.rpm参数:
file1.rpm... fileN.rpm:软件包的名字
-h:安装时输出hash记号:(``#'')
--oldpackage:允许"升级"到一个老版本
--test:只进行升级测试
--excludedocs:不安装软件包中的文档文件
--includedocs:安装文档
--replacepkgs:强制重新安装已经安装的软件包
--replacefiles:替换属于其它软件包的文件
--force:忽略软件包及文件的冲突
--percent:以百分比的形式输出安装的进度
--noscripts:不运行预安装和后安装脚本
--prefix:将软件包安装到由prifix指定的路径下
--ignorearch:不校验软件包的结构
--ignoreos:不检查软件包运行的操作系统
--nodeps:不检查依赖性关系
4.查询软件包
格式:rpm -q options pkg1...pkgN参数:
pkg1...pkgN:查询已安装的软件包
-p:查询软件包的文件
-f:查询属于哪个软件包
-a:查询所有安装的软件包
-g:查询属于组的软件包
-i:显示软件包的概要信息
-l:显示软件包中的文件列表
-c:显示配置文件列表
-d:显示文档文件列表
-s:显示软件包中文件列表并显示每个文件的状态
--provides:显示软件包提供的功能
-R:显示软件包所需的功能
--root:让RPM将指定的路径做为"根目录"
5.校验已安装软件包
命令格式:rpm -V options pkg1 ... pkgN参数
pkg1...pkgN:将要校验的软件包名
-f:校验所属的软件包
-a Verify:校验所有的软件包
-g:校验所有属于组的软件包
--noscripts:不运行校验脚本
--nodeps:不校验依赖性
--nofiles:不校验文件属性
--root:让RPM将指定的路径做为"根目录"
例(1)RPM包的安装、升级和卸载
rpm -ivh rpm包 //安装软件
rpm -Uvh rpm包名 //升级软件
rpm -e rpm包名 //卸载软件
这里,i表示安装,v表示显示过程,h表示人性化显示,U表示升级,e表示卸载。常常用到如下几个参数:
--force 强制安装。在有时候进行覆盖安装的时候就必须带该参数
--nodeps不检查包的依赖性
例(2)RPM软件包的查询
rpm -q rpm包 //查询某个软件包是否已经安装
rpm -qi rpm包 //查询某个软件包的详细信息
rpm –ql rpm包 //查询某个软件包中包含的文件
rpm –qf 文件全名 //查询某个文件属于哪个软件包
rpm -qa //列出系统当前安装的所有软件包
六、登录用户
1.chfn命令
格式:chfn说明:提供用户更改个人信息,对于finger、mail、username等起作用
例(1)修改当前用户的finger信息
chfn
Changing finger information for user
Password:[del] //口令验证
Name[]:Johnney Huang //提供finger时的内容
Office[]:NCCU //办公室
OfficePhone[]:[del] //办公电话
HomePhone[]:[del] //家庭电话
2.chsh命令
格式:chsh [-l][-sshellname]说明:更改用户shell设定。
参数:
-l:列出当前机器上能用的shell名称
-s:将当前的shell变为shellname
例(1)
chsh
Changing shell for user1
Password:[del] //口令验证
Newshell[/bin/tcsh]:/bin/csh //新的shell
例(2)展示/etc/shells文件内容:
chsh -l
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
3.last命令
格式:last[-X][-f FileName][-t Time][-n Number|-Number][用户名][终端]说明:显示系统开机以来或是从每月初登录用户的信息
参数:
-f FileName:指定一个来读取登录或注销的备用文件
-n:指定在列表中要显示的行数
-t Time:显示在一个给定的时间值中登录的用户。时间变量以十进制的[[CC]YY]MMDDhhmm[.SS]形式指定,其中:
CC指定年份的前两个数字
YY指定年份的后两个数字
MM指定年份中的月份(01到12)
DD指定月份中的日期(01到31)
hh指定天中的小时(00到23)
mm指定小时中的分数(00到59)
SS指定分钟中的秒数(00到59)
-X:显示每个用户名所有可用字符,而不是截断只剩前面8个字符
例(1)要显示所有在4月15日上午10:30仍登录的用户
last -t 04151030
例(1)要显示列表中的10行
last -n 10
例(2)要显示所有记录的登录和注销
last -X
4.passwd命令
格式:passwd [-l] [-u] [-d] [-S] [username]说明:用来更改用户的密码。
参数:
-l:锁定已经命名的账户名称,只有具备root权限的用户方可使用
-u:解开账户锁定状态,只有具备root权限的用户方可使用
-d:关闭用户的密码认证功能,用户在登入时将可以不用输入密码,只有具备root权限的用户方可使用
-S:显示指定用户的密码认证种类,只有具备root权限的用户方可使用
username:指定账号名称,普通只能修改自己的密码
例(1)设置用户的口令:
passwd
例(2)锁定指定用户账号
passwd –l user1
例(3)解锁指定用户账号
passwd –u user1
例(4)删除用户口令
passwd –d user1
例(5)查询用户口令状态
passwd –S user1
5.who命令
格式:who [-husfV][user]说明:显示系统中当前有哪些用户在线,显示的了用户ID,终端,登录IP,上线时间,停留时间,CPU使用量,动作等等。
参数:
-h:不显示标题列
-u:不显示用户的动作/工作
-s:使用简短的格式来显示
-f:不显示用户的上线位置
-V:显示程序版本
例(1)显示系统当前用户:
who
七、文件系统
1.fdisk命令
fdisk 是用来查、创建磁盘分区的。RHEL和Fedora在安装的时候,都提供了优秀的分区管理工具,但安装后,往往需要在命令行下面修改分区或创建分区。下面,按照分区的一般步骤讲解fdisk的用法。(1)查看系统当前分区信息
fdisk -l
//第一块硬盘信息
Disk /dev/sda: 19.3 GB, 19327352832 bytes
255 heads, 63 sectors/track, 2349 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 2218 17816053+ 83 Linux
/dev/sda2 2219 2349 1052257+ 82 Linux swap / Solaris
//第二块硬盘信息
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 123 987966 b W95 FAT32
从上面的显示可以看出,当前系统有两块硬盘,分别用设备号/dev/sda和/dev/sdb表示(如果是IDE硬盘,就是/dev/had、/dev/hdb等),/dev/sda有两个分区,/dev/sdb有一个FAT32分区。其中,/dev/sda1是引导分区。
要继续实验分区,就必须有空余的空间或者删除原有分区。建议读者最好使用虚拟机为该系统添加一个虚拟的硬盘。对于实际的物理系统,在分区前必须做好备份,并确保有分区的必要。这里,我们首先删除/dev/sdb1分区,然后创建一个新的分区。
(2)对某个磁盘设备进行分区
fdisk /dev/sdb //对/dev/sdb分区
The number of cylinders for this disk is set to 1044.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
注意:fdisk后要指定的设备必须是硬盘设备,而不能是分区!
(3)显示可用的分区命令
进入分区环境之后,先是的内容如上面(2)的现实内,输入“m”可以列出可用的命令,如下所示,粗体表示常用命令:
Command (m for help): m
Command action
a toggle a bootable flag //标记为引导分区
b edit bsd disklabel //修改bsd卷标
c toggle the dos compatibility flag //标记dos兼容的标记
d delete a partition //删除分区
l list known partition types //列出支持的分区类型
m print this menu //显示命令菜单
n add a new partition //创建分区
o create a new empty DOS partition table //创建新的DOS分区表
p print the partition table //显示分区信息
q quit without saving changes //放弃分区,退出
s create a new empty Sun disklabel //创建SUN分区
t change a partition's system id //修改分区类型
u change display/entry units //显示/修改快单元
v verify the partition table //校验分区表
w write table to disk and exit //保存分区并退出
x extra functionality (experts only) //附加功能(仅供高级用户)
(4)删除现有分区
要删除一个分区,输入d,然后选择要删除的分区序号,直接回车即可删除。
Command (m for help): d
Selected partition 1 //指定要删除的分区
(5)列出当前分区表信息
输入“p”,可以查看当前的分区信息,如下所示:
Command (m for help): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
可以看出,当前已经没有分区了,下面就来创建一个新的分区。
(6)创建新分区
Command (m for help): n //输入n,创建新分区
Command action
e extended
p primary partition (1-4)p //p表示创建主分区
Partition number (1-4): 1 //1表示第一个分区
First cylinder (1-1044, default 1): //分区的柱面开始位置,默认即可
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044): +1000M //分区大小
注意:分区大小可以用柱面设置,也可以用B、M、K为单位指定,如上面就表示1000MB大小。
(7)再次显示分区表信息
创建了一个新的分区之后,最要使用“p”命令,再次查看分区是否成功,如下:
Command (m for help): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 123 987966 83 Linux
可以看出,已经成功创建了一个分区,分区设备为/dev/sdb1,分区类型为Linux的Ext2。分区的大小为987966块(每个块1024字节)。
(8)修改分区类型
默认情况下,fdisk创建的分区类型是ext2,有时候就要修改,如创建交换分区类型必须是swap,创建dos分区,分区类型就是FAT。下面就是将分区修改为FAT32:
Command (m for help): t //修改分区命令
Selected partition 1 //选择要修改的分区
Hex code (type L to list codes): L //列出支持的分区类型信息
…… //类型信息(忽略)
Hex code (type L to list codes): b //选择分区类型
Changed system type of partition 1 to b (W95 FAT32)
(9)将分区设置为引导分区
计算机在启动的时候根据CMOS中的参数设置,按照顺序查找第一个可引导的设备,一个设备要能被引导,则这个设备中的主分区必须至少有一个分区被设置为激活状态,即所谓的可引导分区,这样,BIOS中的程序首先找到引导盘,有MBR中的引导程序(如GRUB)找到引导分区中的操作系统,并加载操作系统内核,完成启动。
Command (m for help): a //设置引导分区命令
Partition number (1-4): 1 //要设置的分区
//再次查看分区信息
Command (m for help): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 123 987966 b W95 FAT32
在上面的显示中,Boot下的“*”表示/dev/sdb1是可引导分区。
注意:可引导分区只能设置在主分区上,而且多个主分区都可以设置为引导分区,至于到底启动哪个分区中可能存在的操作系统,主要是由引导程序(如GRUB)来决定。
(10)保存分区并退出
Command (m for help): w //保存并退出命令
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
至此,整个分区就完成了,但需要读者注意,这个新创建的分区,当前依然无法存放文件,必须格式化后才可以使用。关于格式化的命令请参考后面的mkfs命令。
2.df命令
格式:df [选项] [FILE]..说明:显示文件系统的状况,或是看所有文件系统的状况(默认值)。
参数:
-a:包含所有的具有0Blocks的文件系统
-h:使用人类可读的格式(默认值是不加这个选项的...)
-i:列出inode信息,不列出已使用block
-k:就像是--block-size=1024
-m:就像--block-size=1048576
例(1)显示系统中分区使用情况
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 17257776 4878504 11488472 30% /
tmpfs 257644 0 257644 0% /dev/shm
.host:/ 36089988 26275956 9814032 73% /mnt/hgfs
例(2)用人性化方式查看分区使用情况
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 17G 4.7G 11G 30% /
tmpfs 252M 0 252M 0% /dev/shm
.host:/ 35G 26G 9.4G 73% /mnt/hgfsdd
3.dd命令
格式:dd [option]说明:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。
参数:
if =输入文件(或设备名称):指定操作的输入
of =输出文件(或设备名称):指定操作的输出
ibs = bytes:依次读取bytes字节,即读入缓冲区的字节数
skip = blocks:跳过读入缓冲区开头的ibs*blocks块
obs=bytes:依次写入bytes字节,即写入缓冲区的字节数
bs=bytes:同时设置读/写缓冲区的字节数(等于设置ibs和obs)
cbs=byte:依次转换bytes字节
count=blocks:只拷贝输入的blocks块
conv=ASCII:把EBCDIC码转换为ASCIl码
conv=ebcdic:把ASCIl码转换为EBCDIC码
conv=ibm:把ASCIl码转换为alternate:EBCDIC码
conv=ucase:把字母由小写转换为大写
conv=lcase:把字母由大写转换为小写
conv=notrunc:不截断输出文件
conv=swab:交换每一对输入字节
conv=noerror:出错时不停止处理
conv=sync:把每个输入记录的大小都调到ibs的大小(用NUL填充)
例(1)把一张软盘的内容拷贝到另一张软盘上
dd if =/dev/fd0 of = /tmp/tmpfile
dd if = /tmp/tmpfile of =/dev/fd0
rm /tmp/tmpfile
例(2)把net.i这个文件写入软盘中,并设定读/写缓冲区的数目
dd if =net.i of = /dev/fd0 bs =16384
例(3)将文件sfile拷贝到文件dfile中
dd if=sfile of=dfile
例(4)备份MBR到当前目录的MBR.bak文件中
dd if=/dev/hda of=MBR.bak count=1 bs=512
例(5)恢复上面备份的MBR(慎重操作!)
dd if= MBR.bak of=/dev/hda count=1 bs=512
4.e2fsck命令
格式:e2fsck [options] device说明:检查使用Linux ext2文件系统的分区是否正常工作。
参数:
device:预备检查的硬盘分区,例如:/dev/sda1
-a:若有问题便自动修复,等同-p的功能
-b:设定存放superblock的位置
-B:设定单位block的大小
-c:检查该分区是否有坏轨
-C file:将检查的结果存到file中以便查看
-d:显示e2fsck的debug结果
-f:强制检查
-F:在开始检查前,将device的buffercache清空,避免有错误发生
-l bad_blocks_file:将有坏轨的block内容加到bad_blocks_file里面
-L bad_blocks_file:设定坏轨的block内容存到bad_blocks_file里面,若无该文件则自动产生
-n:将文件系统以[唯读]方式打开
-p:对partition做检查,若有问题便自动修复
-v:详细显示模式
-V:显示出目前e2fsck的版本
-y:预先设定所有检查时的问题均回答[是]
例(1)检查/dev/hda5是否正常,如果有异常便自动修复
e2fsck -a -y /dev/hda5
注意:大部份使用e2fsck来检查硬盘分区时,通常都是情况特殊,因此最好先将该分区卸载(umount),然后再执行e2fsck来做检查,若是一定要检查/,则请进入单用户模式再执行。
5.fsck命令
格式:fsck [options] filesys ...说明:检查与修复文件系统,可以同时检查一个或多个文件系统。
参数:
filesys:device名称(eg./dev/sda1),mount点(eg./或/usr)
-t:给定文件系统的格式,若在/etc/fstab中已有定义或kernel本身已支持的则不需加上此参数
-s:依次执行fsck指令来检查
-A:对/etc/fstab中所有列出来的partition做检查
-C:显示完整的检查进度
-d:显示e2fsck的debug结果
-p:同时有-A条件时,同时有多个fsck检查一起执行
-R:同时有-A条件时,省略/不检查
-V:详细显示模式
-a:如果检查有错则自动修复
-r:如果检查有错则由用户回答是否修复
例(1)检查msdos文件系统的/dev/hda5是否正常,如果有异常便自动修复
fsck -t msdos -a /dev/hda5
6.mkfs命令
格式:mkfs [-V] [-tfstype] [fs-options] filesys [blocks]说明:在特定的分区上建立文件系统。
参数:
filesys:要设置的分区,例如:/dev/sda1
-V:详细显示模式
-t:给定文件系统的格式,Linux的默认值为ext2
-c:在制做文件系统前,检查该分区是否有坏轨
-l bad_blocks_file:将有坏轨的block内容加到bad_blocks_file里面
block:给定块的大小
例(1)在/dev/hda5上建一个msdos的文件系统
mkfs -V -t msdos -c /dev/hda5
例(2)格式化/dev/hda1分区,该分区是ext2文件系统
mkfs -t ext2 /dev/hda1
7.mount命令
格式:mount [-hV] //查看挂载信息mount -a [-fFnrsvwL][-t vfstype] //挂载所有fstab中的设备
mount [-fnrsvw][-o options[,...]]device|dir //挂载//fstab中某设备
mount [-fnrsvw][-t vfstype][-o options] device dir
说明:将文件系统挂在目录的某个位置之上。这个命令可以被用来挂上任何的文件系统,甚至可以用-o loop选项将某个一般的文件当成硬盘分区挂载。这对于ramdisk或是ISO9660的镜像文件之解读非常实用。
参数:
-V:显示程序版本
-h:显示辅助信息
-v:显示较信息,通常和-f用来除错
-a:将/etc/fstab中定义的所有文件系统挂上
-F:通常和-a一起使用,为每个mount的动作产生一个负责执行的进程。如在系统需要挂上大量NFS文件系统时,这样可以加快挂上的动作
-f:通常做除错用,会使mount并不执行实际挂上的动作,而是模拟整个挂上的过程,通常会和-v一起使用
-n:mount挂载后会在/etc/mtab中写入一行记录,该参数可取消写入
-r:等于-o ro选项
-w:等于-o rw选项
-L:将含有特定标签的硬盘分区挂上
常用的挂载选项(-o后的参数):
-o async:打开非同步模式,所有的文件读写动作都会用非同步模式执行
-o sync:在同步模式下执行
-o auto:打开自动挂上模式
-o noauto:关闭自动挂载模式
-o defaults:使用预设的选项rw、suid、dev、exec、auto、nouser、async
-o exec:允许执行可执行文件
-o noexec:允许执行文件被执行
-o suid:允许设置SUID或者GUID
-o nosuid:不允许设置SUID或GUID
-o user:允许普通用户挂载或卸载文件系统
-o nouser:不允普通用户挂载或卸载文件系统
-o remount:将一个已经挂下的文件系统重新挂上
-o ro:用只读方式挂载
-o rw:用可读写模式挂载
-o loop:使用loop模式用来将一个文件当成硬盘分区挂载,常用来挂载镜像文件(.iso等)
例(1)将/dev/hda1挂在/mnt之下:
mount /dev/hda1 /mnt
例(2)将/dev/hda1用只读模式挂在/mnt之下:
mount -o ro /dev/hda1 /mnt
例(3)将/tmp/image.iso这个光盘镜像文件挂载到/mnt/cdrom之下,并支持中文
mount -o loop,codepage=936,isocharset=cp936 /tmp/image.iso /mnt/cdrom
用途:清除屏幕用。
八、系统管理
1.clear命令
格式:clear说明:清除屏幕用,也可以用CTRL+L实现。
2.mail命令
格式:mail -s主题 收信人 //发送邮件mail “邮件内容”|mail-s 收件人 //发送邮件
mail //查看邮件
说明:邮件管理程序。可以在命令行模式下收发邮件。
例(1)给syd168发一份信,表示欢迎。
mail -s “welcome” syd168 回车
You are welcome! //CTRL+D结束输入,这里是邮件内容
Cc: syd168@yahoo.com.cn //邮件副本
例(2)读取自己的新邮件。
注意:读取邮件的时候,按回车键依次读取,要删除邮件,按键盘的“d”,要推出阅读,按“q”。
3.alias命令
格式:alias 别名=“原命令”说明:用来设置某个命令的别名。例如可以将每次输入的命令“ls -l”设置为ll,这样方便操作。alias的设置仅在本次登录。若要每次登录都起作用,可在.profile或.bashrc中设置命令的别名。而对所有用户都有效的别名在/etc/bashrc中设置即可。
例(1)设置ls–l命令的格式为ll
alias ll=”ls -l”
4.chkconfig命令
格式:chkconfig --list [name] //列出服务状态chkconfig --add name //添加服务
chkconfig --del name //删除服务
chkconfig --override name
chkconfig [--level levels] name <on|off|reset>
chkconfig [--level levels] name
说明:管理/etc/rc[0-6].d中的服务程序。
例(1)添加httpd服务到chkconfig,让chkconfig可以修改其状态
chkconfig --add httpd
例(2)从chkconfig管理的服务中删除httpd服务,chkconfig不能再修改其状态
chkconfig --del httpd
例(3)显示httpd服务在各个运行级别中是否启动
chkconfig --list httpd
例(4)设置httpd服务在3、4、5运行级别为自动启动
chkconfig --level 345 httpd on
例(5)设置httpd服务在1、6运行级别为自动关闭
chkconfig --level 16 httpd off
5.export命令
格式:export [-n] 环境变量 = 值说明:用于设置或显示环境变量。在shell中执行命令时,shell会提供一组环境变量。export可新增、修改或删除环境变量,供后续命令使用。
参数:
-n表示从当前的环境中删除指定的环境变量,但不是从配置文件中删除
例(1)设置当前的语系为英文
export LANG=en_US.UTF-8
例(2)设置当前的语系为中文
export LANG=cn_CN.UTF-8
注意:这里设置的环境变量只对当前用户有效,而且只对本次会话有效,要环境变量的设置永久生效,就必须将该命令加入文件中。全局配置的环境变量可以加入/etc/profile或/etc/bashrc中,用户环境变量设置要修改~/.bash_profile或~/.bashrc。
6.ntsysv命令
格式:ntsysv说明:在shell下用图形化界面设置系统服务的状态。功能类似于chkconfig,但不支持服务的删除和添加。
7.halt命令
格式:halt [-n] [-w] [-d] [-f] [-i] [-p]说明:若系统的runlevel为0或6,则关闭系统,否则与shutdown命令加上-h参数一样。
参数:
-n:在关机前不做将内存内容写回硬盘的动作
-w:并不会真的关机,只是把记录写到/var/log/wtmp文件里
-d:不把记录写到/var/log/wtmp文件里(-n 这个参数包含了-d)
-f:强迫关机,不调用shutdown这个命令
-i:在关机之前先把所有网络相关的设备停止
-p:当关机的时候,顺便做关闭电源(poweroff)的动作
例(3)关闭系统后关闭电源
halt -p
例(4)直接关闭系统,但不作纪录
halt -d
8.init命令
格式:init [0123456Ss]说明:init 是所有进程的父进程,开机时一定会先从这个命令开始并参考/etc/inittab 文件来完成整个开机程序,共有8个执行层级(runlevel),而改变只能透过init命令来更改
参数:
0:关闭系统
1:单一用户模式
2:进入没有网络的多用户模式
3:进入基于文本的多用户模式
5:进入X window模式
6:重新开机
S或s:单一用户模式
例(1)由当前运行级别直接转入5级别(假如原来不是5)
init 5
例(2)重新启动计算机
init 6
例(3)关闭计算机
init 0
9.reboot命令
格式:reboot [-n] [-w] [-d] [-f] [-i]说明:若系统的runlevel为0或6 ,则重新开机,否则与shutdown命令加上-r参数一样。
参数:
-n:在重开机前不做将内存写回硬盘的动作
-w:并不会真的重开机,只是把记录写到/var/log/wtmp 文件里
-d:不把记录写到/var/log/wtmp 文件里
-f:强迫重开机,不调用shutdown 这个命令
-i:在重开机之前先把所有网络相关的设备停止
例(1)重启计算机
reboot
例(2)模拟重新启动计算机
reboot -w
10.shutdown命令
格式:shutdown [-t seconds] [-r khncfF] time [message]说明:关机程序,并且在关机以前传送信息给所有用户,也可以用来重开机。
参数:
-t seconds:设定在几秒钟之后进行关机程序
-k:并不会真的关机,只是将警告信息传送给所有只用者
-r:关机后重新开机
-h:关机后停机
-n:不正常关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c:取消目前已经进行中的关机动作
-f:关机时不做fcsk动作
-F:关机时强迫进行fsck动作
time:设定关机的时间
message:传送给所有用户的警告信息
例(1)立即关闭计算机
shutdown -h now
例(2)重启计算机
shutdown -r
例(3)一分钟后关闭计算机,并发送“Power Off!”信息给在线用户
shutdown -h 1 power off!
九、备份压缩
1.dump命令
格式:dump 备份参数 -f 备份设备 文件系统或目录说明:可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。
举例:
例(1)将/dev/hda1备份到/var/tmp/hda2dump
dump -0u -f /var/tmp/hda2dump /dev/hda1
其中,0表示备份级别,u表示备份后在/etc/dumpdates中记录备份的文件系统、层级、日期与时间等,f表示备份设备。详细请参考dump的man手册。
2.restore命令
格式:restore 恢复参数 备份设备说明:restore命令用来恢复由dump备份的目录或文件系统。
例(1)将备份的/var/tmp/hda2dump进行还原
restore -r -f /var/tmp/hda2dump /dev/hda0
其中,r表示恢复,f表示要恢复的设备
3.bzip2命令
格式:bzip2 [参数] 文件bzip2 -d 待解压gz文件
说明:bzip2是比gzip压缩效率更高的压缩命令。bunzip2是解压用bzip2压缩的文件。其实bzip –d的功能和bunzip2是一样的。注意,bzip2只能压缩单个文件。
例(1)将/home/user1/word压缩
bzip2 /home/user1/word //生成/home/user1/word.bz2
例(2)将/home/user1/word.gz解压缩
bzip2 -d /home/user1/word.gz //生成/home/user1/word
4.tar命令
格式:tar -cvf tar文件 待备份的目录或文件 //生成tar包tar -cjvf bz文件 待压缩的文件或目录 //生成bzip2压缩
tar -czvf gz文件 待压缩的文件或目录 //生成gzip压缩
tar -cZjvf 压缩备份文件要压缩备份的文件或目录 --compress压缩
tar -jxvf tar.bzip2文件 //解压缩tar.bzip2文件
tar -zxvf tar.gz文件 //解压缩tar.gz文件
tar -Zxjvf tar.Z文件 //解压缩tar.Z文件
说明:用来对目录或文件进行打包(备份)或解包(还原)。tar命令常常和gzip命令或bzip2命令结合,对目录或文件进行压缩备份。另外,tar命令支持在打包的同时进行压缩,支持的压缩包括bzip2、gzip和compress。
例(1)将/etc/httpd下所有文件打包压缩到/root下,输出文件为http.tar.gz
tar -czvf /root/http.tar.gz /etc/httpd
例(2)将/ http.tar.gz解压还原
tar -zxvf /root/http.tar.gz
例(3)用tar打包一个目录下的文件
tar -cvf /mnt/lgx/a1.doc
结果产生一个以.tar为扩展名的打包文件。
例(4)用tar解开打包文件
tar -xvf /mnt/lgx/a1.doc.tar
例(5)解压a1.doc.tar.gz文件
gzip -dc /mnt/lgx/a1.doc.tar.gz //产生a1.doc.tar文件
tar –xvf /mnt/lgx/a1.doc.tar //产生a1.doc文件
这两次命令也可使用管道功能,把两个命令合二为一:
gzip -dc /mnt/lgx/a1.doc.tar.gz | tar -xvf
例(6)使用tar提供的自动调用gzip解压缩功能
tar -zxvf /mnt/lgx/a1.doc.tar.gz
注意:在通常情况下,tar打包与gzip(压缩)经常联合使用,效果更好。方法首先用tar打包,如:#tar –cvf /mnt/lgx/a1.doc,产生a1.doc.tar文件,然后用gzip压缩a1.doc.tar文件,如:#gzip /mnt/lgx/a1.doc.tar 产生a1.doc.tar.gz文件。
5.gzip命令
格式:gzip 选项 文件目录列表说明:gzip命令用来压缩文件,解压缩用gunzip命令。gzip压缩的文件会带gz扩展名。其实gzip带-d参数就可以解压自己压缩的文件。需要注意的是,gzip压缩文件后,原来的文件不再存在。另外,gzip带r参数可以压缩指定目录下的所有文件,但生成的是每个文件的单独压缩,而不是一个文件。所以往往结合tar打包命令对目录的压缩。
参数:
-c 压缩结果写入标准输出,原文件保持不变。缺省时gzip将原文件压缩为.gz文件,并删除原文件。
-v 输出处理信息。
-d 解压缩指定文件。
-t 测试压缩文件的完整性。
例(1)压缩/mnt/lgx/a1.doc
gzip -v /mnt/lgx/a1.doc
结果,产生a1.doc.gz的压缩文件。
例(2)将/home/user1/word压缩
gzip /home/user1/word //生成/home/user1/word.gz
例(3)将/home/user1/word.gz解压缩
gzip -d /home/user1/word.gz //生成/home/user1/word