1、文件管理类命令
mkdir:创建目录
使用格式:mkdir [OPTION]… DIRECTORY…
选项:
-p 创建父目录
-v 显示信息
示例:
直接使用,指定目录名称,就会在当前目录下创建该目录,也可以使用绝对路径在指定目录创建
[root@localhost tmp]# mkdir test
[root@localhost tmp]# ls
test
[root@localhost tmp]# mkdir /home/test
[root@localhost tmp]# ls -d /home/test/
/home/test/
使用-p选项,可以创建父目录,在创建多层目录时使用,不加-p会报错的
[root@localhost tmp]# mkdir ops/opt/home
mkdir: 无法创建目录”ops/opt/home”: 没有那个文件或目录
[root@localhost tmp]# mkdir -p ops/opt/home
[root@localhost tmp]# tree /tmp/
/tmp/
├── ops
│ └── opt
│ └── home
└── test
4 directories, 0 files
-v选项,可以显示创建目录的过程
[root@localhost tmp]# mkdir -pv test/user/dawang
mkdir: 已创建目录 “test/user”
mkdir: 已创建目录 “test/user/dawang”
[root@localhost tmp]# tree /tmp/
/tmp/
├── ops
│ └── opt
│ └── home
└── test
└── user
└── dawang
6 directories, 0 files
rmdir:删除目录,只能删除空目录,比如上述示例演示创建的目录,里面没有任何文件
使用格式:rmdir [OPTION]… DIRECTORY…
选项:
-p 删除指定目录,如果删除目录的上级目录也为空,就一并删除
-v 显示过程信息
示例:
直接使用,删除指定目录
[root@localhost tmp]# tree /tmp/
/tmp/
├── ops
│ └── opt
│ └── home
└── test
└── user
└── dawang
6 directories, 0 files
[root@localhost tmp]# rmdir ops/opt/home
[root@localhost tmp]# tree /tmp/
/tmp/
├── ops
│ └── opt
└── test
└── user
└── dawang
5 directories, 0 files
使用-p选项,删除空的父目录
使用-v选项,显示过程信息
[root@localhost tmp]# rmdir -pv test/user/dawang/
rmdir: 正在删除目录 “test/user/dawang/”
rmdir: 正在删除目录 “test/user”
rmdir: 正在删除目录 “test”
[root@localhost tmp]# tree /tmp/
/tmp/
└── ops
└── opt
2 directories, 0 files
name:简单的文本编辑器,可以修改文本文件的内容,如果文件不存在,即直接创建空文件并进入编辑
[root@localhost tmp]# nano user.txt
[root@localhost tmp]# ls
ops user.txt
rm:删除文件
格式:rm [options]… file…
选项:
-f 不提示确认信息
-r 删除目录
示例:
使用-r删除目录
[root@localhost tmp]# rm -r ops/opt
rm:是否删除目录 “ops/opt”?y
[root@localhost tmp]# tree /tmp/
/tmp/
├── ops
└── user.txt
1 directory, 1 file
使用-f 忽略提示信息,直接进行删除,危险操作,可能会误删除重要文件
[root@localhost tmp]# rm -rf ops user.txt
[root@localhost tmp]# tree /tmp/
/tmp/
0 directories, 0 files
cp :复制多个文件或者目录到指定位置
cp [OPTION]… SOURCE DEST
选项:
-f 如果有重名的文件,将强制覆盖原文件
-p 复制的文件保留属性信息,比如文件属主,属组,权限,时间戳等
-r 递归复制目录,即复制的对象为目录时,必须使用-r
示例:
复制多个文件到同一个目录
[root@localhost tmp]# cp /etc/passwd /etc/fstab /tmp
[root@localhost tmp]# ls
fstab passwd
复制多个目录到同一个目录
[root@localhost tmp]# cp -r /root /home /tmp/
[root@localhost tmp]# ls
fstab home passwd root
复制文件到指定目录并改名
[root@localhost tmp]# cp /etc/passwd /tmp/text
[root@localhost tmp]# ls
fstab home passwd root text
mv:移动文件或者目录,也可以进行重命名,用法与cp类似
mv [选项]… 源文件 目标文件
mv [选项]… 源文件… 目录
可以同时移动多个文件或者目录,但是只能一起移动到某个目录中
选项:
-f 重名文件,直接覆盖,不提示信息
示例:
移动多个目录到当前目录
[root@localhost tmp]# mv /root/direct/ /root/tables/ /tmp/
[root@localhost tmp]# ls /tmp/
direct fstab home passwd root tables text
重命名文件或者目录
[root@localhost tmp]# ls /tmp/
direct fstab home passwd root tables text
[root@localhost tmp]# mv home viewhouse
[root@localhost tmp]# ls
direct fstab passwd root tables text viewhouse
2、bash特性之命令的执行状态返回值和命令行展开
在bash中每一跳命令执行结束后都会有一个执行结果的状态码,标识了命令是否执行成功,如果失败还可以根据定义的状态码进行排错
命令执行成功,没有报错,状态码为 0
如果执行失败,状态码为 1-255
只要状态码不为0,即命令执行失败
命令的执行状态码是保存在$? 变量中,可以通过echo命令查看状态码
[root@localhost tmp]# ls
direct fstab passwd root tables text viewhouse
[root@localhost tmp]# echo “$?”
0
[root@localhost tmp]# ls /rot
ls: 无法访问/rot: 没有那个文件或目录
[root@localhost tmp]# echo “$?”
2
命令行展开
在命令行中需要输入多个,近似位置的目录时,可以使用花括号 { } 将目录简写,然后在命令执行的过程中,会自动展开,代表相对不同的路径
比如:/etc/{passwd,rc.d/init.d}
代表/etc/passwd 和 /etc/rc.d/init.d 两个文件
主要就是将重复的路径只用写一次,在路径分支的地方使用花括号,简写在一起即可
3、命令演示
创建/tmp目录下 a_c,a_d,b_c,b_d目录
[root@localhost tmp]# mkdir /tmp/{a,b}_{c,d}
[root@localhost tmp]# ls
a_c a_d b_c b_d
创建多层目录:
mkdir -p /tmp/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}}
4、元数据
在Linux的文件系统中,一般文件是分为两部分进行存放的
一部分是文件的属性信息,包括创建时间,权限,属主属组,文件大小等,即文件的元数据
另一部分是文件的实际内容,比如一个文本文件,那保存的就是用户输入的文本信息
元数据可以使用stat命令查看
[root@localhost ~]# stat /root
File: “/root”
Size: 4096 Blocks: 8 IO Block: 4096 目录
Device: fd00h/64768d Inode: 654081 Links: 22
Access: (0550/dr-xr-x—) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-06-26 14:41:20.269487642 +0800
Modify: 2018-06-25 20:21:06.533516263 +0800
Change: 2018-06-25 20:21:06.533516263 +0800
上述是一个目录的元数据信息
常用的数据信息:
file:文件名
size:文件大小
Inode:元数据存放的节点位置
access:访问权限 uid:属主用户id gid:属组id
access:最近一次的访问时间
modify:最近一个文件内容被修改的时间
change:文件元数据最近一次被修改的时间,默认上面任何数据只要变动了,这个时间都会更新
可以使用 touch 命令修改文件 的时间戳,即文件元数据的访问时间,修改时间,改变时间
常用选项:
-a 修改访问时间,不指定时间,默认修改为现在的系统时间
-m 指定修改时间,不指定时间,默认修改为现在的系统时间
-r 可以参考其他文件的时间进行修改
-t 将时间戳修改为指定的时间
-c 默认touch的是新文件,会自动创建的,使用-c选项即不会创建新文件
修改访问时间
[root@localhost ~]# touch -a -t 201806201433.23 install.log
[root@localhost ~]# stat install.log
File: “install.log”
Size: 27156 Blocks: 64 IO Block: 4096 普通文件
Device: fd00h/64768d Inode: 654082 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-06-20 14:33:23.000000000 +0800
Modify: 2018-06-12 21:18:02.415230207 +0800
Change: 2018-06-26 14:58:43.785373347 +0800
5、命令别名及引用
可以将经常使用的复杂的命令,定义一个别名,在命令行直接使用别名即可调用原命令
查看当前定义的所用命令别名
[root@localhost ~]# alias
alias cp=’cp -i’
alias l.=’ls -d .* –color=auto’
alias ll=’ls -l –color=auto’
alias ls=’ls –color=auto’
alias mv=’mv -i’
alias rm=’rm -i’
alias which=’alias | /usr/bin/which –tty-only –read-alias –show-dot –show-tilde’
使用alias也可以自己定义别名
[root@localhost ~]# alias c=’clear’
[root@localhost ~]# alias
alias c=’clear’
不过这种方法只是在当前的登录shell有效,如果想永久有效,需要将别名写在配置文件中
/etc/bashrc 全局有效,即所有用户登录后都会生效
~/.bashrc 在用户家目录下的文件,只对所属用户生效
命令引用:命令在执行的时候会将引用的命令替换成命令的执行结果
touch $(date +%y-%m-%d)
创建一个文件,文件名为date命令的执行结果
命令引用有两种方式
$( ) dollar符号开头,命令放在小括号里头
“ 命令用反引号括起来
6、命令演示
[root@localhost ~]# ls -d /var/l*[0-9]*[a-z]
/var/ld39z
显示/var目录下,所有以l开头,中间至少一个数字,最后小写字母结尾的文件或者目录
7、命令演示
[root@localhost ~]# ls -d /etc/[0-9]*[^0-9]
/etc/38764aegc
显示/etc目录下,所有数字开头,非数字结尾的文件或者目录
8、命令演示
[root@localhost ~]# ls -d /etc/[^[:alpha:]][[:alpha:]]*
/etc/6anoiegalj9
显示/etc目录下,非字母开头,后面跟了一个字母的所有文件或者目录
9、命令演示
touch /tmp/tfile-$(date “+%Y-%m-%d-%H-%M-%S”)
在/tmp目录下创建一个tfile开头后面是年月日小时分钟秒的文件
10、命令演示
[root@localhost ~]# mkdir /tmp/mytest1
[root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1
pam.d passwd- pki pm postfix prelink.conf.d profile protocols
passwd pinforc plymouth popt.d ppp printcap profile.d python
将/etc目录下p开头非数字结尾的文件和目录复制到/tmp/mytest1目录下
11、命令演示
[root@localhost ~]# mkdir /tmp/mytest2
[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2
复制/etc目录下所有以.d结尾的文件和目录至/tmp/mytest2目录下
12、命令演示
[root@localhost ~]# mkdir /tmp/mytest3
[root@localhost ~]# cp -r /etc/[lmn]*.conf /tmp/mytest3
[root@localhost ~]# ls /tmp/mytest3
ld.so.conf libuser.conf logrotate.conf mke2fs.conf nsswitch.conf
libaudit.conf locale.conf man_db.conf named.conf
复制/etc目录下以 l或m或n 开头 .conf结尾的文件至/tmp/mytest3目录下
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/101754