📄 linux
字号:
function jumptoie5() {
if (event.srcElement.className == "menuitems") {
if (event.srcElement.getAttribute("target") != null)
window.open(event.srcElement.url, event.srcElement.getAttribute("target"));
else
window.location = event.srcElement.url;
}
}
// End -->
</script>
<script language="JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
// -->
</script><BODY
onload="MM_preloadImages('images/print2.png','images/save2.png','images/re_write2.gif','images/home2.png')">
<DIV id=Layer1
style="Z-INDEX: 1; LEFT: 484px; VISIBILITY: hidden; WIDTH: 146px; POSITION: absolute; TOP: 68px; HEIGHT: 24px">
<TABLE cellSpacing=0 cellPadding=1 width="100%" bgColor=#000000 border=0 height=24>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#ffffe6
border=0 height=24><TBODY>
<TR>
<TD
class=zi>点击“保存设置”按扭可使您本次阅读的整体设置(文字、字号、背景)得以保留,下次阅读时您就不必再重新设置,以符合您的阅读习惯。</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
<div id="Layer2" style="position:absolute; width:19px; height:14px; z-index:2; left: 644px; top: 6px"> </div>
<TABLE cellSpacing=0 cellPadding=0 width=650
align=center >
<TBODY>
<TR vAlign=center align=left>
<TD background="images/titleback.png" colSpan=2
height=22 valign="top" width=650>
<TABLE cellSpacing=2 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=40 valign="top"> </TD>
<TD class=zi width=562 valign="middle"><b><font color="#ffffff">.:.:linux的基本操作(下):.:.</font></b></TD>
<TD class=zi width=18 valign="top"> </TD>
<TD width=16 valign="middle"><a href="javascript:window.close();" title=关闭窗口><img height=19
src="images/close.png" width=19 border=0></a></TD>
</TR></TBODY></TABLE></TD></TR>
<TR vAlign=center align=left>
<TD bgColor=#BDCFF7 colSpan=2 height=24 valign="top" >
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0 >
<TBODY>
<TR>
<TD width=1 ></TD>
<TD align=right width=24><a href="http://www.ie586.net" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image5','','images/home2.png',1)"><img name="Image5" border="0" src="images/home.png" width="24" height="22" title=返回页面></a></TD>
<TD align=right width=24><a href="http://210.76.63.207/lb5000/leoboard.cgi" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image4','','images/re_write2.gif',1)"><img name="Image4" border="0" src="images/re_write.gif" width="20" height="19" title=发表评论></a></TD>
<TD width=24>
<div align="center"><a href="#" onClick="window.print();return false"><img src="images/print.png" alt="打印文档" border="0" name="p" onMouseOver="MM_swapImage('p','','images/print2.png',1)" width="24" height="22"></a></div>
</TD>
<TD width=2 ></TD>
<TD class=zi vAlign=center width=308 height=25><font size="2"> 文字
<SELECT
style="WIDTH: 60px; HEIGHT: 20px; fontsize: 9pt"
onchange=setFontColor(this.value); name=seltextcolor>
<OPTION
value=#000000 selected>黑色</OPTION>
<OPTION
value=#FFFFFF>白色</OPTION>
<OPTION value=#FF0000>红色</OPTION>
<OPTION value=#555555>灰色</OPTION>
<OPTION
value=#00FF00>绿色</OPTION>
<OPTION value=#0000FF>蓝色</OPTION>
<OPTION value=#00cccc>青色</OPTION>
<OPTION
value=#ffff00>黄色</OPTION>
</SELECT>
背景
<SELECT
style="WIDTH: 60px; HEIGHT: 20px; fontsize: 9pt"
onchange=setBgColor(this.value); name=selbkcolor>
<OPTION
value=#FFFFFF selected>白色</OPTION>
<OPTION
value=#000000>黑色</OPTION>
<OPTION value=#FFCCFF>粉红</OPTION>
<OPTION value=#CCCCCC>灰色</OPTION>
<OPTION
value=#CCFFCC>绿色</OPTION>
<OPTION value=#99CCFF>蓝色</OPTION>
<OPTION value=#CCFFFF>青色</OPTION>
<OPTION
value=#FFCCCC>综色</OPTION>
</SELECT>
字号
<SELECT
style="WIDTH: 60px; HEIGHT: 20px; fontsize: 9pt"
onchange=setFontSize(this.value); name=selfontsize>
<OPTION
value=9pt selected>9 pt</OPTION>
<OPTION value=10pt>10 pt</OPTION>
<OPTION value=12pt>12 pt</OPTION>
<OPTION value=14pt>14 pt</OPTION>
<OPTION value=16pt>16 pt</OPTION>
<OPTION
value=19pt>19 pt</OPTION>
</SELECT>
</font></TD>
<TD class=zi width=85><font size="2"><a href="javascript:saveit();" onMouseOver="MM_showHideLayers('Layer1','','show')" onMouseOut="MM_showHideLayers('Layer1','','hide')"><img src="images/save.png" width="23" height="22" name="s" onMouseOver="MM_swapImage('s','','images/save2.png',1)" border="0" align="absbottom"></a>保存设置</font></TD>
<TD class=zi width=2 ><font size="2"> </font></TD>
<TD class=zi width=164><font size="2"> 人气指数:<font color="#FF0000">3511</font>
</font></TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
<TR vAlign=center align=left>
<TD bgColor=#BDCFF7 colSpan=2 height=370>
<TABLE height=360 cellSpacing=0 borderColorDark=#4275D6 cellPadding=5
width=640 align=center bgColor=#ffffff borderColorLight=#ffffff
border=1>
<TBODY>
<TR vAlign=top align=left>
<TD id=thetd style="FONT-SIZE: 10pt">
<div align="left" style="width: 626; height: 132">
<p align="left">
<table width="100%" border="0" cellspacing="0" cellpadding="8" class="brightblk">
<tr>
<td>
<span class="titleblk">linux的基本操作(下)</span><br>
<BLOCKQUOTE class="sumblk"><strong>摘要</strong><BR>
讲解如何对这个系统进行基本的操作(2002-08-15 17:48:00)</BLOCKQUOTE>
<hr size="4" noshade width="98%">
<strong>By <a href="mailto:wing@linuxaid.com.cn">Wing</a></strong>, 出处:<a href=http://www.linuxaid.com.cn>Linuxaid</a><br><br><span class="contentblk">
<p><b>3、文件系统与目录树</b></p>
<p> 在dos-windows体系中,每个磁盘或硬盘分区有独立的根目录,并且用唯一的驱动器标识符表示,如A:,C:等。</p>
<p> 而linux的文件系统则不一样,它采用了一种虚拟文件系统技术,使不同的磁盘和分区组合成一个整体。单个磁盘或硬盘分区构成单独的文件系统(可以是fat、NTFS等等格式的),有其各自的目录树结构。但是,在操作系统能够使用这些文件系统之前,必须通过称为“挂装”的操作将单独的文件系统附加到虚拟文件系统的某一个子目录上——也就是说这个子目录就是实际文件系统的根,通过访问这个子目录来访问该分区或磁盘。如此操作,最终可使所有的文件系统结合成一个无缝的统一整体,组织到一个大的树型目录结构中。该目录树的顶部是一个单独的根目录,名为root,用/表示。根目录下是一些标准的子目录和文件。</p>
<p> 在文件系统模型中,仍然体现了linux的设计哲学,即将不同的文件系统组合成一个有机的整体,进而为用户提供一致的文件系统结构。</p>
<p> 对大多数Linux发行版本而言,文件系统的目录树布局遵循FSSTND标准,这有利于编写或移植软件,同时也有利于进行系统管理和维护。</p>
<p> 完整的目录树可划分为小的部分,这些小部分又可以单独的存放在自己的磁盘或者分区上。这样相对稳定的部分和经常变化的部分可以单独放在不同的分区里,从而方便了备份和系统管理。目录树的主要部分有root(/)、/usr、/var、/home等等。下面是一个典型的linux目录结构如下:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
/ 根目录
/bin 存放必要的命令
/boot 存放内核以及启动所需的文件等
/dev 存放设备文件
/etc 存放系统的配置文件
/home 用户文件的主目录,用户数据存放在其主目录中
/lib 存放必要的运行库
/mnt 存放临时的映射文件系统,<br>我们常把软驱和光驱挂装在这里的floppy和cdrom子目录下。
/proc 存放存储进程和系统信息
/root 超级用户的主目录
/sbin 存放系统管理程序
/tmp 存放临时文件的目录
/usr 包含了一般不需要修改的应用程序,<br>命令程序文件、程序库、手册和其它文档。
/var 包含系统产生的经常变化的文件,<br>例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后<br>的手册页以及一些应用程序的数据文件等等。<br>建议单独的放在一个分区。
典型的/usr目录如下:
/X11R6 存放X window系统
/bin 存放增加的用户程序
/dict 存放字典
/doc 存放追加的文档
/etc 存放设置文件
/games 存放游戏和教学文件
/include 存放C开发工具的头文件
/info 存放GNU信息文件
/lib 存放库文件
/local 存放本地产生的增加的应用程序
/man 存放在线帮助文件
/sbin 存放增加的管理程序
/share 存放结构独立的数据
/src 存放程序的源代码
</code></pre></td></tr></table>
<p> 由于/usr中的文件不和特定的计算机相关,也不会在通常使用中修改,因此可以通过网络共享这个目录(文件系统),这样,当管理员安装了新的软件之后,所有共享这一文件系统的计算机均可以使用新的软件。</p>
<p><b>4、目录操作和文件操作</b></p>
<p> 在介绍文件的操作之前,我们先了解一下文件的类型。目录树包括以下文件类型:</p>
<p> a、普通文件:包括文档文件、数据文件、程序、shell脚本等我们常接触到的文件。</p>
<p> b、目录文件:目录文件包含着一个该目录下的文件和本身以及上一级的链表。这是由操作系统维护的文件。它至少包括两个记录,一个是它自身(“.”),一个是它的上一级目录(“..”)。注意,根目录的上一级目录还是它自身。</p>
<p> c、设备文件:和所有UNIX一样,linux把所有设备都作为一个文件来处理,包括IO设备。</p>
<p> d、进程通信文件:即所谓的先进先出文件,主要是为进程间通信用的。</p>
<p> 我们一般登入系统后,当前的工作目录都是自己的主目录,想看看主目录里有什么东东?你可以使用ls命令试试。输出就如同dir /w一样^_^。要查看隐含文件使用命令行:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> ls -a</code></pre></td></tr></table>
<p> 可以看见多了不少以点(“.”)开头的隐藏文件。如果还想进一步查看文件的详细信息,那就查看长格式的输出吧,使用</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> ls -l</code></pre></td></tr></table>
<p> 当然,我们完全可以组合使用多参数,有两种方法:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> ls -a -l 或者 ls -al</code></pre></td></tr></table>
<p> 都可以得到该目录下所有文件的详细列表,比dos下dir的输出还详细——只不过文件的名却在右边。如果文件太多,一屏显示不下怎么办呢?ls命令并没有提供dir的/p开关的功能,不过按照UNIX系统设计的积木原则,我们可以用命令的组合获得我们需要的任何功能。象这次我们可以使用输出重定向,使用通道,对于下面这个命令,你应该不会觉得别扭吧?</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> la -l | more </code></pre></td></tr></table>
<p> 这和dos下的管道一模一样嘛:),还不只这个,连改变当前目录的cd命令,也是和dos中的用法一样,看来dos还是没有完全抛弃UNIX的影响。</p>
<p> cd命令的用法和dos中相似,不同的是cd和后边的目录(包括代表上一级目录的..)之间必须有空格隔开。多出几次错误信息你就会记得这一点了,呵呵。记住:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>
cd.. ------wrong
cd .. or cd / ------right
</code></pre></td></tr></table>
<p> 查看当前的路径的命令是pwd,如前所说的,它是bash的内部命令,cd也是。它存在价值在于你不用时刻面对着一个可能非常长的路径,当然你觉得有必要,也可以通过对bash的适当配置使得它的提示符类似于dos模式。</p>
<p> 建立和删除的目录命令也很容易从字面上理解,建立目录使用mkdir,删除空目录用rmdir。注意,你建立目录、删除目录的操作,都需要相应的权限。</p>
<p> 要想做到dos下的deltree的功能,需要使用文件的删除命令rm的递归删除参数-r或-R。这个命令的基本格式是</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> rm [-option] filename</code></pre></td></tr></table>
<p> 例如要删除/tmp/newtemp所有文件和子目录,可以使用如下命令:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> rm -r /tmp/newtemp</code></pre></td></tr></table>
<p> 这样的话,系统会一个一个文件问你是否需要删除,如果你可以确信这个目录下的所有东西都没有保留的价值的话,你可以加上一个-f的参数,表示强制删除,不再询问,如:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> rm -rf /tmp/newtemp (还记得我们使用多个参数的两种方法么?)</code></pre></td></tr></table>
<p> 注意,在linux中没有类似undelete的命令,不要随意使用带-f、-r、-R参数的rm命令哦:)</p>
<p> 文件的拷贝使用cp命令,使用的格式如下:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> cp [-option] soursefile targetfile </code></pre></td></tr></table>
<p> 注意,和dos中的copy不同的是:</p>
<ul>
<li>soursefile和targetfile不能相同;</li>
<li>cp需要使用递归选项-r来完成带文件的目录的拷贝;</li>
<li>cp可以使用-u开关来保留文档的最新版本。当使用-u选项时,如果目标文件存在且最后修改时间比源文件晚,则不覆盖。</li>
</ul>
<p> 我们常用的还有重命名操作命令,或者说移动文件命令,mv,格式如下:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> mv [-option] source target</code></pre></td></tr></table>
<p> mv有个非常有用的选项 -b,表示给被覆盖的文件产生一个备份。</p>
<p> cat命令用于把所给的文件以所给顺序在标准输出上输出。格式如下:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> cat [-ption] [file]</code></pre></td></tr></table>
<p> 如果没有设置参数file,则把从标准输入中读入的文件从标准输出上输出。如果file以一个减号来代替,则cat仍然从标准输入上读入数据。例如:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> cat - file1 - >file2</code></pre></td></tr></table>
<p> 这个命令表示先从标准输入读入数据,直到输入结束字符Ctrl+d,接下来从文件file1中输入,接着又从键盘输入直到输入结束字符,把这些结构都输出到file2文件中。实际上做了个在file1前后均加了一段文字然后存成了file2文件的操作。</p>
<p> 用这个命令还可以把多个文件连接在一起。例如:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> cat *.txt > outall.txt</code></pre></td></tr></table>
<p> 表示把所有的txt后缀的文件按照字母顺序连接起来,然后再写到outall.txt文件里。</p>
<p> 如果[file]选项是二进制文件,而又不是把它输出到一个文件而是标准输出的话,由于终端可能要对不可打印字符进行处理,可能会出现乱码。可以使用-v选项来解决这个问题。这个选项把不可打印字符(从ASCII码的000到037的字符)用^和ASCII码从100到137的字符组合来表示。</p>
<p> 还有三个用来显示文件的命令,它们分别是head、tail、more。</p>
<p> head [-option] [file] 是用来显示文件的前面一部分的。可以使用-num选项来显示前num行,也可以使用选项-c num使head输出前num个字节。其它的使用和cat相似。</p>
<p> tail [-option] [file] 是和head对应的显示文件后一部分的命令。选项和head命令一样。</p>
<p> more命令就是前面我们曾经借助它进行分页显示的命令,它也可以直接用来分页显示文本文档。命令格式和前面几个命令一样。在显示完一页后,more会提示用户输入:如果输入空格键或是f,则显示下一页;如果输出n加空格键,则用来显示后面的n 行;回车键用来显示下一行。</p>
<p> 这几个命令都是网络管理比较常用的查看日志文件的工具,可以用man命令获得它们更详细的帮助。</p>
<p> 还有几个显示二进制文件的命令,例如od、mn和strings,你也可以通过man获得帮助。</p>
<p> 在linux中还可以为文件增加链接。例如目录的两个链接“.”和“..”。在目录中,每一对文件名与索引节点号称为一个链接(link)。同一个索引节点可以和多个文件名创建链接。实际上这种硬链接是直接创建了与文件(在这是目录文件)的索引节点(i-node)号相联系的链接。我们也可以为文件创造多个链接,这使用命令:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code> ln [-option] sourse [target]</code></pre></td></tr></table>
<p> 如果不使用target参数的话,则在当前目录中是创建一个同名的链接文件;如果用ln产生几个文件的连接,则target必须为一个目录。只有超级用户才能产生目录间的硬链接。</p>
<p> 这一个功能非常有用。除了我们可以在主目录方便访问我们经常访问的文件,而且我们可以为重要的文件或目录建立多个链接,提供“防删除”的功能,避免以为删除造成严重后果。这样做的原理是,如果一个文件(或目录)的索引节点有一个以上的链接,删除操作只能破坏其一,索引节点本身的其他链接仍然不受影响。当然,如果对只有一个链接的文件发出删除命令,索引节点、文件数据块与目录的连接都会被释放,文件也真正删除。</p>
<p> 上面的链接说的都是硬链接,和索引节点号直接相关的链接。我们知道,每一个文件系统(如一个硬盘分区)都有自己的索引节点数组,因此索引节点号只有在同一个文件系统中才是唯一的,这意味着,固定链接只能用在一个文件系统的内部。</p>
<p> 而符号链接(symbolic link,又常被称为软链接)则没有这个限制,它和windows系统中的快捷方式非常相似,它可以用在不同的文件系统之中。因此,在两个文件之间建立链接,如果要求保证可移植性,应尽量使用符号链接。可以使用 ln -s 来产生符号链接。</p>
<p><b>· 文件、目录的属性</b></p>
<p> 涉及到文件的属性,就不可避免的关联到用户管理,关于这个内容,请先参考专题五中的用户管理部分,再来阅读这一部分。linux下,每一个文件、每一个目录都必须有一个属主,并针对拥有文件的用户自己、用户所在组、其它所有帐号(组)分别设定读、写、执行三种权限。例如,我(假定是usergroup组的username帐户的拥有者)使用如下命令建立一个新的文件</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>touch mytestfile</code></pre></td></tr></table>
<p> 然后我们使用ls -l mytestfile这一命令来查看这个文件的权限状态(关于ls命令,可以前面已有错误,可以查阅本站的命令查询),可以得到如下的屏幕输出显示:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>-rw-rw-r-- 1 username usergroup 0 Feb 6 21:37 mytestfile</code></pre></td></tr></table>
<p> 输出分为7个部分,分别表示文件权限属性、硬连接个数、文件所有者帐户、文件所属组、文件大小、文件创建时间、文件名称。</p>
<p><b>· 使用chown命令修改文件的主人</b></p>
<p> 当你新建立一个文件的时候,文件的所有者当然就是你了。这一事实只有超级用户(比如说root)才可以通过chown命令改变(例如 chown otheruser mytestfile,把mytestfile文件的属主改为otheruser)。普通用户不能把自己的文件“送”给别人,不然你把有特殊目的的程序给了root怎么办?:)</p>
<p> chown命令的用法比较简单。这里我先假设你现在拥有超级用户权限,那么你就可以使用如下命令将一个文件“送给”username用户了:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>chown username /home/username/thefileisrootcreate.txt <br>(假定该文件是由root创建的)</code></pre></td></tr></table>
<p> 修改一个目录的所有者也是类似的:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>chown username /home/newboat</code></pre></td></tr></table>
<p> 当然,如果这个目录还有子目录及文件需要同时送给username,chown也是支持-R参数的:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>chown -R username /home/newboat</code></pre></td></tr></table>
<p> 如果你同时想修改文件/目录所属的组的话,你可以使用以下命令方便的达到目的:</p>
<table border='1' cellspacing='0' cellpadding='5' width='100%' bgcolor='#CCCCCC'><tr><td><pre><code>chown -R username.othergroup /home/newboat</code></pre></td></tr></table>
<p> 这样,不但文件主人得到了修改,文件所属的组也变成了othergroup</p>
<p><b>· 修改文件的组属性</b></p>
<p> 文件所属组你倒是可以改变,前提是:</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -