Linux从入门到精通(续4)
"/usr"目录下比较重要的部分有:
/usr/X11R6 X-WINDOWS系统(version 11, release 6)
/usr/X11 同/usr/X11R6 (/usr/X11R6的符号连接)
/usr/X11R6/bin 大量的小X-WINDOWS应用程序 (也可能是一些在其它子目录下大执行文件的符号连接)。
/usr/doc LINUX的文档资料(在更新的系统中,这个目录移到/usr/share/doc)。
/usr/share 独立与你计算机结构的数据,譬如,字典中的词。
/usr/bin和/usr/sbin 类似与"/"根目录下对应的目录(/bin和/sbin),但不用于基本的启动(譬如,在紧急维护中)。大多数命令在这个目录下。
/usr/local 本地管理员安装的应用程序(也可能每个应用程序有单独的子目录)。在"main"安装后,这个目录可能是空的。这个目录下的内容在重安装或升级操作系统后应该存在。
/usr/local/bin 可能是用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号连接。
需要理解的是:所有目录出现在单一的文件目录树下,即使这些目录在不同的分区,物理驱动器(包括软驱),或者甚至分布在网络上。所以,在LINUX下没有类似在DOS下的驱动符。在DOS或WINDOWS下的驱动符,在LINUX下以一个装载位置下的子目录的形式出现。
大多数的LINUX发行版本,目录系统很完善并且标准(Linux Standard Base发布了微小的区别)。LINUX目录系统和典型的商业UNIX目录系统完全相似。
总结来说:
· 用户应该将文件存在/home/user_login_name目录下(及其子目录下)。
· 本地管理员大多数情况下将额外的软件安装在/usr/local目录下并符号连接在/usr/local/bin下的主执行程序。
· 系统的所有设置在/etc目录下。
· 不要修改根目录("/")或/usr目录下的任何内容,除非真的清楚要做什么。这些目录最好和LINUX发布时保持一致。
· 大多数工具和应用程序安装在目录:/bin, /usr/sbin, /sbin, /usr/x11/bin,/usr/local/bin。
· 所有的文件在单一的目录树下。没有所谓的"驱动符"。
-----------更多关于/proc目录(仅为真正好奇的读者)-------------
/proc"虚拟"文件系统目录是一个实时的居留内存的文件系统,用于监视操作系统内核和在计算机上运行的进程的状态。/proc目录是完全虚拟的,即它不写入任何特殊的磁盘或其它永久的媒体,它仅居留于计算机的内存,并且它是不断地更新以反映系统的变化。/proc目录的大小总是0,最后的日期总是当前日期。手工改变/proc目录下文件的内容可能会改变系统设置。许多LINUX使用工具利用/proc目录作为信息资源,如,dmesg, ps, top等。
/proc目录的内容:
/proc/cpuinfo 关于处理器的信息,如类型、厂家、型号和性能等。
/proc/devices 当前运行内核所配置的所有设备清单。
/proc/dma 当前正在使用的DMA通道。
/proc/filesystems 当前运行内核所配置的文件系统。
/proc/interrupts 正在使用的中断,和曾经有多少个中断。
/proc/ioports 当前正在使用的I/O端口。
举例,使用下面的命令能读出系统的CPU信息:
cat /proc/cpuinfo
3.1.3 执行一个程序
在命令行输入可执行程序的文件名但是程序不能运行?有三种可能性:
第一种可能性:
没有输入正确的文件名。注意:Linux 文件名是区分大小写的!举个例子,输入"Pico"或者"PICO"并不能启动pico 编辑器程序。
第二种可能性:
程序不在缺省路径PATH下?在Linux 和其他的Unix 下,可执行程序必须在你的PATH 下面你才能够运行。如果程序所在的目录不在缺省路径下,你可以进入到程序所在的目录:
cd the_program_directory (the_program_directory 是程序所在的目录名)
./program_name (program_name 是程序的文件名)
或者你可以输入程序完整的路径名如下:
/the_program_directory/./program_name
注意,必须在程序名前面加上点"."和斜杠"/"才能够正确运行。这是Linux 的另外一个安全特性,可以使"特洛伊木马程序"更难于入侵。点"."指的是当前目录,斜杠"/"是文件和目录之间的间隔符(DOS 用的是反斜杠"\")。
可以用一下命令来检查一下缺省路径:
echo $PATH
如果忘记了可执行程序的文件放在哪一个目录下面了,可以用以下命令查找:
find / -name "netscape"
以上命令从根目录"/"开始查找文件名叫"netscape"的程序。用这个命令可能速度更快一些:
locate netscape
(locate 命令运行速度更快是因为它依赖于系统预先建立的文件数据库。这个数据库由一个在背景运行的程序cron 来建立。因为cron 一般安排在夜间运行,所有如果你经常在夜晚关机,就不要依赖locate 可以找到你要的文件,也不要巴望locate 可以找到刚刚才安装的软件名称)
请注意,PATH 对于超级用户root 和普通用户一般来说是不相同的。超级用户root 的PATH 包括/sbin 和/usr/sbin,而普通用户一般不包括。所以,普通用户不能执行在/sbin 下面的文件,除非他们指定程序的全路径名(目录加文件名)。还有,如果你是使用su 命令从普通用户变成超级用户root 的,因为继承了普通用户的缺省路径PATH,要执行/sbin 目录下的文件,还是要指定程序的全路径名。
如果你知道程序的名字但是不知道程序的全路径名,可以用以下命令:
which netscape
就可以找到所有叫做netscape 的文件的全路径名
第三种可能:
程序可能是不可执行的。如果是这个原因,把它改成可以执行的(必须是超级用户root 或者文件的所有者)
chmod a+x my_file
这个命令把"my_file"变成是所有人都可以执行的。检查是否可行:
ls -l my_file
请注意,在Linux 和Unix 下,修改文件的扩展名(比如.exe 或者.bat)并不能使文件变成可以运行。文件能够被执行需要"可执行访问模式",而不是象DOS 下的"文件属性".
3.1.4 改变路径(PATH)
一般来说,你不需要去修改缺省路径PATH。
PATH 是当你要求执行程序时,文件搜索的目录列表。你可以用以下命令检查你的PATH
echo $PATH