第二周打卡:
1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
2、使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
3、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
6、创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack
7、常用的用户以及用户组文件管理命令有哪些,并演示命令以及用法。
详解:
1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
cd,pwd,ls,mkdir,rmdir,tree,more,less,head,tail,cp,mv,rm
注:文件的路径分为两类:绝对路径和相对路径
绝对路径:从根目录开始寻址
相对路径:从当前目录开始寻址(可以通过pwd命令显示当前目录路径)
cd命令:
用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,~也表示为home directory的意思,.则是表示目前所在的目录,..则表示目前目录位置的上一层目录。
语法
cd (选项) (参数)
选项
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。
实例
anko:~ rdsw$ cd 进入用户主目录;
anko:~ rdsw$ cd ~ 进入用户主目录;
anko:~ rdsw$ cd - 返回进入此目录之前所在的目录;
anko:~ rdsw$ cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
anko:~ rdsw$ cd ../.. 返回上两级目录;
anko:~ rdsw$ cd !$ 把上个命令的参数作为cd参数使用。
pwd命令:
以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。
语法
pwd(选项)
选项
--help:显示帮助信息;
--version:显示版本信息。
实例
anko:~ rdsw$ pwd
/root
ls命令:
用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
语法
ls(选项)(参数)
选项
-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
-A:显示除影藏文件“.”和“..”以外的所有文件列表;
-C:多列显示输出结果。这是默认选项;
-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
-F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;
-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;
-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
-f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;
--file-type:与“-F”选项的功能相同,但是不显示“*”;
-k:以KB(千字节)为单位显示文件大小;
-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-m:用“,”号区隔每个文件和目录的名称;
-n:以用户识别码和群组识别码替代其名称;
-r:以文件名反序排列并输出目录内容列表;
-s:显示文件和目录的大小,以区块为单位;
-t:用文件和目录的更改时间排序;
-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
--full-time:列出完整的日期与时间;
--color[=WHEN]:使用不同的颜色高亮显示不同类型的。
参数
目录:指定要显示列表的目录,也可以是具体的文件。
实例
显示当前目录下非影藏文件与目录
anko:/ rdsw$ ls
AppleInternal Network Volumes etc private usr
Applications System bin home sbin var
Library User Information cores installer.failurerequests tmp
MobileDevice.tar.gz Users dev net usbmuxd-new2.tar.gz
anko:/ rdsw$
显示当前目录下包括影藏文件在内的所有文件列表
anko:/ rdsw$ ls -a
. .Spotlight-V100 Network home
.. .Trashes System installer.failurerequests
.DS_Store .file User Information net
.DarwinDepot .fseventsd Users private
.DocumentRevisions-V100 .vol Volumes sbin
.HFS+ Private Directory Data? AppleInternal bin tmp
.OSInstallerMessages Applications cores usbmuxd-new2.tar.gz
.PKInstallSandboxManager Library dev usr
.PKInstallSandboxManager-SystemSoftware MobileDevice.tar.gz etc var
anko:/ rdsw$
anko:/ rdsw$
输出长格式列表
[root@localhost ~]# ls -1
anaconda-ks.cfg
install.log
install.log.syslog
satools
显示文件的inode信息
索引节点(index inode简称为“inode”)是Linux中一个特殊的概念,具有相同的索引节点号的两个文本本质上是同一个文件(除文件名不同外)。
anko:/ rdsw$ ls -l
total 168381
drwxr-xr-x 4 root wheel 128 Mar 29 2018 AppleInternal
drwxrwxr-x+ 87 root admin 2784 Jul 14 20:31 Applications
drwxr-xr-x+ 70 root wheel 2240 Jul 14 12:40 Library
-rw-r--r--@ 1 root wheel 86072689 Mar 29 2018 MobileDevice.tar.gz
drwxr-xr-x 2 root wheel 64 Mar 29 2018 Network
drwxr-xr-x@ 5 root wheel 160 Dec 12 2018 System
lrwxr-xr-x 1 root wheel 49 Jan 1 2014 User Information -> /Library/Documentation/User Information.localized
drwxr-xr-x 6 root admin 192 Apr 15 08:41 Users
drwxr-xr-x@ 3 root wheel 96 Jul 14 20:30 Volumes
drwxr-xr-x@ 38 root wheel 1216 Dec 23 2018 bin
drwxrwxr-t 2 root admin 64 Mar 29 2018 cores
dr-xr-xr-x 3 root wheel 4380 Jul 14 20:25 dev
lrwxr-xr-x@ 1 root wheel 11 Mar 29 2018 etc -> private/etc
dr-xr-xr-x 2 root wheel 1 Jul 14 21:11 home
-rw-r--r-- 1 root wheel 313 Oct 6 2017 installer.failurerequests
dr-xr-xr-x 2 root wheel 1 Jul 14 21:11 net
drwxr-xr-x 6 root wheel 192 Mar 29 2018 private
drwxr-xr-x@ 63 root wheel 2016 Dec 23 2018 sbin
lrwxr-xr-x@ 1 root wheel 11 Mar 29 2018 tmp -> private/tmp
-rw-r--r--@ 1 root wheel 126436 Mar 29 2018 usbmuxd-new2.tar.gz
drwxr-xr-x@ 10 root wheel 320 Jul 14 12:21 usr
lrwxr-xr-x@ 1 root wheel 11 Mar 29 2018 var -> private/var
anko:/ rdsw$
水平输出文件列表
anko:/ rdsw$ ls -m
AppleInternal, Applications, Library, MobileDevice.tar.gz, Network, System, User Information, Users, Volumes, bin, cores, dev, etc, home, installer.failurerequests, net, private, sbin, tmp,
usbmuxd-new2.tar.gz, usr, var
anko:/ rdsw$
修改最后一次编辑的文件
最近修改的文件显示在最上面。
anko:/ rdsw$ ls -t
home dev sbin private etc installer.failurerequests
net Library bin Network usbmuxd-new2.tar.gz User Information
Applications usr System var MobileDevice.tar.gz
Volumes Users cores tmp AppleInternal
anko:/ rdsw$
显示递归文件
anko:/ rdsw$ ls -R
打印文件的UID和GID
anko:/ rdsw$ ls -n
total 168381
drwxr-xr-x 4 0 0 128 Mar 29 2018 AppleInternal
drwxrwxr-x+ 87 0 80 2784 Jul 14 20:31 Applications
drwxr-xr-x+ 70 0 0 2240 Jul 14 12:40 Library
-rw-r--r--@ 1 0 0 86072689 Mar 29 2018 MobileDevice.tar.gz
drwxr-xr-x 2 0 0 64 Mar 29 2018 Network
drwxr-xr-x@ 5 0 0 160 Dec 12 2018 System
lrwxr-xr-x 1 0 0 49 Jan 1 2014 User Information -> /Library/Documentation/User Information.localized
drwxr-xr-x 6 0 80 192 Apr 15 08:41 Users
drwxr-xr-x@ 3 0 0 96 Jul 14 20:30 Volumes
drwxr-xr-x@ 38 0 0 1216 Dec 23 2018 bin
drwxrwxr-t 2 0 80 64 Mar 29 2018 cores
dr-xr-xr-x 3 0 0 4380 Jul 14 20:25 dev
lrwxr-xr-x@ 1 0 0 11 Mar 29 2018 etc -> private/etc
dr-xr-xr-x 2 0 0 1 Jul 14 21:11 home
-rw-r--r-- 1 0 0 313 Oct 6 2017 installer.failurerequests
dr-xr-xr-x 2 0 0 1 Jul 14 21:11 net
drwxr-xr-x 6 0 0 192 Mar 29 2018 private
drwxr-xr-x@ 63 0 0 2016 Dec 23 2018 sbin
lrwxr-xr-x@ 1 0 0 11 Mar 29 2018 tmp -> private/tmp
-rw-r--r--@ 1 0 0 126436 Mar 29 2018 usbmuxd-new2.tar.gz
drwxr-xr-x@ 10 0 0 320 Jul 14 12:21 usr
lrwxr-xr-x@ 1 0 0 11 Mar 29 2018 var -> private/var
anko:/ rdsw$
列出文件和文件夹的详细信息
anko:/ rdsw$ ls -l
total 168381
drwxr-xr-x 4 root wheel 128 Mar 29 2018 AppleInternal
drwxrwxr-x+ 87 root admin 2784 Jul 14 20:31 Applications
drwxr-xr-x+ 70 root wheel 2240 Jul 14 12:40 Library
-rw-r--r--@ 1 root wheel 86072689 Mar 29 2018 MobileDevice.tar.gz
drwxr-xr-x 2 root wheel 64 Mar 29 2018 Network
drwxr-xr-x@ 5 root wheel 160 Dec 12 2018 System
lrwxr-xr-x 1 root wheel 49 Jan 1 2014 User Information -> /Library/Documentation/User Information.localized
drwxr-xr-x 6 root admin 192 Apr 15 08:41 Users
drwxr-xr-x@ 3 root wheel 96 Jul 14 20:30 Volumes
drwxr-xr-x@ 38 root wheel 1216 Dec 23 2018 bin
drwxrwxr-t 2 root admin 64 Mar 29 2018 cores
dr-xr-xr-x 3 root wheel 4380 Jul 14 20:25 dev
lrwxr-xr-x@ 1 root wheel 11 Mar 29 2018 etc -> private/etc
dr-xr-xr-x 2 root wheel 1 Jul 14 21:11 home
-rw-r--r-- 1 root wheel 313 Oct 6 2017 installer.failurerequests
dr-xr-xr-x 2 root wheel 1 Jul 14 21:11 net
drwxr-xr-x 6 root wheel 192 Mar 29 2018 private
drwxr-xr-x@ 63 root wheel 2016 Dec 23 2018 sbin
lrwxr-xr-x@ 1 root wheel 11 Mar 29 2018 tmp -> private/tmp
-rw-r--r--@ 1 root wheel 126436 Mar 29 2018 usbmuxd-new2.tar.gz
drwxr-xr-x@ 10 root wheel 320 Jul 14 12:21 usr
lrwxr-xr-x@ 1 root wheel 11 Mar 29 2018 var -> private/var
anko:/ rdsw$
列出可读文件和文件夹详细信息
anko:/ rdsw$ ls -lh
total 168381
drwxr-xr-x 4 root wheel 128B Mar 29 2018 AppleInternal
drwxrwxr-x+ 87 root admin 2.7K Jul 14 20:31 Applications
drwxr-xr-x+ 70 root wheel 2.2K Jul 14 12:40 Library
-rw-r--r--@ 1 root wheel 82M Mar 29 2018 MobileDevice.tar.gz
drwxr-xr-x 2 root wheel 64B Mar 29 2018 Network
drwxr-xr-x@ 5 root wheel 160B Dec 12 2018 System
lrwxr-xr-x 1 root wheel 49B Jan 1 2014 User Information -> /Library/Documentation/User Information.localized
drwxr-xr-x 6 root admin 192B Apr 15 08:41 Users
drwxr-xr-x@ 3 root wheel 96B Jul 14 20:30 Volumes
drwxr-xr-x@ 38 root wheel 1.2K Dec 23 2018 bin
drwxrwxr-t 2 root admin 64B Mar 29 2018 cores
dr-xr-xr-x 3 root wheel 4.3K Jul 14 20:25 dev
lrwxr-xr-x@ 1 root wheel 11B Mar 29 2018 etc -> private/etc
dr-xr-xr-x 2 root wheel 1B Jul 14 21:11 home
-rw-r--r-- 1 root wheel 313B Oct 6 2017 installer.failurerequests
dr-xr-xr-x 2 root wheel 1B Jul 14 21:11 net
drwxr-xr-x 6 root wheel 192B Mar 29 2018 private
drwxr-xr-x@ 63 root wheel 2.0K Dec 23 2018 sbin
lrwxr-xr-x@ 1 root wheel 11B Mar 29 2018 tmp -> private/tmp
-rw-r--r--@ 1 root wheel 123K Mar 29 2018 usbmuxd-new2.tar.gz
drwxr-xr-x@ 10 root wheel 320B Jul 14 12:21 usr
lrwxr-xr-x@ 1 root wheel 11B Mar 29 2018 var -> private/var
anko:/ rdsw$
显示文件夹信息
anko:/ rdsw$ ls -ld /tmp/
drwxrwxrwt 4 root wheel 128 Jul 14 21:03 /tmp/
anko:/ rdsw$
按修改时间列出文件和文件夹详细信息
anko@RD:~$ ls -ltr
total 40
drwxr-xr-x 9 anko anko 4096 8月 12 2015 vmware-tools-distrib
drwxr-xr-x 2 anko anko 4096 7月 14 21:26 Templates
drwxr-xr-x 2 anko anko 4096 7月 14 21:26 Public
drwxr-xr-x 2 anko anko 4096 7月 14 21:26 Music
drwxr-xr-x 2 anko anko 4096 7月 14 21:26 Downloads
drwxr-xr-x 2 anko anko 4096 7月 14 21:26 Documents
drwxr-xr-x 2 anko anko 4096 7月 14 21:26 Desktop
drwxr-xr-x 2 anko anko 4096 7月 14 21:26 Videos
drwxr-xr-x 2 anko anko 4096 7月 14 21:26 Pictures
drwxr-xr-x 3 anko anko 4096 7月 14 21:55 test
anko@RD:~$
按照特殊字符对文件进行分类
anko@RD:~$ ls -F
Desktop/ Downloads/ Pictures/ Templates/ Videos/
Documents/ Music/ Public/ test/ vmware-tools-distrib/
anko@RD:~$
anko@RD:~$
列出文件并标记颜色分类
anko@RD:~$ ls --color=auto
Desktop Downloads Pictures Templates test.txt vmware-tools-distrib
Documents Music Public test Videos
anko@RD:~$
rmdir命令
用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用rmdir命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或多个子目录,其中dirname佬表示目录名。如果dirname中没有指定路径,则删除当前目录下由dirname指定的目录;如dirname中包含路径,则删除指定位置的目录。删除目录时,必须具有对其父目录的写权限。
注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。
虽然还可以用带有-r选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。
语法
rmdir(选项)(参数)
选项
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
-v或-verboes:显示命令的详细执行过程;
--help:显示命令的帮助信息;
--version:显示命令的版本信息。
参数
目录列表:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开。
实例
删除子目录os_1和其父目录bin
anko@RD:~$
anko@RD:~$ tree -L 2 test
test
└── son
1 directory, 0 files
anko@RD:~$
anko@RD:~$
anko@RD:~$ tree test
test
└── son
1 directory, 0 files
anko@RD:~$
anko@RD:~$
anko@RD:~$ rmdir -p test/son/
anko@RD:~$
anko@RD:~$ ls ./
Desktop Documents Downloads Music Pictures Public Templates test.txt Videos
anko@RD:~$
tree命令以树状图列出目录的内容。
语法
tree(选项)(参数)
选项
-a:显示所有文件和目录;
-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合;
-C:在文件和目录清单加上色彩,便于区分各种类型;
-d:先是目录名称而非内容;
-D:列出文件或目录的更改时间;
-f:在每个文件或目录之前,显示完整的相对路径名称;
-F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","@","|"号;
-g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码;
-i:不以阶梯状列出文件和目录名称;
-l:<范本样式> 不显示符号范本样式的文件或目录名称;
-l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录;
-n:不在文件和目录清单加上色彩;
-N:直接列出文件和目录名称,包括控制字符;
-p:列出权限标示;
-P:<范本样式> 只显示符合范本样式的文件和目录名称;
-q:用“?”号取代控制字符,列出文件和目录名称;
-s:列出文件和目录大小;
-t:用文件和目录的更改时间排序;
-u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码;
-x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。
参数
目录:执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。
more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。
该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%)可以用下列不同的方法对提示做出回答:
按Space键:显示文本的下一屏内容。
按Enier键:只显示文本的下一行内容。
按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
按H键:显示帮助屏,该屏上有相关的帮助信息。
按B键:显示上一屏内容。
按Q键:退出rnore命令。
语法
more(语法)(参数)
选项
-<数字>:指定每屏显示的行数;
-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
-c:不进行滚屏操作。每次刷新这个屏幕;
-s:将多个空行压缩成一行显示;
-u:禁止下划线;
+<数字>:从指定数字的行开始显示。
参数
文件:指定分页显示内容的文件。
实例
显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。
more -dc file
显示文件file的内容,每10行显示一次,而且在显示之前先清屏。
more -c -10 file
less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。
语法
less(选项)(参数)
选项
-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x<数字>:将TAB字符显示为指定个数的空格字符。
参数
文件:指定要分屏显示内容的文件。
head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
语法
head(选项)(参数)
选项
-n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数;
-v:总是显示文件名的头信息;
-q:不显示文件名的头信息。
参数
文件列表:指定显示头部内容的文件列表。
tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。
语法
tail(选项)(参数)
选项
--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;
-c<N>或——bytes=<N>:输出文件尾部的N(N为整数)个字节内容;
-f<name/descriptor>或;--follow<nameldescript>:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
-F:与选项“-follow=name”和“--retry"连用时功能相同;
-n<N>或——line=<N>:输出文件的尾部N(N位数字)行内容。
--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;
-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;
-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;
-v或——verbose:当有多个文件参数时,总是输出各个文件名;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
参数
文件列表:指定要显示尾部内容的文件列表。
实例
tail file (显示文件file的最后10行)
tail +20 file (显示文件file的内容,从第20行至文件末尾)
tail -c 10 file (显示文件file的最后10个字符)
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
语法
cp(选项)(参数)
选项
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
参数
源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
实例
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:
anko@RD:~/test$ cp /etc/hosts ./
所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。
将文件file复制到目录/usr/men/tmp下,并改名为file1
cp file /usr/men/tmp/file1
将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中
cp -r /usr/men /usr/zh
交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中
cp -i /usr/men m*.c /usr/zh
我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:
cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。
cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。
cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。
\cp -r -a aaa/* /bbb
成功,没有提示按Y、传递了目录属性、没有略过目录。
mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
语法
mv(选项)(参数)
选项
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
参数
源文件:源文件列表。
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
实例
将文件/etc/hosts改名为test
mv ./hosts ./test.txt
将目录/usr/men中的所有文件移到当前目录(用.表示)中:
mv /usr/men/* .
rm命令
可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
语法
rm (选项)(参数)
选项
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
参数
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。
实例
交互式删除当前目录下的文件test和example
rm -i test example
Remove test ?n(不删除文件test)
Remove example ?y(删除文件example)
删除当前目录下除隐含文件外的所有文件和子目录
# rm -r *
应注意,这样做是非常危险的!
2、使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
mkdir -p /tmp/a{1/{a,b},2}
anko:~ rdsw$ ls /tmp/
anko:~ rdsw$ mkdir -p /tmp/a{1/{a,b},2}
anko:~ rdsw$ tree /tmp/
/tmp/
├── a1
│ ├── a
│ └── b
└── a2
4 directories, 0 files
anko:~ rdsw$
mkdir -p /tmp/{x,q}_{y,z}
anko:~ rdsw$ ls /tmp/
anko:~ rdsw$ mkdir -p /tmp/{x,q}_{y,z}
anko:~ rdsw$ tree /tmp/
/tmp/
├── q_y
├── q_z
├── x_y
└── x_z
4 directories, 0 files
anko:~ rdsw$
3、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
元数据被定义为:描述数据的数据,对数据及信息资源的描述性信息。
文件的元数据有inode号(索引节点号)、文件类型(普通文件、链接文件、目录文件、块设备文件、管道文件等)、ugo权限(user、group、other的rwx权限)、链接数(链接到这个文件的文件个数)、文件所属者(创建者)和所属组(创建者所属组)、时间戳(默认显示mtime)等信息。
查看方法:命令 stat
使用 touch -a 修改 atime 和 ctime
使用 touch -m 修改 mtime 和 ctime
使用 touch -t 修改 atime 和 mtime的时间
anko@RD:~/test$ stat haha File: haha Size: 217 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049dInode: 275976 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ anko) Gid: ( 1000/ anko) Access: 2019-07-14 22:26:18.033209767 +0800 Modify: 2019-07-14 22:27:51.731541811 +0800 Change: 2019-07-14 22:30:24.650034755 +0800 Birth: - anko@RD:~/test$
4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
~ rd-002$ ls /tmp/
~ rd-002$
~ rd-002$ touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
~ rd-002$
~ rd-002$ ls /tmp/
tfile-2019-07-08-14-19-59
~ rd-002$
5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
cp -r /etc/p*[^0-9] /tmp/mytest1
anko:~ rdsw$ cp -r /etc/p*[^0-9] /tmp/mytest1/
anko:~ rdsw$ ls /tmp/mytest1/
pam.dperiodicphp.ini.defaultprofile
passwdpf.anchorsphp.ini.default-5.2-previousprofile~orig
passwd~origpf.confphp.ini.default-5.2-previous~origprotocols
pathspf.osphp.ini.default-previousprotocols~previous
paths.dphp-fpm.conf.defaultpostfix
paths~origphp-fpm.dppp
anko:~ rdsw$
6、创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack
# groupadd jack
# groupadd tom
# useradd -u 5001 -d /tmp/tom -s /bin/zsh -g tom -G jack tom
7、常用的用户以及用户组文件管理命令有哪些,并演示命令以及用法。
groupadd命令:创建一个新组
-g GID:指定GID:默认是上一个组的GID+1
-r:创建系统组:
groupmod:修改组属性
-g GID:修改GID
-n new_name:修改组名
groupdel命令:删除一个组
useradd:创建用户
useradd [选项] 登录名
-u,--uid UID:指定UID
-g,--gid Group:指定基本组ID,组要事先存在
-G,--groups GROUP1[,group2,...[,groupn]]:知名用户所属的附加组,
多个组之间用逗号分隔
-c,--comment COMMENT:指明注释信息
-d,--home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录重命名实现:
指定的家目录路径如果事先存在,则不会为用户复制环境配置文件。
-s,--shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells目录下
-r,--system:系统用户
useradd -D:显示创建用户默认配置
useradd -D:选项:修改默认选项的值
usermod命令:修改用户属性
usermod [选项] 登陆
-u,--uid UID:修改用户的ID为此处指定的新UID
-g,--gid GROUP:修改用户所属的基本组
-G,--Groups GROUP1[,group2,...[,groupn]]
修改用户所属的附加组,原来的附加组会被覆盖
-a,--append:与-G一同使用,用于为用户追加新的附加组
-c,--comment COMMENT 修改注释信息
-d,--home HOME_DIR:修改用户的家目录:用户原有的文件不会被转移到新位置
-m,--move-home:智能与-d选项一同使用,用于将原来的家目录移动为新的家目录
-l,--login NEW_LOGIN:修改用户名
-s,--shell SHELL:修改用户的默认shell
-L,--lock:锁定用户密码,在密码字符串之前添加一个“!”
-U,--unlock:解锁用户
userdel命令:删除用户
-r:删除用户时一并删除家目录
passwd命令:
1)passwd:修改用户自己的密码
2)passwd USERNAME:修改指定用户的密码,只有root有此权限
-l,-u:锁定和解锁用户
-d DATE:清除用户密码串
-e DAYS:过期期限,日期
-i DAYS:非活动期限
-n DAYS:密码的最短使用期限
-x DAYS:密码的最长使用期限
-w DAYS:警告期限
--stdin
echo "PASSWORD"| passwd --stdin Username
gpasswd命令:
组密码文件 /etc/gshadow
gpasswd [选项] group
-a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户
newgrp命令:临时切换指定的组为基本组:
newgrp [-][group]
-:会模拟用户重新的登陆以实现重新初始化其工作环境
chage命令:更改用户的密码过期信息
chage [选项] 登录名:
-d
-E
-W
-m
-M
ID命令:显示用户的真和有效id
id [OPTION]...[USER]
-u:仅显示有效的UID
-g:仅显示用户的基本组ID
-G:仅显示用户的所有组的ID
-n:显示名字而非ID
su命令:switch user
登陆式切换:会通过读取目标用户的配置文件来重新初始化
su - USERNAME
su -l USERNAME
非登陆式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
注意:管理员可无密码切换至其他任何用户
-c ‘COMMAND’:仅以指定用户的身份运行此处指令的命令
其他命令:
chsh chfn finger
*************************************************************************************