linux目录管理和文件管理常用命令

1、目录管理

1.1、Linux的目录结构

.:当前目录

..:上一级目录

/:根目录

/bin:二进制,可执行的命令

/boot:引导,操作系统用于引导系统启动的文件,内核、grub

/dev:设备文件

    Linux的设备类型:

        字符设备:c,线性设备

        块设备:b,随机设备

/etc:配置文件

/home:用户的家目录,/home/USERNAME,jerry,/home/jerry

/root:管理员的家目录

/lib,lib64:库文件

/media:挂载点目录,通常用于挂载便携性设备

/mnt:挂载点目录,挂载额外的文件系统

/misc:备份目录

/opt:可选目录,通常第三方软件偶尔安装于此路径下

/proc:伪文件系统:内存中内核的映射

/selinux:安全加强的Linux

/srv:伪文件系统,通常用于访问硬件设备属性信息

/tmp:临时文件目录

/usr:储存只读文件

/var:经常会发生变化的文件:比方说日志等

1.2、linux下的文件以及文件的目录命名规则:

1.长度不能超过255个字符

2.不能使用/(斜线)当文件名, 建议不要使用特殊字符

3.严格区分大小写

1.3、目录管理常用命令

cd    更换工作目录用法:cd [DIRECTORY]

    cd .. 返回上级目录

    cd ~  返回家目录

    cd    回家目录

    cd -    在上个目录和当前目录之间切换

    cd ~USERNAME    切换到USERNAME的家目录

# cd /usr/share    #切换到share目录下

pwd:显示当前目录

dirname:显示指定路径的目录

# dirname /usr/bin/
/usr
# dirname a/b/ 
a 
# dirname a 
.

mkdir建立目录用法:mkdir [OPTION] DIRECTORY

    -p:父目录    如果我们指定z的话,z的父目录y不存在的话会自动先创建y,如果y的父目录x不存

        在的话会自动先创建x

    -v:显示创建过程

# mkdir /tmp/x1         #在tmp下创建x1
# mkdir /tmp/x2/hello   #在tmp下的x2下创建hello,因为x2不存在,所以会报错,不能创建,要使用-p选项
mkdir -pv /tmp/x2/hello    
命令行展开:
/mnt/test2/
a_b,a_c,d_b,d_c
{a,d}_{b,c}
# mkdir -pv /mnt/test2/{a,d}_{b,c}
mkdir: created directory `/mnt/test2'
mkdir: created directory `/mnt/test2/a_b'
mkdir: created directory `/mnt/test2/a_c'
mkdir: created directory `/mnt/test2/d_b'
mkdir: created directory `/mnt/test2/d_c'

/mnt/test/x/m  /mnt/test/y   这个怎么同时创建?

[root@Oracle ~]# mkdir -pv /mnt/test/x/m  /mnt/test/y   
[root@Oracle ~]# mkdir -pv /mnt/test/{x/m,y}     # {}花括号展开  ~USERNAME波浪线展开

rmdir(remove directory):删除目录,只能用于删除空目录

    -p:父目录

    -v:显示详细过程

# rmdir -pv /root/x/y/z      
rmdir: 正在删除目录 "/root/x/y/z"           
rmdir: 正在删除目录 "/root/x/y"            
rmdir: 正在删除目录 "/root/x"              
rmdir: 正在删除目录 "/root"                
rmdir: 删除目录 "/root" 失败: 目录非空

注:加了-p后,只能删除一线单传的目录:即把z删除后,y目录 空了,就会把y目录删除,当y 删除后,x目录空了,就会把x 目录删除,但是root不空,所以不能删除root目录。


2、文件的管理

2.1、文件的类型

Linux文件类型:

普通文件(-):a.html,b.txt,c.ppt,ls

目录文件(d):

特殊文件:

    块设备文件(b):

    字符设备文件(c):

符号链接文件(l):

命名管道文件(p):pipe

套接字文件(s):socket

判断普通文件的内容类型,使用file命令:#file 命令

2.2、文件的权限

目录权限:

    r:可以对目录执行ls命令,但不允许使用-l选项,而且,不能cd到目录中;

    w:可以在目录创建文件;

    x:可以对目录执行ls -l 命令,且能够cd进去。

文件系统安全模型:

    属主 属组 其它

    u,  g,  o

    ---:000 --> 0

    --x:001 --> 1

    -w-:010 --> 2

    -wx:011 --> 3

    r--:100 --> 4

    r-x:101 --> 5

    rw-:110 --> 6

    rwx:111 --> 7

3位二进制对应一个8进制

4位二进制对应一位16进制

    0,9,A,B,C,D,E,F

    F:1111

    9:1001

2.3、文件管理常用命令

cat、tac、more、less、head、tail    显示文件

cat    顺序显示整个文件    cat filename 

    -n:显示行号

# cat -n /etc/sysctl.conf

    从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.

    将几个文件合并为一个文件:cat file1 file2 > file

tac    逆序显示文件

more    满屏显示文件内容,向后翻,在翻至文件尾部之前允许向后翻 敲空格键:下一屏,按q结束

    -N:显示N行

    +N:从第N行开始显示

# more /etc/sysctl.conf

less:向前翻,在翻至文件头部之前允许向前翻敲b键:往前翻一屏回车键,往前翻一行

head:文件的前n行      n默认为10,且默认不显示文件名

    -q:隐藏文件名    

    -v:显示文件名

    -n N或-N::显示N行

    -c N:显示N个字节

head -v -8 /etc/sysctl.conf
==> /etc/sysctl.conf <==
...

tail:文件的后n行

    -n N或-N::显示N行

    -f:查看一个文件的尾部内容后,不退出,等待并显示新增的行; 退出使用Ctrl+C结束


文件的创建和删除:在Linux下,目录和文件是不能同名的,在Windows下,也不能,因为Windows下的文件都有后缀

touch                        

# touch a     #创建a文件

touch:主要命令不是用来创建文件的,是用来修改时间戳的

   时间戳:访问时间,修改时间,改变时间 

   -c:不创建任何文件

   -a:只改变访问时间      访问时间改变,改变时间也会改变

   -m:只改变修改时间      修改时间改变,改变时间也会改变

   -t:指定修改时间到某个指定时间,格式为[CC]YYMMDDhhmm.ss

stat:显示文件或文件系统的状态信息   

# stat a    #显示a文件或a文件系统的状态信息
  File: `a'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d	Inode: 131089      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-03-05 06:17:01.535994188 -0500    #访问时间
Modify: 2015-03-05 06:17:01.535994188 -0500    #修改时间
Change: 2015-03-05 06:17:01.535994188 -0500    #

创建文件,可以使用文件编辑器   文本编辑器只是编辑纯ASCII码的

  word不是文件编辑器,只是字处理器

nano、vim:文本编辑器

rm:删除文件

  -i:删除前提醒

  -f:强行删除

  -r:删除目录  删除目录下所有的文件

# rm hello    删除hello

注:为什么会提示,因为这里的rm命令不是源生的rm命令,是被修改后的rm命令,是rm -i的别名,(命令别名),-i 交互式,如果你删的话,就跟你交互一下,问你要不要删因为现在是管理员,为了避免误删,所以有这个提示,普通用户没有提示

# \rm a        #加了\后就没有提示,就是原来的rm命令
# rm -rf /     #删除根目录,所以一定要小心使用

命令别名:

    alias

    \COMMAND:使用命令自身,而不使用与命令名称同名的别名

cp:copy    复制和移动文件    cp SRCFILE DEST

    -r 或 -R : 复制目录及及目录中的文件的,实现递归复制

    -f :  强行复制,如果目标文件存在直接覆盖;如果文件目标不能打开,先把它删了,再重试

    -i :  交互式,覆盖前提醒确认

    -p :  复制文件后保留原有的属主、属组、权限以及时间戳

    -a :  全部复制,归档

复制文件能不能把一个文件复制为另外一个文件(能),能不能把一个文件复制为多个文件(不能),把一个文件复制为多个目标(不能),可不可以把多个文件复制为一个文件(不能),可不可以把多个文件复制到一个目录(能),可不可以把多个文件复制为多个文件(cp不能,可以使用脚本实现)

cp file1 file2 file3  

cp命令只有最后一个是目标,此前的所有都是源,不允许一个源多个目标,也不允许多个源多个目标

# cp /etc/passwd /tmp/     #把etc目录下passwd文件复制到tmp目录下,并保持原来的名字
# cp /etc/passwd /tmp/test   #复制etc目录下passwd文件到tmp目录下。

注:如果目标test不存在,则复制到tmp下并命名为test。如果test存在的话,则看是目录还是文件,是文件则提示我们 是不是覆盖掉,即删除原来的test文件,将passwd复制过来重新命名为test;是目录,则把passwd放到test目录下,并保存为原来的名字

# cp /etc/passwd /etc/issue /etc/inittab /tmp/abc
cp: 目标"/tmp/abc" 不是目录             #说明多个源 目标就必须是目录

cp命令默认下不会复制目录,如果要复制目录,cp有个递归选项:-R或-r都可以,即复制目录及目录下的所有文件

# cp /etc/init.d/ /tmp/
cp: 略过目录"/etc/init.d/"
[root@Oracle ~]# cp -r /etc/init.d /tmp/passwd       passwd是tmp下的一个文件
passwd -> rc.d/init.d

注:创建了一个链接,而且是指向当前的链接文件,但是是错的,因为tmp下没有init.d这个文件在Linux上显示位红色

# cp -r /etc/init.d/ /tmp/hello    #复制etc目录下init.d目录到tmp目录下,创建并命名为hello

mv    移动文件及目录 用法:mv [OPTION]...SOURCE DEST

    -f:强行移动,如果目标文件存在直接覆盖;如果文件目标不能打开,先把它删了,再重试

    -i:交互式,移动覆盖前提醒确认

    -b:若需覆盖文件,则覆盖前先行备份。

# mv /etc/abc /tmp/def     #将/etc/abc移动到/tmp/下,并重命名为def

通配符:bash支持文件名通配,globbing

*:任意长度的任意字符

?:任意单个字符

[]:指定范围内的任意单个字符

    [0-9]:所有的数字

    [a-z]或[A-Z]所有的字母

    [0-9a-z]或[0-9A-Z]所有的数字和字母

字符集和:

[:digit:] :所有的数字,相当于0-9    [0-9],[[:digit:]]

[:lower:] :所有的小写字母

[:upper:] :所有的大写字母

[:alpha:] :所有的数字

[:alnum:] :相当于[0-9a-z]所有的数字和字母

[:space:] :空白符号

[:punct:] :所有标点符号

[^]:脱字符,取反,指定范围外的任意但个字符

# cp -v /etc/i* /tmp/      #将etc目录下以i开头的文件复制到tmp下
# cp /etc/*.conf /tmp/      #将所有已.conf结尾的文件复制到tmp下
# cp /etc/i*.conf /tmp/        #以i开头,后面跟任意字符,最后以.conf结尾
# cp /etc/i?.conf /tmp/        #以i开头,后面跟任意一个字符,最后以.conf结尾
# cp /etc/i[abcd].conf /tmp/   #以i开头,后面跟abcd中任意一个字符,最后以.conf结尾
# cp /etc/i[abcd]*.conf /tmp/  #以i开头,后面跟abcd中任意一个字符,后面再跟任意一个字符,最后以.conf结尾


你可能感兴趣的:(目录及文件管理)