写在前面的话
个人所用的是虚拟机环境,使用的是RHEL7。大体上应该没有什么太大的关系。机器是两张网卡,一张VMNET10一张VMNET1都是仅主机模式。使用SecureCRT进行连接操作。环境的搭建就不写了。
必须掌握的几个Linux命令
我们为什么要学习Linux的命令?
初学者上手Linux系统会很懵。不管你是否安装了图形化界面,或者去网上找一些教程。或者一些Linux的应用 总会看到密密麻麻的命令。很难得看懂,直接导致一些人放弃学习。这边简单用Windows举个例子吧。
例如在Windows中,我们总会打开我的电脑或者一些文件夹,能看到这样一种界面:
这是windows比较友好的地方。这整个叫做图形化用户接口,简称GUI。我们可以通过双击某个分区来浏览里面的数据 比方说到D盘的VIDEO里找到Charlotte文件夹,能够看到我下好的动漫 直接双击就可以观看了。
这整个过程可以理解为“你”在和“电脑”交互。你的鼠标双击告诉电脑要切换目录,于是电脑切换到该目录然后显示文件夹里的内容。
其实在Windows执行这些命令,也是一样的。我们来看一下。
打开CMD。一个黑乎乎的框框。在这里面我们可以输入命令 来达到同样的效果。
没有任何区别 只是通过文字的方法显示出来 让人难免感觉有些别扭。
直接输入文件名回车就可以运行了。在很久以前的DOS系统想要玩仙剑奇侠传1就是这么弄的。只不过后来逐渐有了图形化界面。
而Linux系统其实也有很多版本是有桌面环境的。像国产的DEEPIN。国外的UBUNTU。我所用的RHEL其实也可以有桌面环境。但是对于服务器系统来说,桌面环境毕竟还是比较消耗资源的。而且真正用起来,大部分时候命令行还是比图形化界面方便。(前提是你用的比较熟)所以掌握Linux中的命令就显得尤为重要了。就像我们第一次使用电脑的时候,会先学着打开“我的电脑” 然后是安装软件,打开浏览器,下载软件 等等等等。在我们初学Linux的时候也是要学习一些基本操作。而这些基本操作都是用命令去完成的。
接下来一起看一下Linux中一些常用的操作需要哪些命令来完成吧。
注意:
Linux里的每个命令有的必须带选项才能执行 有的可以不带选项执行。有的可以带多个选项。那么我们规定如下
- 粗体字表示实际需要输入的命令和关键字,在实际的配置示例和输出信息(不是一般的命令语法)中,粗体字表示你要手工输入的命令(比如echo命令);
- 斜体字 表示需要用实际数值替换的参数
- 竖线(|)表示在几个选项中选择一项
- 方括号[]表示可选的参数;
- 大括号{}表示一个必需的选项
- 方括号里面带一个大括号[{}]表示在一个可选项中的必选项。
常用基本命令
echo命令
echo命令用于在屏幕上输出字符串或者变量提取后的值,格式为
echo [字符串|$变量]
比方说想要在屏幕上显示你好。可以输入
1 | [root@remilia ~]# echo hello |
如果想要提取一个变量SHELL。则可以输入
1 | [root@remilia ~]# echo $SHELL |
我们可以暂时不用管这个SHELL是什么。看结果就可以。
在测试命令的时候我们尽量不要用中文吧。养成好习惯。
如果你输入echo 你好 可能会出现 echo ?? 所以尽量使用英文
date命令
如果你安装的是没有图形化界面的系统。你会注意到整个界面就像WINDOWS里的CMD一样。除了一个光标在不停闪烁可以说其他的什么都没有
如果想查看当前的系统时间怎么办呢。这个时候可以使用date命令。
格式为date “[选项] [+指定的格式]”
只需要在date命令中输入以“+”开头的参数,就可以按照指定的格式来输出系统的时间。
date常用的参数格式和作用如下
参数 | 作用 |
---|---|
%t | tab键 |
%H | 小时(0~23) |
%I | 小时(0-12) |
%M | 分钟(0-59) |
%S | 秒(0-59) |
%j | 今年中的第几天 |
比如按照默认的格式输出当前系统时间是这样的
1 | [root@remilia ~]# date |
按照”年-月-日 小时:分钟:秒”的格式查看系统当前时间是这样的
1 | [root@remilia ~]# date "+%Y-%m-%d %H:%M:%S" |
这边要说明一下Linux中每个命令都不尽相同。而且大部分命令都区分大小写。甚至有的时候%M 和 %m的意义都不一样。这个时候怎么办呢。
man命令
man命令会显示某个命令的手册(manual)里面会告诉你每个参数都是什么意义。但是全是英文的。不过稍微有点基础的人都能看懂。学这个要是很抗拒英文的话是学不好的。
man命令的常用格式如下:
man {命令}
如果直接输入man 则会显示
1 | [root@remilia ~]# man |
他会直接问你想要获取什么的帮助手册。所以我认为直接man没有啥意义。
那么拿date来举例。如果想看date的每个参数都是什么意思的话,则输入以下命令
1 | [root@remilia ~]# man date |
这个手册内容太多了 一页显示不完。所以可以通过按下回车下翻一行,通过空格下翻一页。按q退出
稍微下翻一下以后会发现大量参数和说明。
1 | FORMAT controls the output. Interpreted sequences are: |
比方说这边有%d的解释 解释是 “day of month”翻译过来就算一个月的某一天。后面的(e.g., 01)其中的eg代表for example 也就是他给你的例子。比方说01
那么我们来试一下
1 | [root@remilia ~]# date "+%d" |
今天确实是17号。如果你稍微找一找就能发现date "+%Y-%m-%d %H:%M:%S"
这个可以有如下解释
%Y year
%m month (01..12)
%d day of month (e.g., 01)
%H hour (00..23)
%M minute (00..59)
%S second (00..60)
以及你会发现一些其他的。类似:
%F full date; same as %Y-%m-%d
%T time; same as %H:%M:%S
虽然不太明白 但是这个意思好像是%F就等于%Y-%m-%d,然后%T就等于%H:%M:%S
那么我们的
date "+%Y-%m-%d %H:%M:%S"
能不能写成date "+%F %T"
呢。试一下。
1
2
3
4
5[root@remilia ~]# date "+%F %T"
2018-04-17 04:07:19
[root@remilia ~]# date "+%Y-%m-%d %H:%M:%S"
2018-04-17 04:07:42
[root@remilia ~]#
就结果来看 确实是一样的。这里应该是给了简写的方法。所以遇到陌生的命令可以尝试使用man去了解命令的基本用法。
reboot命令
reboot命令用于重启系统,其格式为reboot
由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启。
其命令如下:
1 | [root@remilia ~]# reboot |
回车之后就重启了。
poweroff命令
poweroff命令用于关闭系统,其格式为poweroff
该命令与reboot命令相同,都会涉及硬件资源的管理权限,因此默认只有root管理员才可以关闭电脑,其命令如下:
1 | [root@remilia ~]# poweroff |
敲了就关机了
wget命令
wget命令用于下载网络中的文件。格式为 wget [参数] {下载地址}
如果没有Linux系统的管理经验,当前只需了解一下wget命令的参数以及作用,然后看一下下面的演示实验即可,切记不要急于求成。后面章节将逐步讲解Linux系统的配置管理方法,可以等您掌握了网卡的配置方法后再来进行这个实验操作。下表所示为wget命令的参数以及参数的作用。
参数 | 作用 |
---|---|
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片视频等 |
-r | 递归下载 |
例如,尝试使用wget命令下载163镜像站中的某个RPM包。这个文件完整路径为
http://mirrors.163.com/centos/7/cloud/x86_64/openstack-queens/GitPython-1.0.1-5.el7.noarch.rpm
命令如下:
1 | [root@remilia ~]# wget http://mirrors.163.com/centos/7/cloud/x86_64/openstack-queens/GitPython-1.0.1-5.el7.noarch.rpm |
接下来尝试用wget递归下载该镜像源力的某个文件夹里的所有数据,然后会保存在当前目录下mirros.163.com文件夹中。执行该操作的命令为
wget -r -p http://mirrors.163.com/centos/7/cloud/x86_64/openstack-queens/repodata/
1 | [root@remilia ~]# wget -r -p http://mirrors.163.com/centos/7/cloud/x86_64/openstack-queens/repodata/ |
ps命令
ps命令
ps命令用于查看系统中的进程状态,格式为ps [参数]
ps命令一般和管道符一起使用,用来抓取某个服务进程对应的PID值。在windows中可以使用ctrl+shift+esc
呼出任务管理器。直接查看某个进程的PID。如图:
而Linux就需要通过命令来看了。常见的参数和作用如下表所示
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户) |
-u | 用户及其他详细信息 |
-x | 显示没有终端控制的进程 |
Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux系统中,有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示。
- R(运行):进程正在运行或在运行队列中等待
- S(中断):进程处于休眠。当某个条件形成后或者接收到信号的时候,则脱离休眠状态
- D(不可中断):进程不响应系统异步信号,即使用kill也不能将其中断。
- Z(僵死):进程已经终止,但进程描述符亦然存在,直到父进程调用wait4()系统函数后将进程释放
- T(停止):进程收到停止信号后停止运行
在执行 ps -aux之后会看到如下结果
1 | [root@remilia ~]# ps -aux |
其中的一些参数意义如下表格
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
---|---|---|---|---|---|---|---|---|---|---|
进程的所有者 | 进程ID号 | 运算器占用率 | 内存占用率 | 虚拟内存使用量(单位是KB) | 占用的固定内存量(单位是KB) | 所在终端 | 进程 状态 | 被启动 的时间 | 实际使用 CPU的时间 | 命令名称与参数 |
top命令
top命令用于动态地监视进程活动与系统负载信息等。其格式为top
top命令非常强大。可以看作是Linux中的任务管理器。由于运行了top之后其中的数据会不断变换,这里只截取一次,实际是不停变化的。按q可退出。结果如下:
1 | [root@remilia ~]# top |
在如上的结果中,前5行为系统整体的统计信息。其所代表的含义如下
- 第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
- 第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
- 第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
注:第3行中的数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
pidof命令
pidof命令用于查询某个指定服务进程的PID值,格式为“pidof {[参数][服务名称]}”。
每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程。例如,可以使用如下命令来查询本机上sshd服务程序的PID:1
2[root@remilia ~]# pidof sshd
2156
kill命令
kill命令用于终止某个指定PID的服务进程,格式为“kill [参数][进程PID]”。
接下来,我们使用kill命令把上面用pidof命令查询到的PID所代表的进程终止掉,其命令如下所示。这种操作的效果等同于强制停止sshd服务。1
[root@remilia ~]# kill 2156
killall命令
killall命令用于终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数][进程名称]”。
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时可以使用killall命令来批量结束某个服务程序带有的全部进程。下面以httpd服务程序为例,来结束其全部进程。由于RHEL7系统默认没有安装httpd服务程序,因此此时只需看操作过程和输出结果即可。
1 | [root@remilia ~]# pidof httpd |
注:
如果我们在系统终端中执行一个命令后想立即停止它,可以同时按下Ctrl + C组合键(生产环境中比较常用的一个快捷键),这样将立即终止该命令的进程。或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加上一个&符号,这样命令将进入系统后台来执行。
系统状态检测命令
作为一名合格的运维人员,想要更快、更好地了解Linux服务器,必须具备快速查看Linux系统运行状态的能力,因此接下来会逐个说明与网卡网络、系统内核、系统负载、内存使用情况、当前启用终端数量、历史登录记录、命令执行记录以及救援诊断等相关命令的使用方法。这些命令都超级实用。是必须掌握的命令。
ifconfig命令
ifconfig命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备][参数]”。
使用ifconfig命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet参数后面的IP地址、ether参数后面的网卡物理地址(又称为MAC地址),以及RX、TX的接收数据包与发送数据包的个数及累计流量:
1 | [root@remilia ~]# ifconfig |
uname命令
uname命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”。
在使用uname命令时,一般会固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。
1 | [root@remilia ~]# uname -a |
顺带一提,如果要查看当前系统版本的详细信息,则需要查看redhat-release文件,其命令以及相应的结果如下:
1 | [root@remilia ~]# cat /etc/redhat-release |
free命令
free用于显示当前系统中内存的使用量信息,格式为“free [-h]”。
为了保证Linux系统不会因资源耗尽而突然宕机,运维人员需要时刻关注内存的使用量。在使用free命令时,可以结合使用-h参数以更人性化的方式输出当前内存的实时使用量信息。表2-8所示为在的电脑上执行free -h命令之后的输出信息。需要注意的是,输出信息中的中文注释是额外添加的内容,实际输出时没有相应的参数解释。
内存总量 | 已用量 | 可用量 | 进程共享的内存量 | 磁盘缓存的内存量 | 缓存的 内存量 | |
---|---|---|---|---|---|---|
total | used | free | shared | buffers | cached | |
Mem | 1.8GB | 1.3GB | 542MB | 9.8MB | 1.6MB | 413MB |
-/+ buffers/cache | 869MB | 957MB | ||||
Swap | 2.0GB | 0 | 2.0GB |
who命令
who用于查看当前登入主机的用户终端信息,格式为“who [参数]”。
这三个简单的字母可以快速显示出所有正在登录本机的用户的名称以及他们正在开启的终端信息。
1 | [root@remilia ~]# who |
执行who命令的结果
登录的用户名 | 终端设备 | 登录到系统的时间 |
---|---|---|
root | :0 | 2018-04-24 17:52 (:0) |
root | pts/0 | 2018-04-24 17:52 (:0) |
last命令
last命令用于查看所有系统的登录记录,格式为“last [参数]”。
使用last命令可以查看本机的登录记录。但是,由于这些信息都是以日志文件的形式保存在系统中,因此入侵者可以很容易地对内容进行篡改。千万不要单纯以该命令的输出信息而判断系统有无被恶意入侵!
1 | [root@remilia ~]# last |
history命令
history命令用于显示历史执行过的命令,格式为“history [-c]”。
执行history命令能显示出当前用户在本地计算机中执行过的最近1000条命令记录。如果觉得1000不够用,还可以自定义/etc/profile文件中的HISTSIZE变量值。在使用history命令时,如果使用-c参数则会清空所有的命令历史记录。还可以使用“!编码数字”的方式来重复执行某一次的命令。
1 | [root@remilia ~]# history |
历史命令会被保存到用户家目录中的.bash_history文件中。Linux系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用cat命令查看其文件内容。
1 | [root@remilia ~]# cat ~/.bash_history |
要清空当前用户在本机上执行的Linux命令历史记录信息,可执行如下命令:
1 | [root@remilia ~]# history -c |
sosreport命令
sosreport命令用于收集系统配置及架构信息并输出诊断文档,格式为sosreport。
当Linux系统出现故障需要联系技术支持人员时,大多数时候都要先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术支持人员能够远程解决一些小问题,亦或让他们能提前了解某些复杂问题。在下面的输出信息中,加粗的部分是收集好的资料压缩文件以及校验码,将其发送给技术支持人员即可:
1 | [root@remilia ~]# sosreport |
工作目录切换命令
工作目录指的是用户当前在系统中所处的位置。由于工作目录会牵涉系统存储结构相关的知识,因此后面将详细讲解这部分内容。现在只需简单了解一下这里的操作实验即可,如果不能完全掌握也没有关系,毕竟Linux系统的知识体系太过庞大,每一位初学人员都需要经历这么一段时期。
pwd命令
pwd命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”。
1 | [root@remilia etc]# pwd |
cd命令
cd命令用于切换工作路径,格式为cd [目录名称]
这个命令应该是最常用的一个Linux命令了。可以通过cd命令迅速、灵活地切换到不同的工作目录。除了常见的切换目录方式,还可以使用“cd -”命令返回到上一次所处的目录,使用“cd..”命令进入上级目录,以及使用“cd ~”命令切换到当前用户的家目录,亦或使用“cd ~username”切换到其他用户的家目录。例如,可以使用“cd 路径”的方式切换进/etc目录中和/bin目录中,如果想返回上次切换的目录还可以通过“cd -”来实现。若想快速切换到当前用户家目录 可以通过cd ~实现
1 | [root@remilia bin]# cd /etc/ |
ls命令
ls命令用于显示目录中的文件信息,格式为“ls [选项] [文件] “
所处的工作目录不同,当前工作目录的文件也不同。使用-a参数可以看到所有文件(包括隐藏的文件)。使用“-l”参数可以查看文件属性,大小等详细信息。将这两个结合起来就像这样
1 | [root@remilia ~]# ls -al |
如果想查看某个目录的属性信息。就要加上-d参数。例如查看/etc的目录权限和属性信息:
1 | [root@remilia ~]# ls -ld /etc/ |
文件文本编辑命令
在Linux中,有着著名的“一切皆文件”的说法。而对服务程序进行配置自然也就是编辑程序的配置文件。本节将讲解几条用于查看文本文件内容的命令。至于编辑器使用起来比较复杂,因此将放到第4章与Shell脚本内容一起讲解。
cat命令
cat命令用于查看纯文本文件(内容较少的),格式为“cat [选项] {文件}”。
Linux系统中有多个用于查看文本内容的命令,每个命令都有自己的特点,比如这个cat命令就是用于查看内容较少的纯文本文件的。
如果在查看文本的时候顺便还想显示行号的话。可以加上-n参数
1 | [root@remilia ~]# cat -n anaconda-ks.cfg |
more命令
more命令用于查看纯文本文件(内容较多的),格式为“more [选项] {文件}”。
如果需要阅读长篇小说或者非常长的配置文件,那么cat就真的不适合了。因为一旦使用cat命令阅读长篇的文本内容,信息就会在屏幕上快速翻滚,导致自己还没有来得及看到,内容就已经翻篇了。因此对于长篇的文本内容,推荐使用more命令来查看。more命令会在最下面使用百分比的形式来提示你已经阅读了多少内容。你还可以使用空格键或回车键向下翻页:
1 | [root@remilia ~]# more anaconda-ks.cfg |
head命令
head命令用于查看格式为“head[选项] {文件}。
在阅读文本内容时,谁也难以保证会按照从头到尾的顺序往下看完整个文件。如果只想查看文本中前5行的内容,该怎么办呢?head命令可以派上用场了:
1 | [root@remilia ~]# head -n 5 anaconda-ks.cfg |
tail命令
tail命令用于查看纯文本文档的后N行或持续刷新内容,格式为“tail [选项] {文件}”。
我们可能还会遇到另外一种情况,比如需要查看文本内容的最后20行,这时就需要用到tail命令了。tail命令的操作方法与head命令非常相似,只需要执行“tail -n 20 文件名”命令就可以达到这样的效果。tail命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,这特别有用,此时的命令格式为“tail -f {文件名}”:
1 | [root@Remilia ~]# tail -f /var/log/messages |
tr命令
tr命令用于替换文本文件中的字符,格式为“tr {原始字符} {目标字符}”。
在很多时候,我们想要快速地替换文本中的一些词汇,又或者把整个文本内容都进行替换,如果进行手工替换,难免工作量太大,尤其是需要处理大批量的内容时,进行手工替换更是不现实。这时,就可以先使用cat命令读取待处理的文本,然后通过管道符把这些文本内容传递给tr命令进行替换操作即可。例如,把某个文本内容中的英文全部替换为大写:
1 | [root@Remilia ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z] |
wc命令
wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] {文本}”。
wc的参数以及作用:
参数 | 作用 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
在Linux系统中,passwd是用于保存系统账户信息的文件,要统计当前系统中有多少个用户,可以使用下面的命令来进行查询
1 | [root@Remilia ~]# wc -l /etc/passwd |
stat命令
stat命令用于查看文件的具体存储信息和时间等信息,格式为“stat {文件名称}”。
stat命令可以用于查看文件的存储信息和时间等信息,命令stat anaconda-ks.cfg
会显示出文件的三种时间状态:Access、Modify、Change。这三种时间的区别将在下面的touch命令中详细详解:
1 | [root@Remilia ~]# stat anaconda-ks.cfg |
cut命令
cut命令用于按“列”提取文本字符,格式为“cut [参数] {文本}”。
在Linux系统中,如何准确地提取出最想要的数据,这也是我们应该重点学习的内容。一般而言,按基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可。但是如果按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。passwd在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用下述命令尝试提取出passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:
1 | [root@Remilia ~]# cut -d: -f1 /etc/passwd |
diff命令
diff命令用于比较多个文本文件的差异,格式为“diff [参数] {文件}”。
在使用diff命令时,不仅可以使用—brief参数来确认两个文件是否不同,还可以使用-c参数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器。例如,先使用cat命令分别查看diffa和diffb文件的内容,然后进行比较:
1 | [root@Remilia ~]# echo welcom > diffa |
接下来使用diff —brief命令显示比较后的结果,判断文件是否相同:
1 | [root@Remilia ~]# diff --brief diffa diffb |
最后使用带有-c参数的diff命令来描述文件内容具体的不同:
1 | [root@Remilia ~]# diff -c diffa diffb |
文件目录管理命令
在Linux系统的日常运维工作中,还需要掌握对文件的创建、修改、复制、剪切、更名与删除等操作。
touch命令
touch命令用于创建空白文件或设置文件的时间,格式为“touch [选项] {文件}”。
在创建空白的文本文件方面,这个touch命令相当简捷,简捷到没有必要特别去研究。比如,touch test命令可以创建出一个名为test的空白文本文件。对touch命令来讲,有难度的操作主要是体现在设置文件内容的修改时间(mtime)、文件权限或属性的更改时间(ctime)与文件的读取时间(atime)上面。touch命令的参数及其作用如下
参数 | 作用 |
---|---|
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime与mtime |
接下来,我们先使用ls命令查看一个文件的修改时间,然后修改这个文件,最后再通过touch命令把修改后的文件时间设置成修改之前的时间 :
1 | [root@Remilia ~]# ls -l anaconda-ks.cfg |
mkdir命令
mkdir命令用于创建空白的目录,格式为“mkdir [选项] {目录}”。
在Linux系统中,文件夹是最常见的文件类型之一。除了能创建单个空白目录外,mkdir命令还可以结合-p参数来递归创建出具有嵌套叠层关系的文件目录。
1 | [root@Remilia ~]# mkdir -p a/b/c/d |
cp命令
cp命令用于复制文件或目录,格式为“cp [选项] {源文件} {目标文件}”。
大家对文件复制操作应该不陌生,在Linux系统中,复制操作具体分为3种情况:
如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作。
cp命令常用参数如下:
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数) |