目录

一、touch命令

  touch命令用于创建或设置文件的时间(touch命令的-a,-m,-t,-d参数可以分别修改atime、ctime、mtime),这里可以参考我上篇文章“文本文件编辑命令”第八个命令的补充部分有touch修改时间的介绍https://www.cnblogs.com/HeiDi-BoKe/p/11757961.html#stat

  touch命令很简单,比较复杂的是设置文件内容的修改时间(mtime),文件权限或属性的更改时间(ctime)与文件的读取时间(atime)。

PS:创建文件相当于是修改文件的属性,时间以当前时间为准。文件不存在时创建空白文件;文件存在时,并不会覆盖文件,也不会将文件中已存在的内容清空。

格式:

touch [选项] 文件名
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件…]

参数:

-a或--time=atime或--time=access或--time=use  改变档案的读取时间记录。
-m或--time=mtime或--time=modify 改变档案的修改时间记录。
-c,--no-create 假如目的档案不存在,不会建立新的档案。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-r, --reference=FILE 使用参考档的时间记录可以设置与参考文件的时间一致,与 --file 的效果一样。
-d, --date=STRING 设定时间与日期,可以使用各种不同的格式。(同时修改atime和mtime)
-t STAMP 设定档案的时间记录,格式与 date 指令相同。

PS:-t参数:[[CC]YY]MMDDhhmm[.ss] 。CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch将把年数CCYY限定在1969--2068之内.MM为月数,DD为天,hh 为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时间。由于系统的限制,早于1970年1月1日的时间是错误的。

实例:

1)如果文件不存在则不创建文件


[root@VM_0_10_centos shellScript]# touch -c hello


2)按照file1.txt文件的时间,将file2.txt的时间更新为file1.txt文件的时间一致。



3)设置文件的时间戳


[root@VM_0_10_centos shellScript]# touch -t 201910310928.10 file1.txt
[root@VM_0_10_centos shellScript]# ll file1.txt
-rw-r--r-- 1 root root 54 Oct 31 09:28 file1.txt


4)将时间修改为指定时间(和上面的案例一样的效果)

  首先我们先查看下文件信息,然后通过echo修改文件,最后用touch -d指定为原来的时间,这样就能造成文件未被改动的假象(一般黑客很喜欢这样操作)


二、mkdir命令

  mkdir命令用于创建空白目录。与-p参数连用,可以递归创建目录,如果父目录不存在则先创建父目录在创建子目录,如果存在,则不创建父目录,直接创建子目录。

PS:创建已存在的目录会报错,加上-p可以解决

格式:

Usage: mkdir [OPTION]... DIRECTORY...

选项:

-m, --mode=MODE   为目录指定访问权限,与chmod类似。 不是a=rwx - umask
-p, --parents 如果目录已经存在,则不会有错误提示。若父目录不存在,将会创建父目录。该选项常用于创建级联目录。
-v, --verbose 为每个目录显示提示信息。
-Z set SELinux security context of each created directory to the default type
--context[=CTX] like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX

实例:

1)创建权限为777的的目录(目录默认权限为777-umask)


[root@VM_0_10_centos shellScript]# mkdir -m 777 dir1

[root@VM_0_10_centos shellScript]# ll -d dir1/
drwxrwxrwx 2 root root 4096 Oct 31 10:16 dir1/


PS:为目录指定权限,指定的权限为mode-umask。例如,mode=rx,umask=2,则最终权限为555-2=554,即rw-rw-r--。

2)创建目录时显示输出信息


[root@VM_0_10_centos shellScript]# mkdir -v dir2
mkdir: created directory ‘dir2’


3)一条命令创建多个目录(一个项目结构)


[root@VM_0_10_centos shellScript]# mkdir -vp scf/{bin/,doc/{info,prouct},lib/,logs/{info,product},service/deploy/{info,produ
ct}}

PS:多个目录用大括号"{}"括起来,并用逗号分隔。逗号前后不能有空白。

三、cp命令

  cp命令用于复制文件或目录。

格式:

Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...

PS:

  • 源文件:指定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R/r选项
  • 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
  • 所有目标文件目录必须存在,因为cp命令没有创建目录的权限

复制的三种情况:

  1)如果目标文件是目录,会把源文件复制到该目录中;

  2)如果目标文件也是普通文件,则会询问是否要覆盖它;

  3)如果目标文件不存在,则正常执行复制操作;

选项:

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;(对硬链接无效)
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-s:对源文件建立符号连接,而非复制文件;
-p:保留源文件或目录的属性;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

PS:“-l” 和 “-s” 选项

如果使用 “-l” 选项,则目标文件会被建立为源文件的硬链接;如果使用了 “-s” 选项,则目标文件会被建立为源文件的软链接。

这两个选项和 “-d” 选项不同,“d” 选项要求源文件必须是软链接,目标文件才会复制为软链接;而 “-l” 和 “-s” 选项的源文件只需是普通文件,目标文件就可以直接复制为硬链接和软链接。

实例:

1)复制文件的同时并重命名文件(将score文件复制到当前目录并将名称改为copyScore.txt)


[root@VM_0_10_centos shellScript]# ll score.txt
-rw-r--r-- 1 root root 110 Oct 21 14:53 score.txt
[root@VM_0_10_centos shellScript]# cp score.txt copyScore.txt

[root@VM_0_10_centos shellScript]# ll *core.txt
-rw-r--r-- 1 root root 110 Nov 1 11:08 copyScore.txt
-rw-r--r-- 1 root root 110 Oct 21 14:53 score.txt


2)交互式的将当前目录下以sh结尾的文件复制到/tmp/sh目录下(首先sh目录要存在)


[root@VM_0_10_centos shellScript]# mkdir -p /tmp/sh


3)复制时保留文件属性(在进行备份数据时很重要,因为cp复制是以当前时间和当前用户为为属性)


[root@VM_0_10_centos shellScript]# cp -p today.txt copy.txt


四、mv命令

  mv命令用于剪切文件或文件的重命名。剪切操作不同于复制操作,他会把源文件删除掉,只保留剪切后的文件。如果在同一目录中对一个文件进行剪切操作,其实就是对文件进行重命名。

格式:

Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

选项:

-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f: 在mv操作要覆盖某已有的目标文件时不给任何指示;
-b :若需覆盖文件,则覆盖前先行备份。
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

实例:

1)将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。


mv info/ logs


2)将多个文件移动到指定目录下


PS:可以使用正则匹配,也可以将要剪切的文件一个一个写上,空格隔开即可


3)将文件file1复制到指定目录,如果指定目录下已经存在file1,则询问是否覆盖


PS:如果不想有提示,加-f参数,强制覆盖(该操作比较危险,使用该参数前先确认是否要强制覆盖)

五、rm命令

  rm命令用于删除文件或目录。默认为删除文件,如果需要删除目录,加上-r参数。每次删除前会询问是否需要删除。想不出现这些确认信息,加-f参数,这里,我不介意大家加上-f参数哈。我自己也吃过一次亏,也是使用-rf参数,直接将服务器生产环境上/usr/目录下的文件全部删除了,导致命令全部使用不了,ssh,scp命令也使用不了,后面是联系的服务器供应商重装系统解决的。真的是有惊无险。

格式:

rm [选项] 文件

选项:

-i 删除前逐一询问确认(交互式)。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r, -R, --recursive 将目录及以下之档案亦逐一删除。
-I 删除文件超过3个或递归删除时,给与交互式一次(仅提示一次确认)
--no-preserve-root 不特殊处理根目录(慎用)

PS:-I(大写I)或 --interactive=once 选项(表示开启交互一次),则 rm 命令会提示用户是否继续整个删除操作,如果用户回应不是确认(即没有回复 y),则整个命令立刻终止。

实例:

1)删除多个文件,中间使用空格隔开即可。

2)删除不存在的文件,可以使用-f参数强制,忽略错误,如果不使用会报错“没有这个目录”

3)删除空目录可以使用-d参数

六、dd命令

  dd命令用于按照指定大小和个数的数据库来复制或转换文件。/dev/zero是一个设备文件,该文件不会占用系统存储空间,但却能提供无穷无尽的数据。可以将它作为dd的输入文件,来生成指定大小的文件。

格式:

Usage: dd [OPERAND]...
or: dd OPTION

选项:

if    输入的文件名
of 输出的文件名
bs 同时设置读入/输出的每个“块”的大小
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
count 设置要复制“块”的个数
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

实例:

1)使用dd命令,从社保文件/devzero文件中取出一个大小为560MB的数据块



2)如果想从光驱设备中的光盘制作成iso镜像文件,可以使用dd命令来压制出光盘镜像文件,将它变成一个可立即使用的iso镜像。



PS:bs相当于勺子大小,count相当于勺子盛饭的次数;勺子越大,勺子盛饭次数就越少。bs和count都是用于指定容量的大小,只要满足需求,可以任意搭配。

3)将本地/dev/vda1整盘备份到/dev/vda1_bak(在操作的时候考虑下自己服务器或虚拟机的磁盘大小)


[root@VM_0_10_centos shellScript]# dd if=/dev/vda1 of=/dev/vda1_bak


PS:这里你可以在运行这条命令之前查看下磁盘容量,运行完之后再查看下磁盘容量的变化

4)从备份文件恢复到指定盘


dd if=/dev/vda1_bak of=/dev/vda1 


5)备份today.txt全盘数据,并利用gzip工具进行压缩,保存到指定路径(dd好像不能备份目录)



6)将备份的文件恢复到指定的文件或数据盘(-d为解压,-c压缩)



7)备份与恢复MBR(磁盘开始的512个字节大小的MBR信息到指定文件)

备份:dd if=/dev/hda of=/root/image count=1 bs=512

count=1指仅拷贝一个块;bs=512指块大小为512个字节。

恢复:dd if=/root/image of=/dev/had

8)备份软盘



9)拷贝内存内容到硬盘


PS:这里我查了一些资料,但是没有解决掉这个问题,说是内核中限制了复制的容量。


10)拷贝光盘内容到指定文件夹,并保存为cd.iso文件


dd if=/dev/cdrom(hdc) of=/root/cd.iso


11)增加swap分区文件的大小


第一步:创建一个大小为256M的文件:
1
dd if=/dev/zero of=/swapfile bs=1024 count=262144
第二步:把这个文件变成swap文件(设置交换分区文件):
1
mkswap /swapfile
第三步:启用这个swap文件(立即启用交换分区内容):
1
swapon /swapfile
PS:这里会出现insecure permissions 0777, 0600 suggested.意思是建议把swap设置成644或600权限。 
第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
1
swapfile    swap    swap    default   0 0

参考网址:https://www.cnblogs.com/misswangxing/p/10911969.html

       https://blog.csdn.net/zhangxiaoyang0/article/details/82501209

12)销毁磁盘数据


dd if=/dev/urandom of=/dev/hda1


PS:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。

13)测试硬盘的读写速度



PS:通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。

14)确定硬盘的最佳块大小:


通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。


15)修复硬盘


dd if=/dev/sda of=/dev/sda dd if=/dev/hda of=/dev/hda


PS:当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。并且这个过程是安全、高效的。

16)利用netcat远程备份(没搞懂)

先安装nc:# yum -y install nc

dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234

在源主机上执行此命令备份/dev/hda:netcat -l -p 1234 | dd of=/dev/hdc bs=16065b

在目的主机上执行此命令来接收数据并写入/dev/hdc

netcat -l -p 1234 | bzip2 > partition.img

netcat -l -p 1234 | gzip > partition.img
PS:以上两条指令是目的主机指令的变化分别采用bzip2、gzip对数据进行压缩,并将备份文件保存在当前目录。
将一个很大的视频文件中的第i个字节的值改成0x41(也就是大写字母A的ASCII值)
echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc

七、file命令

  file命令用于查看文件的类型。

格式:

file [参数] 文件

参数:

-b  列出辨识结果时,不显示文件名称。
-c  详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L  直接显示符号连接所指向的文件的类别。
-m<魔法数字文件>  指定魔法数字文件。
-v  显示版本信息。
-z  尝试去解读压缩文件的内容。

实例:

1)查看文件类型

【Linux命令】文件目录管理命令7个(touch、mkdir、cp、mv、rm、dd、file)的更多相关文章

  1. linux文件增删拷(touch/mkdir/cp/mv/rm)

    touch或>命令创建普通文件: [root@localhost test]# touch a  ---创建单个文件 [root@localhost test]# ls a [root@loca ...

  2. 快捷键,命令之tab/ history / alias / ls / cd / mkdir / touch /tree /cp /mv /rm /cat /head/grep

    第一阶段 快捷键 1 第二阶段 文件和目录操作命令 1 1.1 date / useradd 1 1.2 echo 调用变量 2 1.3 whoami 查看用户名 2 1.4 tab命令补全 2 1. ...

  3. 自学Linux Shell3.4-文件处理命令touch cp mv rm

    点击返回 自学Linux命令行与Shell脚本之路 3.4-文件处理命令touch cp mv rm 1. touch命令 一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将 ...

  4. Linux下磁盘管理命令df与du

    Linux下磁盘管理命令df与du  对磁盘进行查看和控制的两个linux命令,df和du.  一.du命令 首先看一下du的help说明: [root@misdwh opt]# du --help ...

  5. Linux就该这么学--命令集合4(文件目录管理命令)

    1.touch命令用于创建空白文件与修改文件时间:(touch [选项] [文件]) 对于在Linux中的文件有三种时间: 更改时间(mtime):内容修改时间(不包括权限的) 更改权限(ctime) ...

  6. Linux就该这么学——新手必须掌握的命令之文件目录管理命令组

    touch命令 用途 : 用于创建空白文件或设置文件的时间 格式 : touch [选项] [文件] 参数 作用 -a 仅修改”读取时间”(atime) -m 仅修改”修改时间”(mtime) -d ...

  7. Linux 系统常用管理命令(精简笔记)

    Linux是一套免费使用和自由传播的类Unix操作系统,下面的笔记是我从鸟菜中摘抄出来的重要命令,并进行了一定的排版,摒弃了一些用不到的乱七八糟的命令,目的是在生产环境中能够快速的定位并查询需要命令的 ...

  8. [Linux] 010 权限管理命令 chmod

    1. 权限管理命令:chmod 命令名称:chmod 命令英文原意:change the permissions mode of a file 命令所在路径:/bin/chmod 执行权限:所有用户 ...

  9. linux笔记:linux常用命令-权限管理命令

    一个文件的权限只有root和所有者可以更改. 权限管理命令:chmod(改变文件或目录的权限) 权限的数字表示: 用权限加减的方式改变权限(u代表所有者,g代表所属组,o代表其他人,a代表所有人): ...

随机推荐

  1. XTTS Creates Alias on Destination when Source and Destination use ASM (Doc ID 2351123.1)

    XTTS Creates Alias on Destination when Source and Destination use ASM (Doc ID 2351123.1) APPLIES TO: ...

  2. 用POI 3.17读取EXCEL数据

    导入jar 包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...

  3. 07-Node.js学习笔记-路由

    路由 http://localhost:3000/index http://localhost:3000/login //路由是指客户端请求地址与服务器端程序代码的对应关系.简单的说,就是请求什么响应 ...

  4. StaticList

    到目前为止,我们还无法创建一个顺序存储结构线性表的对象出来,为什么呢?顺序存储空间究竟是什么,顺序存储空间的大小是多少? StaticList设计要点——类模板 使用原生数组作为顺序存储空间 使用模板 ...

  5. javascript地址引用

    javascript地址引用 var a = new Object(); a.price = ; var b = a; b.price = ; //b更改了属性值,a的属性值一起会被改变 alert( ...

  6. 记一次Tomcat启动报错Failed to start component [StandardEngine[Catalina].Standard

    今天启动项目的时候,发现tomcat一直报错,之前都一直没有问题的啊,提示       org.apache.catalina.LifecycleException: Failed to start ...

  7. idea实战技巧

    一.背景 为什么想写这个,因为编码一线更多的是实战,实战中,可能一个快捷键,一个小技巧,就能省很多时间. 本文会持续记录,持续更新. 二.技巧 1.全局替换(带正则) 场景是: 多profile的情况 ...

  8. sql server判断表存在

    在创建表.更改表结构.删除表或对表进行什么操作之前,一个比较严谨的做法是先判断该表是否已经存在. 在SQL Server中判断一个表是否存在,有两个方法,下面以diso表为例. 方法1 from sy ...

  9. Emoji 映射编码

    Emoji官网:https://emojipedia.org/ Name   Unified DoCoMo KDDI Softbank Google Wechat   black sun with r ...

  10. java基础(2):注释、关键字、标识符、数据

    1. 注释.关键字与标识符 大家可以安装一个文本编辑软件notepad++,有利于java代码的查看与编写. 1.1 程序注释 通常我们需要在源代码中添加文字用来对进行代码解释说明,但这些文字并不是J ...