16个桌面Linux用户必须要知道的Shell命令

上一篇 / 下一篇  2012-05-10 09:25:43 / 个人分类:Linux

有些人仍然会有这中愚蠢的想法,他们认为使用Linux就必须使用Linuxshell命令。胡说!你可以不懂得任何Linux命令,比如说ps,grep,ls等,但是你仍然可以使用很多现代的Linux桌面发行版。51Testing软件测试网1[]v&}d#o

  Linux的系统管理员与桌面用户不一样,他们不像桌面用户一样使用Cinnamon, GNOME, Unity, 或者 KDE,他们所有的时间都是用Linux命令。

^)RYQF)K)XL0

(|(k0u4spfXz2k0  对于桌面用户来讲,若是了解一部分Linux命令,你可以更好的使用Linux,体验它的魅力,下面列举出了一些:51Testing软件测试网S^ a(cw

\5G:yO-gk*D:~0  Shell 基础:51Testing软件测试网0_Ik5LB)w2v

51Testing软件测试网Dv0FOe%Gk@s K;J

   你可以通过打开Linux的terminal(终端)来执行Shell命令。Shell的种类有很多种,例如CSH,Bourne Shell,Korn Shell。在现在的大多数Linux发行版中,默认的Shell一般都是Bourne again shell(bash)。51Testing软件测试网C"s-r5|8vl!{x

51Testing软件测试网Jf{ gU#B6G

  想看看你的Shell是哪一种,执行下面的命令51Testing软件测试网\ S:x`OC

echo $SHELL
51Testing软件测试网nr#w!@i ^

  在Linux中,$符号代表一个shell 变量。所有的shell都用这种方式使用变量。有一些shell变量在你的系统启动的时候就有了默认值。例如,$SHELL;$LOGNAME是你的登录名,而$PATH变量指明了你的shell命令的搜索范围。

6["X"lnR/Ie0

i;uX6F P(p;sX0  echo命令的作用就是打印出你的输入。如果你的输入具有shell的特殊意义,例如shell变量,他就输出变量的值。51Testing软件测试网q.l5_8^6e!AHE

[Fu'J/Q+X%M0

  一个重要的地方是,你要注意文本的大小写。例如,ls,是DOS的dir命令的Linux版本。这个命令列出当前工作目录下的文件列表。如果你输入的是LS,你得到的只能是“找不到命令”的错误信息。

Xg-aKg?0

  另外在Linux shell命令中一个重要的地方是,你可以将命令串起来。这是Unix/Linux从第一天开始就有的巧妙的特点。最简单的将命令连起来的办法就是使用“|”,我们称之为“pipe”。第一个命令的输出就是下一个命令的输入。51Testing软件测试网y'q8oQ` P|t s

  Linux命令有自己的语法规则:51Testing软件测试网 FGy)YQ!l,e

  基本的语法就像这样:

O)N1~l H7X;v}XM R0
command -option file

  例如:

a]A6Py0W5S.Y0
ls -la

   这行命令的意义是输出当前目录的所有文件的文件名,l代表“long”,a代表“all”,有了l选项,你会发现,输出的内容比较丰富,不只包括文件 名,还有文件的访问权限,所有者,所属组等。你会发现这个命令会在屏幕上输出大量的信息,如果当前目录的文件比较多的话。

:L"B vZWd$wg0

  现在就是“pipe”出场的时候了。

b0_9R6@4|3z+pz? |0
ls -la | more

  你会在屏幕上看到如下信息:51Testing软件测试网r9[2fI1Pm

51Testing软件测试网E7C OYy

  你也可以在大多数Linux命令中使用通配符。通配符就是可以代表文件名中任何未知的字符或字符串。例如,*就代表任意字符串,?代表单个字符。例如:51Testing软件测试网]*NkZx2@"d-S

ls -l a*

  这个命令会列出在当前工作目录下所有的以小写a开头的文件,比如说abc.txt,alpha.jpg等等。

~2H%@$b1m'W6Q7d|0
ls a?cd

  这条命令会列出所有以小写a开头隔一个未知字符以小写cd结尾的所有文件。例如adcd,axcd,但是不会列出adfdcd,也不会列出axcd.txt。51Testing软件测试网%_1h1t_ X2A,q$RH@xh

一些常用的命令

M!`B]Vl0

_;F5R7Z;a0  man:如果你想了解每一个命令代表什么含义以及他的用法,你就可以使用man(意义为manual)命令,例如:

_ZW1mV!qc0

P J4i0\S!o#aj.}0

NY+C2\@l0
man ls

|%h(W`A0  man输出的内容是为系统管理员和开发者编写的,如果你想了解更多命令的用法,你可以去找网络上的Linux命令文档,有一个非常方便的就是丹尼尔·巴雷特的Linux的袖珍指南。

krWJ_0

xcL\z0  在以前如果你真的想学习Linux和Unix你必须阅读man手册。而在2012年的今天,面对如此好用的图形界面,这句话显得不是那么的重要,但是如果你想了解Linux更深,阅读man手册仍然是一个好的开始。

C2^z7S!gB/Jn0

8w"C~Z1CU,[0  su 和sudo: su命令的作用是切换用户,这也被称为超级用户,因为在有些系统中su命令可以使你以系统的所有权限用户root登录。除非你是系统管理员,否则我绝不推荐你使用su切换到root,因为这可能给你带来很多麻烦。

?o6eF%W2H z`e0

AGpe'g0cAt2~0  一个相对安全的多的办法是使用sudo命令,这个命令可以上你以root权限运行一个命令。51Testing软件测试网"l#s3`+`8~'|

:b| tAk u0  这两个命令都需要系统密码。在大多数Linux的桌面发行版中这两个是相同的,就是你系统的第一个用户设置的密码。

&Io!ne:i sp051Testing软件测试网2y|Hn}p9g g

  grep:grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。例如:

5_;E3B"B!ZwjK5p;_051Testing软件测试网#]"v NmN5D)l

51Testing软件测试网+Ap'S&Su

grep foo /etc/passwd
51Testing软件测试网#O pWuC%yO

  返回在password文件中所有的含有foo的行

i rvg^&h)c t(Pv0

J,?qW^V8|051Testing软件测试网 tU h'q)k,{-s

grep -i "foo" /etc/passwd

MM+S3od?rmK0  -i选项是忽略大小写,这就意味着若某一行含有FOO或FOo也会被搜索到。

;p~!e.g _c4bS [051Testing软件测试网"lC L hFu

  grep还支持递归搜索:51Testing软件测试网8Ygw;@0m1{9ee

51Testing软件测试网W5C3Fq7j k

kP5b4H6C5|L0
grep -r "foo" /home/sjvn
51Testing软件测试网_:F1Xl+|h

  这条命令将会搜索/home/sjvn目录及其子目录下所有的包含“foo”的行

6Ri{$?Rl ymK051Testing软件测试网QGEg/RM,|3W{

  grep也通常与其他命令串连起来使用,例如:51Testing软件测试网)KIg(ee VDx?Pm

51Testing软件测试网.]&{V&tz

Fk'Qd-[0
ls -la | grep foo*

\Dv/G/z L*@0V3n0  列出当前目录下任何以foo开头的文件或目录。例如如下文件将被匹配:foo,foobar,foolish.txt等等。51Testing软件测试网#NNmKnG

51Testing软件测试网+C/Ji/QzN

  ps:报告进程的状态。此命令将显示哪些程序正在运行。我使用PS和grep比其他任何命令使用的都要多。

.bf sEq5Ahw051Testing软件测试网`1?-k }L

  现在假如你有一个程序运行出了错误,你不能再桌面上把他关掉,(我看准你了,火狐),我运行如下命令就能查看他的进程id:51Testing软件测试网 `1]/r/O%pa]

[ x/B{ T C)Q0

b/R I,_{%z!CU5K0
ps -ef | grep firefox

.@&_)n+O{ wlk8H0  这条命令做了如下事情:

d2U-G#N\l/Z M*x0

^7X)l*LK&vp0

(hT+G%@Ch6rdG-z0
kill -9 1234

!} l!XMOI-[C6W0  ·第一,他找出所有当前在我的电脑上运行的程序

#r)a+e\t Y gI051Testing软件测试网*Jj-Oq+L3f

  ·然后grep命令找出这些文件中叫“firefox”的,显示到屏幕上。

~ l.|^.v3y @;D051Testing软件测试网7q:L-E9\.C.Q~!{5K:E

  ·每一行都有一个进程id数字。有了,现在我就可以是用...

5ey4z4d(e051Testing软件测试网xVe&oY5dp;zb.H xk

  kill:这条命令就想他的名字一样,他可以干掉指定的进程。干掉运行错误的firefox或者其他我想干掉的进程。51Testing软件测试网&AI2o+PGM.m?`

+@5Ez(j4P8GI R0

,v0P G0qX+B%g0
kill 1234

#O4_P'D-j WB0  这将会干掉所有进程id为1234的程序。为了确保这个程序已经被干掉(强行终止),我使用下面的命令51Testing软件测试网[ RU%_3a F5I&WD

ezmm%huk0  clear:如果你觉得你的屏幕上有太多的东西,看起来很讨厌,可以使用clear命令清空。51Testing软件测试网hm.gZSZ]9tb

51Testing软件测试网+|%jowx

文件/目录命令

[MFi6s1u]051Testing软件测试网#C:Ej1chn

  cp:cp代表copy,就是复制,他可以复制一个或多个文件到指定的一个或多个目录下。51Testing软件测试网:F4J0S8B#Gx

U9a9CFNzA b'c$H0  一个通常的用法是:

ku,d ~$f1M0

v|v6_8nX*T0

mP~Qpj|0
cp fred.txt ethel.txt
51Testing软件测试网 r7B4key o {7J6p a

  把fred.txt中的内容复制到当前文件夹中名为ethel.txt中51Testing软件测试网1aj:h']w*w#y cy(~

.a#p%uh$eG0

3d9j ^ ^;Y{1F,];k0
cp fred.txt /home/sjvn/docs/fred.txt
51Testing软件测试网4\"bN p P[?

  把fred.txt复制到指定文件中。51Testing软件测试网0Q:x/Hqh*Xq;n

oxY\4hvX6^@051Testing软件测试网.i2f"O.~A2z

cp *.txt  /home/sjvn/docs/

j6C)h/Nq0  复制当前目录下所有以.txt结尾的文件到指定的目录下。51Testing软件测试网mIiX$n7E Z

51Testing软件测试网/z)r5G'_4d FVJg_

Y2^+c/lp B0
cp -r /home/sjvn/docs/* /home/sjvn/backup

q:`n4]`d,m(d} Z/l0  递归的复制在/home/sjvn/docs/目录下的所有文件到指定的文件夹。

3w@;T5y8e051Testing软件测试网 RP \I(iL8}w

  hostname: 显示你当前登录进去的计算机的名称。51Testing软件测试网]n;x7s h,_O%M^

51Testing软件测试网`~+~ P j!] p

  mv:mv(意义为move)顾名思义就是移动,可以移动指定文件到指定位置。当然这个命令有的时候还可以用来实现重命名。51Testing软件测试网!~$e I9D&u hrp"[{x

51Testing软件测试网T ]-L FqfsE

  例如:51Testing软件测试网$V*FD.`Yn3D\)Y

51Testing软件测试网*s _ W!V@5B

51Testing软件测试网 [yC%MwM {

mv fred.txt ethel.txt

e1@d9Km0  这条命令的作用你可以简单的认为是重命名fred.txt为ethel.txt。

uuVMx0

B [A$j#~\{F`Ph;g0  当然此命令还有其他用法,此处不再一一罗列,用法与cp类似,只是这条命令不再保留原文件。

.q.LlIt\ E!B0

}'b)x3i(y0  rm:rm代表remove,是删除的意思,所以我运行:51Testing软件测试网[0A'XAn N i

RP!yUe5t+`*M!Ys0

a*CH_,m f [;a0
rm fred.txt

3se-q2UM gd]0  我将删除fred.txt。51Testing软件测试网`.B:Hz Wo%~ DE8w cV

51Testing软件测试网|p E `/r x

  我强烈推荐你在执行rm命令的时候使用-i选项。这儿选项将在你执行命令的时候询问你是否要真的删除文件。就像这样:

5o6]%O|?.F051Testing软件测试网E/uM)ae#W!s.{

+_,Y7L+l;^0U7R*s0
rm -i fred.txt
51Testing软件测试网u1z%t&lp(|5f

  系统信息

I~eA&Ue'Fp2L6w0

1n g;~/]fD'VQ0  uname: uname -a命令用一行简短的给你总结的电脑的基本信息。这通常包括你的电脑名称,Linux内核版本,你的发行版名称等。

7?#`^ R-z!j9j0

51Testing软件测试网Kn%lK8o

  对于更详细的信息,你可以使用cat命令,他可以显示你的Linux电脑中的文本信息。51Testing软件测试网!h{-Vy8\.{;k8]'M

51Testing软件测试网)VQ#W$x4Q/z2|p:?\

cat /proc/cpuinfo

  展示你的CPU的重要的统计。51Testing软件测试网c+N)u5Zu&m9C&I

51Testing软件测试网fkuY h

cat /proc/version

  展示你的当前运行的Linux发行版的详细信息。

m/S&hLg'p0

51Testing软件测试网jk(i u,_\

cat /etc/printcap

  展示你当前安装的打印机。51Testing软件测试网.m1{ {|7?DI'W

51Testing软件测试网:b)I0AR$J;C6a9Q

set | more: set|more

  组合命令可以给你更多的呢当前的桌面环境变量的信息。单如果你只是想知道你系统环境变量中的某一个或两个,可以执行如下命令:51Testing软件测试网 ?;M4L1A?~/j*g

;Yen:EN!h8L0
echo $PATH

  结束或者说是另一个开始51Testing软件测试网D;M"G%`1KSLOi0_3z

  这里给你展示的只不过是Linux命令的表皮。成百上千的书和网站可以给你更多更复杂的如何使用Linux命令的展示。本文只是让你在想了解比Linux Gui更深一层时的参考。51Testing软件测试网;iytz7a

  如果你想学习更多的关于LInux,推荐你去LinuxCommand.org或者看一看Linux in a Nutshell。如果你想变成一个Linux shell编程的大事,推荐你去学习卡梅伦纽汉姆的 Learning the bash Shell 。51Testing软件测试网wi8Fu"\%V


TAG:

 

评分:0

我来说两句

Open Toolbar