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命令用于复制文件或目录。
Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...
源文件:指定源文件列表。
默认情况下,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命令用于剪切文件或文件的重命名。剪切操作不同于复制操作,他会把源文件删除掉,只保留剪切后的文件。如果在同一目录中对一个文件进行剪切操作,其实就是对文件进行重命名。
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命令用于删除文件或目录。默认为删除文件,如果需要删除目录,加上-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命令用于按照指定大小和个数的数据库来复制或转换文件。/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的数据块
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的文件: