您的位置:首页 > 运维架构 > Shell

SHELL 基本命令汇总

2010-04-08 12:20 435 查看
1.ls 列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件
[root@restoretmp steph]# ls
file.html public_html test
[root@restoretmp steph]#
参数:
ls -a 列出所有文件,包括隐藏文件
[root@restoretmp steph]# ls -a
. .. .bash_logout .bash_profile .bashrc file.html public_html test
[root@restoretmp steph]#
ls -l 列出所有者 size 文件权限 修改日期
ls -R 递归列出所有子目录的内容

2. cd 转移目录
cd /home/steph 将转移到/home/steph
cd .. 上移一个目录
cd 回到根目录
cd dir 改变目录位置至d i r目录下。
cd user 改变目录位置至用户的工作目录。
cd .. 改变目录位置至当前目录的父目录。
cd ../user 改变目录位置至相对路径 user 的目录下。
cd /../.. 改变目录位置至绝对路径的目录位置下。

3. 建立新文件和文件夹
touch new-filename 建立新文件
mkdir new-directory 建立新目录

4.删除文件和目录
rm -r filename 删除名为 filename的文件
rmdir foldername 删除名为foldername的目录
rm –r file? 删除文件名中有五个字符且前四个字符为file 的所有文件。
rm –r f* 删除文件名中以 f 为字
20000
首的所有文件。

5.修改文件夹权限
1. 改变文件或目录的读、写、执行权限
语法:chmod [-R] mode name
name :文件名或目录名。
mode: 3个8位数字或r w x的组合。r- read (读),w - wri te (写),x - execute (执行),u - user (当前用户),g - group(组) ,o - other(其他用户) 。
chmod 755 dir1对于目录dir1,设定成任何使用者皆有读取及执行的权利,但只有所有者可做修改。
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
name:文件名或目录名。
例如 :
chown user file1 将文件 file1 改为用户user 所有。
chown -R user dir1 将目录 d i r 1及其子目录下面的所有文件改为用户user 所有。

7. 压缩和解压缩文件
gzip 和 gunzip
压缩:
gzip filename
文件即会被压缩,并被保存为 filename.gz
解压缩:
gunzip filename.gz
filename.gz 会被删除,而继之以 filename
可以通过命令man gip 和man gunzip获得命令的详细说明.
zip 和 unzip
要使用 zip 来压缩文件,在 shell 提示下键入下面的命令:
zip -r filename.zip filesdir
在这个例子里,filename.zip 代表你创建的文件,filesdir 代表你想放置新 zip 文件的目录。-r 选项指定你想递归地(recursively)包括所有包括在 filesdir 目录中的文件。
要解压缩 zip 文件的内容,键入以下命令:
unzip filename.zip
你可以使用 zip 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
zip -r filename.zip file1 file2 file3 /usr/work/school
上面的命令把 file1、file2、 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.zip 文件中。

8.tar 把多个文件或目录打包成一个文件,或者把已经打包的文件展开
%tar cvf RMS RMStar 把目录打包成一个文件
%tar xvf RMStar 把打包的文件展开。

9.compress 把文件压缩成后缀为.Z的压缩文件
%compress RMStar
uncompress 把后缀为.Z的压缩文件解压缩
%uncompress RMStar.Z

10.df -k 查看各文件系统剩余的空间,-k说明单位是千字节(kb)
11.使用 l o g o u t命令退出shell。
12、更改帐号密码
语法:passwd
Old password: <输入旧密码>
New password: <输入新密码〉
Retype new password: <再输入一次密码>
13、联机帮助
语法: man 命令
man ls

14、远程登录
语法:rlogin 主机名 [-l 用户名]
rlogin aa 远程登录到工作站 aa 中。
rlogin aa -l user 使用 user 帐号登录到工作站 aa 中。
语法:telnet 主机名 或 telnet IP地址
telnet aa
telnet 130.129.21.250

15、复制文件
语法: 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 复制整个目录。

16、移动或更改文件、目录名称
语法:mv 源地址 目的地址
mv file1 dir1 将文件 f i l e 1移到目录 dir1 下,文件名仍为 f i l e 1。
mv dir1 dir2 将目录 dir1 更改为目录 d i r 2。

17、列出当前所在的目录位置
语法: pwd
18、查看文件内容
语法: cat文件名
cat file1以连续显示方式,查看文件名 file1 的内容。

19、分页查看文件内容
语法: more 文件名 或 cat 文件名 | more
more file1 以分页方式查看文件名 file1 的内容。
cat file1 | more 以分页方式查看文件名 file1 的内容。

20、查看目录所占磁盘容量
语法: du [-s] 目录
du dir1 显示目录 dir1 的总容量及其子目录的容量(以KB 为单位)。
du -s dir1 显示目录 dir1 的总容量。

21、检查自己所属的工作组名称
语法:groups
22、 改变文件或目录工作组所有权
语法:chgrp [-R] 工作组名 name
n a m e:文件名或目录名
chgrp vlsi file1 将文件 file1 的工作组所有权改为 vlsi 工作组所有。
chgrp -R image dir1 将目录d i r 1及其子目录下面的所有文件,改为 image 工作组所有。
23、 改变文件或目录的最后修改时间
语法:touch name
name:文件名或目录名。
24、文件的链接
同一文件,可拥有一个以上的名称,也就是把一个文件进行链接。
语法: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。
25、文件中字符串的查寻
语法:grep string file
grep abc file1 寻找文件f i l e 1中包含字符串 abc 所在行的文本内容。

26.查寻文件或命令的路径
语法:whereis command 显示命令的路径。
语法:which command 显示命令的路径,及使用者所定义的别名。
语法:whatis command 显示命令功能的摘要。
语法:find search-path -name filename -print 搜寻指定路径下某文件的路径 。
例如 :
find / -name file1 -print 自根目录下寻找文件 file1 的路径。

27、比较文件或目录的内容
语法:diff [-r] name1 name2
name1 name2:可同时为文件名或目录名。
diff file1 file2 比较文件file1 与 file2 内各行的不同之处。
diff -r dir1 dir2 比较目录 dir1 与 dir2 内各文件的不同之处。
28、文件打印输出
用户可用 .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。
29、troff 文件的打印
语法:p t r o ff [-P打印机名] [-man][-ms] 文件名
例如:
ptroff -Psp -man /usr/man/man1/lpr1 以troff 格式,自 sp 打印机打印lpr1 命令的使用说明。
打印机控制命令
1.检查打印机状态、打印作业顺序号和用户名
语法: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 的打印作业。
30、进程控制
1.查看系统中的进程
语法:ps [-aux]
例如:
p s或ps -x 查看系统中,属于自己的进程。
ps -au 查看系统中,所有用户的进程。
ps -aux 查看系统中,包含系统内部的及所有用户的进程。
2. 结束或终止进程
语法:kill [-9] PID
PID:利用 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 终止在后台中的第二个进程。

30、shell变量
1. 查看shell变量的设定值
语法:set 查看所有shell变量的设定值。
语法:echo $变量名 显示指定的shell变量的设定值。
2. 设定shell变量
语法:set var = value
set term="vt100" 设定shell变量 term为VT100型终端。
3. 删除shell变量
语法:unset var
unset PRINTER 删除shell变量 PRINTER 的设定值。

31、别名
1. 查看所定义的命令的别名
语法: alias 查看自己目前定义的所有命令,及所对应的别名。
语法: 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 * 删除所有别名的设定。

32、历史命令
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

33、管道命令的使用
语法:命令1 | 命令2 将命令1的执行结果送到命令2,做为命令2的输入。
例如:
ls -Rl | more 以分页方式列出当前目录及其子目录下所有文件的名称。
cat file1 | more 以分页方式列出文件 file1 的内容。

34、输入/输出控制
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 中。

35、查看系统中的用户
语法: who 或 f i n g e r
语法: w
语法: finger 用户名 或 finger 用户名@域名
改变用户名
语法: su 用户名
例如:
su user 进入用户user 的帐号。
p a s s w r o d : <输入用户user 的密码>

36、查看用户名
语法: who am i 查看登录时的用户名。
语法: w h o a m i 查看当前的用户名。若已执行过s u命令,则显示出此用户的用
户名。
37、查看当前系统上所有工作站的用户
语法: rusers
按Ctrl+C> 结束
38、与某工作站上的用户交谈
语法: talk 用户名@主机名或talk 用户名@ I P地址
例如:
1) 可先利用 rusers 指令查看网络上的用户;
2) 假设自己的帐号是 ddd ,在工作站 aaa上使用,现在想要与 bbb 上的ccc 交谈。
talk ccc@bbb
可按Ct r l + C结束。
39、检查网络是否连通
语法:ping 主机名或ping IP地址

40、vi
  vi是在工作站上广泛使用的编辑软件。对初学者而言,
  常因其特殊的使用方法,而不得其门而入;对已经在使用 vi 的使用者来说,也
  常见因对 vi 的不熟悉或不够了解,而无法发挥出 vi 强大的编辑能力,以下将
  简单介绍 vi 的使用方法。不必死记硬背,多实际操作几次就能记住常用的命令。
  进入vi
  直接执行 vi编辑程序即可:
  %vi test
  此刻屏幕上会出现 vi 的编辑屏幕,同时 vi 会将文件复制一份至内存中的缓冲区 (buffer) 。 vi会保留在硬盘中的文件不变,而先对缓冲区的文件作编辑,编辑完成后,使用者可决定是否要取代原来旧有的文件。
  离开vi
  若在输入模式下,则先利用《ESC》进入指令模式,而后即可选用下列指令
  离开vi。
  :q! 离开vi,并放弃刚在缓冲区内编辑的内容。
  :wq 将缓冲区内的资料写入硬盘中,并离开vi。
  :ZZ 同wq。
  :x 同wq。
  :w 将缓冲区内的资料写入硬盘中,但并不离开vi。
  :q 离开vi,若文件被修改过,则会被要求确认是否放弃修改的内容。
此指令可与:w 配合使用。

  vi 的操作模式

  vi 提供两种操作模式:输入模式(insert mode)和指令模式(command mode)
  。当使用者进入 vi 后,即处在指令模式下,此刻键入的任何字符都被视为
  指令。在此模式下可进行删除、修改等动作。若要输入资料,则需进入输入
  模式。

  输入模式

  如何进入输入模式
  a (append) 由光标之后加入资料。
  A 由该行之末加入资料。
  i (insert) 由光标之前加入资料。
  I 由该行之首加入资料。
  o (open) 新增一行于该行之下以供输入资料。
  O 新增一行于该行之上以供输入资料。

  如何离开输入模式
  《ESC》 结束输入模式。

  指令模式

  光标的移动
  h 向左移一个字符。

4000
  j 向上移一个字符。
  k 向下移一个字符。
  l 向右移一个字符。
  0 移至该行之首
  ?$ 移至该行之末。
  ^ 移至该行的第一个字符处。
  H 移至屏幕的第一列。
  M 移至屏幕的中间那列。
  L 移至屏幕的最后一列。
  G 移至该文件的最后一列。
  + 移至下一列的第一个字符处。
  - 移至上一列的第一个字符处。
  ( 移至该句之首。 (注一)
  ) 移至该句之末。
  { 移至该段落之首。 (注二)
  } 移至该段落之末。
  nG 移至该文件的第 n 列。
  n+ 移至光标所在位置之后的第 n 列。
  n- 移至光标所在位置之前的第 n 列。
  <Ctrl><g> 会显示该行的行号、文件名称、文件中最末行的行号、光标
  所在行号占总行号的百分比。

  注一:句子(sentence)在vi中是指以『!』、『.』或『?』结束的一串字。
  注二:段落(paragraph)在vi中是指以空白行隔开的文字。

  屏幕的移动

  <Ctrl><f> 屏幕往下卷一页。
  <Ctrl> 屏幕往上卷一页。
  <Ctrl><d> 屏幕往下卷半页。
  <Ctrl> 屏幕往上卷半页。
  <Ctrl><e> 屏幕往下卷一行。
  <Ctrl><y> 屏幕往上卷一行。

  删除、复制及修改指令介绍 (此单元较少使用)

  d(delete)、c(change)和y(yank)这一类的指令在 vi 中的指令格式为:
  Operator + Scope = command
  (运算子) (范围)
  运算子:
  d 删除指令。删除资料,但会将删除资料复制到内存缓冲区。
  y 将资料(字组、行列、句子或段落)复制到缓冲区。
  p 放置(put)指令,与 d 和 y 配和使用。可将最后delete或yank的资
  料放置于光标所在位置的行列下。
  c 修改(change)指令,类似delete与insert的组合。删除一个词组、句
  子等的资料,并插入新输入的资料。

  范围:
  e 由光标所在位置至该字符串的最后一个字符。
  w 由光标所在位置至下一个字符串的第一个字符。
  b 由光标所在位置至前一个字符串的第一个字符。
  ?$ 由光标所在位置至该行的最后一个字符。
  0 由光标所在位置至该行的第一个字符。
  ) 由光标所在位置至下一个句子的第一个字符。
  ( 由光标所在位置至该句子的第一个字符。
  { 由光标所在位置至该段落的最后一个字符。
  } 由光标所在位置至该段落的第一个字符。

  整行动作
  dd 删除整行。
  D 以行为单位,删除光标后的所有字符。
  cc 修改整行的内容。
  yy yank整行,使光标所在该行复制到内存缓冲区。

  删除与修改

  x 删除光标所在该字符。
  X 删除光标所在之前一字符。
  dd 删除光标所在该行。
  r 用接于此指令之后的字符取代(replace)光标所在字符。
  如: ra 将光标所在字符以 a 取代之。
  R 进入取代状态,直到《ESC》为止。
  s 删除光标所在的字符,并进入输入模式直到《ESC》。
  S 删除光标所在的该行资料,并进入输入模式直到《ESC》。

  移动与复制

  利用 delete 及 put 指令可完成资料移动的目的。
  利用 yank 及 put 指令可完成资料复制的目的。
  yank 和 delete 可将指定的资料复制到内存缓冲区,而通过 put 指令
  可将缓冲区内的资料复制到屏幕上。
  例:
  移动一行 .在该行执行 dd
  .光标移至目的地
  .执行 p
  复制一行 .在该行执行 yy
  .光标移至目的地
  .执行 p

  指令重复

  在指令模式中,可在指令前面加入一数字 n,则此指令动作会重复执行 n
  次。
  例:
  删除10行 .10dd
  复制10行 .10yy
  .光标移至目的地
  .p
  指标往下移10行 .10j
  取消前一动作(Undo)
  即复原执行上一指令前的内容。
  u 恢复最后一个指令之前的结果。
  U 恢复光标该行的所有改变。
  查找
  在vi中可查找某一字符串,使光标移至该处。
  /字符串 往光标之后寻找该字符串。
  ?字符串 往光标之前寻找该字符串。
  n 往下继续寻找下一个相同的字符串。
  N 往上继续寻找下一个相同的字符串。
  资料的连接
  J 句子的连接。将光标所在的下一行连接至光标该行的后面。
  若某行资料太长亦可将其分成两行,只要将光标移至分开点,进入输入模式
  (可利用 a、i等指令)再按《Enter》即可。
  环境的设定
  :set nu 设定资料的行号。
  :set nonu 取消行号设定。
  :set ai 自动内缩。
  :set noai 取消自动内缩。
  自动内缩(automatic indentation)
  在编辑文件或程序时,有时会遇到需要内缩的状况,『:set ai』即提供自
  动内缩的功能,用下例解释:
  .vi test
  .(进入编辑屏幕后)
  this is the test for auto indent
  《Tab》start indent ← :set ai (设自动内缩)
  《Tab》data
  《Tab》data
  《Tab》data ← :set noai (取消自动内缩)
  the end of auto indent.
  .注:<Ctrl><d> 可删除《Tab》字符。
  ex指令
  读写资料
  :w 将缓冲区的资料写入硬盘中。
  :10,20w test 将第10行至第20行的资料写入test文件。
  :10,20w>>test 将第10行至第20行的资料加在test文件之后。
:r test 将test文件的资料读入编辑缓冲区的最后。

  删除、复制及移动
  :10,20d 删除第10行至第20行的资料。
  :10d 删除第10行的资料。
  :%d 删除整个编辑缓冲区。
  :10,20co30 将第10行至第20行的资料复制至第30行之后。
:10,20mo30 将第10行至第20行的资料移动至第30行之后。

  字符串搜寻与取代
  s(substitute)指令可查找某行列范围。
  g(global)指令则可查找整个编辑缓冲区的资料。
  s指令以第一个满足该条件的字符串为其取代的对象,若该行有数个满足该条
  件的字符串,也仅能取代第一个,若想取代所有的字符串则需加上g参数。
  :1,?$s/old/new/g 将文件中所有的『old』改成『new』。
  :10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白。
  :%s/old/new/g 将编辑缓冲区中所有的『old』改成『new』。
  恢复编辑时被中断的文件
  在编辑过程中,若系统当掉或连线中断,而缓冲区的资料并还未
  被写回硬盘时,当再次回到系统,执行下列指令即可回复中断前
  的文件内容。
  %vi -r filename
  编辑多个文件
  vi还提供同时编辑多个文件的功能,方法如下:
  %vi file1 file2 ..
  当第一个文件编辑完成后,可利用『:w』将该缓冲区存档,而后
再利用 『:n』载入下一个文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息