第一部分 Linux常用文件管理命令

1.1 cp

文件复制

常用选项

-i	# 覆盖之前提醒用户确认
-f # 强制覆盖目标文件
-r # 递归复制目录
-d # 复制符号链接本身而非其指向的源文件
-a # 递归复制目录,保留文件的所有属性

示例

[root@Bj-1-141 ~]# cp /etc/fstab /tmp/
[root@Bj-1-141 ~]# ls -l /tmp/fstab
-rw-r--r-- 1 root root 501 Dec 9 21:19 /tmp/fstab
[root@Bj-1-141 ~]# cp -a /etc/fstab /tmp/
cp: overwrite ‘/tmp/fstab’? y
[root@Bj-1-141 ~]# ls -l /tmp/fstab
-rw-r--r--. 1 root root 501 Dec 4 18:13 /tmp/fstab
[root@Bj-1-141 ~]# cp -r /var/log/ /tmp/

1.2 mv

移动或重命名文件

示例

[root@Bj-1-141 tmp]# mv fstab fstab.bak
[root@Bj-1-141 tmp]# ls
fstab
[root@Bj-1-141 tmp]# mv fstab{,.bak}
[root@Bj-1-141 tmp]# ls
fstab.bak

1.3 rm

删除文件或目录

示例

[root@Bj-1-141 tmp]# rm -fr log/
[root@Bj-1-141 tmp]# rm -f fstab.bak

第二部分 命令行展开和执行状态返回值

2.1 执行状态返回值

bash命令行中命令执行成功返回值为0,错误返回值为1-255之间的随机数;

$?:shell中获取命令的状态返回值使用$?;echo $?

2.2 命令行展开

~ :自动展开为用户的家目录,或指定用户的家目录

{}:可承载一个逗号分隔的路径列表,并将其展开为多个路径

例如:/tmp/{a,b}相当于/tmp/a , /tmp/b

2.3 示例

创建/tmp目录下的:a_c, a_d, b_c, b_d

[root@Bj-1-141 ~]# mkdir /tmp/{a,b}_{c,d}
[root@Bj-1-141 ~]# ll /tmp/
total 4
drwxr-xr-x 2 root root 6 Dec 9 22:07 a_c
drwxr-xr-x 2 root root 6 Dec 9 22:07 a_d
drwxr-xr-x 2 root root 6 Dec 9 22:07 b_c
drwxr-xr-x 2 root root 6 Dec 9 22:07 b_d

创建/tmp/mylinux目录下的:

/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 [root@Bj-1-141 ~]# mkdir -pv /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}}

第三部分 练习

3.1 文件的元数据有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

3.1.1 文件的元数据

文件类型-权限-硬链接次数-属主-属组-文件大小-时间-文件名

每个文件都有三个时间戳(centos7是4个还有一个创建时间):

Access: 2016-12-06 22:03:52.372987896 +0800 	# 查看内容就代表最近访问
Modify: 2015-12-09 17:59:15.000000000 +0800 # 新增或删除内容就是更改
Change: 2016-12-04 18:13:31.613001987 +0800 # 改动是表示元数据发生改变

3.1.2 如何查看文件的元数据

[root@Bj-1-141 ~]# stat /etc/issue
File: ‘/etc/issue’
Size: 23 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 67109017 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-06 22:03:52.372987896 +0800
Modify: 2015-12-09 17:59:15.000000000 +0800
Change: 2016-12-04 18:13:31.613001987 +0800
Birth: -

3.1.3 如何修改时间戳

touch命令:修改文件的时间戳,如果文件不存在则创建一个空文件。

常用选项

-c:# 指定的文件路径不存在时不创建对应的空文件
-a:# 仅修改access时间
-m:# 仅修改modify时间
-t STAMP:# 指定一个时间,将目标文件修改为指定的时间,通常配合-a或者-m使用

3.1.4 示例

[root@Bj-1-141 ~]# stat test.txt
File: ‘test.txt’
Size: 13 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 136103861 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-06 22:11:57.754537389 +0800
Modify: 2016-12-06 22:11:22.323537042 +0800
Change: 2016-12-06 22:11:22.323537042 +0800
Birth: -
[root@Bj-1-141 ~]# touch -a -t 201612092030 test.txt
[root@Bj-1-141 ~]# stat test.txt
File: ‘test.txt’
Size: 13 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 136103861 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-09 20:30:00.000000000 +0800
Modify: 2016-12-06 22:11:22.323537042 +0800
Change: 2016-12-09 20:26:56.383277275 +0800
Birth: -

3.2 如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?

3.2.1 如何定义命令别名

alias NAME="command"	# 定义命令别名
[root@Bj-1-141 ~]# alias cls="clear"

3.2.2 如何引用命令执行结果

$(COMMAND)或者使用``反引号

[root@Bj-1-141 ~]# current_time=$(date +%Y-%m-%d-%H-%M-%S)
[root@Bj-1-141 ~]# echo $current_time
2016-12-09-20-33-25
[root@Bj-1-141 ~]# current_time=`date +%Y-%m-%d-%H-%M-%S`
[root@Bj-1-141 ~]# echo $current_time
2016-12-09-20-34-0

3.3 显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件或目录

[root@Bj-1-141 ~]# touch /var/ltest3data
[root@Bj-1-141 ~]# mkdir /var/ltest4data
[root@Bj-1-141 ~]# ls -dl /var/l*[0-9]*[[:lower:]]
-rw-r--r-- 1 root root 0 Dec 9 09:11 /var/ltest3data
drwxr-xr-x 2 root root 6 Dec 9 09:11 /var/ltest4data

3.4 显示/etc 目录下,以任意一个数字开头,且以非数字结尾的文件或目录

[root@Bj-1-141 ~]# touch /etc/6testdata
[root@Bj-1-141 ~]# mkdir /etc/7testdata
[root@Bj-1-141 ~]# ls -d /etc/[0-9]*[a-z]
/etc/6testdata /etc/7testdata

3.5 显示/etc 目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录

[root@Bj-1-141 ~]# ls -d /etc/[^a-z][a-z]*
/etc/6testdata /etc/7testdata

3.6 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名如: tfile-2016-05-27-09-32-22。

[root@Bj-1-141 ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
[root@Bj-1-141 ~]# ll /tmp/tfile-2016-12-09-09-21-44
-rw-r--r-- 1 root root 0 Dec 9 09:21 /tmp/tfile-2016-12-09-09-21-44

3.7 复制/etc/目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

[root@Bj-1-141 ~]# cp -rv /etc/p*[^0-9] /tmp/mytest1/
[root@Bj-1-141 ~]# ls /tmp/mytest1
pam.d passwd- plymouth popt.d ppp printcap profile.d python
passwd pki pm postfix prelink.conf.d profile protocols

3.8 复制/etc/目录下所有以.d结尾的文件或目至/tmp/mytest2目录中。

[root@Bj-1-141 ~]# mkdir /tmp/mytest2
[root@Bj-1-141 ~]# cp -rv /etc/*.d /tmp/mytest2/
[root@Bj-1-141 ~]# ls /tmp/mytest2
bash_completion.d dracut.conf.d modprobe.d profile.d rc5.d sudoers.d
binfmt.d gdbinit.d modules-load.d rc0.d rc6.d sysctl.d
chkconfig.d grub.d my.cnf.d rc1.d rc.d tmpfiles.d
cron.d init.d pam.d rc2.d rsyslog.d xinetd.d
depmod.d ld.so.conf.d popt.d rc3.d rwtab.d yum.repos.d
dnsmasq.d logrotate.d prelink.conf.d rc4.d statetab.d

3.9 复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

[root@Bj-1-141 ~]# mkdir /tmp/mytest3
[root@Bj-1-141 ~]# cp -v /etc/[lmn]*.conf /tmp/mytest3
[root@Bj-1-141 ~]# ls /tmp/mytest3
ld.so.conf libuser.conf logrotate.conf mke2fs.conf
libaudit.conf locale.conf man_db.conf nsswitch.conf

Linux运维之基础拾遗的更多相关文章

  1. Linux运维网络基础

    1.网络架构的三个层次 核心层: 路由器(网关接口) 实现和外网通讯 冗余能力(主备) 汇聚层: 交换机(三层交换机) 冗余能力 策略控制能力 接入层: 交换机(二层交换机) 终端设备接入网络 2.网 ...

  2. linux运维基础__争取十月前研究的差不多

    转来的一编,考虑在十月前研究的差不多 linux运维人员基础 1.很多地方经常会用到的rsync工具 实施几台服务器的同步效果 我们公司就是使用这个工具完成服务器的游戏的服务端和客户端同步,有几个文章 ...

  3. 网络配置——Linux运维基础

    今天把Linux的网络配置总结了一下,尽管并不难可是是个比較重要的基础.然后我也不知到自己以后是否会做运维,可是我知道自己比較喜欢刨根问底.还有就是我很珍惜我以前掌握过的这些运维的技能.今天突然间问自 ...

  4. Linux网站运维工程师基础大纲

    第一阶段:Linux运维基础 第一章:Linux基础以及入门介绍 1.Linux硬件基础 2.Linux发展过程 3.创建虚拟机和系统安装 第二章:Linux系统目录结构介绍 1.Linux系统优化 ...

  5. Linux运维工程师必须掌握的基础技能有哪些?

    这个问题挺好的,回答这个问题也是对自身的审查,看看自己还欠缺哪些.(所以我估计得好好思考下,也许下一刻我就会突然惊醒,发现我还是战⑤渣) 首先限定在Linux运维工程师上 回答仅代表我想到,不代表我都 ...

  6. [转帖] Linux运维基础知识学习内容

    原作者地址:https://www.cnblogs.com/chenshoubiao/p/4793487.html 最近在学习 linux  对简单的命令有所掌握 但是 复杂的脚本 shell pyt ...

  7. Linux运维基础命令笔试题--看看你会多少?

    老男孩教育linux运维就业班第一周课后学习效果能力上机大考察 (每题10分共130分,过100即可,请给出详细步骤) 1.创建目录/data/oldboy ,并且在该目录下创建文件oldboy.tx ...

  8. 第一阶段·Linux运维基础-第1章·Linux基础及入门介绍

    01-课程介绍-学习流程 02-服务器硬件-详解 03-服务器核心硬件-服务器型号-电源-CPU 01-课程介绍-学习流程 1.1. 光看不练,等于白干: 1.2 不看光练,思想怠慢: 1.3 即看又 ...

  9. Linux运维七:网络基础

    1:网线 2:交换机,路由器 交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备.它可以为接入交换机的任意两个网络节点提供独享的电信号通路.最常见的交换机是以太网交换机.其他常见的 ...

随机推荐

  1. TSQL 分组集(Grouping Sets)

    分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集.使用分组集的聚合查询,返回 ...

  2. 锋利的jQuery--jQuery事件,动画(读书笔记二)

    1.注意$(document).ready()方法和window.onload方法之间的细微区别 $(document).ready()在DOM树构建完成就会执行,而window.onload是在DO ...

  3. Android浮层点击穿透问题

    最近做微信公众号开发的时候遇到一个问题,上线后发现此问题后检查代码没有发现问题,无奈只能回滚到上一个版本. 问题是这样的:页面一个选择的浮层,在浮层点击确定后,下面的页面会自动提交 在测试环境上无法重 ...

  4. 从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)

    原本关于T4模板原想分5个章节详细解说的,不过因为最近比较忙,也不想将整个系列时间拉得太长,所以就将它们整合在一块了,可能会有很多细节没有讲到,希望大家自己对着代码与模板去研究. 本章代码量会比较大, ...

  5. RXJava by Example--转

    原文地址:https://www.infoq.com/articles/rxjava-by-example Key takeaways Reactive programming is a specif ...

  6. APP测试入门篇之APP基础知识(001)

    前言        最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...

  7. VS中C++ 项目重命名

    应该都有过这样的经历,在Visual studio中创建解决方案,添加几个项目进去,然后开始愉快的敲代码....写代码正欢的时候,却总是感觉那里有些不舒服,一细看,这项目名称取的真心挫,修改个吧.直接 ...

  8. go语言赋值

    使用赋值语句可以更新一个变量的值,最简单的赋值语句是将要被赋值的变量放在=的左边,新值的表达式放在=的右边. x = // 命名变量的赋值 *p = true // 通过指针间接赋值 person.n ...

  9. c#+handle.exe实现升级程序在运行时自动解除文件被占用的问题

    我公司最近升级程序经常报出更新失败问题,究其原因,原来是更新时,他们可能又打开了正在被更新的文件,导致更新文件时,文件被其它进程占用,无法正常更新而报错,为了解决这个问题,我花了一周时间查询多方资料及 ...

  10. SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

    相信很多人进行数据存储时,会遇上如标题的异常错误. 其实也不算上一个错误. 当你的程序中有宣告一个字段的数据类型为DateTime时,但你又没有赋值给它,就进行存储时,它就会得到这样一个结果. 看看下 ...