在我的小型家用系统上,在我的当前路径下有3786个可执行命令。这些命令的大部分可以在图形用户界面下使用鼠标的左键或者右键来访问,全部都可以使用命令行来运行(除非你没有安装对应的软件包,在我的CD里都可以运行)。那些要求图形用户界面的程序必须在图形用户下才能运行,比如,你可以通过在KDE或者GNOME的终端输入命令来运行这些程序。一些更高级(对新手没有用处?)的命令工具可以参考第七部分的相关内容。
以下给那些对Linux没有概念的新手:
Linux是大小写敏感的系统,举个例子,Mozilla, MOZILLA, mOzilla和mozilla是四个不同的命令(但是只有第四个mozilla是真正有效的命令)。还有,my_filE, my_file,和my_FILE是三个不同的文件。用户的登录名和秘密也是大小写敏感的(这是因为UNIX系统和C语言的传统一向是大小写敏感所致)。
文件名最多可以有256个字符,可以包含数字,点号”.”,下划线”_”,横杆”-”,加上其他一些不被建议使用的字符。
文件名前面带”.”的文件在输入”ls”或者”dir”命令时一般不显示。可以把这些文件看作是隐含文件,当然你也可以使用命令”ls –a”来显示这些文件。
“/”对等于DOS下的””(根目录,意味着所有其他目录的父目录,或者是在目录之间和目录和文件之间的一个间隔符号)。举个例子,cd /usr/doc。
在Linux系统下,所有的目录显示在单一目录树下(有别于DOS系统的驱动器标识)。这意味着所有的物理设备上的所有文件和目录都合并在单一的目录树下。
在配置文件里,以#打头的行是注释行。在修改配置文件的时候尽量不要删除旧的设置――可以把原来的设置加上”#”变成注释行,总是在修改地方对应地加入一些关于修改的注释,你会发觉在以后的管理中获益多多。
Linux是继承性的多用户操作系统。你的个人设定(和其他用户的个人设定)放在你的主目录下(一般是/home/your_user_login_name)。许多的配置文件的文件名都以”.”开头,这样用户一般看不到这些文件。
整个系统范围的设定一般放在目录/etc下。
和其他的多用户操作系统类似,在Linux下,文件和目录有自己的拥有者和访问权限。一般来说,你只被允许文件到你的主目录下(/home/your_user_login_name)。学习一些关于文件权限管理的相关知识,否则你肯定会觉得Linux实在很麻烦。
命令参数选项一般由”-”引导,后面跟一个字符(或者”--“,当选项超过一个字符时)。这样,”-”有点象DOS下的”/”。举个例子,输入命令rm --help。
输入command&(命令名后面加&符号)在背景模式下运行一个命令。这个一般用来在X窗口下启动其他的程序。
5.1Linux基本的键盘输入快捷键和一些常用命令
<Ctrl><Alt><F1>
切换到第一个文本终端。在Linux下你可以有多达六个不同的终端。这个命令的意思是:“同时按住<Ctrl>键和<Alt>键,然后按<F1>键,再释放所有的键”。
<Ctrl><Alt><Fn> (n=1..6)
切换到第n个文本终端。(你也可以使用不是很经常用到的命令chvt n来实现,n指的是第n个文本终端)。在文本终端下(不是在X窗口),你也可以简单使用<ALT><Fn>来实现切换,不需要<CTRL>键。
打印出你正在使用的终端名称,如果你希望知道终端的名字,可以使用命令fgconsole。
<Ctrl><Alt><F7>
切换到第一个图形用户界面(一般来说X-window在第七个终端)
<Ctrl><Alt><Fn> (n=7到12)
切换到第n个图形用户街面。根据缺省,第一个X-Window在第7个终端运行,从第8到第12什么也没有,当然你可以逐个启动这些图形用户界面。
<Tab>
(在文本终端下)可以使用TAB自动完成命令,或者显示所有的可选项。这个快捷键真的非常好用,经常使用你会发觉它可以节约你很多的时间。
<ArrowUp>
(在文本终端或者X窗口下)滚动和编辑以前输入的命令。按<ENTER>执行一个历史命令
<ArrowDown>
回滚
<Shift><PgUp>
滚动终端输出。对于登录提示也起作用,所以你可以使用它回滚启动信息。你显卡的内存大小决定你可以回滚多少内容
<Shift><PgDown>
回滚终端输出
<Ctrl><Alt><+>
(在X窗口下)改变X服务器的屏幕解析率(如果你设置X服务器有多个不同的屏幕解析率)。比如对于我的标准SVGA卡和显示器,在文件/etc/X11/XF86Config有以下的设置行:(从缺省开始,到可以支持的最大虚拟屏幕解析率)
Modes "1024x768" "800x600" "640x480" "512x384" "480x300" "400x300" "1152x864"Z
当然,首先我必须设置我的X服务器,可以使用using Xconfigurator, xf86config,也可以手工编辑文件:/etc/X11/XF86Config。XFdrake (Mandrake使用图形用户界面进行配置)。你也可以参考命令xvidtune和xvidgen。
<Ctrl><Alt><->
(在X窗口下)把X服务器的屏幕解析率修改到上一次的设置。
<Ctrl><Alt><Esc>
(在X窗口,KDE下)关闭我鼠标将要指向的窗口(鼠标的光标形状会有所改变)。同样的效果也可以使用命令xkill(在X终端上)来实现。当一个程序窗口被挂住的时候特别有用。
<Ctrl><Alt><BkSpc>
(在X窗口下)终止当前的X窗口服务。如果X窗口不能正常退出时可以使用。
<Ctrl><Alt><Delete>
(适用于文本终端下)关机和重新启动。这是一个在文本终端下的正常关机命令,千万不要按计算机上的reset键来重新关机和重新启动!
<Ctrl>c
终止当前进程(对于一般的小型文本模式的应用程序)
<Ctrl>d
(在一个空白的命令行上输入)退出当前的终端。参加下一个命令。
<Ctrl>d
给当前的进程送文件结束符合。不要按两次否则你会把自己退出系统。
<Ctrl>s
停止终端传输
<Ctrl>q
从新开始终端传输。如果你的终端突然莫名其妙的停止响应,可以参考上一条命令。
<Ctrl>z
把当前进程送到后台处理。
exit
退出系统。我也可以使用logout命令达到同样效果。(如果你启动了第二个shell程序,比如,使用bash,这条命令将使你退出第二个shell回到第一个shell,但是不会退出系统。当然,可以再一次使用exit退出)
reset
恢复崩溃的终端(有些终端显示一些奇怪的字符)到缺省的设置。当你使用cat命令准备显示一个二进制文件时,你可能看不到你所输入的命令,尽管命令仍然照常工作。
<鼠标的中间键>
粘贴当前选择的文本。这是一个常规的Linux“复制-粘贴”操作。它是对被广泛采用的通信用户界面下“复制-粘贴”操作的一个非常有用的扩展(但是它不支持旧版本的NetScape,因为在旧版的NetScape只能使用MAC/Windows风格的“复制-粘贴”操作。如果你运行“setup”程序进行设置,你可以在文本终端下使用这个功能。而且它在大多数的对话框里也能很好的工作,真的非常方便!)如果你有一个“Linux-Ready”的鼠标(logitec或者其类似产品)或者你通过使用“模拟三键鼠标”,这个功能可以得到最大限度的发挥。一般来说,“第三键”的模拟是通过同时点击左右两个鼠标键来实现。
~
(水文符合)我的主目录(一般来书是/home/我的登录名)。举例,命令~/my_dir将修改我的工作目录到我的主目录的子目录”my_dir”下。相对于输入”cd ~”,你也可以只输入”cd”,我把我的所有文件都放在自己的主目录下。
.
(点符号)当前目录。举例:./my_program将试图执行当前目录下的"my_program"文件
..
(两个点)到当前的上一级目录(也叫“父目录”)。举个例子,命令“cd..”将修改我的当前工作目录到上一级目录。
一些KDE的快捷键(很有用,但不是非要不可的)
<Alt><Tab>
切换不同的程序窗口。往回切换,使用<Alt><Shift><Tab>
<Ctrl><Tab>
切换不同的桌面。往回切换,使用<Ctrl><Shift><Tab>
<Ctrl><Esc>
显示我系统里正在运行的进程列表。允许我终止那些由我启动的进程(或者送信号给这些进程)
<Alt><F1>
访问K菜单(对等于微软Windows的的“开始”菜单).
<Alt><F12>
使用键盘上的箭号键模拟鼠标的操作
<Alt><鼠标左键>
拖曳并移动一个窗口。一般来说,我通过拖曳窗口的题目栏来移动一个窗口。有些时候,我用它把
一个窗口移动到屏幕之外。使用这个功能,我可以把窗口移动到屏幕的任何位置。
<Alt><PrintScreen>
把当前屏幕的快照存到剪贴板
<Ctrl><Alt><PrintScreen>
把当前桌面的快照存到剪贴板
<Ctrl><Alt><l>
锁定桌面
<Ctrl><Alt><d>
切换隐藏/显示桌面的功能(当老板走过来的时候迅速藏起你的纸牌接龙游戏非常管用哦!)
<Alt><SysRq><command_key>(非必须掌握)
这是在Linux的内核(底层内核)上支持的一组组合键。它意味着这些组合键在大部分情况下都是有效的。组合键主要是针对开发人员的程序调试目的或者在紧急场合下才使用;你也可以使用其他的办法,安全第一。<SysRq>键在PC上指的是PrintScreen键。组合键的功能可以通过设置相对应的内核参数来激活或者取消,比如:echo "1" > /proc/sys/kernel/sysrq
<Alt><SysRq><k>
终止在当前虚拟终端上运行的所有进程(包括X窗口)。这个组合键被称为“安全访问键“(SAK).
<Alt><SysRq><e>
发送TERM信号(结束信号)到除了init进程以外的所有运行进程,要求其退出
<Alt><SysRq><i>
发送KILL(终止信号)到除了init进程以外的所有运行进程, 这个组合键比上一个更加有效,但是也可能引起一些程序被异常终止。
<Alt><SysRq><l>
发送KILL命令到所有运行进程(包括init),系统将不再能够使用
<Alt><SysRq><s>
在所有的挂载文件系统上运行紧急同步(缓存写) 。这可以保护数据丢失
<Alt><SysRq><u>
以只读模式重新挂载所有已加载的文件系统。这和上面的同步组合键有相同的功能,但是另外有一个好处:如果操作顺利完成,下一次硬件重新启动时,fsck将不会重新检查所有的文件系统。
<Alt><SysRq><r>关闭键盘的原始模式。当你的X窗口程序挂住没有响应时特别有用。使用这个组合键之后,你可能会接着使用<CTRL><ALT><DEL>程序启动。
<Alt><SysRq><b>
不进行同步和卸载就立刻重新启动系统。之后你可能会碰到一下错误信息。
<Alt><SysRq><o>
关机 (如果正确设置以后)
<Alt><SysRq><p>
导出当前的寄存器和标志到控制台
<Alt><SysRq><t>
导出当前任务和相关信息到控制台
<Alt><SysRq><m>
导出内存的内容到控制台
<Alt>SysRq><数字>
“数字”从0到9。设置控制台记录的级别,用于控制哪一些内核信息将被显示在控制台上。举例,“0”意味着只有象PANIC和OOPS的之类的紧急信息才被显示在控制台上。
<Alt><SysRq><h>
显示帮助信息。还有,任何其他不被支持的<Alt><SysRq><key>组合键将显示同样的帮助。
5.2帮助命令
命令名–help | more
显示一个简略的命令帮助(对大部分命令有效)。举个例子,试着使用 “cp –help | more”。“--help”和和DOS下的“/h”开关功能类似。当输出超过一个屏幕时,加上“more”是很有必要的。
man命令名
显示对应命令系统的帮助手册。输入“q”退出浏览器。如果你设置了高级选项,试着输入“man man”。命令“info命令名” 和命令“man命令名”功能相似,但是包含更多的最新信息。帮助手册对于新手可能有点难于读懂——因为它们最初是写来给UNIX程序员看的。使用“命令名–help”可以得到一个简略容易消化的命令帮助。有些程序自带README文件或者其他帮助信息文件----建议你可以看看目录/usr/share/doc。在指定的部分显示命令帮助,可以使用这样的命令“man 3 exit”,这个命令只显示exit命令帮助手册的“第三部分”;或者使用命令“man –a exit”,这个命令显示exit命令帮助手册的“所有部分”。exit命令帮助的所有部分是:1-用户命令;2-系统调用;3-子调用;4-设备;5-文件格式;6-游戏;7-杂项;8-系统管理;9-新内容。打印完整的命令帮助,可以使用命令“man命令名| col -b | lpr”(可选项col –b删除所有的退格键和一些难以阅读的特殊字符)。
info命令名
显示指定命令的帮助信息。info命令是取代man命令的一个好处是,它通常带有最近更新的系统资料。多使用“空格键”和“退格键”,否则你可能会晕头转向。按“q”键退出。如果觉得用于翻阅的办法不太好用――你也可以试着使用pinfo命令,看你会不会更喜欢这个替代品。
apropos命令名
对所输入的命令名给出一个帮助一览表。
whatis命令名
给出匹配所输入命令名的简短清单。whatis命令有点象apropos――它们使用相同的数据库。不同的是,whatis搜索的是关键字,apropos搜索的是关键字的具体描述。
help命令名
显示bash shell内置命令的简单信息。使用help命令不带任何参数将显示bash shell所有内置的命令。最短的bash shell内置命令应该包括:alias, bg, cd, echo, exit, export, help, history, jobs, kill, logout, pwd, set, source, ulimit, umask, unalias, unset.
kdehelp
kdehelpcenter
(在X-终端下有效,使用在你的系统上可以工作的那一个命令).使用图形的浏览器显示整个系统的帮助。一般来说,KDE帮助通过把对应的图标放在KDE控制板上来实现。对等的GNOME帮助系统可以使用gnome-help-browser命令。
5.3系统信息
pwd
输出工作目录。举例,在屏幕上显示我当前所在的目录
hostname
输出本地主机的名称(我正在使用的这一台机器)。使用netconf修改机器的名称(要求超级用户权限)
whoami
输出我的登录名称
idusername
输出用户标识ID(UID)和其对应的用户组标识ID(GID),有效的ID(如果不同于真正的用户ID)和所属的其他用户组
date
输出操作系统的当前日期,时间和时区。如果要以ISO标准格式输出,我必须使用命令“date –Iseconds”。
我可以修改当前的日期和时间到2003-12-31 23:57,使用命令:date 123123572003。或者使用两个命令(比较容易理解和记住):
date –-set 2003-12-31
date –set 23:57:00
如果要重新设置硬件时钟(BIOS),可以使用命令setclock,要求超级用户权限。
time
侦测一个进程所需要的时间加上其他处理的时间的总和。不要和上面提到的date命令混淆。比如,我可以使用命令“time ls”来判断显示一个目录需要多长时间;或者我可以使用命令“time sleep 10”来测试time命令(睡眠10秒钟,什么也不做)。
clock
(两个命令中的一个)从计算机的硬件(由电池供应的实时的硬件时钟)获得日期/时间。你可以使用这个命令来设置硬件时钟,但是setclock可能简单一些(看前面的两个命令)。举例:“hwclock –systohc –utc”命令把系统时钟设置到硬件时钟(以UTC格式)。
who
显示登录在系统里的用户
w
显示登录在系统里的用户,检查他们正在做什么以及他们的处理器使用状况。属于常用的安全方面的命令。
rwho -a
(=remote who,远端的who命令)。显示网络里其他计算机的用户登录状况。这个命令要求rwho服务必须在远端机器上运行。如果没有,以root用户运行setup(RedHat特有)激活“rwho”。
finger用户名
显示对于一个用户的系统信息。可以试一下命令:finger root。任何人都可以使用finger命令访问任何一台连接到因特网提供finger服务的计算机。比如:finger @finger.kernel.org
last
显示最后一个登录到系统的用户。经常运行这个命令作为系统安全检测的手段之一是一个绝好的主意。
lastb
(“=last bad”,最后一个坏的)显示最后一个不成功的登录尝试。但是这个命令在我的系统上不能工作,所以你可能要使用:touch /var/log/btmp
“/var/log/btmp在一般的系统安装里无效的主要原因是因为:它是一个包含登录的出错信息的完全可读的文件。一个用户登录时最经常犯的错误是输入用户密码作为用户名,这样,文件/var/log/btmp对计算机黑客来说简直是一个礼物”。(谢谢Bruce Richardson提供这个信息)。
如果要解决这个问题,修改该文件的文件访问权限为只有root用户才可以使用命令“lastb”。命令:“chmod o-r /var/log/btmp”
history | more
显示当前用户在命令行模式下执行的最后(1000个)命令。参数“|more”在输出满屏时暂停。如果要检查其他用户在你系统上都运行了什么,以root用户登录,检查在该用户主目录下的文件“.bash_history”(没错,该文件可以被修改和删除)。
uptime
显示自从上一次启动到现在机器运行的总时间。
ps
(=“print status”或者 “process status”,打印状态或者处理状态)列出由当前用户运行的进程一览。
ps axu | more
列出当前运行的所有进程,包括那些不是来自控制终端的进程,在显示用户进程的同时显示用户名。
top
持续列出正在运行的所有进程,按CPU的占用率排序(占用率高的排在最前面)。按<CTRL>C退出。
PID =用户标识
USER =启动或者拥有该进程的用户.
PRI =进程的优先级别(值越大,优先级别越低,一般进程是0,最高的级别是-20,最低的级别是20。
NI =优化级别(比如,进程试图以预先给定的优先级别的数值来运行)。数值越高,进程的优化级别也越高(优先级别越低)
SIZE =进程加载到内存的代码+数据+堆栈的字节总数(以千字节计算)
RSS =物理内存被占用的大小(以千字节计算)
SHARE =和其他进程共享的内存(以千字节计算)
STAT =进程的当前状态S-睡眠,R-运行,T-停止或者被跟踪,D-不可中断的睡眠,Z-不死的进程
%CPU = CPU占用虑百分比(自从上一次屏幕更新以来)
%MEM =共享物理内存的占用率
TIME =进程占用的CPU时间(自从进程启动以来)
COMMAND=启动该任务使用的命令行(小心命令行里出现的密码等信息,有权限运行top命令的用户都可以看见它们!)
gtop
ktop
(X终端)在图形用户界面下的两个top功能。我比较习惯使用gtop(在gnome自带)。在KDE环境下,ktop在K菜单的“System”菜单下的“Task Manager”里。
uname –a
(=“Unix Name”带可选项“all”)显示你本地计算机信息。也可以使用通信用户界面的guname(X终端下)得到更好的信息显示。
XFree86 –version
显示本地计算机的X-Windows的版本。
cat /etc/issue
检查你的发行版本。你也可以把你自己的信息放到文件/etc/issue里――在用户登录的时候会显示。如果你想要显示更多的信息,还有一个比较常见的做法是把本地专有的登录信息内容放在文件/etc/motd里 (“motd”=“message of the day”,当天信息)
free
内存的信息(以千字节显示)。“共享”内存是指可以被多个进程共同享有的内存(比如,可执行代码是“共享”的)。“缓冲”和“缓存”则是用来保留最近访问的文件和数据――当其他进程需要更多的内存时候这些内容可以被减缩。
df -h
(=disk free硬盘剩余空间)输出所有文件系统的硬盘信息(以易读的模式,h-human readable,人类可读)
du /-bh | more
(=disk usuage,硬盘使用状况)输出根目录“/”下每个子目录具体的硬盘使用状况
cat /proc/cpuinfo
CPU信息――它显示文件cpuinfo的内容。要注意的是文件在/proc目录下不是真正的文件――它们只是在观察内核信息时起连接的作用。
cat /proc/interrupts
显示正在使用的中断号。在配置一个新硬件的时候可能需要浏览一下。
cat /proc/version
Linux的版本和其他信息
cat /proc/filesystems
显示当前使用的文件系统的类型
cat /etc/printcap |more
显示打印机的设置
lsmod
(= "list modules".显示模块。必须是root用户,如果不是,使用命令/sbin/lsmod执行)显示当前已经加载的内核模块.
set|more
显示当前的用户环境(全部显示)。一般来说东西太多了。
echo $PATH
显示环境变量“PATH”的内容。这个命令也可以用来显示其他的环境变量。使用set来察看所有的环境变量(和前一个命令功能相同)
dmesg | less
输出内核信息(也就是常说的内核内部缓存信息)。按“q”退出“less”。也可以使用 “less /var/log/dmesg”来直接检查最近一次系统启动时“dmesg”输出到文件里的内容。
chage -l my_login_name
查看我的密码过期信息
quota
查看我的硬盘区间(硬盘使用的限制)
sysctl -a |more
显示所有可设置的Linux内核参数
runlevel
输出和前一个和当前的运行级别(runlevel)。输出“N5”意味着:“没有前一个运行级别”和“5是当前的运行级别”。要修改运行级别,使用“init”,举例:“init 1”把当前的运行级别切换到“单用户模式”。
运行级别是Linux的操作模式。运行级别可以使用init命令进行快捷的修改。举例,“init 3”将把模式切换到运行级别3,以下是运行级别的标准:
0-中断 (不要把系统初始设置“initdeafult”设成这个值)
1-单用户模式
2-多用户模式,不带NFS(如果你没有网络,和运行级别3相同)
3-全功能多用户模式
4-目前没有使用
5-X11 (图形用户界面)
6-重新启动(不要把系统初始设置“initdeafult”设成这个值)
系统的初始运行级别设置在文件:/etc/inittab里
sar
查看抽取系统活动记录文件信息(/var/log/sarxx,其中xx指的是当前的日期)。sar可以抽取很多种系统统计信息,包括CPU的平均载荷,i/o的统计,当天的网络流量统计或者是几天以前的数据。
5.4基本操作
ls
dir
列出当前目录的内容。dir命令是ls命令的一个别名,所以这两个命令在文件罗列时使用的颜色代码是绝对一致的:
深蓝色=目录
浅灰色=一般文件
绿色=可执行文件
紫色=图形文件
红色=压缩文件
浅蓝色=链接文件
黄色=设备文件
棕色=FIFO文件(先进先出,命令管道)
ls -al |more
列出当前目录的内容,所有文件(包括那些以“点号”开头的隐含文件),并以“长格式”显示。把所有输出定向到管道more,在屏幕满屏时可以暂停。ls命令还有很多其他的非常有用的可选项。还有一些快捷键可以减少麻烦的命令输入。试试ll(=长格式罗列,相当于ls –l)。另外一个我经常使用的可选项是“ls –ad”(列出所有当前目录下的子目录但是不输出它们的内容)。
cd目录
修改当前目录。只输入“cd”没有指定目录名将切换到你的主目录。“cd –”将切换到上一次你访问的目录,这个命令在两个不同的目录之间切换时非常方便。“cd ..”将退到当前目录的上一级目录(父目录)。
./程序名
在当前目录下运行一个可执行程序。当可执行文件不在我的PATH下时,“./”是必须的。一个在我的PATH下的可执行文件可以简单的输入程序名运行而不需要“./”。
shutdown -h now
(要求root用户)关机。一般用于在远程关闭计算机。在控制台上可以使用<CTRL><ALT><DEL>来关闭计算机(所有用户都可以)
halt
reboot
init 6
(三个命令都要求root用户)关机或者重新启动计算机。主要用于远程系统重新启动,比上面的命令要简单一些。如果计算机停止响应时非常有用,我一般通过网络从其他机器telnet到停止响应的计算机上然后重新启动它。在本地计算机上,我则一般使用<CTRL><ALT><DEL>来重新启动。
vlock
(旧版本的RedHat没有这个功能)锁住当前的文本终端。也可以使用vlock –a锁住所有的终端(可能不是什么好主意)。最好的做法一般是使用logout命令退出系统。你不能在图形用户界面的终端上使用vlock命令――因为窗口管理器自带一个屏幕保护程序和一个加锁的工具(在KDE下一个小的锁型标志,键盘快捷键<CTRL><ALT><L>)。
5.5文件管理
cpsource destination
复制源文件source到目标文件destination。举例“cp /home/stan/existing_file_name .”将复制文件到我的当前工作目录。使用“-R”可选项(代表“recursive”)复制整个目录树的内容,比如:“cp -R my_existing_dir/ ~”将复制我当前工作目录的一个子目录到我的主目录里。
mcopysource destination
从DOS文件系统复制一个文件或者复制一个文件到DOS的文件系统里(不需要挂载DOS文件系统)。举例:
“mcopy a:autoexec.~/junk”。查看“man mtools”了解更多的相关命令,可以不需要挂载DOS文件系统就可以直接访问DOS文件,比如命令:mdir, mcd, mren, mmove, mmd, mrd, mformat ...我们不是很经常使用mtool的命令是因为――通常可以把DOS/MS Windows的文件系统挂载到Linux里,然后用Linux的常规命令来访问这些文件。
mvsource destination
移动文件和更改文件名。对于文件和目录的移动和改名都可以使用这个命令。
rename字符串更新字符串 文件名
很好用的文件名修改工具。举例:“rename .htm .html *.htm”把所有的以“htm”为扩展名的文件名里的“htm”全部换成“html”。
lnsource destination
从叫做source的源文件创建一个叫做destination的目标文件的“硬链接”。这个文件看起来好像是一个源文件的复制文件,但是实际上只保留了一个文件的硬拷贝,只是两个(或者多个)目录的入口指到同一个文件上。任何对这个文件所作的修改在所有地方都可以看得见。当一个目录得入口删除后,其他得目录得入口保持不变。“硬链接”的局限性是:文件必须在同一个文件系统里,创建目录或者一些特殊文件的硬链接是不可能的。
ln -ssource destination
从叫做source的源文件创建一个叫做destination的目标文件的“标志链接”(软链接)。“标志链接”只是指定到“真实文件”的访问路由。和“硬链接”相比较,它的好处是源文件和目标文件可以在不同的文件系统里。“标志链接”也有自己的不足之处:如果“真实文件”被移动或者删除,“链接”就被破坏――不知道路径指到什么地方;“软链接”可以产生“循环参照”(就象数据库或者电子表格,举例:a指向b,b指向c,c指向a)。简而言之,标志链接非常有用而且也很常用(比“硬链接”要常用得多),但是同时可能带来一些文件管理的复杂性。
rmfiles
删除文件。你必须是拥有这些文件才能够删除它们(或者是root用户)。在很多系统里,你将会被提问是否确认删除文件。如果你不想被提问,使用“-f”(=force,强制删除)参数。举例:rm –f *将删除所有当前工作目录下的所有文件,而且没有任何确认提示。
mkdirdirectory
创建新目录。
rmdirdirectory
删除一个空目录
rm -rfiles
删除文件,目录和所有它们的子目录。作为root用户,要小心使用这个命令――如果你在顶级目录树上执行这条命令,你将删除系统里所有的文件,到目前为止在Linux里还没有“取消删除”的命令。如果你真的想要这么做(再仔细想想?),这里告诉你该怎么办:使用命令”rm –rf /*”。
rm -rf files
(强制)删除文件,目录和所有它们的子目录如上所述,但是跳过确认信息提示。如果你是root用户,绝对要小心使用这个命令。
mc
激活“Midnight Commander”文件管理器(看起来有点象Linux下的Norton Commander)。根据一些恐龙级的计算机用户的反映,这是至今为止最好的文件管理器。
konqueror &
(在X终端下)激活KDE文件管理器。也许这是文件管理器的极品。比微软的文件浏览器要好得多。它集成了网页浏览,PDF文件阅读和其他功能。真的很酷!
xwc
(在X终端下)另外一个很出色的文件管理器,是X-Win-Commander的缩写。比Konqueror的速度快,但是功能上稍微逊色。
nautilus &
(在X终端下)一个真正很酷的文件管理器。比Konqueror要慢,但是提供了一些有用的功能――比如图标提供文件内容预览!它甚至可以预览声音文件!但是对CPU速度依赖较大,它在我的1.33GHZ的计算机上运行出色,但是我从来不在我的133MHZ的老机器上使用它。
5.6查看和编辑文件
catfilename| more
这个命令用于查看一个被称为"filename"的文本文件的内容,每次一页. "|"符号是"pipe"符号(在很多美式键盘里,它与""共用一个键).more使文本内容的输出显示停止在每一屏.对于长文件,有时可以很方便地使用head和tail来显示文件的开始和结尾部分或用less使之能上下滚动.如果你恰巧使用cat显示一个二进制文件,你的终端随后显示古怪的字符,你能使用reset命令恢复它.
catfilename| less
lessfilename
(选用二条命令之一)滚动一个文本文件的内容.退出按q . "less"大致相当于"more" ,该命令来自DOS,但经常"less"比"more"更方便因为它可使我能使用滚动条上下滚动.
headfilename
显示长文本文件的前10行.
tailfilename
显示长文本文件的最后10行.使用tail -f filename让文件的末尾持续读取该文件的不断出现的数据.
picofilename
使用简单,标准的文本编辑器pico来编辑一个文本文件.使用<Ctrl>x推出. Linux有很多文本编辑器,包括几个基于图形用户界面的编辑器.一个新的pico克隆版(GPLed)是nano.
pico -wfilename
编辑文本文件,没有文本行长度的限制.对于编辑配置文件很方便,如./etc/fstab.
kwrite
(在X终端)很不错, "高级文本编辑器".支持垂直文本选择!
kate
kedit
gedit
(在X终端).简单但很好的文本编辑器(基于GUI).
gxedit
(在X终端)另一多用途,具特色的文本编辑器.它甚至于能定时备份.
latte
(在X终端) "代码"编辑器,即,用于写程序的无格式文本编辑器.
nedit
(在X终端)另一种程序编辑器.很好.
bluefish
(在X终端) html编辑器(源码的句法高亮标注,有很多工具和选项).
ispellfilename
一个ASCII文本文件的拼写检查命令. AbiWord, WordPerfect, StarOffice和其它文本处理器都使用键入就检查的策略,所以除非需要,否则你不用担心简单的ispell命令. Linux新版本(如, RH7.0)包含了功能增强的拼写检查模块,称为aspell,但上面的命令仍然工作.
lookthermo
在你的系统单词目录(/usr/share/dict/words)中查寻开始于"thermo"的单词.
wvHtmlms_word_document.doc>filename.html
转化MS Word文件到html文件.
5.7查找文件
find / -name "filename"
在你的文件系统中从根目录"/"开始搜索被称为"filename"的文件. "filename"文件名可以包含通配符(*,?).
find命令功能强大.它有很多选项让你以不同的方式搜索文件.例如,通过日期,文件大小,权限,拥有者等等.但一些的搜索查询要花上几分钟编写.查看info find.这里是一些使用find来完成一些有用的任务的复杂例子.
find $HOME -name core -exec rm -f {} ;
以上命令从你的$HOME目录开始寻找,发现名字是"core"的文件.对于每一个这种被找到的文件,执行"rm -f" (强制删除文件). {}代表了已发现的文件, ""终止了该命令列表.
find /dev -user "peter" |more
以上命令显示由用户"peter"所拥有的所有设备的文件.显示文件名是find命令的默认行为,所以如果这就是我所要做的,无须特别指定.
find /home/peter -nouser -exec ls -l {} ; -ok chown peter.peter {} ;
在/home/peter目录下找到非有效拥有者的文件.以长格式列出文件.然后将这些文件的所有权改为用户"peter"和 组"peter".要处理文件的所有权,你可能必须是超级用户.
locatefilename
发现包含字符串"filename"的文件名.这比前面的命令更容易,更快,但基于数据库(通常在夜间重建),所以你无法找到刚刚存到文件系统的文件.为了强制立即更新数据库,作为超级用户可以使用:updatedb&.
whichexecutable_name
如果我在命令行键入可执行文件的名字,显示该可执行文件的全路径.例如,这条命令:
which mozilla。我的系统出现:
/usr/bin/mozilla
whereiscommand
显示"command"命令的二进制文件,源文件和手册的位置.
rgrep -r 'celeste' . |more
grep -r 'celeste' . |more
(二条命令,在你的系统中选用一条).在当前目录和所有子目录中搜索含有字符串"celeste"所有文件(选项"-r"代表递归).显示文件名和在文件中包含所寻找的字符串所在的行.
kfind &
(在X终端).在一个GUI前端界面使用findandgrep.很不错.命令行末尾的&使find运行在后台以便使X终端保持可用状态。
5.8X-windows基础
xinit &
启动基本的X-windows服务器(没有windows管理器). "&"使命令运行在后台.
startx &
启动X-windows服务器和默认windows管理器.就象在带有Win3.1的DOS下键入"win" .
startx -- :1 &
在显示进程1中启动另一个X-windows(默认显示进程为0).你能够同时运行几个GUI终端.在这些界面之间使用<Ctrl><Alt><F7>, <Ctrl><Alt><F8>来转换.
xterm
(在X终端)运行一个简单的X-windows终端.键入exit将关闭它.对于Xwindows有其它更高级的”虚拟”终端.我喜欢普遍使用的konsole和kvt(二者均来自kde)和gnome-terminal(来自gnome).如果你需要看起来更奇特的终端,试试Eterm.我还可以选择简单,运行快的rxvt.
startkde
gnome-session
xfce
afterstep
AnotherLevel
fvwm2
fvwm
(在X终端, 7条不同的命令,使用其中之一来启动你喜欢的windows管理器).在X服务器上在一个X终端启动你喜欢的windows管理器.
5.9网络应用程序
mozilla &
(在X终端下)运行mozilla网页浏览器。现在的版本是Mozilla 1.01 (2002年10月),这个浏览器非常不错。Mozilla是Netscape的一个衍生品(在老的Linux系统上一般使用NetScape)。还有其他几个不错的替代品比如konqueror和galeon (在Linux的X终端上输入konqueror和galeon直接运行)
mozilla –display host: 0.0 &
(在X终端下)在当前的计算机上运行Mozilla如何把输出定向到叫做“host”的计算机的第0个显示器的第0个窗口屏幕。你当前的计算机必须有权限在 “host” 计算机显示内容(一般的做法是,在“host”计算机上的X终端输入命令“xhost [当前的计算机名]”。其他的X-Windows的程序也可以通过同样的办法来运行)。
lynx file.html
以纯文本方式来浏览html超文本文件。尽管lynx看起来不像基于图形用户界面的网页浏览器那么出色,但是它很小巧,几乎没有出差错的时候,也不需要什么特殊的设置,只要你的网络是正常的。
konqueror &
(在X终端下)集成了文件管理器和网页浏览器的功能。很不错,和Mozilla的很多功能可以一比高低。KDE自带的软件。
pine
一个很不错,老古董的文本邮件阅读工具。还有另外一个老古董是elm。你的Mozilla将会阅读你因特网上的邮件,pine则让你阅读“本地”的邮件。比如,你儿子的邮件或者在你网络里的另外一台计算机的cron进程发送给你的信息。命令mail也可以用来阅读和写邮件,但是没有那么方便使用。
mutt
一个非常基本但是及其有用的快速邮件阅读工具。
给email使用的一个基本的操作系统工具。如果你只是要阅读邮件,可以参考上面的快速email阅读命令。如果你要在shell脚本上发送邮件,mail倒是一个很好的选择。
kmail &
(在x终端下)很好的图形用户界面的邮件程序。我使用kmail,因为它比Netscape的mail做得要出色的多。我可以拥有多个电子邮件帐号,然后分别从本地的smtp服务器和ISP的pop3服务器上下载邮件到同一个收件箱。简单易用,支持数字签名。
licq &
(在x终端下)一个ICQ的客户端程序。还有另外一个不错的选择是kxicq。就的Linux发行版本不带licq客户端程序,你可能需要自己下载安装。
knode &
(在x终端下)启动我喜欢的新闻组阅读器(usenet)。比Netscape内置的阅读器要好。
talkusername1
和另外一个登录在系统里的用户交谈(也可以使用“talkusername1@machine_name”来和另外一台计算机上的用户交谈)。要接受会谈请求,输入命令“talkusername2”。如果你正在忙着而有人想要和你交谈,你可以使用命令“mesg n”拒绝接受信息。你可以使用命令who或者rwho来查看有哪些用户当前登录在系统里。talk是一个老古董的UNIX标准工具,在某些场合下仍然非常有用。
telnetserver
使用telnet协议连接到另外一台计算机。可以使用计算机名或者IP地址。你会要求输入用户登录名和密码――你必须在远端计算机上有有效的用户帐号和密码。telnet将让你连接到另外一台计算机上好像你就在使用那一台计算机的键盘(几乎完全一样)。telnet不是非常安全――你输入的任何东西在网络上都是开放的文本模式,包括你的密码!一个在“传输路径”上稍微有点专业知识的系统管理员就可以阅读你所输入的内容。如果你要加密的传输,使用ssh(需要一些系统设置)。
rloginserver
(=remote login,远程登录)。这将使用你在当前登录系统上使用的用户名和密码,如果登录失败将会提醒你输入密码。
rshserver
(=remote server)连接到远程计算机的另外一个办法。这将使用你在当前登录系统上使用的用户名和密码,如果登录失败将会提醒你输入密码。
sshservername –l username
(=secure shell,安全的shell)使用安全连接远处登录到另外一台计算机。ssh是安全的,因为它使用一对RSA“公共-私有”钥匙压缩所有传送的数据。如果你没有指定用户名,它假设你使用当前的用户名。
ftpserver
ftp到另外一台计算机(还有一个ncftp带有一些附加的功能,另外还有基于图形用户界面的gftp)。ftp对于从一台计算机上复制文件到另外一台计算机上非常有用。可以试着用“anonymous”(匿名)用户如果你在远程计算机上没有有效帐号。建立连接之后,使用“?”查询有效的ftp命令一览。最基本的ftp命令有以下这些:
ls查看远程计算机上的文件
ASCII, binary设置文件传输模式为“文本模式”或者“二进制模式”,选择正确的模式非常重要
get从远程计算机上复制一个文件到本地计算机
mget从远程计算机上复制多个文件到本地计算机
put从本地计算机上复制一个文件到远端计算机
mput从本地计算机上复制多个文件到远端计算机
bye结束连接
如果你要使用脚本文件实现自动化,你可以考虑ncftpput和ncftpget,举例:
ncftpput –u my_user_name –p password –a remote.host.domain.remote_dir *local.html
如果你的计算机在防火墙后面,ncftpput可能会有一些问题-你需要配置文件/home/user_name/.ncftp/firewall。另外一个选择,你也可以使用lftp来达到同样目的:
lftp –e “mput –a *local.html” –u my_username, my_password ftp://remote.host.domain
如果要保留ftp目录的镜像,可以使用命令fmirror:
wget -m --no-parent http://sunsite.dk/linux-newbie
从网站上复制文件。以上这个例子使用可选项-m(mirror,镜像)从主站上获得完整的文件集合。可选项“--no-parent”限制搜索子目录里的文件。
minicom
minicom是一个专门给串行口设计的“终端模拟器”。看起来和用起来都很象“procomm”或者“telix”。对于串行口通信的故障诊断非常有用。
rx
使用Zmodem,Ymodem和Xmodem协议接收文件。Xmodem需要文件名。输入rx –help得到更多的信息。现在还有谁在使用这些协议?
5.10文件压缩和解压缩
tar -zxvffilename.tar.gz
(=tape archiver,磁带压缩)解压一个你从因特网上下载的tarball文件(*.tar.gz or *.tgz)。
tar -xvffilename.tar
拆解一个tarred(但是没有压缩)的文件。
tar czvpf /var/backups/mybackup.tar.gz /home
cd /; tar xzvpf /var/backups/mybackup.tar.gz '*/myfile.rtf'
作为root用户,创建一个/home目录的备份压缩文件。第二条命令显示如何从备份恢复一个文件。在tarball文件里将不包含“点”文件(指的是以“.”开头的文件或者目录)。要把所有文件解包,可以使用:tar cvzffilename.tgz *.[a-aA-Z]*
gunzipfilename.gz
解压一个压缩文件(*.gz或者*.z)。如果你想把文件压缩成这种格式,可以使用gzip(还有zip或者compress命令)。注意一下gunzip有趣的发音听起来象“gun zip”(大炮压缩)。
zcatfilename.gz| more
(=zip cat)显示一个压缩文件的内容。还有其他一些相关命令不需要预先解开压缩文件就可以使用:zless, zmore, zgrep…等等。
bunzip2filename.bz2
(=big unzip)解压一个由bzip2压缩工具压缩的文件(*.bz2)。一般用于很大的文件。
unzipfilename.zip
解压一个由DOS下的PKZIP压缩工具压缩的文件(*.zip)
zip filename.zip filename1 filename2
把两个文件“filename1”和“filename2”压缩到一个压缩文件叫做“filename.zip”。
unarj e filename.arj
解压一个使用arj压缩的文件(*.arj)
lha e filename.lha
解压一个使用lha压缩的文件(*.lha)
uudecode -ooutputfile filename
解码一个使用uuencode的文件。uu-encoded在使用email传送非纯文本文件的时候应用非常广泛(uuencoded把任何文件格式都变成文本文件)
catfilename| mimencode -ofilename.mime
catfilename.mime| mimencode -u -ofilname
(两个命令)第一个命令把文件filename编码成基于因特网邮件7bit数据传送标准的文件filename.mime。第二个命令把基于因特网邮件7bit数据传送标准的文件filename.mime解码成一般文件filename。
ar -x my_archive.a file1 file2
(=压缩存档)。从压缩文件my_archive.a解压出文件file1和file2。ar压缩工具更多的用于保存文件库记录。
ark &
(在X终端下)。一个图形用户界面的压缩工具。也许是你管理压缩文件所需要的方便工具。还有另外一个选择是gnozip。
5.11进程控制
ps
(=“print status”or“process status”)列表显示当前正在运行的进程的进程标识号(PID)。用ps aux查看你的系统上下在运行的所有进程(也包括其他用户的进程和没有终端控制的进程),每个进程都显示其所有者的名字。使用“top”命令持续显示当前正在运行的进程列表。
any_command &
在后台运行任务命令(符号“&”表示“在后台运行前面的命令”)。任务号(Job_number)(译者注:和进程号)将显示在屏幕上,你可以使用任务号将该任务调到前台(见下面)。当我从一个X终端启动一个GUI程序时,我经常使用“&”。
jobs
列表显示后台运行或是被停止了的进程并显示它们的任务号。
fg job_number
将一个后台运行的或是被停止了的进程调到前台运行
bg job_number
将一个进程调至后台运行,这与在命令行用“&”启动后台进程是完全一样的。这将重新启动一个被停止了的后台进程。一般可以用<Ctrl>z来停止当前的前台进程。如果你有被停止的或后台运行的任务,你必须在命行输入exit命令两次,以从系统中注销。
batch
at>updatedb<Ctrl>d
在系统负荷低的时候执行任何命令(经常昌需要长时间完成的任务)。你可以从系统中注销,但进程将继续运行。当命令完成后,一封包含输出信息的电子邮件将发送给你。在以上示例中,“at>”是一个提示符,将要执行的命令是updatedb,然后按<Ctrl><d>来结束命令的输入(你可以输入很多命令提交执行,用<Enter>来分隔它们)。
at 17:00
在指定时间执行命令。你将被提示输入要执行的命令,直到你按<Ctrl>d。相关的命令有atq(显示由at启动的进程队列)和(从“at队列”中删除一个进程)
kill PID
强制一个进程终止。首先要用ps确定终止的进程的进程标识号(PID)。
killall program_name
通过程序名终止一个(组)程序。例如:killall pppd将断开你的拨号网络。
Nohup program_name
(=no hangup)。运行程序program_name,并使它在你注销时不被中断。输出结果被重定向到你的用户的主目录下的nohup.out文件。在你确信不想运行一个交互程序的时候,使用nohup。
Xkill
(在X终端中)用鼠标终止一个基于GUI的程序。(用你的鼠标指到你要终止的进程的窗口并点击)
kpm
(在X终端中)KDE进程管理程序
lpc
(由root用户执行)检查和控制打印机。输入“?”可以查看命令列表。
lpq
显示打印机队列的内容。在你可从“K”菜单-实用程序(“K”menu-Utilities)中调用基于GUI的“打印机队列”(“Printer Queue”)
lprm job_number
从打印队列中删除一个打印任务。
nice program_name
执行一个程序并调整及优先级。因为在本例中没有指定优先级,将从缺省优先级(通常是0)增加10(进程将运行较慢)。较小的值,代表较高的优先级。优先级的取值范围为-20到19。只有root用户能指定负值。用top可显示正在运行的进程的优先级。
renice –18 PID
(以root用户运行)将一个正在运行的进行的优先级调整为-18。普通用户只能调整他们自己的进程,而且只能从当前值向上调(即使其运行变慢)。可以使用renice +10 –u peter来减少用户peter对CPU资源的占用,这样当他运行高强度运算任务时,使其他用户不受到损害。
<Ctrl>c,<Ctrl>z,<Ctrl>s和<Ctrl>q也属于本章内容,但它们在前面已经描述过了。简单地说,它们表示停止当前命令,调度当前命令到后台运行,停止数据传输,恢复数据传输。
lsof
列表显示已经打开的文件。如果你是root用户,所有的打开的文件都将被显示。使用lsof /dev/tty1你可以指定显示由第一控制台所有的进程打开的所有文件。要想只显示网络文件(对安全审计非常有用),你可以使用lsof –I(以root用户执行)。
Watch –n 60 my_command
以60秒为间隔反复执行my_command命令(缺省间隔为2秒)
5.12一些管理命令
su
(=substitute user id)采用超级用户(=root)的身份(将提示你输入口令)。输入“exit”返回你先前的注册。不要习惯于用身份在你的机器上工作。root帐户是用于管理的,当你需要访问管理帐户时,su命令可以使你轻松进入。你也可以使用su命令去采用其他任何用户的身份,例如:su barbara将你变成“barbara”(除非你是超级用户,否则需要口令)。
Alias ls=”ls –color=tty”
为命令产生一个别名,用增加一个关于颜色的格式。在这个例子中,别名也叫“ls”,只有当输出被指向一个终端(而不是文件)时,color选项才被执行。如果你想让系统上的所有用户始终能使用这个别名,就把它写到/etc/bashrc文件中。别名是定制你的系统的一种方便的方法。只输入“alias”可以查看你的帐户可使用的别名的列表。使用unalias alias_name可以删除一个别名。
cat /var/log/httpd/access_log
显示自从上次日志文件被“转动”(一般每天在cron程序运行时转动一次)后,谁连接过你的http(apache)服务器。前一次的日志文件为access_log.1,再前一次的日志文件access_log.2,依此类推。
cat /var/log/secure
(以root用户运行)检查重要系统日志。如果你使用Internet访问的话,定时检查的一个很好的主意。
ftpwho
(以root用户运行)检查当前谁连接在你的ftp服务器。
printtool
(在X终端上以root用户运行)打印机配置工具。设置文件存放在/etc/printcap和/var/spool/lpd目录下。
setup
(以root用户运行)配置鼠标、声卡、键盘、和系统服务。许多发行套装都有自己特定的配置实用程序,setup是Redhat的缺省配置程序。Mandrake 7.0提供非常好用的DrakConf。
linuxconf
(以root用户运行,在文本模式或是在X终端上)。在这里你可以访问和更改上百种网络设置。功能非常强大――一次不要改动太多东西,改动你所不清楚的项目时一定要小心。Redhat网络配置工具netconf是linuxconf的一个子集,因此它比较简单而且很多时候容易使用。
mouseconf
(以root用户运行)。一个配置鼠标的简单工具(在完成初始安装后)。Mandra