ZqrFerrari
努力学习,开心生活

1.      编辑命令行的快捷键

Ctrl+U  :删除当前整行

Ctrl+C  :终止当前正在执行的命令,并移动光标到下一行的开头

 

2.      echo $SHELL :显示正在运行的shell

heaad@ubuntu:~$ echo $SHELL

/bin/bash

exit :结束一个开启的shell

shell中输入另一个shell的名字将运行一个新的临时的shell,而Ctrl+D则可以终止这个临时的shell,返回默认的shell

 

3.      alias :为各种shell命令创建别名

shell中输入alias将显示所有的别名设置:

heaad@ubuntu:~$ alias

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias l='ls -CF'

alias la='ls -A'

alias ll='ls -alF'

alias ls='ls --color=auto'

例如:alias la='ls -A' 表示 la已经设置为’ls –A’的别名。

‘ls -A’’ls -a’的区别:’ls -a’显示所有目录与文件,而‘ls -A’显示除“.”与“..”外的所有目录与文件。

 

4.      删除或复制非空目录

rmdir 命令只能删除空目录,而rm则可以删除非空目录。

rm -r 目录名(可删除非空目录及该目录下所有文件,rm命令删除的东西都不会放入trash中,切记!

cp -r 源目录名 目标目录名(可复制非空目录)

 

5.      确定文件类型

file 文件列表

heaad@ubuntu:/bin$ file /bin/bash

/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

 

6.      >>”、“>”与“<

>>”:追加操作符,例如命令“cat  file1  >>  file2”将file1的内容追加到file2后面

>”:Linux输出重定向操作符,例如命令 cat  file1  file2  file3  >  file4 ”将file1file2file3的内容合并到file4中(file4原来的内容将丢失)。

<Linux输入重定向操作符,例如命令“more < file1 ”。

 

7.       diffpatch

diff命令一般用于生成源代码补丁,如:

diff  -urBNw  dir1  dir2  > patch.diff

将目录dir1与目录dir2的差别记录于patch.diff 

各个选项的意义:

-u   : 采用新版式上下文格式(使用“+”和“-”来表示有差别的地方,并显示前后相同的3行)

-r   :对目录进行递归处理

-B   :忽略对空行的比较

-N   :将不存在的文件当作空文件处理

-w   :忽略对空格的比较

 

使用如下命令将dir1更新为dir2

cd  dir1

patch  -p1  < ../patch.diff

 

8. chownchgrpchmod命令

         3个命令都需要有root的权限才能使用。

         chown命令改变file1文件所有者为root

heaad@ubuntu:~/a$ ls -l

total 0

-rw-r--r-- 1 heaad heaad 0 2010-05-10 20:26 file1

heaad@ubuntu:~/a$ sudo chown root file1

heaad@ubuntu:~/a$ ls -l

total 0

-rw-r--r-- 1 root heaad 0 2010-05-10 20:26 file1

 

chgrp命令改变file1文件所属用户组为root

heaad@ubuntu:~/a$ sudo chgrp root file1

heaad@ubuntu:~/a$ ls -l

total 0

-rw-r--r-- 1 root root 0 2010-05-10 20:26 file1

 

chmod命令改变文件访问权限:

heaad@ubuntu:~/a$ ls -l

total 0

-rw-r--r-- 1 root root 0 2010-05-10 20:26 file1

heaad@ubuntu:~/a$ sudo chmod a+w,u+x,o-r file1

heaad@ubuntu:~/a$ ls -l

total 0

-rwxrw--w- 1 root root 0 2010-05-10 20:26 file1

 

 

对于每个文件都有3种不同的用户级别:文件所有者(u)、所属用户组(g)、系统中其他用户(o)。命令“sudo chmod a+w,u+x,o-r file1”表示给所有用户加上file1文件的写权限,给文件所有者加上执行权限,删除其他用户的读权限。chmod命令使用“+”来增加权限,用“-”删除权限,“=”来设置权限。

 

9. ln命令

    使用带有-s选项的ln命令将建立软连接,而不带-sln命令建立的是硬链接。

    建立到file1的软链接:

    heaad@ubuntu:~/a/d$ ln -s ../file1 ./link_to_file1

 

建立到file2的硬链接:

heaad@ubuntu:~/a/d$ ln ../file2 ./hardlink_to_file2

heaad@ubuntu:~/a/d$ ls -l

total 4

-rwxrwxrwx 2 heaad heaad 20 2010-05-10 20:53 hardlink_to_file2

lrwxrwxrwx 1 heaad heaad  8 2010-05-10 20:52 link_to_file1 -> ../file1

 

heaad@ubuntu:~/a/d$ ls .. -l

total 12

drwxr-xr-x 2 heaad heaad 4096 2010-05-10 20:54 d

-rwxrwxrwx 1 root  root    17 2010-05-10 20:51 file1

-rwxrwxrwx 2 heaad heaad   20 2010-05-10 20:53 file2

     可以看出:软链接并不增加链接计数,而硬链接增加链接计数。无论是软链接还是硬链接,都与原文件相同的读写权限。

下面来测试一下删除原文件后硬链接与软链接的表现。

先看软链接:

 

heaad@ubuntu:~/a$ rm file1

 

heaad@ubuntu:~/a$ cd d

heaad@ubuntu:~/a/d$ ls -l

total 4

-rwxrwxrwx 2 heaad heaad 20 2010-05-10 20:53 hardlink_to_file2

lrwxrwxrwx 1 heaad heaad  8 2010-05-10 21:01 link2_to_file1 -> ../file1

 

heaad@ubuntu:~/a/d$ cat link2_to_file1

cat: link2_to_file1: No such file or directory

 

可见:删除原文件后软链接并不删除,但是不再指向有效的文件。从这个角度看,软链接跟Windows中的快捷方式类似。

 

 

heaad@ubuntu:~/a$ rm file2

 

heaad@ubuntu:~/a$ cd d

heaad@ubuntu:~/a/d$ ls -l

total 4

-rwxrwxrwx 1 heaad heaad 20 2010-05-10 20:53 hardlink_to_file2

lrwxrwxrwx 1 heaad heaad  8 2010-05-10 21:01 link2_to_file1 -> ../file1

 

 

可见:删除原文件后硬链接并不删除,但是其链接计数减少了1。我认为可以从文件系统的角度解析:硬链接中保存了文件的inode号,每建立一个到原文件的硬链接就会将该文件的inode中的引用计数加1Linux只有在某个文件的inode的引用计数值减少到0时才删除该文件。

 

posted on 2010-05-16 15:36  赵情融  阅读(214)  评论(0编辑  收藏  举报