1.Linux上的文件管理命令有哪些,其常用的使用方法及其相关事例演示
cp命令
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。 cp SRC DEST SRC是文件: 如果目标不存在:新建DEST,并将SRC中内容填充至DEST中; 如果目录存在: 如果DEST是文件:将SRC中的内容覆盖至DEST中; 此时建议为cp命令使用-i选项; 如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中;
cp SRC... DEST SRC...:多个文件 DEST必须存在,且为目录,其它情形均会出错; cp SRC DEST SRC是目录: 此时使用选项:-r 如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中; 如果DEST存在: 如果DEST是文件:报错 如果DEST是目录:
语法
cp (选项) (参数)
选项
-i:交互式 -r, -R: 递归复制目录及内部的所有内容; -a: 归档,相当于-dR --preserv=all -d:--no-dereference --preserv=links --preserv[=ATTR_LIST] mode: 权限 ownership: 属主属组 timestamp: links xattr context all -p: --preserv=mode,ownership,timestamp -v: --verbose -f: --force
参数
-
SRC 源文件
-
DEST 目标文件
实例
将/etc/fstab
复制到/root/Desktop
,且目标文件已存在
[root@hadoop Desktop]# cp /etc/fstab ./ cp: overwrite `./fstab'?
将/root/Desktop/repo
目录下的所有文件复制到/root/Desktop/test
目录下,且目标文件目录不存在
[root@hadoop Desktop]# ls fstab passwd repo scripts [root@hadoop Desktop]# cp -r ./repo/ ./test/ [root@hadoop Desktop]# ls fstab passwd repo scripts test
将/root/Desktop
下的文件fstab
passwd
复制到/root/Desktop/test
[root@hadoop Desktop]# cp passwd fstab ./test
将/root/Desktop/fstab
复制为cptest
[root@hadoop Desktop]# cp fstab cptest
将/root/Desktop/test
下的所有文件复制到/root/Desktop/test2
[root@hadoop Desktop]# ll ./test/ total 24 -rw-r--r--. 1 root root 1926 Jul 11 19:32 CentOS-Base.repo -rw-r--r--. 1 root root 638 Jul 11 19:32 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 653 Jul 11 19:32 CentOS-Media.repo -rw-r--r--. 1 root root 3664 Jul 11 19:32 CentOS-Vault.repo -rw-r--r--. 1 root root 779 Jul 11 19:37 fstab -rw-r--r--. 1 root root 1660 Jul 11 19:37 passwd [root@hadoop Desktop]# cp -r -a ./test/ ./test1/ [root@hadoop Desktop]# ll ./test1/ total 24 -rw-r--r--. 1 root root 1926 Jul 11 19:32 CentOS-Base.repo -rw-r--r--. 1 root root 638 Jul 11 19:32 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 653 Jul 11 19:32 CentOS-Media.repo -rw-r--r--. 1 root root 3664 Jul 11 19:32 CentOS-Vault.repo -rw-r--r--. 1 root root 779 Jul 11 19:37 fstab -rw-r--r--. 1 root root 1660 Jul 11 19:37 passwd
mv命令
mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录。
语法
mv (选项) (参数)
选项
-i: 交互式 -f: 强制
参数
-
SRC 源文件
-
DEST 目标文件
实例
将/root/Desktop/fstab
改名为mvtest
[root@hadoop Desktop]# mv -i fstab mvtest
将/root/Desktop/test1
移到./test2
[root@hadoop Desktop]# mv ./test1/ ./test2/
rm命令
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。
语法
rm (选项)(参数)
选项
-i: 交互式 -f: 强制删除 -r: 递归
实例
删除/root/Desktop/
目录下的fstab
和'passwd'
[root@hadoop Desktop]# rm -i ./fstab passwd rm: remove regular file `./fstab'? y rm: remove regular file `passwd'? y
删除/root/Desktop/test2
下的所有文件
[root@hadoop Desktop]# rm -rf ./test2
2.bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其演示实例
命令的执行结果状态
成功 失败
bash使用特殊变量$?保存最近一条命令的执行状态结果:
0:成功 1-255:失败
实例
[root@hadoop Desktop]# ls cptest repo scripts test [root@hadoop Desktop]# echo $? 0 [root@hadoop Desktop]# ls ./aaa ls: cannot access ./aaa: No such file or directory [root@hadoop Desktop]# echo $? 2
命令行展开
~: 展开为用户的主目录 ~USERNAME:展开为指定用户的主目录 {}:可承载一个以逗号分隔的列表,并将其展开为多个路径 /tmp/{a,b} = /tmp/a, /tmp/b /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
实例
~展开: [root@hadoop Desktop]# pwd /root/Desktop [root@hadoop Desktop]# cd ~ [root@hadoop ~]# pwd /root {}展开: [root@hadoop ~]# mkdir -pv /tmp/{a,b} mkdir: created directory `/tmp/a' mkdir: created directory `/tmp/b'
3.请使用命令行展开功能来完成以下练习:
(1).创建/tmp
目录下的a_c
,a_d
,b_c
,b_d
[root@hadoop ~]# mkdir -pv /tmp/{a,b}_{c,d} mkdir: created directory `/tmp/a_c' mkdir: created directory `/tmp/a_d' mkdir: created directory `/tmp/b_c' mkdir: created directory `/tmp/b_d'
(2).创建/tmp/mylinux
目录下的一系列目录
[root@hadoop tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc/sbin,sys,tmp,usr/{bin,sbin},var/{lock,log,run}} [root@hadoop tmp]# tree /tmp/mylinux /tmp/mylinux ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib │ └── modules ├── lib64 ├── proc │ └── sbin ├── sys ├── tmp ├── usr │ ├── bin │ └── sbin └── var ├── lock ├── log └── run
4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息
元数据信息
[root@hadoop Desktop]# ls -l /etc/fstab -rw-r--r--. 1 root root 779 Feb 1 15:55 /etc/fstab -rw-r--r--共有10个小段 第一小段代表的文件类型: -(f):普通文件 d:目录文件 b:块设备文件 c:字符设备 l:符号连接 p:管道文件 s:套接字文件 rw-表示用户的权限,r--表示所属组的权限,r--表示其他用户的权限。 r:只读权限 w:可写权限 x:执行权限 之后是文件的属主、属组、文件大小以及最后的访问时间。
时间戳
查看时间戳:stat命令 [root@hadoop Desktop]# stat /etc/fstab File: `/etc/fstab' Size: 779 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 390920 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-07-12 20:04:45.884000013 +0800 Modify: 2016-02-01 15:55:40.477000176 +0800 Change: 2016-02-01 16:08:05.655000177 +0800 三个时间戳: access time:访问时间,简写为atime,读取文件内容 modify time: 修改时间, mtime,改变文件内容(数据) change time: 改变时间, ctime,元数据发生改变 修改时间戳:touch命令 touch (选项) (参数) 选项: -a: only atime -m: only mtime -t STAMP [root@hadoop Desktop]# touch -t 1607112004.45 /etc/fstab [root@hadoop Desktop]# stat /etc/fstab File: `/etc/fstab' Size: 779 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 390920 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-07-12 20:59:12.348000443 +0800 Modify: 2016-07-11 20:04:45.000000000 +0800 Change: 2016-07-12 20:59:10.128998636 +0800
5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果
命令别名(alias)
通过alias命令实现: (1) alias 显示当前shell进程所有可用的命令别名; (2) alias NAME='VALUE' 定义别名NAME,其相当于执行命令VALUE; 注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中; 仅对当前用户:~/.bashrc 对所有用户有效:/etc/bashrc Note: 编辑配置给出的新配置不会立即生效; bash进程重新读取配置文件: source /path/to/config_file . /path/to/config_file 撤消别名:unalias unalias [-a] name [name ...] Note: 如果别名同原命令的名称,则如果要执行原命令,可使用"\COMMAND";
6.显示/var
目录下所有以l
开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文档或目录
[root@hadoop var]# ls l*[0-9]*[a-z] l22e la2e lcd234r l23ass: lov234e: [root@hadoop var]# ls l*[[:digit:]]*[[:lower:]] l22e la2e lcd234r l23ass: lov234e:
7.显示/etc
目录下,以任意一个数字开头,且以非数字结尾的文件或目录
[root@hadoop etc]# ls [[:digit:]]*[^[:digit:]] 1abD: 2abD:
8.显示/etc
目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录
[root@hadoop etc]# ls [^[:alpha:]][[:alpha:]]* 1abD: 2abD:
9.在/tmp
目录下创建以tfile开头,后面当前日期和时间的文件
[root@hadoop tmp]# mkdir tfile-$(date +%F)
10.复制/etc
目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest2
目录中
[root@hadoop tmp]# cp /etc/p*[^0-9]/ /tmp/mytest2/ [root@hadoop tmp]# cp /etc/p*[^0-9] /tmp/mytest2/
11.复制/etc
目录下所有以.d结尾的文件或目录至/tmp/mytest2
目录中
[root@hadoop tmp]# cp /etc/*.d /tmp/mytest2
12.复制/etc
目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3
目录中
[root@hadoop tmp]# cp /etc/[lmn]*\.conf /tmp/mytest3
原创文章,作者:Jeason,如若转载,请注明出处:http://www.178linux.com/24088
评论列表(1条)
写的很好,排版也很漂亮,加油。给你提一个问题,如果文件已经存在 ,如何不显示警告信息,可以直接覆盖?