一、ls命令
1,ls命令是list的缩写。缺省情况下是打印当前目录下的文件。
2, 常用参数:
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
-C 每栏由上至下列出项目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是'never'、'always'或'auto'其中之一
-d, –directory 将目录象文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-F 分类,通过添加“*/=>@ ONE|”标识来分类
-g 类似 -l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode 印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序
–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
extension -X status -c
none -U time -t
size -S atime -u
time -t access -u
version -v use -u
-t 以文件修改时间排序
-u 配合 -lt:显示访问时间而且依访问时间排序
配合 -l:显示访问时间但根据名称排序
否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 每行只列出一个文件
–help 显示此帮助信息并离开
–version 显示版本信息并离开
==========================================================================
以上部分来至网络
===========================================================================
3,ls常用命令
1)-R recursive(递归):显示目录下所有文件及目录下的子文件 [root@localhosttest2]# ls -R .: test test2 ./test2: test3 [root@localhosttest2]# ls -lR .: total 4 -rw-r--r--.1 root root 0 Sep 7 03:17 test drwxr-xr-x.2 root root 4096 Sep 7 03:18 test2 ./test2: total 0 -rw-r--r--.1 root root 0 Sep 7 03:18 test3 2)高亮显示 [root@localhosttest2]# ls --color=auto test test2 一般系统默认通过别名的方式将ls自动为ls–color=auto [root@localhosttest2]# alias ls aliasls='ls --color=auto'
4,ls配合常用通配符使用
[root@localhosttest]# ls t* #*表示任意字符 test2.txt test3.txt test.txt #打印文件 test: #打印目录 [root@localhosttest]# ls *sh file2.sh if.sh multi2.sh multi.sh user3.sh [root@localhosttest]# ls ??sh #?表示单个字符 ls:cannot access ??sh: No such file or directory [root@localhosttest]# ls ???sh if.sh [root@localhosttest]# ls user[0-9].sh #[]表示[]包含的字符 user3.sh [root@localhosttest]# ls mult[0-z][0-9].?? multi2.sh
5,配合其他命令使用
#使用grep只查看子目录,即以/结尾的文件(linux一切皆文件)。 [root@localhosttest]# ls -F |grep /$ test/ #使用cut命令只查看权限效果 [root@localhosttest]# ls -l |cut -c 1-9,44- |sed '1d' -rw-rw-r-error.dmsg -rw-r--r-fstab -rw-r--r-fstab.code -rw-r--r-grep.txt drwxrwxrwtest
二、mkdir 即:makedirectory创建目录及子目录
1,可选参数
-m,--mode=MODE
set file mode (as in chmod), nota=rwx - umask
创建目录时就赋予目录相关权限,而不是默认通过umask来计算。关于umak计算权限问题可以网上找资料,这里不讲。
-p, --parents
no error if existing, make parentdirectories as needed
若创建目录时是一次性创建多级目录,但是父目录没有则自动根据需要创建,如:
[root@localhosttest]# tree . 0directories, 0 files [root@localhosttest]# mkdir ./test1/test2/test3/test4 mkdir:cannot create directory `./test1/test2/test3/test4': No such file or directory [root@localhost test]# mkdir -p ./test1/test2/test3/test4 #加-p参数 [root@localhosttest]# tree . └── test1 └── test2 └── test3 └── test4 4directories, 0 files
-v, --verbose
print a message for each createddirectory
显示详细信息,即打印出每步结果。
-Z, --context=CTX
set the SELinux security contextof each created directory to CTX
暂时不理解-Z用法,也没找到相关文章。
例1:
创建指定权限目录
[root@localhosttest]# mkdir -m 777 test [root@localhosttest]# ll total 4 drwxrwxrwx.2 root root 4096 Sep 7 05:48 test
例2:
创建多级目录及子目录
[root@localhosttest2]# mkdir -vp ./test1/{test1_1,test1_2}/{test1_1_1,test1_1_2/test1_1_2_1} mkdir: createddirectory `./test1' mkdir:created directory `./test1/test1_1' mkdir:created directory `./test1/test1_1/test1_1_1' mkdir:created directory `./test1/test1_1/test1_1_2' mkdir:created directory `./test1/test1_1/test1_1_2/test1_1_2_1' mkdir:created directory `./test1/test1_2' mkdir:created directory `./test1/test1_2/test1_1_1' mkdir:created directory `./test1/test1_2/test1_1_2' mkdir:created directory `./test1/test1_2/test1_1_2/test1_1_2_1' [root@localhosttest2]# tree . └── test1 ├── test1_1 │ ├── test1_1_1 │ └── test1_1_2 │ └── test1_1_2_1 └── test1_2 ├── test1_1_1 └── test1_1_2 └── test1_1_2_1 9directories, 0 files
三、rmdir 即:removeempty directories。
与mkdir用法类似,当目录非空时,不能被删除,此命令用得比较少。 [root@localhosttest2]# mkdir -p ./a/b/c/d [root@localhosttest2]# tree . └── a └── b └── c └── d 4directories, 0 files [root@localhosttest2]# rmdir -vp ./a/b/c/d rmdir:removing directory, `./a/b/c/d' rmdir:removing directory, `./a/b/c' rmdir:removing directory, `./a/b' rmdir:removing directory, `./a' rmdir:removing directory, `.' rmdir:failed to remove directory `.': Invalid argument [root@localhosttest2]# tree . 0directories, 0 files
四、cp:copy filesand directories
1,可选参数
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
========================================================================
以上参数说明来至网络
=========================================================================
2,示例
实现更名的效果
[root@localhosttest]# cp test.txt test_rename.txt
拷贝目录
[root@localhosttest]# ls test test_rename.txt test.txt [root@localhosttest]# ls test test2.txt test.txt #当test2不存在时只是创建test2,然后将test内文件复制到test2中 [root@localhosttest]# cp -R test test2 # [root@localhosttest]# ls test2 test2.txt test.txt #已经有test2目录后,将整个test目录复制到test2目录下 [root@localhosttest]# cp -R test test2 [root@localhosttest]# ls test2 test test2.txt test.txt [root@localhosttest]# ls test2/test test2.txt test.txt [root@localhosttest]# cp -R test test2 #再次复制就会覆盖test2/test/下文件啦。 cp:overwrite `test2/test/test2.txt'? y cp:overwrite `test2/test/test.txt'? y
拷贝文件
[root@localhosttest]# cp -R ./test/* test2 cp:target `test2' is not a directory [root@localhosttest]# mkdir test2 [root@localhosttest]# cp -R ./test/* test2 [root@localhosttest]# cp -R ./test/* test2 cp:overwrite `test2/test2.txt'? y cp:overwrite `test2/test.txt'? y [root@localhosttest]# ls test2 test2.txt test.txt
使用-p参数,保留父文件属性:访问时间及修改时间一致。
[root@localhosttest]# stat test.txt File: `test.txt' Size: 7214 Blocks: 16 IO Block: 4096 regular file Device:fd00h/64768d Inode: 64786 Links: 1 Access:(0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access:2015-09-07 08:53:47.993517990 +0800 Modify:2015-09-07 08:53:41.272517679 +0800 Change:2015-09-07 08:53:41.272517679 +0800 [root@localhosttest]# cp test.txt test_cp.txt [root@localhosttest]# stat test_cp.txt File: `test_cp.txt' Size: 7214 Blocks: 16 IO Block: 4096 regular file Device:fd00h/64768d Inode: 71932 Links: 1 Access:(0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access:2015-09-07 09:20:35.383509361 +0800 Modify:2015-09-07 09:20:35.383509361 +0800 Change:2015-09-07 09:20:35.383509361 +0800 [root@localhosttest]# cp -p test.txt test_cp.txt cp:overwrite `test_cp.txt'? y [root@localhosttest]# stat test_cp.txt File: `test_cp.txt' Size: 7214 Blocks: 16 IO Block: 4096 regular file Device:fd00h/64768d Inode: 71932 Links: 1 Access:(0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access:2015-09-07 08:53:47.993517990 +0800 Modify:2015-09-07 08:53:41.272517679 +0800 Change:2015-09-07 09:21:05.535514042 +0800
-R实现多个文件同时复制到一个目录下
[root@localhosttest]# cp -R test.txt test2.txt test3.txt test cp:target `test' is not a directory [root@localhosttest]# cp -R test.txt test2.txt test3.txt test_dir [root@localhosttest]# ls test_dir test2.txt test3.txt test.txt
-u只复制修改时间比目标文件更新,
[root@localhosttest]# ll total 16 -rw-r--r--.1 root root 7214 Sep 7 09:13 test2.txt -rw-r--r--.1 root root 7214 Sep 7 09:41 test.txt [root@localhosttest]# cp -u test2.txt test.txt #因test2.txt更早,故此时没有复制 [root@localhosttest]# cp -a test2.txt test.txt #没有-u参数,就会覆盖复制 cp:overwrite `test.txt'? n
备份覆盖文件指定备份文件名称格式
[root@localhosttest]# cp -bv -S _bak01 test2.txt test.txt cp:overwrite `test.txt'? y `test2.txt'-> `test.txt' (backup: `test.txt_bak01') [root@localhosttest]# ll total 24 -rw-r--r--.1 root root 7214 Sep 7 09:13 test2.txt -rw-r--r--.1 root root 7214 Sep 7 09:54 test.txt -rw-r--r--.1 root root 7214 Sep 7 09:52test.txt_bak01 [root@localhosttest]# cp -bv -S _bak02 test2.txt test.txt cp:overwrite `test.txt'? y `test2.txt'-> `test.txt' (backup: `test.txt_bak02') [root@localhosttest]# ll total 32 -rw-r--r--.1 root root 7214 Sep 7 09:13 test2.txt -rw-r--r--.1 root root 7214 Sep 7 09:54 test.txt -rw-r--r--.1 root root 7214 Sep 7 09:54test.txt_bak01 -rw-r--r--.1 root root 7214 Sep 7 09:54test.txt_bak02