1、Linux上的文件管理类命令都有那些,其常用的使用方法及其相关示例演示。
文件管理工具:cp, mv, rm
cp命令:copy复制命令
SOURCE:源文件;DEST:目标文件;
单源复制:cp [OPTION]… [-T] SOURCE DEST
多源复制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
单源复制:cp [OPTION]… [-T] SOURCE DEST
如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;
示例:[root@localhost ~]# cp /etc/inittab /tmp
[root@localhost ~]# ls /tmp
inittab
如果DEST存在:
如果DEST是非目录文件:则覆盖目标文件;
如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
示例: [root@localhost ~]# cp /etc/inittab /tmp
cp:是否覆盖”/tmp/inittab”? y
[root@localhost ~]# ls /tmp
inittab
多源复制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
如果DEST不存在:错误;
如果DEST存在:
如果DEST是非目录文件:错误;
如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
示例:[root@localhost tmp]# ls test
123 234,345
[root@localhost tmp]# cp /tmp/test/123 /tmp/test/234,345 /tmp/test2
[root@localhost tmp]# ls /tmp/test2
123 234,345
常用选项:
-i:交互式复制,即覆盖之前提醒用户确认;
-f:强制覆盖目标文件;
-r, -R:递归复制目录;
-d:复制符号链接文件本身,而非其指向的源文件;
-a:-dR –preserve=all, archive,用于实现归档;
–preserv=
mode:权限
ownership:属主和属组
timestamps: 时间戳
context:安全标签
xattr:扩展属性
links:符号链接
all:上述所有属性
mv命令:move
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE..
常用选项:
-i:交互式;
-f:force
示例:[root@localhost tmp]# ls 123.txt
[root@localhost ~]# mv /tmp/123.txt /tmp/test/
[root@localhost ~]# ls /tmp/test
123 123.txt 234,345
rm命令:remove
rm [OPTION]… FILE…
示例:[root@localhost ~]# ls /tmp/test
123 123.txt 234,345
[root@localhost ~]# rm /tmp/test/123
rm:是否删除普通空文件 “/tmp/test/123″?y
[root@localhost ~]# ls /tmp/test
123.txt 234,345
常用选项:
-i:interactive
-f:force
-r: recursive
删除目录:rm -rf /PATH/TO/DIR
危险操作:rm -rf /*
注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)
2、Bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
bash的基础特性:命令的执行状态结果
命令执行的状态结果:
bash通过状态返回值来输出此结果:
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$?中; 命令正常执行时,有的还回有 命令返回值:根据命令及其功能不同,结果各不相同;
示例:
[root@localhost ~]# ls
[root@localhost ~]# echo $?
0
[root@localhost ~]# asdf
-bash: asdf: command not found
[root@localhost ~]# echo $?
127
命令行展开;
以某些bash能够解释的符号来代替命令中的某些参数。
~:展开为用户的家目录;
例:切换至家目录
cd ~;pwd
/root
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径;
例:在/tmp/d目录下创建f1,f2,f3三个文件
ttouch /tmp/d/f{1,2,3}
示例: [root@localhost ~]# touch /tmp/d/f{1,2,3}
[root@localhost ~]# tree
. └── d
├── f1
├── f2
└── f3
1 directory, 3 files
[root@localhost tmp]#
3、请使用命令行展开功能来完成以下的练习
(1)、创建/tmp目录下的:a_c,a_d,b_c,b_d
示例: [root@localhost ~]# mkdir -v /tmp/{a,b}_{c,d}
mkdir: 已创建目录 “/tmp/a_c”
mkdir: 已创建目录 “/tmp/a_d”
mkdir: 已创建目录 “/tmp/b_c”
mkdir: 已创建目录 “/tmp/b_d”
[root@localhost ~]# tree /tmp
/tmp
├── a_c
├── a_d
├── b_c
├── b_d
(2) 创建/tmp/mylinux目录下的:
示例: [root@localhost ~]# mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network- soripts},lib/modiles,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{look,log,run}}
[root@localhost ~]# tree /tmp/mylinux
/tmp/mylinux
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-soripts
├── lib
│ └── modiles
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── log
├── look
└── run
24 directories, 0 files
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
(1)文件的元数据信息及查看
文件的数据分两种:一种元数据,既属性数据;一种就是数据本身;可使用stat命令查看文件的元数据:
例如:
]# stat /etc/passwd
文件:”/etc/passwd”
大小:2483 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:136755684 硬链接:1
权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)
环境systemu:objectr:passwdfilet:s0
最近访问:2016-09-22 22:07:14.897045766 +0800
最近更改:2016-09-20 18:10:23.223086880 +0800
最近改动:2016-09-20 18:10:23.227086888 +0800
创建时间:-
其中:file:文件名;
size:文件大小
block:文件占了多少个数据块
IO Block:文件所占数据块的块大小
Device:硬件,既说明该文件在硬盘的那个柱面
Inode:节点号
links:链接
Access(第一个):权限
Uid:该文件所属的属
Gid:该文件所属的属组
context:安全上下文
Access(第二个):文件上一次的访问时间
Modify:文件上一次修改的时间
Change:文件上一次属性更改的时间
修改文件的时间戳信息:
可以使用touch命令更改文件的时间戳:
语法:touch [OPTION]… FILE…
常用选项:
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m:仅修改modify time;
-t:使用指定的日期时间,而非现在的时间;[[CC]YY]MMDDhhmm[.ss];
5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
命令别名(alias)
通过alias命令实现:
(1) alias
显示当前shell进程所有可用的命令别名;
(2) alias NAME=’VALUE’
定义别名NAME,其相当于执行命令VALUE;
注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
编辑配置给出的新配置不会立即生效;
bash进程重新读取配置文件:
路径:source /path/to/config_file
相对路径:. /path/to/config_file
撤消别名:unalias 格式:unalias [-a] name [name …]
如果别名同原命令的名称,则如果要执行原命令,可使用”\COMMAND”;
引用另一个命令的执行结果——管道:COMMAND1 | COMMAND2 | COMMAND3 |…
最后一个命令会在当前shell进程的子shell进程中执行;
6.显示/var目录下所有以1开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件或目录。
示例:
[root@localhos]# ls /var/1*[0-9]*[a-z]
7.显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
示例:
[root@localhos]# ls /etc/[0-9]*[^0-9]
8.显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录。
示例:
[root@localhos]# ls /etc/[^[:alpha:]][:alpha:]*
9.在/tmp目录下创建以tgile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
示例:
[root@localhost tmp]# touch tfile-`date +%F-%H-%M-%S`
[root@localhost tmp]# ls
tfile-2018-03-23-00-29-40
10.复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
示例:
[root@localhost ~]# mkdir /tmp/mytest1
[root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1
pam.d passwd- pinforc pm popt.d ppp printcap
-
复制/etc目录下所有以.d结尾的文件或目录到/tmp/mytest2目录中。
示例:
[root@localhost ~]# mkdir /tmp/mytest2
[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2
[root@localhost ~]# ls /tmp/mytest2
ant.d cron.d event.d logrotate.d oddjobd.conf.d profile.d rc3.d rc.d
12.复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
示例:
[root@localhost ~]# mkdir /tmp/mytest3
[root@localhost ~]# cp -r /etc/[l,m,n]*\.conf /tmp/mytest3
[root@localhost ~]# ls /tmp/mytest3
latrace.conf libaudit.conf logrotate.conf mke2fs
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92838