linux_shell及常用命令介绍

linux shell及常用命令介绍

 

    shell是一种命令解释器,它提供了用户和操作系统之间的交互接口。shell是面向命令行的,而X Window则是图形界面。你在命令行输入命令,shell进行解释,然后送往操作系统执行。

    shell可以执行Linux的系统内部命令,也可以执行应用程序。你还可以利用shell编程,执行复杂的命令程序。

    Linux提供几种shell程序以供选择。常用的有Bourne(bsh)C(csh)Korn(ksh)

    各个shell都能提供基本的功能又有其各自的特点。

    Bourne shell是由Steven Bourne编写的UNIX的缺省shellBourne shellshell编程能力很强。但它不能处理命令的用户交互特征。bashBourne shell的增强版。C shell是由加利福尼亚大学伯克利分校的Bill Joy编写的。它能提供Bourne shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。很多人认为,C shell的编程能力不如Bourne shell,但它的语法和C语言类似,所以C程序员将发现C shell很顺手。tcshCshell的增强版本和Cshell完全兼容。Korn shell是由Dave Korn编写的。Korn shell融合了C shellBourne 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文件将初始化你的历史列表缓冲区。你也能通过historyfc命令执行、编辑历史命令。

4 别名。在bash下,可用aliasunalias命令给命令或可执行程序起别名和清除别名。这样你可以用自己习惯的方式输入命令。

 

进入shell

    Linux启动后,给出login命令,等待用户登录。

Login: <输入用户名>

Password: <输入密码>

如果是正确的用户名和密码,那么你就会进入Linuxshellshell给出命令提示符,等待你输入命令。使用logout命令退出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

 

文件或目录处理

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 ..                     改变目录位置至当前目录的父目录。

cd ../user       改变目录位置至相对路径 user 的目录下。

cd /../..          改变目录位置至绝对路径的目录位置下。

cd ~                     改变目录位置至用户登录时的工作目录。

6、复制文件

语法: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 文件名

例如:

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              列出本地工作站当前目录下的所有文件名。

ftp> !pwd           列出本地工作站当前所在的目录位置。

ftp> ls               列出远程工作站当前目录下的所有文件名。

ftp> dir              列出远程工作站当前目录下的所有文件名。

ftp> dir |more      分页列出远程工作站当前目录下的所有文件名。

ftp> pwd           列出远程工作站当前所在的目录位置。

ftp> cd dir1         更改远程工作站的工作目录位置至dir1之下。

ftp> get file1              将远程工作站的文件file1拷贝到本地工作站中。

ftp> put file2       将本地工作站的文件file2拷贝到远程工作站中。

ftp> mget *.c      将远程工作站中扩展文件名为c的所有文件拷贝到本地工作站中。

ftp> mput *.txt   将本地工作站中扩展文件名为txt的所有文件拷贝到远程工作站中。

ftp> prompt        切换交互式指令(使用mput/mget时不是每个文件皆询问yes/no)

ftp> quit             结束ftp工作。

ftp> bye            结束ftp工作。

注意:从PC与工作站间的文件传输也可透过在PC端的FTP令进行文件传输,指令用法与上述指令大致相同。

 

文件权限的设定

18、改变文件或目录的读、写、执行权限

语法:chmod [-R] mode name

name:文件名或目录名。

mode38位数字或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

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     比较文件file1file2内各行的不同之处。

diff -r dir1 dir2 比较目录dir1dir2内各文件的不同之处。

27、文件打印输出

用户可用.login文件中的setenv PRINTER来设定打印机名。

例如:

setenv PRINTER sp         设定自sp打印机打印资料。

28、一般文件的打印

语法:lpr [-P打印机名] 文件名

例如:

lpr file1 lpr -Psp file1                 sp打印机打印文件file1

语法:enscript [-P打印机名] 文件名

例如:

enscript file3enscript -Psp file3 sp打印机打印文件file3

29troff文件的打印

语法: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 userlprm -Psp user             删除sp打印机中用户user的打印作业,此时用户名必须为user

lprm -Psp 456                                 删除sp打印机上编号为456的打印作业。

 

进程控制

32、查看系统中的进程

语法:ps [-aux]

例如:

psps -x          查看系统中,属于自己的进程。

ps -au                  查看系统中,所有用户的进程。

ps -aux                查看系统中,包含系统内部的及所有用户的进程。

33、结束或终止进程

语法:kill [-9] PID

PID:利用ps命令所查出的进程号。

例如:

kill 456kill -9 456      终止进程号为456的进程。

34、在后台执行进程的方式

语法:命令 &

例如:

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变量termVT100型终端。

39、删除shell变量

语法:unset var

例如:

unset PRINTER        删除shell变量PRINTER的设定值。

 

别名

40、查看所定义的命令的别名

语法:alias                查看自己目前定义的所有命令,及所对应的别名。

语法:alias name      查看指定的name命令的别名。

例如:

alias dir查看别名dir所定义的命令。

ls -atl

41、定义命令的别名

语法:alias namecommand line

例如:

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 目录名     解压缩目录

50、管道命令的使用

语法:命令1|命令2              将命令1的执行结果送到命令2,做为命令2的输入。

例如:

ls –Rl|more        以分页方式列出当前目录及其子目录下所有文件的名称。

cat file1|more     以分页方式列出文件file1的内容。

 

输入/输出控制

51、标准输入的控制

语法:命令<文件   将文件做为命令的输入。

例如:

mail -s “mail test” 电子邮件地址 < file1          将文件file 当做信件的内容,主题名称为 mail test,送给收信人。

52、标准输出的控制

语法:命令 > 文件      将命令的执行结果送至指定的文件中。

例如:

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中。

53、查看系统中的用户

语法:whofinger

语法:w

语法: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 电子邮件地址<file.c     

60、传送电子邮件给本系统用户

语法:mail 用户名

61、传送电子邮件至外地用户

语法:mail 电子邮件地址

例如

mail [email protected]

Subject:mail test

:

按下Ctrl+D键或.键结束正文。

连按两次Ctrl+C键则中断工作,不送此信件。

Cc(Carbon copy):复制一份正文,给其他的收信人。

62、检查所传送的电子邮件是否送出,或滞留在邮件服务器中

语法:/usr/lib/sendmail -bp

若屏幕显示为“Mail queue is empty 的信息,表示mail已送出。

若为其他错误信息,表示电子邮件因故尚未送出。

 

你可能感兴趣的:(linux,工作,shell,File,user,bash)