2008年7月21日星期一

Linux特有的命令

Linux特有的命令如表2-3所示。

  表2-3 Linux特有命令说明

常用命令
简要中文说明
程序所在目录
备 注

df
检查硬盘所剩(所用)空间
/bin


du
检查目录所用的空间
/usr/bin


pwd
显示目前所在目录
/bin


shutdown
整个系统关机
/sbin
限系统

管理者

reboot
重启系统
/sbin
限系统

管理者

login
用户登录
/bin


logout
用户注销
Shell 内部提供


mount
挂载某一装置成为某个目录名称
/bin


umount
取消挂载的装置
/bin


man
显示参考手册信息
/usr/bin


lpr
显示文件
/usr/bin


echo
在屏幕上显示某一信息
/bin


cal
显示万年历
/usr/bin



  df -[选项] [文件名称]

  检查硬盘所剩(所用)空间

  检查硬盘所剩的空间时,原本在DOS中是不需要这个类似命令的。因为在DOS中只要进行DIR列示文件,最后就一定会报告硬盘用了多少空间,还剩多少空间。

  但是 UNIX 上的 ls 命令虽然大略相等于 DOS 的 DIR,它却不会报告剩下的空间。所以,ls 还没有做完的事,就让 df 来帮它做完。因此我们从 DOS 跨入 Linux 时,得多学这个命令。

  df 既然是报告磁盘的空间,所以在哪一个目录执行都没有差别的。

  如图2-8所示为检查硬盘空间的报告,第一行是本身驱动器,用了28%。第二行是光盘机,当然没有剩下空间了。第三行则是一台“挂载”上去的驱动器,挂在“/test”目录上。


图2-8 检查硬盘空间

  它的常用选项有:

  (注:下面这三个选项都仅限于 Linux 系统使用,其他 UNIX 家族未必提供)

  l -H

  l -h

  这两个选项我们一并来看,如图2-9所示。


图2-9 -H与-h选项的作用

  它们会用M或G数量级显示空间,比较容易阅读。但是为什么 -H 和 -h 选项列出的大小不一样呢?

  那是因为 -H 是用我们社会上习惯的“差不多”算法,直接除以1000。

  而 -h 选项则是用学校等级考试的详细算法,除以1024算出来的精确答案。

  l -T 它会一并列出这些驱动器的文件系统,如图2-10所示。


图2-10 -T选项的作用

  我们可以看到,本身Linux驱动器的文件系统是 ext2,光盘机的文件系统是 iso 9660 的统一规格,而挂载上来的 /dev/hda6 驱动器文件系统是 vfat ,表示是 Windows 的驱动器。

  练习:

  (1)请练习让df列出驱动器的文件系统,而且以1024的正式计算单位列出使用和剩余空间。

  (2)它的命令格式是在选项后面还可以接文件名称。请您练习一下,如果我们在后面接一个挂载上来的驱动器其中的一个文件名称的话,结果会如何?
du -[选项] [文件名称]

  检查目录所用的空间

  检查一个目录所占用的空间,其实这是一个顶重要且常用的命令,尤其当我们想把整个目录复制或搬移到别处时。

  这部分DOS是很弱,没法达成任务。所以我们在 Windows 95/98 中,常用“文件”/“内容”来查看。现在在 UNIX 中直接有命令可以查看,如图2-11所示。


图2-11 du命令

  结果似乎不太合乎想像了,它列出来一大堆的内容,把该目录下所有的子目录内容也全列出来了!


图2-12 du命令结果

  它们前面所列出来的数字到底是什么意思呢?这时我们应该要学几个选项了:

  (注:下面这3个选项都仅限于 Linux 系统使用,其他 UNIX 家族未必提供。)

  -H

  -h 这两个选项和df命令的同名选项意思一样,我们一并说明:

  它们都会用K, M或G的数量级进行显示,比较容易阅读。但是:

  -H 是用我们社会上习惯的“差不多”算法,直接除以1000。

  -h 选项则是用学校等级考试的详细算法,除以1024算出来的精确答案。

  -k 一律以K进行显示(精确的用1024字节计算)。

  -m 一律以M进行显示(精确的用1048576字节计算)。

  -s

  但是只用 -H 或 -h 选项列出来的资料还是太罗嗦了,其实绝大部分的情况,我们都只需要知道整个目录占用多少空间就行了。

  所以,我们可以说,最常用的选项应该就是 -hs 了。值得背下来!

  练习:

  (1)请练习查看您的几个重要目录/bin, /etc, /root, /usr,各占多少大小?

  (2)我们有没有办法查出在 /usr 目录中的子目录,占最大的是哪一个,第二大是哪一个?……(注:du 命令本身没有这个选项。)

pwd

  显示目前所在目录为何

  有时我们到底位于哪一个目录里面,并不是十分的清楚。虽然前面提示符号可能有一点提示,但是不完全,例如,提示符号显示 bin 的话,我们究竟是在 /bin中,还是在/usr/bin中?或者在/usr/X11R6/bin中?

  在DOS系统中,类似的情况可以输入一个不接任何目录名称的CD命令,它就会显示出来,可是 UNIX 的cd命令不吃这一套!

  在UNIX中,这个任务就转交给 pwd 命令了。

  这个命令没有什么选项,后面也不用接什么参数。

  练习:

  (1)查看您现在位于什么目录中。

  (2)UNIX的cd命令,后面不接任何目录名称,既然不会像 DOS 一样显示现行的目录名称,那么它到底会怎么样呢?

  shutdown -[选项] [时间] [信息]

  整个系统关机

  UNIX 是一个多人多工的系统。因此,很多场所,当快接近下班或者系统管理员觉得系统有些问题,需要重新整理一下的时候,“喂!快要 Shutdown 喽!”,“哎,赶快存文件啊,系统要 Shutdown 了!”的声音便会此起彼伏,不绝于耳。

  当然,这么事关重大的命令,并不是每个人都可以执行的,只限以 root 登录的超级用户有权执行它。不然人人没事都冷不防来个 shutdown,岂不是很可怕?

  那么,本来这个命令应该摆在下一节,多人多工的命令才讲解,可是,如果您现在是单人单工在使用 Linux ,就不需要 shutdown 了吗?一样要。所以,这应该不算一个多人多工才会用到的命令。

  当您在单人单工使用时,而且您自己就是超级用户时,下面这行命令和选项,您可以当做关机的固定命令:

  shutdown -h now

  因为它虽然也可以送一些警告信息去每一部终端机,通知大家,但是您现在只有一个人使用,送信息给谁?

  它也可以等到固定时刻,或多少分钟以后再关机(系统管理员先下班,终端操作员留着加班时就用得到),但是您现在只有一个人,您等谁?您休息了还不让机器休息,还让它运作2小时后再关机吗?

  所以,不用怀疑,背下来吧!

  但是如果是多人使用的情况,下面有些选项就用得着了,我们直接举例:

  shutdown -h +30

  30分钟以后关机(-h 是 Halt,系统停止的意思)。

  shutdown -h 12:10

  12时10分的时候会关机。

  shutdown -h +0

  零分钟以后关机,就是“now”的意思,您现在知道“shutdown -h now”是什么意思了吧!

  shutdown -h +10 'Everybody, save your data now!'

  系统10分钟后关机,并且送一行 “Everybody, save your data now'”信息给大家。大家不但会收到此信息,还会收到系统的主动通知:The system is going DOWN for system halt in 10 minutes!!

  shutdown –c

  在还没真正关机之前,可以执行这行命令取消您原来设置的关机动作。

  shutdown -r now

  现在就关机,并且重新开机(而不是系统停止)。

  shutdown -k +10 'Everybody, the system will shutdown!!'

  这个 k 选项很无聊也很有趣,只是警告大家,而不真的做关机的动作。

  练习:

  (1)取消关机动作时,系统好像不会主动通知大家您已经取消了,所以请您自己加上一行信息,通知大家关机计划已经取消。

  (2)虽然 shutdown 命令不允许 root 超级用户以外的人下达,但是用户跑到您的主控台上,直接按下【Ctrl+Alt+Del】键怎么办?

 reboot -[选项]

  重启系统

  如果您关机的目的只是要重新再开机,那么倒不如用 reboot 命令一次完成。当然,它也限于超级用户,才有权执行它。

  它的其他选项有:

  l -f 正常而言,reboot之前都会先呼叫 shutdown 进行正常关机,再重新开机,加了这个选项的话,就不经过 shutdown 的动作了,会直接重开机。当然,除非有特殊必要,否则最好不要这么做。

  l -i 重新启动前,先关闭所有的网络接口。

  练习:

  (1)您有办法让系统在10分钟之后才关机,然后重新开机吗?

  (2)重新开机之前,您有办法先送个信息给大家吗?

  login

  用户登录

  UNIX 是多人使用的系统,login 登录系统的时候,输入您的用户名称,决定了您在这套系统上有哪些文件或目录可以存取。因为多人使用的系统,总不能让您存取所有的人文件吧?用户名称是由超级用户用 adduser 命令帮您设置的。如果没有这个用户名称,什么都别谈。所以一个系统,到底有多少人可以使用,也就这样确定了。另外,用户登录之后,您会有一个自己的用户主目录(Home Directory),方便存放自己的资料。通常这个目录会位于 /home 之下,例如您是 jacky,那么您的用户主目录就在 /home/jacky ,mary 的话则在 /home/mary,各人用各人的。如果您是超级用户,您的用户主目录就是 /root ,跟别人不一样。

  练习:

  (1)其实我们可以在 login 后面直接接上用户的名称登录。例如 login jacky,试试看。

  logout

  用户注销

  注销的目的在于防止下一位坐在您终端机前面的用户继续用您的权限去存取文件。

  所以长久离开座位以及下班之前,请记得输入logout注销。请下一位用户再自行用他的账号和密码进行登录。

 mount [-t 格式] [设备] [目录]

  挂载某一设备成为某个目录名称

  mount 也是一个您非会不可的命令。不然您不但无法取得原先存在 Windows 硬盘的资料,就连软驱、光驱都通通形同废物!

  前面提过UNIX(包含 Linux)的观念,都把软驱、硬盘、光驱视同一个目录来存取。但是在您没有用 mount 命令把这些设备挂载在某一个目录上之前,这些设备是无法存取的。换言之,即使有目录也没有用。

  请看下例:

  我们假设已经创建了一个名为 /mnt/cdrom 的目录。昨天您也看到有人在这个目录存取光盘上的资料。但是我们现在用 ls 去查看它,它仍然是空无一物的。(倒还不会不能列出,只是空无资料,因为它现在不过是一个普通的子目录)我们用 mount 命令把光驱(当然要已经放好光盘了)挂载到这个目录来。典型的命令如:

  mount /dev/hdd /mnt/cdrom

  但是您的光驱究竟是 /dev/hdd, /dev/hdc,或者/dev/hdb,您要自行观察并变化,不能硬抄这行命令。

  现在我们再下达与刚才一样的列示命令,却看得到东西了。因为现在 /mnt/cdrom 这个子目录已经变成整个光驱了!

  所以,当我们想要切换进光盘的 /Thiz 目录时,命令必须为:

  cd /mnt/cdrom/Thiz

  或者,先切换进光盘

  cd /mnt/cdrom

  然后再

  cd Thiz

  注意,Thiz前没有斜线了。如果您对DOS 熟悉的话,可能经常会弄错,因为对DOS 而言,Thiz是光驱的第一层目录,前面可以加斜线,这点连我们也经常出错。

  挂载软驱也是一样的方法,比较简单(假设您已经建好了 /floppy这个空目录):

  mount /dev/fd0 /floppy

  所以,您在事前就应该未雨绸缪,先建好一些名为 /cdrom, /floppy …等目录备用。如果您觉得这些目录散乱在主目录下显然很乱的话,也有人习惯都把它们藏在 /mnt目录下面,变成 /mnt/cdrom, /mnt/floppy …只是每次存取时要多输入几个字,这些都可由您自由决定。

  前述的情形是系统自动判断挂载进来的磁盘格式。如果系统判断不出来的话,您就必须要自行指定格式,如:

  mount -t ext2 /dev/fd0 /floppy

  指定它是一片 Liunx 格式的软盘。

  mount -t msdos /dev/fd0 /floppy

  指定它是一片 MS-DOS 格式的软盘。

  所以 -t 选项之后接着的格式常用的有 ext2, msdos, iso9660、vfat等。

  练习:

  (1)请用 Windows 去网络上下载一个 Windows用的桌面图片回来,给 Linux 当做 X Window 的桌面图案。

  (2)如果您 mount 了一台光驱,然后按按光驱的跳出钮,会怎么样?

 mount [-t 格式] [设备] [目录]

  挂载某一设备成为某个目录名称

  mount 也是一个您非会不可的命令。不然您不但无法取得原先存在 Windows 硬盘的资料,就连软驱、光驱都通通形同废物!

  前面提过UNIX(包含 Linux)的观念,都把软驱、硬盘、光驱视同一个目录来存取。但是在您没有用 mount 命令把这些设备挂载在某一个目录上之前,这些设备是无法存取的。换言之,即使有目录也没有用。

  请看下例:

  我们假设已经创建了一个名为 /mnt/cdrom 的目录。昨天您也看到有人在这个目录存取光盘上的资料。但是我们现在用 ls 去查看它,它仍然是空无一物的。(倒还不会不能列出,只是空无资料,因为它现在不过是一个普通的子目录)我们用 mount 命令把光驱(当然要已经放好光盘了)挂载到这个目录来。典型的命令如:

  mount /dev/hdd /mnt/cdrom

  但是您的光驱究竟是 /dev/hdd, /dev/hdc,或者/dev/hdb,您要自行观察并变化,不能硬抄这行命令。

  现在我们再下达与刚才一样的列示命令,却看得到东西了。因为现在 /mnt/cdrom 这个子目录已经变成整个光驱了!

  所以,当我们想要切换进光盘的 /Thiz 目录时,命令必须为:

  cd /mnt/cdrom/Thiz

  或者,先切换进光盘

  cd /mnt/cdrom

  然后再

  cd Thiz

  注意,Thiz前没有斜线了。如果您对DOS 熟悉的话,可能经常会弄错,因为对DOS 而言,Thiz是光驱的第一层目录,前面可以加斜线,这点连我们也经常出错。

  挂载软驱也是一样的方法,比较简单(假设您已经建好了 /floppy这个空目录):

  mount /dev/fd0 /floppy

  所以,您在事前就应该未雨绸缪,先建好一些名为 /cdrom, /floppy …等目录备用。如果您觉得这些目录散乱在主目录下显然很乱的话,也有人习惯都把它们藏在 /mnt目录下面,变成 /mnt/cdrom, /mnt/floppy …只是每次存取时要多输入几个字,这些都可由您自由决定。

  前述的情形是系统自动判断挂载进来的磁盘格式。如果系统判断不出来的话,您就必须要自行指定格式,如:

  mount -t ext2 /dev/fd0 /floppy

  指定它是一片 Liunx 格式的软盘。

  mount -t msdos /dev/fd0 /floppy

  指定它是一片 MS-DOS 格式的软盘。

  所以 -t 选项之后接着的格式常用的有 ext2, msdos, iso9660、vfat等。

  练习:

  (1)请用 Windows 去网络上下载一个 Windows用的桌面图片回来,给 Linux 当做 X Window 的桌面图案。

  (2)如果您 mount 了一台光驱,然后按按光驱的跳出钮,会怎么样?




  umount [目录名称]

  取消挂载的装置

  有“挂载”当然就有“取消挂载”了。如果您把一台光驱用 mount 命令挂载上去了之后,与 DOS 或者 Windows 不一样的是,它按跳出钮也跳不出来了!

  不要以为是光驱坏掉了。赶快取消挂载吧!

  如果您当初是这样挂上去的:

  mount -t iso9660 /dev/hdc /mnt/cdrom

  那么现在就这样取消:

  umount /mnt/cdrom

  再举软盘的例子:

  mount /dev/fd0 /floppy

  umount /floppy

  有没有可能它不让您取消挂载呢?有!很多资料都没有提到这一点。

  如果您现在正在光盘的某一个目录中,例如cd /mnt/cdrom/chinese,那么您即使下达:

  umount /mnt/cdrom

  它也不让您取消。如果正有某一个图形接口的文件总管正在看这个目录也不行。

  练习:

  (1)可以把一台驱动器或光驱,不取消 mount再挂载到另一个目录吗?

  (2)因为软驱的跳出钮是机械式的,所以即使不取消 mount,它仍可以跳出。那么系统再存取该挂载的目录时会如何?

man [命令名称]

  显示参考手册信息

  其实您英文要是够好的话,可以不用买 UNIX 的命令参考手册,因为UNIX 系统都有线上参考手册。譬如您不会date这个命令的用法,那么您只要下达

  man date

  就会把 date 的用法详细地告诉您,保证比市面上任何一本手册都详细。

  如果您对 ls 的 23 个选项有兴趣,就可以这样把它查出来。

  GNOME 的求助说明之中,也把这个 man 手册给视窗化了,您可以用鼠标去选择您想要知道的命令细节。

  练习:

  (1)请用 man 命令查看shutdown -k是什么意思?

  (2)如果对 man 命令本身有疑问怎么办?

  lpr [文件名]

  显示文件

  lpr 是一个简单的背景显示程序。所谓简单,是因为它有时连个简单的文字文件都印不好。虽然它有高达21个选项,却没一个派得上用场。

  简单的文字文件会印成什么样子呢?举个例来说,我们有这样的资料:

  Pineapple

  Banana

  Orange

  Pear

  它印出来可能是这样子:

  Pineapple

  Banana

  Orange

  Pear

  不过文字文件的问题不能完全怪它。这是 UNIX 和 DOS 对于文字文件“换行”的规格和解释不一样的关系。

  如果您想知道细节的话(不了解细节也没关系),实际上,DOS 在每行结尾按【Enter】的时候,事实上是进去了两个字节,一个是 LF(跳行),一个是 CR(回车)。所以一个30行、每行有5个字母的文字文件,它有300个实际的字母和60个行尾的字节,共会有360字节。而 UNIX 的文字文件,每行尾只放一个 LF(跳行)字节,同样的文件,它会只有330字节。

  正是由于这每行少了个回车字节,让它的文字文件显示起来的时候,就会变成如同阶梯一般。如果您用 Windows 的记事本打开 UNIX 的文字文件时,您会发觉它甚至不分行了!

  练习:

  请把 /etc 中的lilo.conf设置文件用 lpr 程序印一份出来参考。

 echo [信息或环境变量]

  显示某一信息于屏幕上

  如果您下达:

  echo ASDF

  它就会在屏幕上出现

  ASDF

  echo 就是这样一个命令,能把您的信息显示出来。

  这样的简单动作看似没什么用,但是如果您撰写一个 script 脚本的话,可能会希望它在执行到某一个步骤时,显示一个信息给用户,那么它就派得上用场了。

  不过不撰写脚本也还是用得着。例如,有些时候我们想查某些环境变量:

  echo $PATH

  会显示系统到什么路径去查找可执进程序。

  echo $USER

  会显示现在的用户是谁。

  echo $HOME

  会显示用户的主目录(Home directory) 在哪里。

  echo $SHELL

  会显示现在使用的命令解释器(Shell)是哪一种。

  练习:

  (1)请查一下 $BROWSER环境变量的设置是什么?

  (2)如果我们要建一个内容只有GNOME的文字文件,可不可以不靠文书编辑器,只靠 echo 命令就做出来?

 cal [-选项] [月份[年份]]

  显示万年历

  cal 是一个小巧又实用的万年历命令。如简单输入:

  cal

  就会出现这个月的月历。如图2-13所示。


图2-13 显示本月月历

  如果您要出现别的月份月历的话,可以如图2-14执行命令。


图2-14 显示别月的月历

  您不能只打 07 ,但是可以只打 1999,它会出现整年的年历,如图2-15所示。


图2-15 全年月历

  如果您连1999也懒得打,那可以加一个 -y 选项,它就印出今年的年历

  cal -y

  练习:

  (1)如果后面只接月份,到底会怎么样?

  (2)如果您加个选项 -j ,它会出现什么?猜猜看是什么意思?

  

没有评论: