shell是一种命令解释器,它提供了用户和操作系统之间的交互接口。shell是面向命令行的,而X Window则是图形界面。你在命令行输入命令,shell进行解释,然后送往操作系统执行。
shell可以执行Linux的系统内部命令,也可以执行应用程序。你还可以利用shell编程,执行复杂的命令程序。
Linux提供几种shell程序以供选择。常用的有Bourne(bsh)、C(csh)和Korn(ksh)。
各个shell都能提供基本的功能,又有其各自的特点。
Bourne shell是由Steven Bourne编写的,是UNIX的缺省shell。Bourne shell的shell编程能力很强。但它不能处理命令的用户交互特征。bash是Bourne shell的增强版。C shell是由加利福尼亚大学伯克利分校的Bill Joy编写的。它能提供Bourne shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。很多人认为,C shell的编程能力不如Bourne shell,但它的语法和C语言类似,所以C程序员将发现C shell很顺手。tcsh是Cshell的增强版本和Cshell完全兼容。Korn shell是由Dave Korn编写的。Korn shell融合了C shell和Bourne shell的优点,并和Bourne shell完全兼容。Korn shell的效率很高,其命令交互界面和编程交互界面都很不错。Public Domain Korn shell( p d k s h )是Korn shell的增强版。
bash是大多数Linu x系统的缺省shell。它克服了Bourne shell的缺点,又和Bourne shell完全兼容。
Bash有以下的特点:
1 补全命令行。当你在bash 命令提示符下输入命令或程序名时,你不必输全命令或程序名,按Tab键,bash将自动补全命令或程序名。
2 通配符。在bash下可以使用通配符*和?。*可以替代多个字符,而?则替代一个字符。 3 历史命令。bash能自动跟踪你每次输入的命令,并把输入的命令保存在历史列表缓冲区。缓冲区的大小由HISTSIZE变量控制。当你每次登录后,home目录下的.bash_history文件将初始化你的历史列表缓冲区。你也能通过history和fc命令执行、编辑历史命令。
4 别名。在bash下,可用alias和unalias命令给命令或可执行程序起别名和清除别名。这样你可以用自己习惯的方式输入命令。
进入shell
Linux启动后,给出login命令,等待用户登录。 Login: <输入用户名> Password: <输入密码> 如果是正确的用户名和密码,那么你就会进入Linux的shell,shell给出命令提示符,等待你输入命令。使用logout命令退出shell。
1
shell的常用命令
1、更改帐号密码 语法:passwd Old password: <输入旧密码> New password: <输入新密码〉
Retype new password: <再输入一次密码> 2、联机帮助 语法:man 命令 例如: man ls 3、远程登录
语法:rlogin 主机名 [-l 用户名] 例如:
rlogin aa rlogin aa -l user
远程登录到工作站 aa 中。
使用 user 帐号登录到工作站 aa 中。
语法:telnet 主机名 或 telnet IP地址 例如: telnet aa
telnet 130.129.21.250
文件或目录处理
4、列出文件或目录下的文件名 语法:ls [-atFlgR] [name]
ls 列出目前目录下的文件名。
ls –a 列出包括以.开始的隐藏文件的所有文件名。 ls –t 依照文件最后修改时间的顺序列出文件名。 ls –F 列出当前目录下的文件名及其类型。以/结尾表示为目录名,以*结尾
表示为可执行文件,以@结尾表示为符号连接。
ls –l 列出目录下所有文件的权限、所有者、文件大小、修改时间及名称。 ls –lg 同上,并显示出文件的所有者工作组名。 ls –R 显示出目录下以及其所有子目录的文件名。 5、改变工作目录 语法:cd [name] name:目录名、路径或目录缩写。
例如: cd 改变目录位置至用户登录时的工作目录。 cd dir 改变目录位置至d i r目录下。 cd user 改变目录位置至用户的工作目录。 cd .. 改变目录位置至当前目录的父目录。
2
cd ../user cd /../.. cd ~ 6、复制文件
改变目录位置至相对路径 user 的目录下。 改变目录位置至绝对路径的目录位置下。 改变目录位置至用户登录时的工作目录。
语法:cp [-r] 源地址 目的地址 例如:
cp file1 file2 将文件 file1 复制成 file2。
cp file1 dir1 将文件 file1 复制到目录 dir1 下,文件名仍为 f i l e 1。 cp /tmp/file1 . 将目录/tmp下的文件file1复制到当前目录下,文件名仍为
file1。
cp /tmp/file1 file2 将目录/tmp下的文件file1复制到当前目录下,文件名为
file2。
cp -r dir1 dir2 复制整个目录。 7、移动或更改文件、目录名称 语法:mv 源地址 目的地址 例如:
mv file1 file2 将文件file1更名为file2。
mv file1 dir1 将文件file1移到目录dir1下,文件名仍为file1。 mv dir1 dir2 将目录dir1更改为目录dir2。 8、建立新目录 语法:mkdir 目录名 mkdir dira 建立一新目录dira。 9、删除目录
语法:rmdir 目录名 或 rm 目录名 例如:
rmdir dir1 删除目录dir1,但dir1下必须没有文件存在,否则无法删除。 rm -r dir1 删除目录dir1及其子目录下所有文件。 10、删除文件 语法:rm 文件名 例如: rm file1 删除文件名为file1的文件。 rm file? 删除文件名中有五个字符且前四个字符为file的所有文件。 rm f* 删除文件名中以f为字首的所有文件。 11、列出当前所在的目录位置 语法:pwd 12、查看文件内容 语法:cat 文件名 例如:
3
cat file1 以连续显示方式,查看文件名file1的内容。 13、分页查看文件内容
语法:more 文件名 或 cat 文件名 |more 例如:
more file1 以分页方式查看文件名file1的内容。 cat file1 |more 以分页方式查看文件名file1的内容。 14、查看目录所占磁盘容量 语法:du [-s] 目录 例如: du dir1 显示目录dir1的总容量及其子目录的容量(以KB为单位)。 du -s dir1 显示目录dir1的总容量。
文件传输
15、拷贝文件或目录至远程工作站 语法:rcp [-r] 源地址 主机名:目的地址 源地址文件名、目录名或路径。
例如:
rcp file1 doc:/home/user
将文件file1拷贝到工作站doc路径/home/user下。
rcp -r dir1 doc:/home/user 将目录dir1拷贝到工作站doc路径/home/user
下。
16、自远程工作站,拷贝文件或目录 语法:rcp [-r] 主机名:源地址 目的地址 主机名:工作站名。 源地址:路径名。
目的地址、文件名、目录名或路径。
例如:
rcp -r doc:/home/user/dir1 将工作站doc路径/home/user下的目录dir1,拷
贝到当前工作站的目录下,目录名仍为dir1。
17、本地工作站与远程工作站之间的文件传输
必须拥有远程工作站的帐号及密码,才可进行传输工作。 语法:ftp 主机名 或 ftp ip地址 例如: ftp doc 与远程工作站doc之间进行文件传输。 Name (doc:user-name): <输入帐号>
Password (doc:user-password): <输入密码> ftp> help 列出ftp文件传输时可使用的命令。 ftp> !ls 列出本地工作站当前目录下的所有文件名。
4
列出本地工作站当前所在的目录位置。 列出远程工作站当前目录下的所有文件名。 列出远程工作站当前目录下的所有文件名。 分页列出远程工作站当前目录下的所有文件名。 列出远程工作站当前所在的目录位置。
更改远程工作站的工作目录位置至dir1之下。 将远程工作站的文件file1拷贝到本地工作站中。 将本地工作站的文件file2拷贝到远程工作站中。
将远程工作站中扩展文件名为c的所有文件拷贝到本地工作站中。
ftp> mput *.txt 将本地工作站中扩展文件名为txt的所有文件拷贝到远程工
作站中。
ftp> prompt 切换交互式指令(使用mput/mget时不是每个文件皆询问
yes/no)。
ftp> quit 结束ftp工作。 ftp> bye 结束ftp工作。
注意:从PC与工作站间的文件传输也可透过在PC端的FTP令进行文件传输,指令用法与上述指令大致相同。
ftp> !pwd ftp> ls ftp> dir ftp> dir |more ftp> pwd ftp> cd dir1 ftp> get file1 ftp> put file2 ftp> mget *.c
文件权限的设定
18、改变文件或目录的读、写、执行权限 语法:chmod [-R] mode name name:文件名或目录名。 mode:3个8位数字或rwx的组合。r-read(读),w-write(写),x-execute(执行),u-user(当前用户),g-group(组),o-other(其他用户)。
例如:
chmod 755 dir1 对于目录dir1,设定成任何使用者皆有读取及执行的权
利,但只有所有者可做修改。
chmod 700 file1 对于文件file1,设定只有所有者可以读、写和执行的权
利。
chmod u+x file2 对于文件file2,增加当前用户可以执行的权利。 chmod g+x file3 对于文件file3,增加工作组使用者可执行的权利。 chmod o-r file4 对于文件file4,删除其他使用者可读取的权利。 19、改变文件或目录的所有权 语法:chown [-R] 用户名 name
name:文件名或目录名。
例如:
chown user file1将文件file1改为用户user所有。
chown -R user dir1将目录dir1及其子目录下面的所有文件改为用户user所有。
20、检查自己所属的工作组名称 语法:groups
5
21、改变文件或目录工作组所有权 语法:chgrp [-R] 工作组名 name
name:文件名或目录名
例如:
chgrp vlsi file1 将文件file1的工作组所有权改为vlsi工作组所有。 chgrp -R image dir1 将目录dir1及其子目录下面的所有文件,改为image工
作组所有。
22、改变文件或目录的最后修改时间 语法:touch name
name:文件名或目录名。 23、文件的链接
同一文件,可拥有一个以上的名称,也就是把一个文件进行链接。 语法:ln 老文件名 新文件名 例如 : ln file1 file2
将文件file2链接至文件file1。
语法:ln -s 老文件名 新文件名 例如 :
ln -s file3 file4 将文件file4链接至文件file3。 24、文件中字符串的查寻 语法:grep string file 例如 : grep abc file1 寻找文件file1中包含字符串abc所在行的文本内容。 25、查寻文件或命令的路径 语法:whereis command 显示命令的路径。 语法:which command 显示命令的路径,及使用者所定义的别名。 语法:whatis command 显示命令功能的摘要。 语法:find search-path -name filename -print 搜寻指定路径下某文件的路径。
例如 : find / -name file1 -print 自根目录下寻找文件file1的路径。 26、比较文件或目录的内容 语法:diff [-r] name1 name2 name1 name2:可同时为文件名或目录名。
例如:
diff file1 file2 比较文件file1与file2内各行的不同之处。 diff -r dir1 dir2 比较目录dir1与dir2内各文件的不同之处。 27、文件打印输出
用户可用.login文件中的setenv PRINTER来设定打印机名。
例如: setenv PRINTER sp 设定自sp打印机打印资料。 28、一般文件的打印 语法:lpr [-P打印机名] 文件名
6
例如:
lpr file1 或 lpr -Psp file1自
sp打印机打印文件file1。
语法:enscript [-P打印机名] 文件名 例如:
enscript file3或enscript -Psp file3 29、troff文件的打印
自sp打印机打印文件file3。
语法:ptroff [-P打印机名] [-man][-ms] 文件名 例如:
ptroff -Psp -man /usr/man/man1/lpr1 以troff格式,自sp打印机打印lpr1命令的使用说明。
打印机控制命令
30、检查打印机状态、打印作业顺序号和用户名 语法:lpq [-P打印机名] 例如:
lpq 或 lpq –Psp 检查sp打印机的状态。
31、删除打印机内的打印作业(用户仅可删除自己的打印作业) 语法:lprm [-P打印机名] 用户名 或 作业编号 例如:
lprm user或lprm -Psp user 时用户名必须为user。 lprm -Psp 456
删除sp打印机中用户user的打印作业,此删除sp打印机上编号为456的打印作业。
进程控制
32、查看系统中的进程 语法:ps [-aux] 例如: ps或ps -x 查看系统中,属于自己的进程。 ps -au 查看系统中,所有用户的进程。 ps -aux 查看系统中,包含系统内部的及所有用户的进程。 33、结束或终止进程 语法:kill [-9] PID PID:利用ps命令所查出的进程号。
例如:
kill 456或kill -9 456 终止进程号为456的进程。 34、在后台执行进程的方式 语法:命令 & 7
例如:
cc file1.c & 将编译file1.c文件的工作置于后台执行。
语法:按下Control+Z键,暂停正在执行的进程。键入bg命令,将暂停的进程置于后台继续执行。
例如: cc file2.c ^Z
Stopped bg
35、查看正在后台中执行的进程 语法:jobs 36、结束或终止后台中的进程 语法:kill %n n:利用jobs命令查看出的后台作业号
例如: kill % 终止在后台中的第一个进程。 kill %2 终止在后台中的第二个进程。
shell变量
37、查看shell变量的设定值 语法:set 查看所有shell变量的设定值。 语法:echo $变量名
显示指定的shell变量的设定值。
38、设定shell变量 语法:set var = value 例如: set term=vt100 设定shell变量term为VT100型终端。 39、删除shell变量 语法:unset var 例如: unset PRINTER 删除shell变量PRINTER的设定值。
别名
40、查看所定义的命令的别名 语法:alias 查看自己目前定义的所有命令,及所对应的别名。 语法:alias name 查看指定的name命令的别名。
例如: alias dir查看别名dir所定义的命令。 ls -atl
41、定义命令的别名
语法:alias name‘command line’ 8
例如:
alias dir „ls -l‟ 将命令ls -l 定义别名为dir。 42、删除所定义的别名 语法:unalias name 例如: unalias dir 删除别名dir的定义。 unalias * 删除所有别名的设定。
历史命令
43、设定命令记录表的长度 语法:set history = n 例如: set history = 40 设定命令记录表长度为40(可记录执行过的前面40个命令)。 44、查看命令记录表的内容 语法:history 45、使用命令记录表 语法:!! 重复执行前一个命令。 语法:!n n:命令记录表的命令编号。
语法:!string 重复前面执行过的以string为起始字符串的命令。
例如:!cat重复前面执行过的以cat为起始字符串的命令。 46、显示前一个命令的内容 语法:!!:p 47、更改前一个命令的内容并执行
语法:^oldstring ^newstring 将前一个命令中oldstring的部份改成newstring并执行。 例如:
find . -name file1.c -print ^ file1.c ^core
find . -name core –print
文件的压缩
48、压缩文件
语法:compress 文件名
压缩文件 压缩目录
语法:compressdir 目录名 49、解压缩文件
语法:uncompress 文件名
解压缩文件
语法:uncompressdir 目录名 解压缩目录
9
50、管道命令的使用 语法:命令1|命令2
将命令1的执行结果送到命令2,做为命令2的输入。
例如:
ls –Rl|more 以分页方式列出当前目录及其子目录下所有文件的名称。 cat file1|more 以分页方式列出文件file1的内容。
输入/输出控制
51、标准输入的控制
语法:命令<文件 将文件做为命令的输入。 例如:
mail -s “mail test” 电子邮件地址 < file1 题名称为 mail test,送给收信人。 52、标准输出的控制 语法:命令 > 文件
例如:
ls -l > list 语法:命令>!文件
将文件file 当做信件的内容,主
将命令的执行结果送至指定的文件中。 将执行“ls -l”命令的结果写入文件list中。
将命令的执行结果送至指定的文件中,若文件已经存在,
则覆盖。
例如:
ls -lg >! list 将执行“ls - lg”命令的结果覆盖写入文件list中。 语法:命令 >& 文件 将命令执行时屏幕上所产生的任何信息写入指定的文件中。
例如:
cc file1.c >& error 将编译 file1.c 文件时所产生的任何信息写入文件 error 中。 语法:命令>>文件
将命令执行的结果附加到指定的文件中。
例如:
ls - lag >> list 将执行“ls - lag”命令的结果附加到文件list中。 语法:命令>>&文件 将命令执行时屏幕上所产生的任何信息附加到指定的文件中。 例如:
cc file2.c >>& error 将编译file2.c文件时屏幕所产生的任何信息附加到文件error中。
53、查看系统中的用户 语法:who或finger 语法:w
10
语法:finger 用户名或finger 用户名@域名 54、改变用户名 语法:su 用户名 例如: su user 进入用户user的帐号。 passwrod: <输入用户user 的密码> 55、查看用户名 语法:whoami 查看登录时的用户名。 语法:whoami 查看当前的用户名。若已执行过su命令,则显示出此用户的用户名。
56、查看当前系统上所有工作站的用户 语法:rusers 按Ctrl+C> 结束
57、与某工作站上的用户交谈
语法:talk 用户名@主机名或talk 用户名@IP地址 例如:
1) 可先利用rusers指令查看网络上的用户;
2) 假设自己的帐号是ddd,在工作站aaa上使用,现在想要与bbb上的ccc交谈。 talk ccc@bbb
可按Ctrl+C结束。 58、检查网络是否连通
语法:ping 主机名或ping IP地址
电子邮件的使用简介
59、将文件当做电子邮件的内容送出 语法:mail -s “主题”电子邮件地址<文件 例如:
mail -s “hello” 电子邮件地址 11 : 按下Ctrl+D键或.键结束正文。 连按两次Ctrl+C键则中断工作,不送此信件。 Cc(Carbon copy):复制一份正文,给其他的收信人。 62、检查所传送的电子邮件是否送出,或滞留在邮件服务器中 语法:/usr/lib/sendmail -bp 若屏幕显示为“Mail queue is empty 的信息,表示mail已送出。 若为其他错误信息,表示电子邮件因故尚未送出。 12 因篇幅问题不能全部显示,请点此查看更多更全内容