【Linxu学习002】Linux常用命令/目录相关


一、Linux目录


    在/目录下有若干个文件夹,初始的时候比较头疼不知道干什么用的,有一本书专门介绍各个目录的作用,该书已经上传到附件。

    1. /boot:系统启动相关的文件,内核以及grub(bootloader)、initrd

    2. /dev:设备文件
        块设备:随即访问
        字符设备:线性访问,按照字符为单位
        鼠标和显示器都是字符设备
        ll显示/dev特殊设备的时候,不再显示大小,而是显示主设备号和次设备号,中间使用,隔开。

    3. /etc/:配置文件

    4. /home:用户的家目录

    5. /root:root的家目录

    6. /lib:库文件

        (1). 库文件分类

            库文件有两类:
                动态库:windows上表现为.dll,在linux上表现为.so(shared Object)
                静态库:Linux上表现为.a

        (2). 动态库和静态库有什么区别?
            动态库在内存中只有一份,如果多个模块都需要一个库文件,那么除了第一次加载该动态库之外,其他模块都直接在内存中调用该动态库即可。
            静态库是直接链接为程序的一部分而存在
            如果直接将一个程序移植到另外一个主机上,如果是静态库,则不需要考虑其他一定能够运行,但是如果是动态库,则必须保证该主机上有相应的库文件才行。

        (3). .so文件类型

            .so文件不是LSB executable类型的文件,而是LSB shared object类型的文件,使用file命令就能够直接看出来,.so类型的文件只能够被调用,不能够单独运行。

        (4). /lib是存放库文件的,但是实际上其它目录也能够存放库文件

    7. /media:挂载点目录,移动设备

    8. /mnt:额外的临时文件,比如,额外的临时文件系统

    9. /opt:第三方程序的安装目录,但是现在已经约定俗称的不将其安装到该目录下了,但是Oracle等特殊软件仍然会默认将软件安装到该目录下。

    10. /proc:为文件系统,该目录本来是空的,但是系统启动起来之后就不是空的了。实际上是内核映像文件。

    11. /sys:也是一种伪文件系统,他是和硬件设备相关的属性映射文件

    12. /tmp:临时文件夹

    13. /var:可变化的文件,随着系统的运行,该文件会越来越大。
            /var/tmp也是一个临时文件

    14. /bin:binary,存放的都是可执行文件,用户命令

    15. /sbin:管理命令

    17. /usr:universal shared readonly,全局的,共享的,只读的文件

            /usr/bin
            /usr/sbin
            /usr/lib
    
            /usr/local
            /usr/local/bin
            /usr/local/sbin
            /usr/local/lib


二、如何创建目录


mkdir
        -p    #如果父目录不存在,则创建之
        -v    #打印创建的信息

    示例:

kdyzm@kdyzm:~$ mkdir -pv /tmp/a/b/c/d
mkdir: created directory ‘/tmp/a’
mkdir: created directory ‘/tmp/a/b’
mkdir: created directory ‘/tmp/a/b/c’
mkdir: created directory ‘/tmp/a/b/c/d’

    可以使用命令行展开创建多个目录:

kdyzm@kdyzm:~$ mkdir -pv /tmp/a/{b,c}/d
mkdir: created directory ‘/tmp/a’
mkdir: created directory ‘/tmp/a/b’
mkdir: created directory ‘/tmp/a/b/d’
mkdir: created directory ‘/tmp/a/c’
mkdir: created directory ‘/tmp/a/c/d’

    Linux中"{}"称之为命令行展开,"~"称之为波浪线展开。


三、查看文件状态信息和修改文件时间戳


    

1.查看文件状态信息

     
kdyzm@kdyzm:~/datastructure$ stat graph/        #查看某个文件的状态信息
  File: ‘graph/’
  Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: 809h/2057d    Inode: 278398      Links: 6
Access: (0775/drwxrwxr-x)  Uid: ( 1000/   kdyzm)   Gid: ( 1000/   kdyzm)
Access: 2016-01-25 13:26:21.862111974 +0800
Modify: 2016-01-23 13:53:49.997066495 +0800
Change: 2016-01-23 13:53:49.997066495 +0800
 Birth: -
stat `ls`        #查看当前目录下所有文件的状态信息

        这里我们对三个时间戳信息比较感兴趣

Access: 2016-01-25 13:26:21.862111974 +0800
Modify: 2016-01-23 13:53:49.997066495 +0800
Change: 2016-01-23 13:53:49.997066495 +0800

    从上到下依此是访问时间、修改时间、改变时间。

    

2.修改时间和改变时间有什么区别?

        “修改时间”指的是内容改变的时间;“改变时间”则不仅仅包含“内容”的改变,而且还包含文件本身各个“属性”的改变,当然“修改时间”本身就是文件的一种属性,所以如果“修改时间”被改变,那么“改变时间”也会随着发生变化。

    

3.使用touch命令修改文件的时间戳信息

touch
        -a    只修改访问时间
        -m    只修改“修改时间”
        -c    如果文件不存在,不创建文件
        -t    设置时间戳信息,格式:[[CC]YY]MMDDhhmm[.ss]

    示例:

kdyzm@kdyzm:~/datastructure$ stat graph/
  File: ‘graph/’
  Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: 809h/2057d    Inode: 278398      Links: 6
Access: (0775/drwxrwxr-x)  Uid: ( 1000/   kdyzm)   Gid: ( 1000/   kdyzm)
Access: 2016-01-25 13:26:21.862111974 +0800
Modify: 2016-01-23 13:53:49.997066495 +0800
Change: 2016-01-23 13:53:49.997066495 +0800
 Birth: -
kdyzm@kdyzm:~/datastructure$ touch -at 191909092359.59 graph/
kdyzm@kdyzm:~/datastructure$ stat graph/
  File: ‘graph/’
  Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: 809h/2057d    Inode: 278398      Links: 6
Access: (0775/drwxrwxr-x)  Uid: ( 1000/   kdyzm)   Gid: ( 1000/   kdyzm)
Access: 1919-09-09 23:59:59.000000000 +0800
Modify: 2016-01-23 13:53:49.997066495 +0800
Change: 2016-01-28 12:07:23.752351674 +0800
 Birth: -

    上述示例中,使用touch命令修改了graph文件夹的最后一次访问时间,为1919-09-9 23:59:59,但是可以发现change时间也改变了,改变成了当前时间,也就是说随着访问时间的改变,“改变时间”会更新到了最新的时间。


四、删除文件和文件夹


rmdir    :删除空文件夹
rm        :删除文件或者文件夹

使用rmdir只能删除空文件夹,使用rm能够删除文件和文件夹,所以rm命令要比mkdir更加常用。

rm
    -i    #删除每个文件之前提示
    -r    #递归删除文件,通常用于删除文件夹中及其子文件夹中的所有文件和目录
    -f    #不提示直接删除,强制删除

示例删除:

kdyzm@kdyzm:~$ rm -ir /tmp/a
rm: descend into directory ‘/tmp/a’? y
rm: descend into directory ‘/tmp/a/c’? y
rm: remove directory ‘/tmp/a/c/d’? y
rm: remove directory ‘/tmp/a/c’? y
rm: descend into directory ‘/tmp/a/b’? y
rm: remove directory ‘/tmp/a/b/d’? y
rm: remove directory ‘/tmp/a/b’? y
rm: remove directory ‘/tmp/a’? y
kdyzm@kdyzm:~$


五、复制命令


cp                            #该命令用于复制文件和目录
    ...source... destDir      #复制多个源到一个目录  
    -t destDir ...source...   #同上
    -r/R                      #递归的复制目录
    -a                        #保留文件的所有属性,长用于归档备份
    -d                        #如果复制的是软链接,则还是软链接而不是源文件
    -p                        #保留文件的属主和属组以及时间戳等信息

    示例:

kdyzm@kdyzm:~$ mkdir -pv /tmp/a/{b,c}/{d,e}/f
mkdir: created directory ‘/tmp/a’
mkdir: created directory ‘/tmp/a/b’
mkdir: created directory ‘/tmp/a/b/d’
mkdir: created directory ‘/tmp/a/b/d/f’
mkdir: created directory ‘/tmp/a/b/e’
mkdir: created directory ‘/tmp/a/b/e/f’
mkdir: created directory ‘/tmp/a/c’
mkdir: created directory ‘/tmp/a/c/d’
mkdir: created directory ‘/tmp/a/c/d/f’
mkdir: created directory ‘/tmp/a/c/e’
mkdir: created directory ‘/tmp/a/c/e/f’

kdyzm@kdyzm:~$ cp -r /tmp/a/ /tmp/newa

kdyzm@kdyzm:~$ tree /tmp/newa
/tmp/newa
├── b
│   ├── d
│   │   └── f
│   └── e
│       └── f
└── c
    ├── d
    │   └── f
    └── e
        └── f

可见已经复制成功,但是文件夹被重命名了。

注意:复制时的规则如下

    对于上述复制文件夹的例子来说,如果目标文件夹不存在,则直接复制该目录并将该目录重命名为指定文件夹名称;如果目标文件夹存在,则讲源文件夹复制到目标文件夹下

    如果目标是文件,如果文件存在,则删除文件然后复制新文件;如果目标文件不存在,则直接复制文件。


六、install命令


    通过whatis可以看出install命令的作用是复制文件并且设置属性的命令。

    该命令的最大特色就是能够自定义复制文件之后的访问权限、文件属主、文件属组等信息,使用该命令只能复制文件二不能复制目录。 

install
            -m    #设置9个权限位,设置方法和chmod相同
            -o    #设置属主
            -g    #设置属组
            -t    #设置目标目录

    示例:

kdyzm@kdyzm:~$ touch a.txt
kdyzm@kdyzm:~$ ll ./a.txt 
-rw-rw-r-- 1 kdyzm kdyzm 0  1月 28 13:32 ./a.txt
kdyzm@kdyzm:~$ install -m 777 -o root -g root a.txt b.txt
install: cannot change ownership of ‘b.txt’: Operation not permitted
kdyzm@kdyzm:~$ su root
Password: 
root@kdyzm:/home/kdyzm# install -m 777 -o root -g root a.txt b.txt 
root@kdyzm:/home/kdyzm# ll b.txt 
-rwxrwxrwx 1 root root 0  1月 28 13:35 b.txt*

    如果想要设置属主属组信息需要相应的权限



你可能感兴趣的:(linux,常用命令,bash)