zoukankan      html  css  js  c++  java
  • Linux命令实践(二)

    1.printf格式化输出(format and print data)

    语法:printf(选项)(参数)

    参数

    • 输出格式:指定数据输出时的格式;
    • 输出字符串:指定要输出的数据。

    格式替代符

    • %c ASCII字符。显示相对应参数的第一个字符
    • %d, %i 十进制整数
    • %e, %E, %f 浮点格式
    • %g %e或%f转换,看哪一个较短,则删除结尾的零
    • %G %E或%f转换,看哪一个较短,则删除结尾的零
    • %o 不带正负号的八进制值
    • %s 字符串
    • %u 不带正负号的十进制值
    • %x 不带正负号的十六进制值,使用a至f表示10至15
    • %X 不带正负号的十六进制值,使用A至F表示10至15
    • %% 字面意义的%
    [root@test ~]# printf '%c
    '  1010      
    1
    [root@test ~]# printf '%d
    '  123 
    123
    [root@test ~]# printf '%e
    ' 123    
    1.230000e+02
    [root@test ~]# printf '%E
    ' 123 
    1.230000E+02
    [root@test ~]# printf '%f
    ' 123 
    123.000000
    [root@test ~]# printf '%g
    ' 123 
    123
    [root@test ~]# printf '%g
    ' 123.123456
    123.123
    [root@test ~]# printf '%g
    ' 123.000456   
    123
    [root@test ~]# printf '%g
    ' 123.00456 
    123.005
    [root@test ~]# printf '%g
    ' 123.00446
    123.004
    [root@test ~]# printf '%G
    ' 123.00446 
    123.004
    [root@test ~]# printf '%o
    ' 101010
    305222
    [root@test ~]# printf '%o
    ' 8     
    10
    [root@test ~]# printf '%o
    ' 8888
    21270
    [root@test ~]# printf '%s
    ' abc
    abc
    [root@test ~]# printf '%u
    ' -100
    18446744073709551516
    [root@test ~]# printf '%u
    ' 100 
    100
    [root@test ~]# printf '%x
    ' 1010
    3f2
    [root@test ~]# printf '%x
    ' -1010
    fffffffffffffc0e
    [root@test ~]# printf '%X
    ' -1010   
    FFFFFFFFFFFFFC0E
    [root@test ~]# printf '%X
    ' 1010 
    3F2
    [root@test ~]# printf '%%
    ' 1010 
    %

    转义序列

    • a 警告字符,通常为ASCII的BEL字符
    •  后退
    • c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
    • f 换页(formfeed)
    • 换行
    • 回车(Carriage return)
    • 水平制表符
    • v 垂直制表符
    • \ 一个字面上的反斜杠字符
    [root@test ~]# printf 'abcabc
    ' 
    ababc
    [root@test ~]# printf 'abccabc
    '  
    abccabc
    [root@test ~]# printf 'abccabc
    aaaa' 
    abccabc
    aaaa[root@test ~]# printf 'abccabc
    aaaa
    badfas' 
    abccabc
    aaaa
    badfas[root@test ~]# printf 'abccabc
    aaaafbadfas'  
    abccabc
    aaaa
        badfas[root@test ~]# printf 'abccabc
    aaaafbadfas
    ' 
    abccabc
    aaaa
        badfas
    [root@test ~]# printf 'abccabc
    aaaaf
    badfas
    ' 
    abccabc
    aaaa
    badfas
    [root@test ~]# printf 'abccabc
    aaaaf
    ba
    dfas
    ' 
    abccabc
    aaaa
    dfas
    [root@test ~]# printf 'abccabc
    aaaaf
    badfas
    '   
    abccabc
    aaaa
    badfas
    [root@test ~]# printf 'abccabc
    a
    aaaf
    badfas
    ' 
    abccabc
    aaa
    badfas
    [root@test ~]# printf 'aaaa	bbbn'                                
    aaaa    bbbn[root@test ~]# printf 'aaaa	bbb
    ' 
    aaaa    bbb
    [root@test ~]# printf 'aaaavbbb
    '  
    aaaa
        bbb
    [root@test ~]# printf 'aaaa\bbb
    '  
    aaaabb
    [root@test ~]# 
    

    2.mkdir:创建空目录

    语法:mkdir (选项)(参数)

    -p:parents如果目录存在则不创建也不报错,若不存在则创建需要的目录

    [root@test ~]# ls
    scripts
    [root@test ~]# mkdir test/xxx/abc -p
    [root@test ~]# ls
    scripts  test
    [root@test ~]# tree test
    test
    `-- xxx
        `-- abc
    
    2 directories, 0 files
    

    -v:verbose 详细信息,显示创建过程

    [root@test ~]# mkdir -pv abc/bcd/dce/efg
    mkdir: created directory `abc'
    mkdir: created directory `abc/bcd'
    mkdir: created directory `abc/bcd/dce'
    mkdir: created directory `abc/bcd/dce/efg'
    

    {}大括号展开

    [root@test ~]# mkdir -pv xxx/{a,b,c}/bcd
    mkdir: created directory `xxx'
    mkdir: created directory `xxx/a'
    mkdir: created directory `xxx/a/bcd'
    mkdir: created directory `xxx/b'
    mkdir: created directory `xxx/b/bcd'
    mkdir: created directory `xxx/c'
    mkdir: created directory `xxx/c/bcd'
    [root@test ~]# tree xxx
    xxx
    |-- a
    |   `-- bcd
    |-- b
    |   `-- bcd
    `-- c
        `-- bcd
    
    6 directories, 0 files
    [root@test ~]# mkdir -pv xxx/{a,b}_{b,c}_{d,e}
    mkdir: created directory `xxx/a_b_d'
    mkdir: created directory `xxx/a_b_e'
    mkdir: created directory `xxx/a_c_d'
    mkdir: created directory `xxx/a_c_e'
    mkdir: created directory `xxx/b_b_d'
    mkdir: created directory `xxx/b_b_e'
    mkdir: created directory `xxx/b_c_d'
    mkdir: created directory `xxx/b_c_e'
    [root@test ~]# tree xxx
    xxx
    |-- a
    |   `-- bcd
    |-- a_b_d
    |-- a_b_e
    |-- a_c_d
    |-- a_c_e
    |-- b
    |   `-- bcd
    |-- b_b_d
    |-- b_b_e
    |-- b_c_d
    |-- b_c_e
    `-- c
        `-- bcd
    
    14 directories, 0 files
    

    -m:指定文件目录的权限,直接指定权限不受umask影响

    [qiuhom@test xx]$ ll
    total 0
    [qiuhom@test xx]$ mkdir test
    [qiuhom@test xx]$ ll
    total 4
    drwxrwxr-x 2 qiuhom qiuhom 4096 Oct 19 15:26 test
    [qiuhom@test xx]$ mkdir -m 400 test2
    [qiuhom@test xx]$ ll
    total 8
    drwxrwxr-x 2 qiuhom qiuhom 4096 Oct 19 15:26 test
    dr-------- 2 qiuhom qiuhom 4096 Oct 19 15:27 test2 

    3.rmdir:删除空目录(remove directory)只允许删除空目录,非空目录删不了

    [root@test ~]# tree aaa
    aaa
    
    0 directories, 0 files
    [root@test ~]# rmdir aaa
    [root@test ~]# tree abc
    abc
    `-- bcd
        `-- dce
            `-- efg
    
    3 directories, 0 files
    [root@test ~]# rmdir abc
    rmdir: failed to remove `abc': Directory not empty
    

    4.tree:查看文件系统树,查看目录树

    [root@test work]# tree scripts 
    scripts
    |-- auto_bak_log.sh
    |-- auto_delete_log.sh
    |-- batch_create_user.sh
    |-- batch_delete_user.sh
    |-- clear
    |-- nginx_install.sh
    `-- rsync_server_config.sh
    
    0 directories, 7 files
    [root@test work]# tree mysql_log/
    mysql_log/
    `-- mysql.log
    
    0 directories, 1 file
    

    5.touch:创建一个空文件,这个命令的主要作用是改变文件的时间戳(change file timestamps)

    语法:touch [OPTION]... FILE...

    -c:不创建文件,文件不存在不创建文件,默认不加-c 是文件不存在就创建文件,所有这个命令才有了创建文件的功能。

    [root@test xxx]# ls
    [root@test xxx]# touch -c abc
    [root@test xxx]# ls
    

    默认不加-c就是文件不存在就创建文件

    [root@test xxx]# ls
    [root@test xxx]# touch abc
    [root@test xxx]# ls
    abc
    

        提示:创建文件,可以使用文本编辑器来创建

    -a:只改变访问时间(access time)

    [root@test xxx]# stat abc
      File: `abc'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 803h/2051d      Inode: 140554      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-10-16 21:32:34.842999349 +0800
    Modify: 2018-10-16 21:32:34.842999349 +0800
    Change: 2018-10-16 21:32:34.842999349 +0800
    [root@test xxx]# touch -a abc
    [root@test xxx]# stat abc
      File: `abc'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 803h/2051d      Inode: 140554      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-10-16 21:33:23.714999000 +0800
    Modify: 2018-10-16 21:32:34.842999349 +0800
    Change: 2018-10-16 21:33:23.714999000 +0800
    

      提示:改变访问时间,文件的改变时间也会跟着发生改变,因为只要文件发生了改变,change所对应的时间也就会更新

    -m:只改变修改时间(modify time)

    [root@test xxx]# stat abc
      File: `abc'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 803h/2051d      Inode: 140554      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-10-16 21:33:23.714999000 +0800
    Modify: 2018-10-16 21:32:34.842999349 +0800
    Change: 2018-10-16 21:33:23.714999000 +0800
    [root@test xxx]# touch -m abc
    [root@test xxx]# stat abc    
      File: `abc'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 803h/2051d      Inode: 140554      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-10-16 21:33:23.714999000 +0800
    Modify: 2018-10-16 21:37:13.442000125 +0800
    Change: 2018-10-16 21:37:13.442000125 +0800
    

    -t:指定时间

    [root@test xxx]# stat abc
      File: `abc'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 803h/2051d      Inode: 140554      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-10-16 21:33:23.714999000 +0800
    Modify: 2018-10-16 21:37:13.442000125 +0800
    Change: 2018-10-16 21:37:13.442000125 +0800
    [root@test xxx]# touch -m -t 201010101254.33 abc
    [root@test xxx]# stat abc
      File: `abc'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 803h/2051d      Inode: 140554      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-10-16 21:33:23.714999000 +0800
    Modify: 2010-10-10 12:54:33.000000000 +0800
    Change: 2018-10-16 21:43:55.968996321 +0800
    

    6.stat:查看文件的详细属性

    [root@test ~]# stat scripts 
      File: `scripts'
      Size: 4096            Blocks: 8          IO Block: 4096   directory
    Device: 803h/2051d      Inode: 131075      Links: 3
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-10-16 21:17:07.214995505 +0800
    Modify: 2018-09-14 10:52:57.264000280 +0800
    Change: 2018-10-16 21:17:01.983000675 +0800
    [root@test ~]# stat abc    
      File: `abc'
      Size: 4096            Blocks: 8          IO Block: 4096   directory
    Device: 803h/2051d      Inode: 140544      Links: 3
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-10-16 21:23:40.826000125 +0800
    Modify: 2018-10-16 21:19:30.404995317 +0800
    Change: 2018-10-16 21:19:30.404995317 +0800
    

    7.rm(remove)删除文件

    语法:rm (选项)(参数)

    -i:删除已有文件或目录之前先询问用户

    [root@test xxx]# ls
    abc
    [root@test xxx]# rm -i abc 
    rm: remove regular empty file `abc'? y
    [root@test xxx]# ls
    [root@test xxx]# 
    

    -f:强制删除文件或目录(不询问用户)

    [root@test xxx]# ls
    bcd
    [root@test xxx]# rm -f bcd
    [root@test xxx]# ls
    [root@test xxx]# 
    

    -r:递归处理,将指定目录下的所有文件与子目录一并处理

    [root@test ~]# tree test
    test
    `-- xxx
        `-- abc
    
    2 directories, 0 files
    [root@test ~]# 
    m -r test
    [root@test ~]# ls
    scripts  xxx
    

      说明:以上实例是因为rm是一个别名,它指向的命令是 rm -i  所有我用反斜线取消别名所指定的命令。

    8.cp复制文件或目录

    语法:cp(选项)(参数)

    -d:只复制链接文件,不复制链接文件所指向的文件。

    [root@test ~]# ls
    scripts  xxx
    [root@test ~]# ll /application/
    total 1512
    drwxrwxr-x  9 root root    4096 Aug 31 17:08 haproxy-1.6.2
    -rw-r--r--  1 root root 1538976 Aug 15 15:53 haproxy-1.6.2.tar.gz
    lrwxrwxrwx  1 root root      25 Jul 28 01:10 nginx -> /application/nginx-1.6.3/
    drwxr-xr-x 11 root root    4096 Jul 28 01:10 nginx-1.6.3
    [root@test ~]# cp -d /application/nginx /root/
    [root@test ~]# ls -l /root/
    total 8
    lrwxrwxrwx 1 root root   25 Oct 16 21:58 nginx -> /application/nginx-1.6.3/
    drwxr-xr-x 3 root root 4096 Sep 14 10:52 scripts
    drwxr-xr-x 2 root root 4096 Oct 16 21:51 xxx
    

    -f:强制覆盖文件(非交互)

    [root@test ~]# ll xxx/
    total 16
    -rw-r--r-- 1 root root 4534 Oct 16 22:09 123
    -rwxr-xr-x 1 root root 4534 Oct 16 22:04 sshd
    [root@test ~]# cp -f scripts/nohup.out xxx/123 
    [root@test ~]# ll xxx/
    total 8
    -rw-r--r-- 1 root root    0 Oct 16 22:11 123
    -rwxr-xr-x 1 root root 4534 Oct 16 22:04 sshd
    

      提示:的作用是取消别名

    -i:覆盖既有文件之前先询问用户;

    [root@test ~]# ll xxx/
    total 8
    -rw-r--r-- 1 root root    0 Oct 16 22:11 123
    -rwxr-xr-x 1 root root 4534 Oct 16 22:04 sshd
    [root@test ~]# cp -i xxx/123 xxx/sshd 
    cp: overwrite `xxx/sshd'? y
    [root@test ~]# ll xxx/
    total 0
    -rw-r--r-- 1 root root 0 Oct 16 22:11 123
    -rwxr-xr-x 1 root root 0 Oct 16 22:14 sshd
    

    -l:对源文件建立硬连接,而非复制文件

    [root@test ~]# ls -l xxx/
    total 0
    -rw-r--r-- 1 root root 0 Oct 16 22:11 123
    -rwxr-xr-x 1 root root 0 Oct 16 22:14 sshd
    [root@test ~]# cp -l xxx/sshd abc
    [root@test ~]# ll
    total 12
    -rwxr-xr-x 2 root root    0 Oct 16 22:14 abc
    -rw-r--r-- 2 root root  693 Jul 28 01:16 nginx_install.sh
    drwxr-xr-x 3 root root 4096 Sep 14 10:52 scripts
    drwxr-xr-x 2 root root 4096 Oct 16 22:06 xxx
    [root@test ~]# ll xxx/
    total 0
    -rw-r--r-- 1 root root 0 Oct 16 22:11 123
    -rwxr-xr-x 2 root root 0 Oct 16 22:14 sshd
    

      提示:我们可以看到sshd 前面硬链接数目增加了1.当然我们也可以用inode方式去看,如果连个文件的inode号一样 那么就说明他们是同一个文件。

    [root@test ~]# ll -i xxx/sshd abc 
    135455 -rwxr-xr-x 2 root root 0 Oct 16 22:14 abc
    135455 -rwxr-xr-x 2 root root 0 Oct 16 22:14 xxx/sshd
    

      说明:以上实例说明cp -l 是对文件创建硬链接,而非复制文件

    -R/r:递归处理,将指定目录下的所有文件与子目录一并处理

    [root@test xxx]# ls
    [root@test xxx]# cp -r /etc/init.d/ /root/xxx/
    [root@test xxx]# ls
    init.d
    [root@test xxx]# tree
    .
    `-- init.d
        |-- DbSecuritySpt
        |-- abrt-ccpp
        |-- abrt-oops
        |-- abrtd
        |-- acpid
        |-- atd
        |-- auditd
        |-- blk-availability
        |-- cpuspeed
        |-- crond
        |-- functions
    
    
    ...
    

    -s:对源文件建立符号连接,而非复制文件;

    [root@test ~]# ll
    total 12
    -rwxr-xr-x 1 root root    0 Oct 16 22:14 abc
    -rw-r--r-- 2 root root  693 Jul 28 01:16 nginx_install.sh
    drwxr-xr-x 3 root root 4096 Sep 14 10:52 scripts
    drwxr-xr-x 2 root root 4096 Oct 16 22:31 xxx
    [root@test ~]# cp -s nginx_install.sh test
    [root@test ~]# ll
    total 12
    -rwxr-xr-x 1 root root    0 Oct 16 22:14 abc
    -rw-r--r-- 2 root root  693 Jul 28 01:16 nginx_install.sh
    drwxr-xr-x 3 root root 4096 Sep 14 10:52 scripts
    lrwxrwxrwx 1 root root   16 Oct 16 22:31 test -> nginx_install.sh
    drwxr-xr-x 2 root root 4096 Oct 16 22:31 xxx
    [root@test ~]# 
    

    -b:覆盖已存在的文件目标前将目标文件备份;

    [root@test xxx]# ls
    ttt
    [root@test xxx]# cp -b ../abc ttt 
    [root@test xxx]# ls
    ttt  ttt~
    [root@test xxx]# 
    

    -v:详细显示命令执行的操作。

    [root@test ~]# cp -v nginx_install.sh ooo
    `nginx_install.sh' -> `ooo'
    

    -p:保留源文件的属主,属组 和创建时间等属性

    [root@test ~]# ls -l abc
    -rwxr-xr-x 1 mysql qiuhom 0 Oct 16 22:14 abc
    [root@test ~]# cp -p abc ddd
    [root@test ~]# ls -l ddd
    -rwxr-xr-x 1 mysql qiuhom 0 Oct 16 22:14 ddd

    -a:归档复制,常用于备份参数的效果和同时指定"-dpR"参数相同

    [qiuhom@test ~]$ ll
    total 39636
    -rw-r-S--- 1 root   root      20163 Sep 20 18:36 a.txt
    -rw-r--r-- 1 root   root    4227297 Oct 14 11:19 bin.tar.gz
    -rw-r--r-- 1 root   root      50566 Oct 14 11:21 etc_rc_init.tar.gz
    -rwsr--r-- 1 qiuhom qiuhom      177 Sep 12 10:55 mycron
    -rw-r--r-- 1 root   root   36277770 Oct 14 11:20 usr_bin.tar.gz
    [qiuhom@test ~]$ cp -a bin.tar.gz test
    [qiuhom@test ~]$ ll
    total 43768
    -rw-r-S--- 1 root   root      20163 Sep 20 18:36 a.txt
    -rw-r--r-- 1 root   root    4227297 Oct 14 11:19 bin.tar.gz
    -rw-r--r-- 1 root   root      50566 Oct 14 11:21 etc_rc_init.tar.gz
    -rwsr--r-- 1 qiuhom qiuhom      177 Sep 12 10:55 mycron
    -rw-r--r-- 1 qiuhom qiuhom  4227297 Oct 14 11:19 test
    -rw-r--r-- 1 root   root   36277770 Oct 14 11:20 usr_bin.tar.gz
    [qiuhom@test ~]$ stat bin.tar.gz 
      File: `bin.tar.gz'
      Size: 4227297         Blocks: 8264       IO Block: 4096   regular file
    Device: 803h/2051d      Inode: 135931      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-10-16 23:47:19.533000125 +0800
    Modify: 2018-10-14 11:19:50.026000238 +0800
    Change: 2018-10-14 11:19:50.026000238 +0800
    [qiuhom@test ~]$ stat test 
      File: `test'
      Size: 4227297         Blocks: 8264       IO Block: 4096   regular file
    Device: 803h/2051d      Inode: 140564      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (  500/  qiuhom)   Gid: (  500/  qiuhom)
    Access: 2018-10-14 11:30:35.254999044 +0800
    Modify: 2018-10-14 11:19:50.026000238 +0800
    Change: 2018-10-16 23:47:19.536000125 +0800
    

      提示:因为执行cp命令 会访问源文件,所有属性里的访问时间会发生变化,而目标文件的访问时间和修改是件和源文件被访问前的时间一样。应为生成新的文件,所以目标文件的改变是见和源文件的访问时间一样,两者是同时发生的。

    9.mv(move)移动文件

    语法:mv(选项)(参数)

    mv SRC DEST
    mv -t DEST SRC

    移动单个文件到指定文目录

    [root@test ~]# ls
    aaa  abc  ddd  jjj  nginx_install.sh  ooo  scripts  test  xxx
    [root@test ~]# mv abc xxx
    [root@test ~]# ls
    aaa  ddd  jjj  nginx_install.sh  ooo  scripts  test  xxx
    [root@test ~]# ls xxx
    abc  ttt  ttt~

    移动多个文件到指定目录下

    [root@test ~]# ll
    total 20
    drwxr-xr-x 2 root  root   4096 Oct 16 22:36 aaa
    -rwxr-xr-x 1 mysql qiuhom    0 Oct 16 22:14 ddd
    -rwxr-xr-x 1 root  root      0 Oct 16 22:39 jjj
    -rw-r--r-- 2 root  root    693 Jul 28 01:16 nginx_install.sh
    -rw-r--r-- 1 root  root    693 Oct 16 22:35 ooo
    drwxr-xr-x 3 root  root   4096 Sep 14 10:52 scripts
    lrwxrwxrwx 1 root  root     16 Oct 16 22:31 test -> nginx_install.sh
    drwxr-xr-x 2 root  root   4096 Oct 16 22:42 xxx
    [root@test ~]# mv ddd jjj nginx_install.sh test ooo xxx
    [root@test ~]# ll
    total 12
    drwxr-xr-x 2 root root 4096 Oct 16 22:36 aaa
    drwxr-xr-x 3 root root 4096 Sep 14 10:52 scripts
    drwxr-xr-x 2 root root 4096 Oct 16 22:44 xxx
    [root@test ~]# ll xxx
    total 8
    -rwxr-xr-x 1 mysql qiuhom   0 Oct 16 22:14 abc
    -rwxr-xr-x 1 mysql qiuhom   0 Oct 16 22:14 ddd
    -rwxr-xr-x 1 root  root     0 Oct 16 22:39 jjj
    -rw-r--r-- 2 root  root   693 Jul 28 01:16 nginx_install.sh
    -rw-r--r-- 1 root  root   693 Oct 16 22:35 ooo
    lrwxrwxrwx 1 root  root    16 Oct 16 22:31 test -> nginx_install.sh
    -rwxr-xr-x 1 root  root     0 Oct 16 22:34 ttt
    -rwxr-xr-x 1 root  root     0 Oct 16 22:33 ttt~ 

    当目标文件是文件是会覆盖其目标文件

    [root@test xxx]# ll
    total 8
    -rwxr-xr-x 1 mysql qiuhom   0 Oct 16 22:14 abc
    -rwxr-xr-x 1 mysql qiuhom   0 Oct 16 22:14 ddd
    -rwxr-xr-x 1 root  root     0 Oct 16 22:39 jjj
    -rw-r--r-- 2 root  root   693 Jul 28 01:16 nginx_install.sh
    lrwxrwxrwx 1 root  root    16 Oct 16 22:31 test -> nginx_install.sh
    -rw-r--r-- 1 root  root   693 Oct 16 22:35 ttt
    -rwxr-xr-x 1 root  root     0 Oct 16 22:33 ttt~
    [root@test xxx]# mv jjj ttt
    mv: overwrite `ttt'? y
    [root@test xxx]# ll
    total 4
    -rwxr-xr-x 1 mysql qiuhom   0 Oct 16 22:14 abc
    -rwxr-xr-x 1 mysql qiuhom   0 Oct 16 22:14 ddd
    -rw-r--r-- 2 root  root   693 Jul 28 01:16 nginx_install.sh
    lrwxrwxrwx 1 root  root    16 Oct 16 22:31 test -> nginx_install.sh
    -rwxr-xr-x 1 root  root     0 Oct 16 22:39 ttt
    -rwxr-xr-x 1 root  root     0 Oct 16 22:33 ttt~
    

      提示:可以看到ttt文件的大小发生了改变,说明ttt原有的数据被jjj给覆盖了

    当源文件是多个文件时,目标文件必须是目录

    [root@test xxx]# ll 
    total 4
    -rwxr-xr-x 1 mysql qiuhom   0 Oct 16 22:14 abc
    -rwxr-xr-x 1 mysql qiuhom   0 Oct 16 22:14 ddd
    -rw-r--r-- 2 root  root   693 Jul 28 01:16 nginx_install.sh
    lrwxrwxrwx 1 root  root    16 Oct 16 22:31 test -> nginx_install.sh
    -rwxr-xr-x 1 root  root     0 Oct 16 22:39 ttt
    -rwxr-xr-x 1 root  root     0 Oct 16 22:33 ttt~
    [root@test xxx]# mv abc ddd ttt   
    mv: target `ttt' is not a directory
    [root@test xxx]# mv abc ddd ttt ..
    [root@test xxx]# ls
    nginx_install.sh  test  ttt~
    [root@test xxx]# 
    

    -t:指定目标目录(这里必须是目录,文件不行)

    [root@test xxx]# ls
    nginx_install.sh  test  ttt~
    [root@test xxx]# mv -t /tmp test nginx_install.sh ttt~
    [root@test xxx]# ll
    total 0
    [root@test xxx]# ls /tmp
    Gtcpe   gates.lod  nginx_install.sh  test_dir  yum_save_tx-2018-10-13-19-486q4O6n.yumtx
    conf.n  moni.lod   test              ttt~

    在同目录下,可以更改文件名

    [root@test ~]# ll
    total 12
    drwxr-xr-x 2 root  root   4096 Oct 16 22:36 aaa
    -rwxr-xr-x 1 mysql qiuhom    0 Oct 16 22:14 ddd
    drwxr-xr-x 3 root  root   4096 Sep 14 10:52 scripts
    -rwxr-xr-x 1 root  root      0 Oct 16 22:39 ttt
    drwxr-xr-x 2 root  root   4096 Oct 16 22:50 xxx
    [root@test ~]# mv ddd abc
    [root@test ~]# ll
    total 12
    drwxr-xr-x 2 root  root   4096 Oct 16 22:36 aaa
    -rwxr-xr-x 1 mysql qiuhom    0 Oct 16 22:14 abc
    drwxr-xr-x 3 root  root   4096 Sep 14 10:52 scripts
    -rwxr-xr-x 1 root  root      0 Oct 16 22:39 ttt
    drwxr-xr-x 2 root  root   4096 Oct 16 22:50 xxx
    

    10.install :复制文件和设置属性

    -d:创建目录

    [root@test ~]# ls
    aaa  abc  scripts  ttt  xxx
    [root@test ~]# install -d bbb/cccc/ddd
    [root@test ~]# ll
    total 16
    drwxr-xr-x 2 root  root   4096 Oct 16 22:36 aaa
    -rwxr-xr-x 1 mysql qiuhom    0 Oct 16 22:14 abc
    drwxr-xr-x 3 root  root   4096 Oct 16 22:59 bbb
    drwxr-xr-x 3 root  root   4096 Sep 14 10:52 scripts
    -rwxr-xr-x 1 root  root      0 Oct 16 22:39 ttt
    drwxr-xr-x 2 root  root   4096 Oct 16 22:50 xxx
    [root@test ~]# tree bbb
    bbb
    `-- cccc
        `-- ddd
    
    2 directories, 0 files
    

      提示:这个创建目录和mkdir -p类似

    -m:指定权限,默认是rwxr_xr_x权限(755)

    [root@test ~]# install -m 644 abc jjj
    [root@test ~]# ll
    total 16
    drwxr-xr-x 2 root  root   4096 Oct 16 22:36 aaa
    -rwxr-xr-x 1 mysql qiuhom    0 Oct 16 22:14 abc
    drwxr-xr-x 3 root  root   4096 Oct 16 22:59 bbb
    -rw-r--r-- 1 root  root      0 Oct 16 23:03 jjj
    drwxr-xr-x 3 root  root   4096 Sep 14 10:52 scripts
    -rwxr-xr-x 1 root  root      0 Oct 16 22:39 ttt
    drwxr-xr-x 2 root  root   4096 Oct 16 22:50 xxx
    

    -t:指定目标目录

    [root@test ~]# ll xxx
    total 0
    [root@test ~]# ll
    total 16
    drwxr-xr-x 2 root  root   4096 Oct 16 22:36 aaa
    -rwxr-xr-x 1 mysql qiuhom    0 Oct 16 22:14 abc
    drwxr-xr-x 3 root  root   4096 Oct 16 22:59 bbb
    -rw-r--r-- 1 root  root      0 Oct 16 23:03 jjj
    drwxr-xr-x 3 root  root   4096 Sep 14 10:52 scripts
    -rwxr-xr-x 1 root  root      0 Oct 16 22:39 ttt
    drwxr-xr-x 2 root  root   4096 Oct 16 22:50 xxx
    [root@test ~]# install -t xxx ttt abc jjj
    [root@test ~]# ll 
    total 16
    drwxr-xr-x 2 root  root   4096 Oct 16 22:36 aaa
    -rwxr-xr-x 1 mysql qiuhom    0 Oct 16 22:14 abc
    drwxr-xr-x 3 root  root   4096 Oct 16 22:59 bbb
    -rw-r--r-- 1 root  root      0 Oct 16 23:03 jjj
    drwxr-xr-x 3 root  root   4096 Sep 14 10:52 scripts
    -rwxr-xr-x 1 root  root      0 Oct 16 22:39 ttt
    drwxr-xr-x 2 root  root   4096 Oct 16 23:06 xxx
    [root@test ~]# ll xxx
    total 0
    -rwxr-xr-x 1 root root 0 Oct 16 23:06 abc
    -rwxr-xr-x 1 root root 0 Oct 16 23:06 jjj
    -rwxr-xr-x 1 root root 0 Oct 16 23:06 ttt
    

      提示:目标必须是目录 ,不能是文件

    -g:指定目标文件的属组

    [root@test ~]# ll
    total 16
    drwxr-xr-x 2 root  root   4096 Oct 16 22:36 aaa
    -rwxr-xr-x 1 mysql qiuhom    0 Oct 16 22:14 abc
    drwxr-xr-x 3 root  root   4096 Oct 16 22:59 bbb
    -rw-r--r-- 1 root  root      0 Oct 16 23:03 jjj
    drwxr-xr-x 3 root  root   4096 Sep 14 10:52 scripts
    -rwxr-xr-x 1 root  root      0 Oct 16 22:39 ttt
    drwxr-xr-x 2 root  root   4096 Oct 16 23:06 xxx
    [root@test ~]# install -g qiuhom jjj ccc
    [root@test ~]# ll
    total 16
    drwxr-xr-x 2 root  root   4096 Oct 16 22:36 aaa
    -rwxr-xr-x 1 mysql qiuhom    0 Oct 16 22:14 abc
    drwxr-xr-x 3 root  root   4096 Oct 16 22:59 bbb
    -rwxr-xr-x 1 root  qiuhom    0 Oct 16 23:10 ccc
    -rw-r--r-- 1 root  root      0 Oct 16 23:03 jjj
    drwxr-xr-x 3 root  root   4096 Sep 14 10:52 scripts
    -rwxr-xr-x 1 root  root      0 Oct 16 22:39 ttt
    drwxr-xr-x 2 root  root   4096 Oct 16 23:06 xxx
    

      提示:复制前指定ccc 为qiuhom组的权限

    -o:指定目标属主

    [root@test xxx]# ll
    total 0
    -rwxr-xr-x 1 root root 0 Oct 16 23:06 abc
    -rwxr-xr-x 1 root root 0 Oct 16 23:06 jjj
    -rwxr-xr-x 1 root root 0 Oct 16 23:06 ttt
    [root@test xxx]# install -o qiuhom abc ddd
    [root@test xxx]# ll
    total 0
    -rwxr-xr-x 1 root   root 0 Oct 16 23:06 abc
    -rwxr-xr-x 1 qiuhom root 0 Oct 16 23:13 ddd
    -rwxr-xr-x 1 root   root 0 Oct 16 23:06 jjj
    -rwxr-xr-x 1 root   root 0 Oct 16 23:06 ttt
    

      提示:指定目标文件ddd的属主为qiuhom

    -v:输出命令执行过程

    [root@test xxx]# ll  
    total 0
    -rwxr-xr-x 1 root   root 0 Oct 16 23:06 abc
    -rwxr-xr-x 1 qiuhom root 0 Oct 16 23:13 ddd
    -rwxr-xr-x 1 root   root 0 Oct 16 23:06 jjj
    -rwxr-xr-x 1 root   root 0 Oct 16 23:06 ttt
    [root@test xxx]# install -vm 400 ddd fff
    `ddd' -> `fff'
    [root@test xxx]# ll
    total 0
    -rwxr-xr-x 1 root   root 0 Oct 16 23:06 abc
    -rwxr-xr-x 1 qiuhom root 0 Oct 16 23:13 ddd
    -r-------- 1 root   root 0 Oct 16 23:16 fff
    -rwxr-xr-x 1 root   root 0 Oct 16 23:06 jjj
    -rwxr-xr-x 1 root   root 0 Oct 16 23:06 ttt
  • 相关阅读:
    -bash: fork: Cannot allocate memory 问题的处理
    Docker top 命令
    docker常见问题修复方法
    The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
    What's the difference between encoding and charset?
    hexcode of é î Latin-1 Supplement
    炉石Advanced rulebook
    炉石bug反馈
    Sidecar pattern
    SQL JOIN
  • 原文地址:https://www.cnblogs.com/qiuhom-1874/p/9801408.html
Copyright © 2011-2022 走看看