宁波.Net技术讨论区

linux 常用命令

 

[200511/19]linux 常用命令

超级用户创建用户: adduser login-name (For RedHat)
useradd -m login-name (For SuSE)

登陆多个终端会话:Ctrl+Alt+F2,(F2-F7 or F8,one computer can creat 7 or 8 virtual terminals)
可用who查看登陆多个虚拟终端后的效果,exit或logout或Ctrl+D 退出虚拟终端

两种主流图形桌面:GNOME(GNU Network Object Model Environment) KDE(Domon Desktop Environment)

端口:每个终端或监视器都通过一个与计算机端口连接的电缆连接到计算机上。端 口是计算机后面的一个物理位置。每个端口都有一个名称,它通常以tty开头,并加上一个数字构成,如tty4。通过网络连接的终端使用以pts命名的电子 端口或伪端口。当发出who命令后,shell将执行实用程序who ,who 将搜索特定的系统文件以确定每个用户的登陆名,端口和时间,然后实用程序who将这些信息按一定格式输出到屏幕。

查看日期:如 cal 9 99cal 9 1999 是不一样的,前者将输出的是公元99年9月份的日期。后者输出的是1999年9月的日期。

shell命令构成:当在命令行输入一个命令,按下回车,表明命令行输入结 束,shell将启动一个新的进程。shell将命令行中的实用程序名后面的参数传给新的进程,并找到实用程序代码,最后另进程执行它。比如在指示 shell执行date实用程序后,子进程将按date的代码执行。date实用程序检查系统时钟并将输出结果格式化,然后输出。在默认情况下,如果没有 请求shell将输出结果连接到一个文件或甚至连到另一个实用程序,那么实用程序的输出连接到显示器。当子进程运行结束,进程将通知shell任务完成, 子进程终止。

列出进程:指令ps用于输出当前进程的列表。当键入ps最少有两个进程在运行——shell和ps进程。
逐条输入 ps -aux ,ps -ef这两条命令都将产生一个很长的进程列表。ps的这些输出包括许多大多数用户不需要的多余的信息。列表中的许多进程是系统的,这些系统进程提供了系统所有的服务,如打印和网络等。这些信息对系统管理员和其他监视UNIX系统的人来说是很有用的,尤其在诊断系统问题时。

重定向:who > users_on who指示shell启动一个新的进程以运行实用程序who的代码,>指示shell创建一个新的文件,并将进程的输出连接到该文件,users_on分配给新文件的文件名,该文件将接受who的输出。
重定向特殊字符>指示将其前面实用程序的输出连接到一个文件。双重定向符号>>指示将实用程序的输出追加到已有文件的末尾。

统计文件中的元素个数:
wc lost_days ,显示为
| 35(行数) 452(单词数)  1989(字符数) lost_days(统计的文件名)
参数 -l用于只统计行数,-w只统计单词数,-c只统计字符数

管道(将输出重定向到其他实用程序):ls | wc 该命令行指示shell启动两个进程,并将第一个进程的输出连接到第二个进程的输入。然后,在第一个进程中运行ls,在第二个进程中运行wc。ls的输出 并不显示到屏幕上,也没有重定向到一个文件。shell将它重定向到运行wc实用程序的第二个进程的输入。然后。wc统计输入(ls的输出)的行数,单词 数和字符数,最终将结果输出到屏幕。

重复命令:不同的shell重复执行命令的方法不同。
输入date,接着输入!1,如果date再次,则使用的是 C shell,tcsh shell或bash shell
如 果!1不起作用.输入data再输入r,如果date实用程序响应r命令会再次执行data,则使用的是Korn shell(ksh),如果两者都不起作用,那么可能在使用 sh shell(Bourne shell),可以输入csh,ksh或bash来启动一个更新版本的shell
shell会记住用户所发出的命令,history将在屏幕上列出执行过的命令,每个命令后面都有一个序号(如果没有,可输入set history=100来启动).
!27将执行历史的27个命令,!d则最后一条执行以d开头的历史命令

使用别名:在csh和tcsh中输入alias DIR ls,alias now date,在bash和ksh shell中输入 alias DIR=ls,alias now=date,DIR,now将分别是ls和date的别名,用DIR和now输出的效果和ls,date的效果一样.shell也可以通过alias列出所有当前的别名。unalias解除别名。

more/less分页显示:空格:前进一屏;回车:前进一行,b向着文件开头回退一屏;/xxx:向前查找第1个含有xxx的页,并显示它;q退出。

显示指定行:head lostdays,head实用程序读出以参数为文件名的文件的开始10行内容。head -8 lostday userson,作为head的参数的两个文件lostday和userson的前8行将分别显示到屏幕上。  tail则从末尾开始显示指定行。

复制命令:cp为了防止覆盖以有文件使用参数 -i
删除文件:rm确认删除使用参数-i
一次删除多个用法:rm file1 file2 filen

实用程序的错误信息:
如果shell或实用程序无法解释输入命令行的某些部分,将会把错误信息发送到屏幕上。而可以执行的部分将执行。如cat userson xyZ > junk3 ,cat实用程序将参数解释为要读取的文件。找不到文件xyZ时,cat报错,但是它读出另一个文件userson,并将其内容写到文件junk3中。

排序:密码文件/etc/passwd中包含每个用户的一行信息(记录)。系统中没添加一个新用户,通常都会在给文件的末尾添加新的一行信息,密码文件的内容不再按次序排列。输入head -20 /etc/passwd > mypasswd,对mypasswd排序sort mypasswd,再cat passwd对比。sort实用程序将文件mypasswd读入内存,并对文件中的行排序,然后将输出结果显示到屏幕上。mypasswd文件本身并没有改变,只是被读出和排序它的数据,并输出到屏幕上。sort userson lostdays | more,读出两个文件的内容,并一起排序。输出的文件中的所有行的统一排序。排序中一般按照ASCII码排序,可通过 man ascii命令查看ASCII顺序。逆序排列可用选项-r,如sort -r userson lostdays | more。若没有指定输入文件名,即单独用sort命令,那么将等待从键盘上输入字符在进行排列,输入以Ctrl+D(当作文件结尾符EOF)结束。这是因为当进程第一次启动是,默认的输入是终端键盘,所以sort实用程序从默认的输入源读取输入。

在文件中定位特定的行:grep is c1 c2 c3 total,在c1,c2,c2,total中找is所在的行。

打印:将文件发送到打印机打印的UNIX命令根据系统的不同而有所差异,lp filename或lpr filename,如果需要使用打印机名,则使用选项,选项与打印机名之间没有空格。比如:lp -ddest lostdayslpr -Pdset lostdays,其中dest是目标打印机名

指定文件作为输入:注意sort mypasswd与sort < mypasswd的输出结果是一样的,后一语句由于<指示shell打开文件mypasswd并将它连接到sort的输入。因为没有参数传递给 sort,所以sort不打开文件。重定向符号是一个很重要的特征,因为有一些实用程序不能打开文件,所以必须指示shell来完成。

列出文件中拼错的单词:spell < users_on,shell打开文件users_on并将它连接到spell的输入,spell将文件中在在线字典中找不到的所有字符串都视作拼错的单词。

cat创建文本文件:cat > filename将cat的输出连接到文件filename,并运行cat实用程序。默认情况下,cat的输入为键盘输入,cat将读取从键盘输入的信息,并将它们输出到与相连的文件。

与其他用户通讯:write other_login,如果给用户没有登陆,则发送不成功,如果该用户在两个终端都登陆,那么信息将发送给一个默认的终端(who查看的第一个实例,其 他的实例将给出终端名)。如果要发送到别的终端,使用write other_login other-terminal.用write other_login < first_file可以向别的终端发送文件。拒绝其他用户访问,则输入 mesg n

特殊字符$:$意为找到其后名字标识的变量值,并使用变量值代替它 (美元符号和变量名)。echo $USER,$通知shell找到其后名字标识的变量值,并使用变量值代替给字符串,在echo $USER命令中USER以$开头,所以USER是shell要求取的变量。shell使用实际的登陆名替换变量和$后,将登陆名作为一个参数传给 echo。echo读取参数,并输出到屏幕上。remark:shell将登陆名传送给echo而不是$USER传给echo。

指示shell不解释特殊字符:echo \*,shell将*不在视为通配符。注意如果echo \$USER\*$USER输出的将是$USER*和登陆名,因为最后$USER前面没有\,所以被shell解释为变量。who > \这里按回车键不是命令行的结束,所以也没有开始处理的命令行,它等待更多的输入。当输入文件名后在回车时,shell将它作为命令行的结束,处理一条跨 两个输入行的命令。

单引号解释符的妙用:单引号内部对特殊字符的解释关闭,特殊字符不被 shell解释echo'$USER*$USER'将将字符串如实输出。echo AA   BB   CC,shell用一个和多个空格来隔开实用程序及参数。echo读取参数,并将他们输出到屏幕上,输出是用一个空格来代替他们之间的多个空格。echo 'AA   BB   CC'将通知shell不解释空格。对于alias xxx ls -l大多数shell仅接受一个单权标作为别名,如果多于一个权标,将会报错。可以使用单引号将不解释空格。alias xx 'ls -l'

进程通信:Ctrl+D文件结束标志,Ctrl+C中断信号,此时如 果有应用程序等待键盘输入,进程将结束并没有任何输出。直接返回shell。sleep 6,shell运行sleep并将数字6传给它,在sleep记数到6之前,shell一直等待,不出现提示符,直到sleep完成。sleep 60 &,后面的&通知shell执行整条命令,但是在sleep完成之前shell并不等待,它将返回新的提示符,用户可以继续工作。这个特 征允许用户将耗费运行时间的程序放到后台,而用户可以在前台继续。

指示shell读取文件:在csh或tcsh中,输入 source commands-file在ksh或bash或sh中,输入.commands-file。shell将逐条的执行commands-file中的语句并执行

覆盖文件变量:在>重定向输出是有可能覆盖一个已经存在的文 件,是否覆盖,取决于使用的shell和变量noclobber。确保关闭noclobber,在c shell或tcsh shell中,命令为unset noclobber在Korn shell或bash中,命令为set +o noclobber,此时重定向输出到一个文件是,如果文件不存在,shell将创建它,如果同名的一个文件已经存在将删除该文件的内容为新的内容腾出空 间。指示shell重定向十不要破坏文件,在C shell中,命令为set noclobber在Korn shell或bash shell中,命令为set -o noclobber,此时重定向到一个相同的文件,在Korn 和C shell中,屏幕上将会显示一条错误信息,Bourne shell没有noclobber变量,如果重定向时文件存在,则覆盖它。查看shell变量是否使用noclobber,则在csh或tcsh shell中,使用set命令,在ksh或bash中,使用set -o命令,将显示使用的变量的列表。

防止意外退出系统:如果登陆shell后无意中按了Ctrl+D键, 可能会退出系统。文件结束符意味着没有输入,退出,因此shell退出。如启动一个子进程csh,输入ps列出子进程csh,按Ctrl+D键,结束进 程,重新输入ps,进程csh不见了,因为已经指示退出该进程了。防止这种事情发生,可使用下列命令,在csh或tcsh shell中,命令为 set ignoreeof在ksh和bash中,命令为set -o ignoreeof,此时在按CTRL+D,将接收到一条信息,指明要使用exit或logout命令退出系统。

改变提示符:查看当前的变量,set,如果列表包括prompt变量 则正在同一个csh或tcsh shell交互,如果包括PSI变量,则是在ksh或bash中,如果在用csh或tcsh shell,使用命令set prompt='myname'这里myname就是想显示的提示符。如果在使用Bourn或Korn shell,则输入下列命令PSI='myname'.

修改密码:确认系统是否运行了网络信息服务(Network Information Service,NIS),如果不能确认系统是否运行网络信息服务,则先试用yppasswd命令,如果出错,则使用passwd。

请求shell显示PATH变量的值:echo $PATH,变量PATH类似于:/bin:/usr/bin:/usr/local/bin:/uer/bin/x11:/usr/hosts,该变量 由一系列冒号分开目录组成。请求是、执行实用程序时,只、这些目录就是shell要查找实用程序的地方。shell先在最左边的目录中查找,然后下一个。

确定实用程序的位置:which who

查看密码文件的组成:用户的ID密码和其他信息一般放在/etc/passws文件中,任何用户登陆时,都将读取该文件。输入命令more /etc/passwd将显示出来,如果是在一个很大的网络上,输入ypcat passwd | more,按q退出。

[2005/11/20]vi编辑器

启动vi:vi filename可能发生两种情况:如果输入的filename在当前目录中存在,vi将新建一个该文件的缓冲副本,供用户编辑。如果提供的文件名不存 在,编辑器开始使用新的文件名编辑一个内存缓冲区,当输入:wq时,缓冲区保存到磁盘,并将filename作为它的文件名。

移动光标方向:若是远程登陆到一个系统时,箭头可能不工作,使用方向键h j k l移动光标
以单词为曾量向前或向后移动光标:(w前移词头 b后移 e前移词尾,多个单词前面加数字,如5w)
光标移到指定位置:$光标移到当前行行末,^移到当前行行未,15|移到当前行第15个字符,fv光标移到文本中的下一个v 。

行号定位::set number请求编辑器显示行号。:set nonumber指示关闭行号。5G或:5移到第5行,1G或:1移到第一行;G或:$移到行最后一行。(以冒号看头的命令必须使用回车键结束,其他的vi命令不用回车键,一旦输入,立即执行

光标返回原来位置:''(两个单引号)指示vi将光标返回文件中原来的位置,而不管光标在什么位置,即使在新位置对文件做了修改。

将光标快速移动到特定目标:/targetstring并回车,光标在文本中 向前移到targetstring首次出现的位置,光标到达文件的末尾时,编辑器返回到文件开头继续向前搜索直到它找到目标或到达原来位置,按n可在同一 方向查找下一个目标,N想相反方向查找下一个目标(目标是字符串而不是单词);?targetstring向后搜索。

命令模式下的基本操作命令:
删除行:dd(包括空格行)删除当前行,2dd删除当前行和下一行;删除字符:x(包括空格)删除当前字符,5x删除当前字符和下一4个字符。

追加内容:i命令在光标的左侧插入文本;a命令从当前光标位置右侧开始放置文本;o命令将光标所在行的下面打开一个新行;O(大写o)命令在光标上方打开一个新行;I命令将光标移到当前行的行首,并切换到插入模式,A命令光标移到当前行的行尾,并切换到插入模式。

替换字符:r替换单个字符,替换字符的两个特殊作用:断开长文本行,将光标移 到一个长行中部的两个单词之间的空格,输入r回车。即用一个换行符替换了两个单词之间的空格符,连接两行文本,在文件中选择两个相邻的短文本行,并将光标 放在第1行的任意位置,输入大写字母命令J,两行文本将连接到一起;R逐个替换字符;s用文本替换单个字符;C修改当前行上光标后面的部分;cc修改行, 即cc通知编辑器删除当前的单行,光标置于行首,处于插入模式;cw从光标所在的位置开始修改单词。cfx修改从光标到下一个x字符之间的文本。

全局替换::s/creating/producing单词creating的第一个实例该为producing。命令:1,$s/2002/1776/g表示,1,$从文件的第一行到最后一行,s进行替换,2002目标模式,1776替换模式,/g全部替换。

移动和复制文本:yy复制当前行,7yy复制7行;P将接出的行粘贴 到光标位置上面的一行,p将复制的文本粘贴到光标位置下面的一行。删除命令dd和p命令联合使用表示剪切和粘贴,因为dd删除是放在缓冲区。yw复制一个 单词,dw剪切一个单词。yfx复制光标到x字符的文本。y$复制行的剩下部分。y1复制一个字符。使用行号复制::5,8 copy 2将5~8行之间的文本复制到第七行之后(5,8表从第一行到第2行,小号在先,编辑器不解释如8,5之类的行号),copy可简写成co。:2,6 move 2将第2到6行移到第8行后面(是移动而不是复制)。

撤消文本修改:u撤消最后一次文本修改,即使将光标移出了修改的行;U撤消对当前行的所有修改,前提是没有将光标移出当前行。

重复最后一次文本修改命令:在命令模式下输入.(点号)。

删除单词:dw编译器删除从光标到下一个空格之间(包括空格)的所有字符,要 删除整个单词,将光标移到单词的首字母,其他非字母数字字符在vi中也作为一个单词。4dw则删除4个单词,编辑器接受影响跨行单词的参数,在vi的一些 版本中,如果行末有一个空格字符,则w命令将不跨越该行的行末。

删除行部分:D或D$将当前行光标后的右册侧部分删除。dfx删除当前行上从光标到下一个x之间的文本,使用该命令是可以先用/x定位一下x的位置再进行删除,防止误删。

进入命令模式失败:人们经常开始编辑一个文件后,还在命令模式下输入文本,如输入15后,发现在命令模式下,因此输入a,然后继续添加文本。因为15在a之前输入,所以编辑器将15解释为添加随后的文本的次数。

读入文本::3 read userson,读取useron,并将该文件中的文本放到当前文件中的第3行之后,如果没有指定行号,放到当前光标之后。

结束vi:保存到新的版本::w newfilename;另存文本块::1,7 write newfilename2;覆盖以有文件块:1,7 w filename;追加文本:5,8 >> filename;:wq保存并退出;:q!强制退出;

在vi中运行shell:在vim命令模式下,输入:! date,!命令启动一个子进程,并运行!之后的命令,date的输出显示到屏幕上,并提示你按回车继续。也可以读入shell命令行的输出到当前文 件,:8 r! head -5 /etc/passwd,head命令读取文件/etc/passwd的前5行,并将其添加到当前文件的第8行。

纠正拼错的文件名:如访问文件practice却输入vi praZtice,编辑器找不到该文件,将启动一个新文件编辑会话,可以在命令模式中访问正确的文件,并放弃在拼错文件名的文件(praZtice)中所作的一切,输入:edit! practice。

同时编辑多个文件:没输入一个vi和一个文件名将启动一个运行vi程序的新进 程,可以指示编辑器编辑多个文件而不启动多个进程,vi程序仅启动一次。vi file1 file2 file3,访问的第一个文件是file1,在:w(注意不含有q)保存第一个文件后,编辑器仍然可用,输入:n将打开下一个。继续当保存最后一个文件 后,在使用:n将出现错误,现在已经编辑了启动vi时列出的所有文件,如果想依次重新编辑所有文件输入:rew

变量设置:自动字符缩进:命令模式下:set autoindent或:set ai,每个新行都根据先前行自动缩进,比如第一行插入是按下TAB键,以后每行都自动缩进一个TAB。关闭自动缩进::set noai;显示编辑模式::set showmode;忽略大小写搜索::set ignorecase或:set ic;列出特殊字符::set list屏幕上每行文本的行末将出现一个$,文本中的制表符显示为^I,关闭命令为:set nolist;要使一个设置选项生效,可以输入:set option,并回车,关闭一个特征可以输入:set nooption查看当前选项,输入:set,查看所有选项的值或状态,输入:set all自动换行:在vi编辑器的命令模式下输入:ser wrapmargin=50或:set wm=50,wrapmargin允许设置屏幕右页边的位置,既输出的右边界,一旦达到这个极限将自动换行开始下一个新行。要关闭该选项,令其值为0。

vi初始化文件:vi编辑器的初始化文件是.exrc(ex run control),vi一旦启动就会马上读取初始化文件.exrc,而.exrc文件中的命令决定了vi编辑器如何运行。编辑文件.exrc在主目录中输 入vi .exrc,如果是linux系统的vim编辑器,则初始化文件是.vimrc映射::map g 1G,g被映射为1G,所以执行g和执行1G命令一样,如:map # Go This is new text。

posted @ 2011-03-24 10:27  山 人  阅读(975)  评论(0编辑  收藏  举报