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 ”将file1、file2、file3的内容合并到file4中(file4原来的内容将丢失)。
“<”:Linux输入重定向操作符,例如命令“more < file1 ”。
7. diff与patch
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. chown,chgrp,chmod命令
这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$ 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命令将建立软连接,而不带-s的ln命令建立的是硬链接。
建立到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中的引用计数加1。Linux只有在某个文件的inode的引用计数值减少到0时才删除该文件。