皇家方舟

新手应该掌握的Linux命令(转)

很多新手在刚开始接触Linux时,往往由于面临的命令太多而无从下手。下面我将向大家介绍一些作为新手应该掌握的命令,这些命令是日常使用Linux时经常会用到的。它们主要功能是实现对文件和目录的操作。当然,Linux发展到今天,很多功能已经可以在可视化的界面中来完成。不过在很多情况下,有些命令还是非常有用的,它可以提高效率,并且可以加深对Linux系统的了解。

本文主要介绍在Linux下如何创建目录、以不同的方式进行显示,以及如何拷贝和移动目录。

文件和目录的处理
文件和目录的处理是任何操作系统命令中最基本的内容,也是使用电脑最常用到的功能。为了简单起见,我只介绍其可以实现的基本功能,读者可以在掌握这些基本用法之后再对其它用法进行深入研究。

mkdir 创建一个目录。这个命令的基本格式是“mkdir 目录名称”。比如,可以使用命令“mkdir mydir”在当前目录下创建一个名为mydir的目录。在进行目录创建时,可以设置目录的权限。此时使用的参数是“-m”,假设要让创建的mydir让所有人都有rwx(即读、写、执行的权限),那么可以使用以下命令:

$ mkdir -m 777 mydir

这时如果使用带参数-l的ls命令显示(稍后我将介绍),就会发现mydir目录的权限情况。如下所示:

$ ls -ltotal 209......drwxrwxrwx  2 root   root     4096 2月 16 21:37 mydir......

ls 列出目录内容。如果不带任何参数,ls会显示出当前目录下的所有文件(除了隐藏文件)、符号链接和子目录。不同的文件类型、目录和链接会使用不同的颜色来表示。比如,一般文件是红色的,可执行文件是红色的,压缩文件是暗红色的,图像文件是粉红色的,目录是蓝色的,符号链接是加粗的黑色。

这个命令有很多参数,比如:“l”、“a”、“F”,命令格式可以是ls -l、ls -a和ls -F,也可以将它们结合成ls -laF。ls -l会使用详细的格式列表将权限标示、硬链接数目、所有者与组名称、文件或目录大小及改动时间一并列出。如下所示是在我的机器的根目录下使用ls -alF的显示情况:

$ ls -laFtotal 233drwxr-xr-x  22 root   root     4096 2月 16 21:37 ./drwxr-xr-x  22 root   root     4096 2月 16 21:37 ../-rw-r--r--  1 root   root      0 2月 16 21:22 .autofsckdrwxr-xr-x  2 root   root     4096 1月 4 18:39 bin/......

cd 可以实现不同目录之间的切换,但前提是使用该命令的用户必须有足够的权限对相应目录进行操作。下面的命令将从当前目录切换至mydir目录:

$ cd /mydir

如果不给命令加任何参数,那么就会从当前目录切换至用户专属目录。比如如果是root用户,那么执行完cd命令后,当前目录就是/root,如下所示:

[root@linuxserver /]# cd[root@linuxserver root]#

cp 用于复制文件或目录。其基本语法是:“cp 源文件或者目录 目标文件或者目录”。例如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面所指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。这一命令中最常用的参数是-R,该参数会对指定目录下的所有文件及子目录一起进行复制。

mv 移动或者更改现有的文件或者目录。其基本语法是:“mv 源文件或者 目标文件或目录”。这个命令和cp命令类似,不同的是当文件出现在目标位置时,源文件就会被删除。

rm 删除文件或者目录。其基本语法是:“rm 源文件或者目录”。该命令和DOS里的del命令类似,所不同的是在Linux下删除的文件不能进行恢复操作(这是基于安全性的考虑)。这也就意味着在Linux中没有undelete、unrm或者与之类似的命令。因此,在使用该命令时必须要非常小心。该命令有一个和cp命令类似的-R(或者-r)参数,使用它可以对指定目录的所有文件和子目录一起进行处理。否在,在不加任何参数所情况下,rm命令只会删除文件。比如命令“#rm -r *”将会删除当前目录中所有的文件和子目录。

rmdir 用于删除目录。其基本语法是:“rmdir 目录”。需要说明的是,该命令只能删除空目录,如果目录为非空,则会出现错误信息。

ln -s 创建一个符号链接。创建符号链接是一个非常实用的功能。假设你有一些目录或者文件需要频繁使用,但由于Linux的文件和目录结构的原因,它们都不在主目录之下。比如,Apache Web服务器位于系统的/usr/local/httpd/htdocs。并且,你并不想每次都要从主目录进入这样一个长的路径之中(在实际中,这个路径也非常不容易记忆)。为了解决这个问题,可以在主目录中创建一个符号链接(也称之为软链接),这样在需要进入该目录时,只需进入这个链接即可。比如,为了能够使主目录下的webroot访问Web服务器(/usr/local/httpd/htdocs)的文档,在主目录下可以使用以下命令:

$ln -s /usr/local/httpd/htdocs webroot

这时如果浏览主目录,就会发现一个类似以下内容的栏目:

lrwxrwxrwx 1 User Gruppe 35 Jul 16 14:48 webroot →/usr/local/httpd/htdocs/

这时如果使用命令cd webroot进入目录,就会发现你的位置在/usr/local/httpd/htdocs/。

需要指出的是,如果不加任何参数,ln表示的是产生硬链接,这时就要求源文件或源目录必须已经存在。不过这一功能并不常用。

工作站和服务器或服务器之间进行拷贝
scp 安全拷贝。在Linux下有一些命令可以实现安全拷贝,主要用于不同的计算机之间拷贝重要的数据。这在服务器领域尤为有用,特别是当所访问的服务器是连接在Internet之上,并且可能遭受来自多方攻击的情况下。一般情况下,在访问这些服务器时,人们通常采用某一FTP协议。因为SCP具有相当的安全性,因此在更新自己的主页时,可以使用SCP来代替FTP。现在假设名字为Bob,要访问一个名为www.bobman.de的服务器,想把本地机上/home/webpages/pictures目录下的所有文件拷贝至Web服务器上的/htdocs/bobby/images之下。为了做到这一点,先在本地机上切换目录:

$ cd ~/webpages/pictures

然后输入:

$ scp ./* Bob@www.bobman.de:/htdocs/bobby/images

上面的./*指的是当前目录下的所有文件,*是Linux下的通配符,相当于DOS下的*.*。此外,SCP还可以在同一台计算机的不同用户间进行文件拷贝。

所有者和权限
chown 变更文件、目录的所有者或所属组。在Unix系统家族中,文件或目录权限的控制以所有者及所属组来管理。你可以使用chown指令去变更文件与目录的所有者或所属组。需要注意的是,要执行该命令,必须要以root身份登录。该命令的语法非常简单,并且,当要对某一目录下的所有文件和子目录进行处理时,使用的仍然是-R参数。假设在/usr/local/目录下创建了一个数据文件,并且想以普通用户的身份使用它而不是root身份。然而,由于是以root身份创建的文件,所以以普通用户的身份对该文件只有读的权限,因为该文件属于root和root组成员。如果要把该文件的所有者更改为属于user组的zhang,那么可以使用以下的命令:

$chown zhang.user /usr/local/myfile

如果要更改tmp目录下所有文件和子目录的所有者及所属组,可以使用以下命令:

$chown -R zhang.user tmp

chmod 可以变更文件或目录的权限。在Linux中,文件或目录权限的控制分别以读取、写入、执行三种一般权限来区分,另有三种特殊权限可供运用,再搭配所有者与所属组来管理每个文件及目录的权限范围。该命令的设置方式有文字和数字两种。需要注意的是,符号链接的权限无法变更,如果对符号链接修改权限,其改变会作用在被链接的原始文件。

和上述介绍的命令相比,这个命令要复杂得多。但是,对于Linux来说它却非常重要。由于该命令涉及内容较多,限于篇幅此处就不详细介绍,仅举数例让初学者有一直观的了解,详情请查阅相关资料。

把文件myfile读取和写入的权限向所有用户开放(使用字符方式):

$chmod ugo=rw myfile

取消组成员执行myfile的权限:

$chmod g-x myfile

增加所属组执行myfile文件的权限:

$chmod g+x myfile

中止任务
在使用Windows的时候,大家一定遇到过类似于这样的问题:一个程序崩溃并且处于死锁的状态。在Linux中,这种情况也会发生。不过和Windows不同的是,在Linux中遇到这种情况时一般不用重新启动计算机,只需要中止(或者说是关闭)这个有问题的程序即可。有两个命令可以处理这种情况,它们是killall和kill。

killall 当处于X-Window界面时,所有的程序(除了崩溃的程序之外)一般都已经正常启动了。这就是说,可以打开一个控制台窗口,在那里中止有问题的程序。比如,如果Netscape程序出现了锁死的情况,可以使用以下命令来中止所有包含有Netscape的程序:

$killall netscape

kill 与和killall所实现的功能相同,不同之处是该命令使用的是程序的编号,即PID(进程标识符)。这个编号可以通过ps命令来查看,比如要想查看Netscape进程的编号可以显示出所有进程,然后逐个查找,当然最好的办法是使用grep进行过滤,完整的命令如下:

$ps wuxwww | grep netscape

这时得到的结果可能如下所示:
hansi 11779 0.0 5.1 22284 13120 ? S 11:58 0:01 /opt/netscape/netscapehansi 11968 0.0 0.2 1676 708 pts/0 S 12:53 0:00 grep netscape

上面得到的结果第一列显示的是启动该进程的人,第二列即是PID。上面的命令显示了两个进程,这是因为grep查找字符串“netscape”,而grep命令本身也被分配给了一个PID。这时要中止这个进程,可以使用以下命令:

$kill 11779

在有些时候,如果使用上述命令没法终止程序的话,可使用以下命令强制终止:

$kill -s 9 11779

“历史”和自动的功能
最后还要介绍两个可以让命令行工作模式变得更加轻松的功能,其中的“历史”功能在DOS环境中大家可能已经非常熟悉了。在DOS中,必须要激活doskey函数来获取输入的命令,并且通过上下箭头键来选择输入过的命令。Linux中也有这个功能,只需按方向键就可以选择刚刚使用过的命令。大多数Linux发行版中,储存的命令数可达500个之多。

此外,命令和路径的自动填充也是一个非常有用的功能。具体方法是输入第一个字母后按下Tab键,然后让Shell自动查找命令或者目录。这个功能对于处理很长的路径时尤为有用,因为只需要输入前几个字母,Shell就会帮助找到后面的内容。该功能对于那些难于记忆的程序也非常有用。下面是使用该功能的一些情况:

[root@linuxserver harddisk]# moumount mount.smb mount.smbfs mouseconfig[root@linuxserver harddisk]# cDisplay all 113 possibilities? (y or n)c2ph     checkXML     column......cdda2wav     civserver-wrapper    csh—More—

上面命令中,输入几个字母后按Tab键就会显示上述的内容,这样就可以找到一些不熟悉的命令或者目录。



posted on 2006-09-02 09:54 阿辉 阅读(236) 评论(0)  编辑  收藏 所属分类: linux


只有注册用户登录后才能发表评论。


网站导航:
 

My Links

Blog Stats

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜