ps: 红字字体为重要部分, 仔细看


一、 目录、文件基本命令(mkdir、tree、touch、rmdir、rm、cp、mv、)

          1. mkdir: 创建目录;

             常用选项:

                              ①。  -p:     递归创建目录

[root@Centos1 ~]# mkdir a/b/c              #当前没有a/b/c目录, 所以创建不成功
mkdir: cannot create directory `a/b/c': No such file or directory    
  #提示没找到a/b/c 目录
[root@Centos1 ~]# mkdir -p a/b/c                   #可以结合-p选项递归创建a/b/c目录
[root@Centos1 ~]# mkdir -p a/B/C
[root@Centos1 ~]# tree -C a                      #查看a目录的结构
a
|-- B
|   `-- C
`-- b
    `-- c

                              ②。 -v:     可视化

[root@Centos1 ~]# mkdir -pv a/A/B/C
mkdir: created directory `a/A'
mkdir: created directory `a/A/B'
mkdir: created directory `a/A/B/C'


          2. tree:显示目录结构;

              常用选项:     

                              ①。 -C:     显示颜色

[root@Centos1 ~]# tree -C a                            #查看a目录的结构
a
|-- B
|   `-- C
`-- b
    `-- c


          3. touch:创建文件;

[root@Centos1 ~]# touch a/A/B/C/1


          4. rmdir:用于删除空目录, 如果目录中含有文件, 则无法删除, 所以不常用;

          5. rm: 删除文件或目录;

              常用选项:

                              ①.。 -i:     删除时提醒

[root@Centos1 ~]# rm a/A/B/C/1                       #删除刚创建的文件1
rm: remove regular empty file `a/A/B/C/1'? y         #输入y则删除,输入n为不删除

                              ②。 -r:     删除目录

[root@Centos1 ~]# rm -r a/A/B/C/            #删除a/A/B/下的C目录  
rm: remove directory `a/A/B/C'? y           #输入y则删除,输入n为不删除 
[root@Centos1 ~]# ls -l a/A/B/              #可以看到, a/A/B下没有了C目录
total 0

                              ③。 -f:     强制删除(删除时不提醒)

[root@Centos1 ~]# rm -rf a/A/B            #删除a/A下的B目录
[root@Centos1 ~]# ls -l a/A/                                             
total 0
[root@Centos1 ~]# mkdir -p a/A/1/2/3/4/   #结合-p创建递归目录
[root@Centos1 ~]# rm -rf a/A              #删除A目录.
[root@Centos1 ~]# ls a                    #可以看到,A目录下的子目录一块删除
B

          6. cp:复制文件和目录;

              常用选项:

                              ①。 -r:     复制目录

[root@Centos1 ~]# ls -l | grep '^d'           #过滤当前以d开头的目录
drwxr-xr-x. 3 root root 4096 Mar 10 05:09 a
[root@Centos1 ~]# cp a /etc/                  #如果不输入-r选项, 不允许拷贝目录
cp: omitting directory `a'
[root@Centos1 ~]# cp -r a /etc/

                                 

                              ②。 -a:     复制时文件属性保持一致

[root@Centos1 ~]# cp -a a /home/                       
drwxr-xr-x. 2 root root 4096 Mar 10 05:40 /home/a               #红色表示文件属性
当目标文件已存在时, 复制源文件会提示是否覆盖. 如果不希望覆盖, 即使用cp的绝对路径.
[root@Centos1 ~]# cp 1.txt /home/
[root@Centos1 ~]# cp 1.txt /home/                                         
cp: overwrite `/home/1.txt'? y
[root@Centos1 ~]# /bin/cp 1.txt /home/

      

                       

          7. mv:移动文件或改名;

              常用选项:

                              ①。 -i:     移动或改名时提醒.   

[root@Centos1 ~]# ls a                       #a目录下有1.txt、2.txt、3.txt
1.txt  2.txt  3.txt     
[root@Centos1 ~]# echo abc> 1.txt            #将'abc'重定向到当前目录的1.txt文件中
[root@Centos1 ~]# mv 1.txt a                 #将当前目录的1.txt移动到a目录
mv: overwrite `a/1.txt'? y                   #输入y则覆盖.
[root@Centos1 ~]# cat a/1.txt                #查看a/1.txt文件内容
abc
[root@Centos1 ~]# echo 222 > 1.txt           #将'222'重定向到当前目录的2.txt文件中
[root@Centos1 ~]# cat 1.txt           
222
[root@Centos1 ~]# /bin/mv 1.txt a/               
当目标文件存在是时, 会提示是否覆盖. 如果不希望提示, 需要使用命令的绝对路口/bin/mv, 并进行强制覆盖. 
[root@Centos1 ~]# cat a/1.txt
222

                              ②。 -v:     可视化

[root@Centos1 ~]# mv -v a/1.txt ./
`a/1.txt' -> `./1.txt'

二、 查看文件和目录(cat、tac、rev、more、less、tail、head)

       1. cat: 查看文件;

          常用选项:

                         ①。 -A:     在每行结束处显示'$'

[root@Centos1 ~]# cat 1.txt
abc
def
ijk
[root@Centos1 ~]# cat -A 1.txt                               
abc$
def$
ijk$

                         ②。 -n:     显示行号

[root@Centos1 ~]# cat -n 1.txt
     1  abc
     2  def
     3  ijk


     2. tac: 文件倒序;

[root@Centos1 ~]# tac 1.txt
ijk
def
abc

     3. rev: 颠倒文件左右内容;

[root@Centos1 ~]# rev 1.txt
cba
fed
kji

     4. more: 当内容为满屏时, 按百分比显示文件内容;

[root@Centos1 ~]# more /etc/init.d/iptables

    

     5. less: 和more类似, less支持快捷键;

[root@Centos1 ~]# less /etc/init.d/iptables
下面是快捷键:
               n与N结合/使用: n往下,N往上
               n与N结合?使用: n往上,N往下
               ctrl+f: 往下翻页
               ctrl+b: 往上翻页
               快捷键使用:j像下,k像上
               G跳转到最后一行g跳转到第一行


     6. tail: 默认查看文件尾10行;

[root@Centos1 ~]# tail /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
rtkit:x:498:499:RealtimeKit:/proc:/sbin/nologin
pulse:x:497:498:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@Centos1 ~]# tail -3 /etc/passwd                              #查看末尾3行, 加-3
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin

     7. head: 默认查看文件前10行;

[root@Centos1 ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
[root@Centos1 ~]# head -3 /etc/passwd                    #查看前3行. 加-3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

三、文件及目录属性

[root@Centos1 ~]# ls -l
total 28
-rw-r--r--.  1 root root   12 Mar 10 05:56 1.txt
drwxr-xr-x. 2 root root 4096 Mar 10 05:38 a

Linux目录文件管理_2_第1张图片

Linux文件类型:

f或者-  :          普通文件
d:                   目录文件
b:                   块设备文件
c:                    字符文件
s:                    套接字文件
l:                     软连接文件
p:                   管道文件

1:                   表示几个文件使用了相同inode号

.:                    selinux

+:                   ACL

Linux文件链接数(即inode)

[root@Centos1 ~]# ls -ldai a                            #查看a目录本身inode
914018 drwxr-xr-x. 3 root root 4096 Mar 10 05:38 a      #3代表的链数.  914018表示inode
[root@Centos1 ~]# ls -ali a/
total 8
914018 drwxr-xr-x. 2 root root 4096 Mar 10 05:38 .      #查看当前目录
913921 dr-xr-x---. 3 root root 4096 Mar 10 05:56 ..
915949 -rw-r--r--. 1 root root    0 Mar 10 05:28 2.txt
915950 -rw-r--r--. 1 root root    0 Mar 10 05:28 3.txt
[root@Centos1 ~]# ls -ali a/1
total 8
915947 drwxr-xr-x. 2 root root 4096 Mar 10 06:27 .
914018 drwxr-xr-x. 3 root root 4096 Mar 10 06:27 ..     #查看a/1目录

从上面的inode中可以看出indeo出现三次:

1。 目录本身

2。 a/目录里的'.(隐藏)'当前目录

3。 a/1目录的..(上一级)'上一级目录

四、修改文件及目录的属性和权限(chown、chmod)

     1. chown: 修改目录及文件属性(属主、属组)

[root@Centos1 ~]# useradd user1                                    #创建用户
[root@Centos1 ~]# useradd user2
[root@Centos1 ~]# ls -l  | grep '^d'
drwxr-xr-x. 3 root root 4096 Mar 10 06:27 a
[root@Centos1 ~]# chown user1 a
[root@Centos1 ~]# ls -l  | grep '^d'
drwxr-xr-x. 3 user1 root 4096 Mar 10 06:27 a
[root@Centos1 ~]# chown :user2 a
[root@Centos1 ~]# ls -l  | grep '^d'
drwxr-xr-x. 3 user1 user2 4096 Mar 10 06:27 a
[root@Centos1 ~]# chown root:root a
[root@Centos1 ~]# ls -l  | grep '^d'
drwxr-xr-x. 3 root root 4096 Mar 10 06:27 a

     常用选项:

                     -R:     递归修改属性

[root@Centos1 ~]# ls -l a
total 4
drwxr-xr-x. 2 root root 4096 Mar 10 06:27 1
[root@Centos1 ~]# chown -R user1:user2 a/1
[root@Centos1 ~]# ls -l a
total 4
drwxr-xr-x. 2 user1 user2 4096 Mar 10 06:27 1

     2. chmod: 修改文件目录的权限

[root@Centos1 ~]# ls -l  | grep '^d'
drwxr-xr-x. 3 root root 4096 Mar 10 06:27 a
[root@Centos1 ~]# chmod 777 a
[root@Centos1 ~]# ls -l  | grep '^d'
drwxrwxrwx. 3 root root 4096 Mar 10 06:27 a

Linux目录文件管理_2_第2张图片

权限用二进制表示应为: 

r=4

w=2

x=1

     常用选项:

                    ①。 -R:     递归修改文件、目录权限

[root@Centos1 ~]# ls -l a
total 4
drwxr-xr-x. 2 user1 user2 4096 Mar 10 06:27 1
[root@Centos1 ~]# chmod -R 700 a
[root@Centos1 ~]# ls -l && ls -l a/
drwx------. 3 root root 4096 Mar 10 06:27 a
--------------------------------------------------------
drwx------. 2 user1 user2 4096 Mar 10 06:27 1

五、umask权限掩码

[root@Centos1 ~]# umask                    #umask默认掩码为0022
0022
创建目录的默认掩码为777-022=755。
创建文件的默认掩码为666-022=644。
[root@Centos1 ~]# umask 0001          #修改默认掩码
[root@Centos1 ~]# ls -l | grep aaaa
drwxrwxrw-. 2 root root 4096 Mar 10 06:50 aaaa
[root@Centos1 ~]# touch a.txt            #创建一个文件
[root@Centos1 ~]# ls -l | grep a.txt      
-rw-rw-rw-. 1 root root    0 Mar 10 06:48 a.txt

a.txt不属于目录, 切不带有'x(执行)'权限. 技术umask改为0001, 而创建的文件权限仍然为666.  

如有错误, 请大家指正。

51博客:http://chenxiaojian.blog.51cto.com