Unix中不小心就会做错的事情

上一篇 / 下一篇  2012-07-13 15:27:03 / 个人分类:Linux

 1、rm命令不会等待你做确认就会把文件删掉,所以最好在rm之前都仔细思考,尤其是rm 带正则表达式的删除,如rm t*,最好是ls t*先看一下。51Testing软件测试网;Y(~(j g-B,E

  最恐怖的事情是你不小心在t和*中间不小心留下了空格, rm t *,结果是把所有的文件删除了。

@5pC K6E*~7y_051Testing软件测试网&c"_lZCX8Ey^)k

  rm -i 会给你一次确认的机会。

wgkp L,];W051Testing软件测试网 K8xk-o#S1r1P#A

  2、cat file1,file2,file3 >file1,file1的文件会丢失。51Testing软件测试网BCf D2f

51Testing软件测试网0}7_ APv6Ik_,Hb5s

  3、用WinSCP客户端连接到unix时候,如果磁盘空间不够用了,而你正好打开了一个文件编辑,再保存,这个被编辑的文件会被存为0字节。(应该是WinSCP的一个bug,直接用vi编辑保存会提示不能保存)

2`.S'K wU0Q M051Testing软件测试网6PW BNB

   4、不是用户有访问文件的权限就一定能对该文件进行访问,还受到该文件所在目录的限制,先讲一下目录的访问权限:目录的权限位和文件有所不同,目录的读 权限位意味着可以列出其中的内容(不能ls),写权限位意味着可以在该目录中创建文件,执行权限位则意味着搜索和访问该目录(cd)。如果要使目录的w权 限起作用,目录必须同时有x权限。51Testing软件测试网.Q8q)i4{-W l Y G

x&s|/i'? Sn%n0  假设dir下有一个文件file,某用户对file的文件的权限为rwx,而dir为--x,那么用户可以通过路径的方式  ...../dir/file执行该file文件,通过vi编辑该文件,因为该目录是可以访问的。

%P(\Bd+Elxnm0

*SyOfM{x*Ubn0  但是该用户cd该目录后不能ls。51Testing软件测试网BeYD U0c

51Testing软件测试网q(s6F T2S,knTL

   假设dir下有一个文件file,某用户对file的文件的权限为rwx,而dir为rw-,那么该用户无法通过路径的方式  ...../dir/file执行该file文件,无法通过vi编辑该文件,因为该目录是不可以访问的(无法cd进入该目录)。同时也不能在该目录下建立 新文件,虽然看起来已经有w的权限。

$Km$}"oE u3z0

+~5V XU ~J)d:R7p0  如果某个用户对文件夹/AA/BB/CC 有rwx的权限,如果想正常操作CC文件夹,对AA和BB都必须有x权限。

,@!fKqX:M0

[5Y.V/i*c?9A-My0  所以目录对组合其他用户一般都设为r-x。51Testing软件测试网(EK C-E dQ

51Testing软件测试网(]8m.D YoIqgj

  对于文件来说,如果要想一个文件的x权限起作用,同时必须有r权限。

q{1s R:hl;F v+?H051Testing软件测试网nOkWp W1Dy

   对于目录设w权限给别的用户的危险性:在用户Locke拥有的目录.../treaties下有一个文件叫twotreatiesOnGrv,然后 Locke给这个文件限制为别的用户不能写,但是别的用户对treaties目录却有写权限,那么别人,比如说,Plato还能不能写 twotreatiesOnGrv这个文件呢,答案是,不能但又能,Plato不能直接,比如vi来改这个文件(但是w! twotreatiesOnGrv 也可以覆盖这个文件),但是他可以通过mv 将一个别的文件到treaties目录下覆盖这个twotreatiesOnGrv。51Testing软件测试网fW@N$p-g

51Testing软件测试网M!QR#LP-P$nO

  对于没有写权限的文件同时,如果对所在目录有写权限,也可以被删除。

kC4t6y|Q0

8`-w B;^*M6o'|G0  5、文件在创建的时候是没有x权限的(就算umask 是000),要用chmod来改变权限。51Testing软件测试网'l'Z)vU Tp!k

qu)^_z'Ub%D _0  6、通过mv aa bb将aa文件改为bb,不巧的是如果在当前目录下有一个bb目录,结果就会是将aa移动到了bb目录下,而不是改名。

?8O&wTK!RJ%E!v051Testing软件测试网~zm-`4?)np

  7、bash 中,写在if 中的 [ condition ]要注意在[后,和 ]前都要留一个空格。51Testing软件测试网hA Vb*N&U

-h*OH$lG&j|.b0  if [ "$1" = "ok " ]; then

'z@&v'z'sf @0

U yZ a_FB;|s0  echo "\$1 is ok,evaluated as true"

FI l+~pXr0

{g){3E4W*SV0  else

,Y;i1u Rd!LN3J051Testing软件测试网5b3x)w9? L0q^/I

  echo "\$1 is $1,evaluated as false"51Testing软件测试网1e4pWcCVx

uu9Vi5H0  fi

"~@*QWY6t:b.b0

^ ST*Y/F.^0  8、bash中的until循环是在条件为false的时候执行loop,在条件为true时停止。51Testing软件测试网rIO#^I


TAG:

 

评分:0

我来说两句

Open Toolbar