文件管理命令:
cp命令:针对文件内容进行复制,元数据不会复制到目标文件或目录中
单源复制:cp [OPTION] source destination
- 若目标文件不存在,则先创建文件在copy
- 若目标是非目录文件(目标文件非空),则覆盖目标文件
- 若目标是目录文件,则在目标目录中创建文件,再复制数据到该文件中
- 若源是目录的话,默认复制不会成功,需要附带选项(-r)
示例: cp /etc/fstab /tmp/fstab
多源复制:多个文件复制
- 若目标文件不存在,则不能复制
- 若目标不是目录文件,则不能复制
- 若目标为目录,则在目录中创建这几个文件,并复制相应的数据进文件中
常见选项:
- -i:interactive,进行复制操作之前会提示用户
- -f:强制覆盖目标文件
- -r:递归复制目录(子目录也会复制)
- -d:只复制链接本身,链接所指向的目标文件不复制,preserve=links
- -a:复制链接本身及所指向的目标文件,包括元数据,presereve=all
mv命令:复制文件至目标文件,然后删除原文件
规则:mv [OPTION] source DEST
示例:mv /tmp/zabbix_server.log /var/log/
常见选项:
- -i:interactive
- -f:强制移动force
rm命令:删除文件
规则:rm [OPTION] FILE
示例:rm –rf /tmp/123/1.txt
选项:
- -i:interactive
- -f:强制删除
- -r:recursive,递归删除)(此选项慎用)
cd命令:切换目录change directory
规则:cd /some/dirtectory
示例:cd /etc/inittab
pwd命令:显示当前目录,内建命令,可直接使用
ls命令:显示指定目录或文件的内容
规则:ls [OPTION] /file/or/directory
示例:ls –l /etc/init.d
命令执行状态返回值:
命令执行结果只有两种情况:
成功:返回值一定为0
失败:返回值1-255都有可能
bash使用特殊变量$?来存放最近一次命令执行的返回状态值,可使用echo $?来得到命令的执行结果状态
命令行展开:
~展开为root的家目录
~USERNAME为用户USERNAME的家目录
{ }可以承载逗号分隔的列表,并将其展开为多个路径
示例:touch /{x,y}/{a,b}相当于创建了四个文件/x/a,/x/b,/y/a,/y/b
(1)创建/tmp目录下的:a_c, a_d, b_c, b_d
touch {a,b}-{c,d}
(2)创建/tmp/mylinux目录下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
touch /tmp/myselinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,prooc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
文件的元数据:
元数据分类:
- mode:权限
- ownership:属主属组
- timestamp:时间戳
- links:符号连接
- xattr:扩展属性
- context:安全标签
- 文件大小
元数据查看:
stat命令可以查看文件的元数据
规则:stat [OPTION] [FILE]
示例:stat –f /etc/fstab(显示文件所在文件系统的信息而不是文件信息)
元数据时间戳修改:
touch命令可以修改时间戳
规则:touch [OPTION] FILE
示例:touch –a /tmp/log/zabbix_server.log(修改文件的存取时间)
选项:
- -a:只更改存取时间
- -d:使用指定日期时间
- -m:更改修改时间(modify time)
- -r:将文件的时间更改为参考值(-reference=FILE)
- -t:使用指定时间
bash特性之命令别名及命令结果引用:
命令别名的定义:
命令的定义使用alias命令(只在当前shell进程有效)
规则:alias string=’COMMAND [OPTION] [argument]’
示例:alias rm=’mv -i’
命令结果引用:
- $(name):将括号内运行的内容作为变量引用
- `name`:反引号,与$(name)的用法相似
- 管道:具有一定的逻辑结构,上一个命令的运行结果作为参数传递到下一个命令
bash特性之glob文件匹配:
(1)显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ls –ld /var/l*[[:digit:]]lower:]]
(2)显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ls –ld /etc/[[:digit:]]*[^[:digit:]]
(3)显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
ls –ld /etc/[^[:alpha:]][[:alpha:]]*
(4)在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch /tmp/tfile-$(date +%Y-%m-%d-%H-%m-%S)
(5)复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
cp –R /etc/p*[^[:digit:]] /tmp/test1
(6)复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
cp -R /etc/*.d /tmp/test2
(7)复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
cp –R /etc/{l,m,n}*.conf /tmp/mytest3
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91156
评论列表(1条)
总结的比较全,最后的例子可以多想几种方式来处理~