Linux-(ls,mv,mkdir,rm,cp)

ls命令

ls命令是linux下最常用的命令。ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单。如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 

通过ls命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。

1. 命令格式:

ls [选项] [目录名]

2. 命令功能: 

列出目标目录中所有的子目录和文件。 

3. 常用参数: 

-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件

-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。 

-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G) 

-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地

-i, –inode 印出每个文件的 inode 号 

-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。 

-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。 

-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息

-m 所有项目以逗号分隔,并填满整行行宽

-R, –recursive 同时列出所有子目录层

-F,使得ls命令可以在显示子目录的时候在它的文件名之后加上一个斜线(“/”)字符,文件后面的星号(“*”)字符表示这是一个可执行程序

-s, –size 以块大小为单位列出所有文件的大小

-S 根据文件大小排序

-t 以文件修改时间排序

-u 配合 -lt:显示访问时间而且依访问时间排序;配合 -l:显示访问时间但根据名称排序

-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间) ;配合 -l:显示 ctime 但根据名称排序 

-v 根据版本进行排序

-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值

-x 逐行列出项目而不是逐栏列出

-X 根据扩展名排序

-1 每行只列出一个文件

–help 显示此帮助信息并离开

4. 常用范例:

在ls中列出文件的绝对路径

命令:ls | sed “s:^:pwd/:” 

输出:

[root@localhost opt]# ls | sed "s:^:`pwd`/:"
/opt/log
/opt/script
/opt/soft
/opt/src
/opt/svndata

列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归

命令:find $PWD -maxdepth 1 | xargs ls -ld

输出:

[root@localhost opt]# find $PWD -maxdepth 1 | xargs ls -ld
drwxr-xr-x 8 root root 4096 10-11 03:43 /opt
drwxr-xr-x 2 root root 4096 2012-03-08 /opt/log
drwxr-xr-x 2 root root 4096 2012-03-08 /opt/script
drwxr-xr-x 5 root root 4096 10-11 03:21 /opt/soft

扩展:

1. 显示彩色目录列表

打开/etc/bashrc, 加入如下一行:

alias ls=”ls –color”

下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:

    1. 蓝色–>目录

    2. 绿色–>可执行文件

    3. 红色–>压缩文件

    4. 浅蓝色–>链接文件

    5. 灰色–>其他文件

MV命令

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

1.命令格式:

    mv [选项] 源文件或目录 目标文件或目录

2.命令功能:

视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。

当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。

当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

3.命令参数:

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

-f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i:若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u:若目标文件已经存在,且 source 比较新,才会更新(update)

-t即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

mkdir命令

1.命令格式:

mkdir [选项目录...

2.命令功能:

通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写) 

3.命令参数:

  -m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask

  -p, --parents  可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录; 

  -v, --verbose  每次创建新目录都显示信息

      --help   显示此帮助信息并退出

      --version  输出版本信息并退出

4.命令实例:

一个命令创建项目的目录结构

命令:mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}

[root@localhost test]# mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}
mkdir: 已创建目录 “scf”
mkdir: 已创建目录 “scf/lib”
mkdir: 已创建目录 “scf/bin”
mkdir: 已创建目录 “scf/doc”
mkdir: 已创建目录 “scf/doc/info”
mkdir: 已创建目录 “scf/doc/product”
mkdir: 已创建目录 “scf/logs”
mkdir: 已创建目录 “scf/logs/info”
mkdir: 已创建目录 “scf/logs/product”
mkdir: 已创建目录 “scf/service”
mkdir: 已创建目录 “scf/service/deploy”
mkdir: 已创建目录 “scf/service/deploy/info”
mkdir: 已创建目录 “scf/service/deploy/product”
[root@localhost test]# tree scf/
scf/
|-- bin
|-- doc
|   |-- info
|   `-- product
|-- lib
|-- logs
|   |-- info
|   `-- product
`-- service
            `-- deploy
              |-- info
            `-- product
12 directories, 0 files
[root@localhost test]#

rm 命令

1.命令格式:

rm [选项] 文件… 

2.命令功能:

删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

3.命令参数:

-f, --force    忽略不存在的文件,从不给出提示。

-i, --interactive 进行交互式删除

-r, -R, --recursive   指示rm将参数中列出的全部目录和子目录均递归地删除。

-v, --verbose    详细显示进行的步骤

     --help     显示此帮助信息并退出

     --version  输出版本信息并退出

4.命令实例:

删除以 -f 开头的文件 

命令:rm -- -f

[root@localhost test]# touch -- -f
[root@localhost test]# ls -- -f
-f[root@localhost test]# rm -- -f
rm:是否删除 一般空文件 “-f”? y
[root@localhost test]# ls -- -f
ls: -f: 没有那个文件或目录
[root@localhost test]#
也可以使用下面的操作步骤:
[root@localhost test]# touch ./-f
[root@localhost test]# ls ./-f
./-f[root@localhost test]# rm ./-f
rm:是否删除 一般空文件 “./-f”? y
[root@localhost test]#

自定义回收站功能

命令:myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }

[root@localhost test]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D;     mv "$@" $D && echo "moved to $D ok"; }
[root@localhost test]# alias rm='myrm'
[root@localhost test]# touch 1.log 2.log 3.log
[root@localhost test]# ll
总计 16
-rw-r--r-- 1 root root    0 10-26 15:08 1.log
-rw-r--r-- 1 root root    0 10-26 15:08 2.log
-rw-r--r-- 1 root root    0 10-26 15:08 3.log
drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# rm [123].log
moved to /tmp/20121026150901 ok
[root@localhost test]# ll
总计 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# ls /tmp/20170413150901/
1.log  2.log  3.log
[root@localhost test]#

cp命令

1.命令格式:

用法:

   cp [选项] [-T] 源 目的

   cp [选项] 源... 目录

   cp [选项] -t 目录 源...

2.命令功能:

将源文件复制至目标文件,或将多个源文件复制至目标目录。

3.命令参数:

-a, --archive          等于-dR --preserve=all

--backup[=CONTROL]     为每个已存在的目标文件创建备份

-b                   类似--backup 但不接受参数

--copy-contents            在递归处理是复制特殊文件内容

-d                        等于--no-dereference --preserve=links

-f, --force               如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)

-i, --interactive                覆盖前询问(使前面的 -n 选项失效)

-H                                   跟随源文件中的命令行符号链接

-l, --link                   链接文件而不复制

-L, --dereference        总是跟随符号链接

-n, --no-clobber               不要覆盖已存在的文件(使前面的 -i 选项失效)

-P, --no-dereference        不跟随源文件中的符号链接

-p                                  等于--preserve=模式,所有权,时间戳

--preserve[=属性列表   保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等

-R, -r, --recursive       复制目录及目录内的所有项目

4.命令实例:

复制整个目录

目标目录存在时:整个源目录被复制到目标目录里面。

[root@localhost test]# cp -a test3 test5 
[root@localhost test]# ll
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxr-xr-x 3 root root 4096 10-28 15:11 test5
[root@localhost test]# cd test5/
[root@localhost test5]# ll
drwxrwxrwx 2 root root 4096 10-28 14:47 test3

目标目录不存在是:整个源目录被复制成目标目录名字的目录。

[root@localhost test]# cp -a test3 test4
[root@localhost test]# ll
drwxrwxrwx 2 root root 4096 10-28 14:47 test3
drwxrwxrwx 2 root root 4096 10-28 14:47 test4
[root@localhost test]#

复制的 log.log 建立一个连结档 log_link.log

命令:cp -s log.log log_link.log

[root@localhost test]# cp -s log.log log_link.log
[root@localhost test]# ll
lrwxrwxrwx 1 root root    7 10-28 15:18 log_link.log -> log.log
-rw-r--r-- 1 root root    0 10-28 14:48 log.log

说明:log_link.log 是由 -s 的参数造成的,建立的是一个『快捷方式』,所以您会看到在文件的最右边,会显示这个文件是『连结』到哪里去的!

 

posted @ 2017-04-10 11:19  wade&luffy  阅读(1108)  评论(0编辑  收藏  举报