Linux基础入门_第1页
Linux基础入门_第2页
Linux基础入门_第3页
Linux基础入门_第4页
Linux基础入门_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

初识Linux-PC上Linux系统常规目录结构准备开始建议首先安装一套Linux系统在你的PC上。当然,不想真正安装Linux而要进行Linux开发的话也有很多选择,比如 用Virtual PC安装模拟平台、在Windows程序编制借助Cygwin、在其他平台安装第三方Linux模拟软件等。不过这些选择中除了用Virtual PC,其他终归是有不少局限性的。而使用Virtual PC等实现的子平台,运行效率和稳定性仍然不如直接安装Linux作为真正的操作系统。所以如果条件允许的话,还是安装一套作为一个操作系统吧。写此文时的绝大多数流行Linux系统可以选择在安装后和Windows系统并存。例如 Fedora + Windows XP 、RH9(RedHat Linux 9.0) + Windows XP 、Fedora + Windows2003 等,都是没有问题的。Linux在上个世纪就已经有了很多种图形用户界面(GUI),所以当你安装一个流行的Linux以后,上手几乎和Windows同样轻松。不过我们还是会介绍一些shell命令并建议多使用shell。这样可以给以后阅读编译脚本、自己建立交叉编译环境等工作带来便利。在图形用户界面打开shell 只需点击菜单中的终端或者点击运行,输入一个shell的名称并回车,比如bash。下面介绍一下Linux系统通常的目录结构。以便你对整个系统有一个大概的把握。你可以一边阅读下文,一边在你的Linux GUI里浏览相应的目录。也许有些地方有出入,但是大体结构上是一致的。根目录(/)根目录在文件系统层次的顶部,我们知道Windows总喜欢用反斜杠(), 而LINUX用正斜杠(/)表示。它包含一些标准文件和目录,从某种意义上说,它就是个包括所有文件夹和文件的柜子。/BIN (二进制)也称二进制目录,/bin目录包含大多数关键LINUX/UNIX命令的二进制(可执行)映象,这些命令供系统管理员和用户使用。这个目录中有一些通用命令,包括bash、cat、chmod、cp、date、echo、kill、ln、ls、mail、mkdir、more、mv、ps、pwd、rm、rmdir、sh、stty、su、tcsh、uname和vi。一些系统恢复命令包括tar、gzip、gunzip、zcat。/bin目录还包含一些必要的网络命令,包括domainname(或nisdomainname)、hostname、netstat以及ping。/usr/bin目录包含大多数用户命令。/BOOT (启动)该目录包含了启动LINUX时需要的绝大部分文件,它包括LINUX内核的二进制映象(一些系统将配置文件和内核映射放在其他目录中)。内核文件的名称为vmlinux(vmlinuz),后接版本和发布信息。比如在Red Hat LINUX 6.1上,内核是文件/boot/vmlinux-2.2.5/DEV (设备)/dev目录也称为设备目录,它一般最少包含5个文件,这些文件对应于连接到计算机的设备(终端、磁盘驱动器、CD-ROM驱动器、磁带驱动器、调制解调器和打印机等)。这些文件被称为块特殊文件,分为两组:字符特殊文件和块特殊文件。这个目录中的一些文件有:cdromf(针对CD-ROM驱动器)、console(针对控制台)、fd(针对软盘驱动器)、hd(针对硬盘或一个硬盘分区)、isdn(针对ISDN连接)、lp(针对行打印机)、midi(针对midi接口)、pty(针对伪终端)、ram(针对ram磁盘)以及tty(针对终端)。一个系统可能会有好几个类型的设备。在我使用的的系统上,/dev目录下有2447个文件。/dev/null称为Linux黑洞,在流重定向的时候常有应用。/ETC (etc.)/etc目录包含许多专用于主机的文件和目录,这些文件和目录包含了系统配置文件;但不包含任何二进制文件。该目录中的文件主要由系统管理员使用;但是有读权限的一般用户也可以使用其中大多数文件。该目录中有一些普通文件和目录,包括:X11、bashrc、csh.10gincrontab,、group、inittab、lilo.conf.1inuxconf、localtime、motd、passwd、pine.conf、profile、securetty、shells、skel、syslog.conf、ttytype和zshrc。目录X11包含x Window系统的配置文件。/etc目录下有一些与网络相关的文件和目录:exports、ftpusers、gateways、host.conf、hosts、hosts.allow、hosts.deny、hosts.equiv,hosts.1pd、httpd 等/HOME目录/home包含用户的主目录。但是该文件的设置因主机而异。在小型系统上。该目录包含用户的主目录,比如/home/bobk。在大型系统上,主机通过使用NFS协议共享主目录,通常将用户主目录再次划分为许多用户组,比如/home/admin、/home/faculty、home/staff和/home/students。这个方案有许多变化。在笔者所用的系统中,/home下有43子目录,/home目录包含了用户的主目录,每一个子目录都含有用于administration、staff,students、faculty的主目录,它们属于不同部门。/LIB (库)lib目录包含给定语言的相关目标映象文件的集合,这些集合在一个单独的文件中,称为一个归档文件。一个典型的LINUX/UNIX系统包含了C、C+和FORTRAN库。某种语言的归档文件可用于在该语言中开发的应用程序。这就允许软件开发者在他们的软件中使用预先写好和测试好的函数。lib目录中的库映象对于启动系统和运行某些命令是必需的。特别是它包含了标准c库/lib/libc.so.*,数学库libm.so.*,共享动态链接程序/lib/ld/so,和其他/bin和/sbin中命令所使用的共享库。/lib/modules目录包含了可加载的内核模块。其余大多数库放在目录/usr/lib下,而目录/lib包含了所有重要的库。/LOST+FOUND目录lost+found包含了系统上与其他任何目录都不相连的所有系统文件。LINUX和UNIX有一个工具fsck(file system check,文件系统检查)可以找到这些文件,系统管理员可用它检查一个文件系统,这些文件由系统管理员管理。/MNT (挂接)目录/mnt主要用来由系统管理员用命令mount临时加载文件系统。系统上的该目录包含了cdrom、磁盘和软盘加载点。加载设备时,比如CD-ROM驱动器,访问CD-ROM中的文件就像在目录/mnt/cdrom下访问文件一样。/OPT (选项)目录/opt用于安装附加软件包。用户安装程序包时所调用的程序应该在目录/opt/package_name/bin中,这里,package_name就是已安装的程序包名称。包的手册页在目录/opt/package_name/man下。/PROC (进程)目录/proc包含了进程信息和系统信息。/ROOT许多LINUX系统都将目录/root作为根账户的主目录。该目录受到完全保护,不受普通用户的影响。/SBIN (系统二进制文件)目录/sbin、/usr/sbin、/usr/local/sbin包含系统管理工具、实用程序和一般的根用户专用命令。/sbin目录中的一般根用户专用命令包括getty、init、updme、mkswap、swapon和swapoff。用于暂停系统的命令是:halt、reboot和shutdown。文件系统管理实用程序包括fdisk、fsck、fsck.minix、mkfs、mkfs.ext2、mkfs.minix、mkfs.msdos和mkfs.vfat。/sbin目录的网络命令最少,它们是ifconng和route。/TMP (临时)一些命令和应用程序要用到该目录。/tmp目录包含临时文件。您也可以用该目录存放自己的临时文件。该目录中的所有文件会被定期删除,以保证磁盘(或磁盘分区)不会被临时文件所塞满。/tmp目录下某个文件的生命期是由系统管理员所设定的,而且因系统而异,但通常只有若干分钟。多数系统都为/tmp目录设置了粘滞位,这样只有文f-$的所有者才能从该目录中删除文件。/USR (用户)目录/usr是LINUX/UNIX文件系统中最大的一个部分。它包含了主机之间可以共享的只读数据。在多数LINUX系统中,/usr至少包含了下面的子目录:X1lR6、b.n、dOC、games、include、lib、local、man、sbin、share、src和tmp。表中给出了这些目录所含内容的简短说明。子目录名字 包含的内容概述X11R6 X Windows 第11版,第6次发布,以及与之相关的文件bin 用户命今。该目录还包含一些解释程序,如perl、python和tcl等doc 各种工具、实用程序、库、应用程序和解释程序(如cc、gcc、xfree86、GNOME、)games 游戏和教育软件的可执行文件include C/C+头文件和包含一些特殊头文件的目录,例如编写网络应用程序(/usr/include/netdb和/usr/include/netinet等)时所需的头文件、C和C+头文件(/usr/include/g+)lib 目标文件、库函数和内部二进制库(不能被用户或shell脚本直接执行)。local 系统管理员安装在本地,被多个主机共享的软件(二进制文件和数据)。多数系统的该目录含以下日录:bin、doc、etc、games、lib、man、sbin、share和srcman 实用程序、工具和应用程序的手册页sbin 系统管理员和守护进程使用的所有无关紧要的命令和工具share 独立于体系结构的只读数据文件,也就是说,对于相同的操作系统,数据文件可以被不同平台(Pentium、Alpha和Sparc等)共享src LINUX/UNIX的源代码和包管理软件的源代码(比如RPM,即RedHat Package management)tmp 到/tmp日录的符号连接/VAR (变量)目录/var用于放置变量数据(当系统运行时这些数据不断变化)。该数据在若干个子目录中维护,其中大多数子目录的讨论不在本书范围之内。其中一个目录是/Var/sp00l/mail,它存放着传入邮件。您阅读的新邮件就是该目录下的一个文件。一旦您阅读完了该邮件,它就会以一个文件的方式被放进您的主目录,该目录称为mbox。/ETC/PASSWD文件/etc/passwd对每个用户都有一行描述。每一行由7个字段组成,各个字段用冒号隔开。下面是行的格式。login-name:password:user_ID:groupID:user_info:home-directory:login-shelllogin_name 是登录名,系统通过它了解用户,同时登录名也指出了用户类型。dummy orencrypted_password字段包含伪密码x(或。)或密码的加密版本。如果伪密码放在文件/etc/passwd中。那么加密的密码就被放在文件/etc/shadow中。user-ID是0到65535之问的整数,这些整数是指定给用户的;0指定给超级用户,而1-99被保留。group ID标识用户所在的组,group_ID也是0到65535之间的整数,0-99之间的数也被保留。user info字段包含用户的相关信息,一般是用户全名。home_directory字段包含用户主目录的绝对路径名。最后一个字段login_shell包含了用户登录shell的绝对路径名。当用户登录到系统时,相应于该字段所指定路径名的命令就会被系统执行。如果冒号是紧连的,意味着该字段缺少字段值,有时user info字段会出现这种情况。下面一行来自于我们系统中的文件/etc/passwd,它是描述用户davis的davis:x:134:105:James A Davis:/home/student/davis:/bin/bash在这一行中,登录名为davis,密码字段用x表示,用户ID是134,组ID是105,个人信息是用户的全名James A Davis,主目录是/home/student/davis,登录shell是/bin/bash。从另一个角度理解到此为止,你已经从目录结构上大概的了解了常规Linux的结构。建议进一步从启动过程的角度了解一下,互联网上有不少这方面的资料。可以google丰富学习。比如 一个blog中有有关RH9在i386 PC启动的中文叙述:/loef/archive/2004/09/01/91552.aspx当然,幻羽资料的后续版本对于应用在S3C2410平台的miziLinux,将有非常详细的启动过程叙述。 Linux的shell命令LINUX的shell是什么?shell是一个重要的LINUX和UNIX的人机接口,因为早期没有图形用户界面的广泛应用。听起来有点像dos,但是dos是简单的单线程系统,而LINUX如今是一个多进程多用户操作系统。shell本身是LINUX上的一个进程,他接收你输入的命令来执行。现在的LINUX系统上,已经有了很多很多种shell。但是基本使用是大同小异的,所以大多数情况下,即使你不理会你在使用哪种shell问题也不大。 如果没有特别的说明,幻羽科技的文档中的shell都指Bash,因为这是我最常用的一个shell Jshell命令和dos命令一样,有内部命令和外部命令,在前文的系统目录结构介绍中,已经提到了一些在bin目录中的外部命令。学习LINUX最常用的一条shell命令:在Linux下,当你要查找一个命令的用法,你可以在shell中通过【 man 命令名 】来得到命令的详细说明。因为每个Linux都有man文档,所以介绍命令的时候我们只是简直介绍一下命令的学用选项。如果想查看命令的详细说明,请自己看man。下面是man各小节的内容:1 用户命令。2 系统调用。3 库函数。4 特殊文件(设备和网络接口)。5 文件格式。6 游戏和演示。7 系统环境、表格和宏。8 系统管理和相关命令。比如,您想查看ls命令是什么意思,只需要在shell键入 man ls回车 就可以了。现在了解LINUX的shell命令必要吗?当您使用LINUX或UNIX系统时,自然会用编辑器和编译器之类的工具创建一般文件。比如在特定的程序设计语言中,如C、C+和Java,使用文本编辑器,为软件创建代码文件。源代码创建完成,对其进行编译(如使用gcc)并生成可执行二进制代码。您可以通过shell对您创建的所有这些文本和二进制文件进行诸如复制、删除、追加、改名、移动、更改权限等操作。当然,更方便的办法也是选用图形用户界面(GUI)。为了系统地组织工作,应该在主目录下创建一个层次目录结构,并应很好地维护。这就需要进行目录的创建、复制、移动和删除操作。这样就能遍历您的目录层次,您就能进入一个目录浏览它的内容。LINUX的shell提供了执行这些任务的所有命令。当然,更方便的办法也是选用图形用户界面(GUI)。有图形用户界面了,还需要用shell命令吗?当然,并不必须用shell命令完成这些工作,但是充分的了解shell命令,可以使您更加容易驾御LINUX。比如,如果不了解shell命令,在自己建立一个交叉编译环境或书写各种配置文件或编辑系统shell脚本的时候,可能会遇到一些困难。当然,从长远来看,shell命令的使用必然减少,如果所有的地方都有友好的GUI了,谁还去敲命令呢,我想这也是M$ (微软) 在20世纪90年代变得这么红火的原因了吧 另人兴奋的是,Linux上已经有了越来越多的在GUI上的快速开发工具。建议首先掌握的shell命令:文件系统相关的命令是最常用的,主要有rm(删除文件或目录树)、rmdir(删除目录)、mkdir(创建目录)、mv(移动和改名)、cp(复制)等。常用的文本创建工具有vi等等。如果您不了解这些命令,建议您首先用man自行学习。如果现在你的Linux功底几乎为0,对本文以上描述仍有很多困惑,则建议你阅读幻羽写在本文之前的Linux入门文档,仍然有问题,请去幻羽论坛提问。详细说明一些常用shell命令:(示例中$代表shell命令提示符)1. apropos 依据所给关键字查找相关的命令和系统调用格式:apropos keyword例:查找与ftp相关的命令和系统调用$apropos ftp注:类似的命令有man -k。man -k 其实就是执行apropos2. at 在某一特定时间执行指定的命令格式:at -V-q 队列-f 文件-m time选项说明:-V 显示标准的错误输出。-f 可将作业存在一个文件中,用这个选项指定文件。例如一个shell文件。-q 指定队列名称,默认为c。-m 执行后给用户发邮件。time 指定开始执行的时间。时间格式为: HH:MM,日期格式:MM/DD/YY或MM.DD.YY或MMDDYY。 下面的例子演示了在2005年3月11日21点34分执行一个at命令。$at 21:34 03/11/05执行这条命令后会得到一条warning:commands will be executed using (in order) a)$SHELL b) login shell c)/bin/sh。然后就出现“at”的提示符。这时你就可以输入你要执行的命令了,结束后按Ctrl+d。你就可以去喝茶了,到时间后系统会自动执行它。相关配置文件:/etc/at.allow 如果这个文件存在,仅允许这个文件里列出的用户使用at。/etc/at.deny 如果这个文件存在,该文件列出的用户都不能使用at服务。当 这个文件为空时,任何用户都可以使用at,这是默认配置。当运行at命令时,先检查/etc/at.allow文件是否存在,如果不存在,再检查 /etc/at.deny文件是否存在。不管这两个文件是不是存在,root用户都可以执行at命令。相关命令:atq:列出用户待执行的任务,除了root用户的外,每个用户的任务都将被列出。atrm:通过任务号删除at任务。batch:当系统负载允许的时候执行命令。比如当负载低于0.8或者一个指定的值时,指行atrun。3. cat 查看文件内容,从键盘读取数据,合并文件等格式:cat -b-A-E-T-n-s-v 文件名选项说明:-b 不显示文件中的空行。-A 相当于 -v -E -T (-vET)。-E 在文件的每一行行尾加上“$”字符。-T 将文件中的Tab键用字符“I”来显示。-n 在文件的每行前面显示行号。-s 将连续的多个空行用一个空行来显示。-v 显示除Tab和Enter之外的所有字符。下面的命令演示了如何显示file文件中的行号$cat -n file4. chmod 修改文件权限格式:chmod 选项 文件或目录名选项说明:u 文件所有者g 文件所属组o 其它用户+ 增加权限- 取消权限= 赋给权限a 所有用户r 读权限w 写权限x 执行权限下面的命令演示了如何使所有用户都可以读写file文件$chmod a+rw file5. chown 改变文件所有者格式:chown -R-c用户名组名 文件或目录名选项说明:-c 文件属主改变时显示说明。-R/r 改变目录下的文件及其子目录下所有文件的属主。下面的命令演示了如何改变 dir 目录下的文件及其子目录下的文件的属主为bugboy$chown -R bugboy dir6. cp 复制文件格式:cp 选项 源文件名 目标文件名选项说明:-R 复制整个目录。-f 删除己存在的目标文件。-i 使用-f遇到删除文件时给出提示。下面的命令演示了如何把 file 文件复制到当前用户的根目录下$cp file /7. crontab 制定计划任务crontab通过cron服务使用户能够在指定的时间执行某些程序,它通过cron复制,创建列出,删除crontab文件来管理用户权限和计划。命令格式:crontab -u username -l -e -r选项说明:-e 编辑当前用户的crontab文件,或者当一个crontab文件不存在时,创建一个crontab 文件。编辑并保存后文件被当前用户的crontab安装。-l 列出当前crontab文件内容。-r 删除当前用户的crontab文件。-u username 指定用户名。crontab文件格式:crontab文件有六个域,每个域之间用空格或者Tab键分开,前五个域都是整数或者*,格式如下(括号里面是取值范围):分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 星期(0-6) 要执行的命令其中星期取值0指星期日,其它取值递推。前面五个域,每个域都可以用*表示所有合法的值,或者用一个列表列出合法的值,各值之间用“,”隔开,也可以用“-”表示一个范围。下面的命令演示每个星期,星期日到星期四晚上23:30分关机。30 23 * * 0-4 halt -p下面的例子示出每星期星期一到星期五3:15分清除用户目录下的core文件15 3 * * 1-5 find $HOME -name core 2/dev/null |xargs rm -f下面是一个crontab文件的例子,请用crontab -e 命令编辑。SHELL=/bin/bashPATH=/usr/bin:/bin:/usr/sbin:/sbinMAILTO=bugboyHOME=/home/bugboy30 23 * * 0-4 halt -p前面四行定义环境变量,最后一行是执行的命令,你可以定义要执行多个命令。如果你的crontab文件已经正确编辑,保存退出后会得到一条crontab:installing new crontab 的信息。相关文件:/etc/cron.d/cron.allow 如果这个文件存在,文件中包含的用户名可以使用crontab。/etc/cron.d/cron.deny 如果这个文件存在,文件中包含的用户不能使用crontab。你可以自己编辑这两个文件,注意每个用户名占一行。8. df 查看磁盘剩余空间格式:df -t-x-k-p-a-mfilename选项说明:-t 只输出类型列在fstype中的文件系统。-x 只输出类型没有列在fstype中的文件系统。-k 显示空间以K为单位。-m 显示空间以M为单位。-a 将空间为0的文件系统也输出。filename 指定要查看的文件的大小。9. fdisk/sfdisk 查看硬盘分区信息10. 格式:fdisk -l -u device .11. fdisk -s partition选项说明:-u 列出分区表的时候以扇区的大小代替柱面大小。-l 列出给定设备的分区表,如果没有给定设备,则列出/proc/partions中设备的分区表。-s partition 给出partition分区的大小(以块为单位)。12. file 识别文件类型格式:file 文件名13. find 查找文件格式:find 路径匹配表达示其中匹配表达示有几种类型:-name filename 查找指定名称的文件。-user username 查找指定用户名的文件。-group grpname 查找指定级名的文件。-print 显示查找的结果。-size n 查找大小为n块的文件,一块等于512字节。符号“+n”表示查找大小大于n块的文件;符号“nc”表示查找大小为n个字符的文件,同样的也有符号“+nc”。-inum n 查找索引结点号(i-node)为n的文件。-atime n 查找n天前被访问的文件。“+n”表示超过n天前被访问的文件;“-n”表示不超过n天前被访问的文件。-mtime n 类似于atime,但是检查的是文件内容被修改的时间。-ctime n 类似于atime,但检查的是文件索引结点被改变的时间。-perm mode 查找与给定权限匹配的文件,必须以八进制的形式给出访问权限。-newer file 查找比指定文件新的文件,即最后修改时间离现在较近。-exec command 对匹配文件执行command命令,command后用了个大括号包括文件名。command必须以反斜杠和一个分号结尾。-ok command 执行command的时候请求用户确认。其它与-exec相同。例:查找当前目录下所有以.bak结尾的文件,并删除它们$find . -name *.bak -exec rm ;注:这里 *.bak 必须要用单引号或者双引号引起来,或者可以写成*.bak。14. head 输出文件内容前面的部分格式:head 选项文件选项说明:-n 输出文件的前n行,默认输出10行。-c 指定输出文件的大小,单位为byte。15. kill 终止进程格式:kill -s|p-a PID选项说明:-s 指明发送给进程的信号。例如-9(强行终止),默认发送TERM信号。-p 显示进程的ID,不发送信号。-a 终止所有进程。0 给所有在当前进程组中的进程发送信号。-1 给所有进程号大于1的进程发送信号。16. less 交互式显示文件内容格式:less 文件名说明:可以通过C-v(Page-Down)、C-b(Page-Up)向后向前翻页,C-p、C-n向后向前移一行。这个命令和后面要说的more命令都可以按q键退出。17. ln 在文件之间建立链接格式:ln -b-d-F-f-i-n-s-v 源文件目录文件或目录选项说明:-b 为删除的文件建立备份。-d 允许root用户建立硬链接。-F 与b相同。-f 强行删除目标文件。-i 在删除文件时给出提示。-n 当目标文件是目录的符号链接时,替代该符号链接。-s 用符号链接代替硬链接(建立符号链接)。-v 输出被链接文件的文件名。18. ls 用于浏览目录,查看当前目录下的文件和文件名格式:ls 选项选项说明:-a 显示所有文件(包括隐藏文件)。-l 显示文件的详细信息。-k 显示文件大小,以K为单位。-color 显示文件时用不同颜色加以区别文件类型。-d 将根目录作为文件显示。19. more 一页一页地显示文件内容格式:more 选项 文件名选项说明:+n 由第n行开始显示+/str 由含有str字符串的地方开始显示。20. mount 加载文件系统格式:mount 磁盘或分区的设备文件 载入点 选项选项说明:-t 文件系统类型(fat32为vfat)-o 选项 常用的选项有codepage,iocharset(对于中文codepage=936,iocharset=gb2312)-loop 挂载ISO文件时用举个例子,挂载/dev/hda5到/mnt/wind目录下并且目录支持中文,命令如下:#mount -t vfat /dev/hda5 /mnt/wind -o codepage=936,iocharset=gb231221. mv 重命名文件或移动文件格式:mv -b-f-i-u-v 源文件 目标文件或文件夹选项说明:-b 为源文件作备份-f 文件重命名时强制覆盖己有文件。-i 覆盖文件时给出提示。-u 目标文件比源文件新时不覆盖。-v 移动文件时给出相应的提示。22. oggenc 压缩音乐文件为.ogg格式格式:oggenc 文件名把*.wav文件压缩为*.ogg格式$oggenc *.wav同等条件下,ogg会比mp3获得较好的音乐效果23. ps 查看进程状态格式:ps 选项选项说明:-e/A 列出所有进程。-u 选择有效的用户ID。-p 选择指定终端下的进程。-C 选择指定的文件名。-f 列出所有详细信息。-l 按长格式显示。-j 按job格式显示。-x 选择没有控制终端的进程。24. quota 显示磁盘的使用情况,一般用户可以查看自己使用磁盘的权限格式:quota -g-u-v-p 用户名或组名选项说明:-g 显示用户所在组使用磁盘的权限。-u 显示用户自己使用磁盘的权限。-p 使显示信息简洁化。25. rename 批量修改文件名格式:rename from to file.选项说明:from 源字符。to 目标字符。file 要改名的文件下面的命令演示了把所有文件的后辍由rm改为rmvb$rename .rm .rmvb *下面的命令把所有文件名中的大写改为小写$rename tr/A-Z/a-z/ *26. rpm redhat软件包管理工具格式:rpm 选项 文件名|软件包名选项说明:-version 获得rpm程序的版本信息。-vv 获得详细的帮助信息。-v 打印冗长的信息,常与-i选项合用,获得安装进度。-i 安装软件包。-U 升级软件包,如果没有旧版的软件包就安装它。-F 更新软件包,当有旧的软件包的时候。-force 相当于-replacepkgs,-repalcefiles,-oldpackage。-nodigest 不验证软件包的独立性。-nosignature 不验证软件包或者页眉签名。-nodeps 不检查软件包的安装路径。-oldpackage 用新软件包替换旧软件包。-prefix PATH 指定软件包的安装路径。-relocate OLDPATH=NEWPATH 把原来安装在“OLDPATH”下的软件包重新安装到“NEWPATH”去。-replacefiles 安装软件包,即使它们替换掉其它的文件。-replacepkgs 替换掉已经安装的同名软件包。-e|-erase 软件包名 删除软件包。-allmatches 删除软件包的所有版本。-q 查询已经安装的软件包。-a 选择所有软件包。-h 当解开软件包时,打印50个标记,通常与iv选项一起用。特别说明:在删除软件包时,软件包的名称不等于安装时的文件名。通常一个rpm包由软件包名称+版本号+发行号+发行平台+后辍构成。比如有个文件名为bugboy-1.01-1.i386.rpm,那么它的软件包名称是bugboy,版本号是1.0.1,发行号是1,发行平台是intel 386。27. rm 删除文件或者目录格式:rm -d-i-r-v-f 文件名或目录名选项说明:-d 使用这个选项后,rm大体想当于unlink。-i 删除每个文件时给用户提示。-r 删除整个目录,包括文件和子目录。-v 删除每个文件时给出提示。-f 强制删除,并且不给提示。28. sox 转换音频文件格式:sox 选项 from 选项 to选项说明:-t 文件格式。-r 采样频率。例:把file1.wav转换成file1.au文件$sox file1.wav file1.au把file1.wav 转换成file1.voc文件,并把采样频率由10000 Hz降为5000 Hz$sox -r 10000 file1.wav -r 5000 file1.voc减小文件噪音,让文件通过低通滤波器$sox file1.wav file1.voc lowp 2200注:对于一些没有许可授权的文件格式,sox不支持29. su 改变当前用户的ID。30. tail 输出文件内容后面的部分格式:tail 选项 文件名选项说明:-n 只显示后面的n行。-f 动太显示,常用于跟踪消息文件。31. tar 解压或压缩文件格式:tar 选项 文件文件1 目录目录1选项说明:-A 将一个tar文件追加到一个存档中。-c 生成一个新的存档文件。-delete 从存档中删除。-r 将文件添加到一个存档的末尾。-l 列出一个存档的内容。-u 仅将些存档中内容较新的文件添加到存档中。-x 从存档中解压缩文件。-v 详细地列出处理过的文件的信息。-z 用gzip来处理文件。-remove-files 将文件解压之后就删除它们。-Z 用compress来处理文件。注意:选项中必须包含有A c d r t u x中的一个或多个。32. top 查看CPU的使用率,修改进程运行优先级格式:top 选项选项说明:-d delay 指定刷新的秒数。-p pid 查看指定pid的CPU使用率。默认情况下进程按CPU使用率排序,可按PID(N),时限(A),常驻内存使用率(M),时间(T),和CPU使用率(P)来排序。33. type 查看一个命令所在路径格式:type command例:查找ls命令所在路径$type ls34. umount 卸载系统格式:umount 磁盘或分区的设备文件(也可以是载入点)35. useradd 添加用户或更新新创建用户的默认信息格式:useradd 选项选项说明:-c comment 描述新用户帐号,通常为用户全名。-d home_dir 设置用户主目录,默认值为用户的登录名,并放在/home目录下。-D 创建新帐号后保存为新帐号设置的默认信息。-e expire_date 用MM/DD/YYYY格式设置帐号过期日期。-f inactivity 设置口令失效时间,该值为0使口令失效后帐号立即失效,为-1使该选项失效。-g 设置基本组。-k skel_dir 设置框架目录,该目录包含用户的初始配置文件,创建用户时该目录下的文件都被复制到用户主目录下。-m 自动创建用户主目录,并把框架目录(默认为/etc/skel)下的文件复制到用户主目录下。-M 不创建用户主目录。-r 允许保留的系统帐号使用用户ID创建一个新帐号。-s shell 指定用户的登录shell。-u user_id 设置用户ID。例:#useradd -m -g users -G Wheel,student -s /bin/sh -c Yan Dingcheng bugboy例用usermod修改用户帐号时各选项与useradd命令相似。36. userdel 删除用户帐号格式:userdel username选项说明:-r 删除帐号时连同帐号主目录一起删除。注意:删除用户帐号时非用户主目录下的用户文件并不会被删除,管理员必须以find命令搜索删除这些文件。下面这条命令删除bugboy用户的所有文件:#find / -user bugboy -exec rm ;37. whatis 查_看可以使用的man page和命令的基本功能介绍例:$whatis top38. whereis 定位可执行文件、源代码文件、帮助文件在文件系统中的位置格式:whereis -bmsu BMS 目录名 -f 文件名选项说明:-b 定位可执行文件。-m 定位帮助文件。-s 定位源代码文件。-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。-B 指定搜索可执行文件的路径。-M 指定搜索帮助文件的路径。-S 指定搜索源代码文件的路径。39. w 查看登录用户和他们正在做什么格式:w -hsfV user选项说明:-h 不打印信息头。-s 使用短格式显示信息。-f 打印用户来源。-V 显示版本信息。40. who 查看当前用户的便当情况格式:who -i-u-m选项说明:-i 显示用户的活动状况。-u 与-i相同。-m 显示用户自身的情况。reboot重启命令。halt关机命令。 Linux上的GCC编译器和GDB调试器前言以往在为Linux开发应用程序时,大多数情况下使用的都是C语言,这是古老的Unix历史决定的,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中已经符合ANSI C标准的编译系统,如今已经能够编译用C、C+和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada等。IA-64出现以后,在PC的世界里GCC有了针对64位机的重大改变,但是对于ARM来说,GCC用于交叉编译,还是老样子使用,因此我们的讨论以入门为目标,忽略一些PC领域最新的进展。开放、自由和灵活是Linux的魅力所在,而这一点在GCC上的体现就是程序员通过它能够更好地控制整个编译过程。在使用GCC编译程序时,编译过程可以被细分为四个阶段: 预处理(Pre-Processing) 编译(Compiling) 汇编(Assembling) 链接(Linking)Linux程序员可以根据自己的需要让GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。和其它常用的编译器一样,GCC也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。GCC提供了30多条警告信息和三个警告级别,使用它们有助于增强程序的稳定性和可移植性。此外,GCC还对标准的C和C+语言进行了大量的扩展,提高程序的执行效率,有助于编译器进行代码优化,能够减轻编程的工作量。开始学习GCC 编译器在学习使用GCC之前,下面的这个例子能够帮助用户迅速理解GCC的工作原理,并将其立即运用到实际的项目开发中去。首先用熟悉的编辑器输入清单1所示的代码:清单1:hello.c#include int main(void)printf (Hello world, Linux programming!n);return 0;然后执行下面的shell命令编译和运行这段程序:# gcc hello.c -o hello# ./helloHello world, Linux programming!从程序员的角度看,只需简单地执行一条GCC命令就可以了,但从编译器的角度来看,却需要完成一系列非常繁杂的工作。首先,GCC需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并向其中插入#include语句所包含的内容;接着,GCC会调用ccl和as将处理后的源代码编译成目标代码;最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。为了更好地理解GCC的工作过程,可以把上述编译过程分成几个步骤单独进行,并观察每步的运行结果。第一步是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:# gcc -E hello.c -o hello.i此时若查看hello.cpp文件中的内容,会发现stdio.h的内容确实都插到文件里去了,而其它应当被预处理的宏定义也都做了相应的处理。下一步是将hello.i编译为目标代码,这可以通过使用-c参数来完成:# gcc -c hello.i -o hello.oGCC默认将.i文件看成是预处理后的C语言源代码,因此上述命令将自动跳过预处理步骤而开始执行编译过程,也可以使用-x参数让GCC从指定的步骤开始编译。最后一步是将生成的目标文件链接成可执行文件:# gcc hello.o -o hello在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译单元。假设有一个由foo1.c和foo2.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序foo,可以使用下面这条命令:# gcc foo1.c foo2.c -o foo如果同时处理的文件不止一个,GCC仍然会按照预处理、编译和链接的过程依次进行。如果深究起来,上面这条命令大致相当于依次执行如下三条命令:# gcc -c foo1.c -o foo1.o# gcc -c foo2.c -o foo2.o# gcc foo1.o foo2.o -o foo在编译一个包含许多源文件的工程时,若只用一条GCC命令来完成编译是非常浪费时间的。假设项目中有100个源文件需要编译,并且每个源文件中都包含10000行代码,如果像上面那样仅用一条GCC命令来完成编译工作,那么GCC需要将每个源文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论