N31期-第二周作业

Linux基础文件管理

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}}

QQ截图2528

 

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

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code