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