目录
cp {将源文件或目录复制到目标文件或目录中}命令参数详解:
mv{用来对文件或目录重新命名,或者移动目录、文件}命令参数详解:
1.环境介绍
系统::centos7
连接终端::WindTerm
2.常用的命令汇总:
在Linux系统中常用的命令可以大致分为已下的几个类别:
文件和目录操作
ls:列出目录内容。
cd:改变当前目录。
pwd:显示当前工作目录。
mkdir:创建新目录。
rmdir:删除空目录。
touch:创建新文件或修改文件时间戳。
cp:复制文件或目录。
mv:移动或重命名文件或目录。
rm:删除文件或目录。
find:在文件系统中搜索文件。
文本处理
cat:查看文件内容。
echo:打印文本到标准输出。
grep:搜索文本并打印匹配行。
sed:流编辑器,用于文本替换。
awk:文本处理工具,用于模式扫描和处理。
磁盘和文件系统
df:显示磁盘空间使用情况。
du:显示文件和目录的磁盘使用情况。
fdisk:磁盘分区工具。
mkfs:创建文件系统。
mount:挂载文件系统。
umount:卸载文件系统。
网络
ping:测试网络连接。
ifconfig(或 ip addr):查看和配置网络接口。
netstat:显示网络状态和统计信息。
ssh:安全外壳协议,用于远程登录。
scp:安全复制文件。
wget:从网络下载文件。
系统管理
top:显示系统资源使用情况。
htop:更高级的系统监控工具。
ps:显示当前进程状态。
kill:发送信号给进程。
systemctl:管理系统服务和资源。
crontab:定时任务调度。
权限和所有权
chmod:更改文件或目录的权限。
chown:更改文件或目录的所有者。
chgrp:更改文件或目录的组。
压缩和解压缩
tar:打包和解包文件。
gzip:压缩或解压文件。
gunzip:解压gzip压缩的文件。
zip:压缩文件。
unzip:解压zip文件。
备份
dd:数据复制和转换。
rsync:文件复制和同步。
安全和权限
su:切换用户。
sudo:以另一个用户的权限执行命令。
chmod:更改文件权限。
chown:更改文件所有者。
脚本和自动化
bash:运行Bash脚本。
sh:运行Shell脚本。
source:执行脚本中的命令。
帮助和文档
man:查看命令的手册页。
info:查看命令的在线文档。
--help:显示命令的帮助信息。
3.基础的命令参数
以下介绍的是一些常用命令的详细参数以及一些实例::ls cp mv find
ls {显示目录内容列表} 命令参数详解:
-C # 多列输出,纵向排序。
-F # 每个目录名加 "/" 后缀,每个 FIFO 名加 "|" 后缀, 每个可运行名加“ * ”后缀。
-R # 递归列出遇到的子目录。
-a # 列出所有文件,包括以 "." 开头的隐含文件。
-c # 使用“状态改变时间”代替“文件修改时间”为依据来排序(使用“-t”选项时)或列出(使用“-l”选项时)。
-d # 将目录名像其它文件一样列出,而不是列出它们的内容。
-i # 输出文件前先输出文件系列号(即 i 节点号: i-node number)。
-q # 将文件名中的非打印字符输出为问号。(对于到终端的输出这是缺省的。)
-r # 逆序排列。
-t # 按时间信息排序。
-u # 使用最近访问时间代替最近修改时间为依据来排序(使用“-t”选项时)或列出(使用“-l”选项时)。
-1 # 单列输出。
-a, --all # 列出目录中所有文件,包括以“.”开头的文件。
-b, --escape # 把文件名中不可输出的字符用反斜杠加字符编号(就像在 C 语言里一样)的形式出。
-c, --time=ctime, --time=status
# 按文件状态改变时间(i节点中的ctime)排序并输出目录内
# 容。如采用长格式输出(选项“-l”),使用文件的状态改
# 变时间取代文件修改时间。【译注:所谓文件状态改变(i节
# 点中以ctime标志),既包括文件被修改,又包括文件属性( 如所有者、组、链接数等等)的变化】
-d, --directory # 将目录名像其它文件一样列出,而不是列出它们的内容。
-f # 不排序目录内容;按它们在磁盘上存储的顺序列出。同时启 动“ -a ”选项,如果在“ -f ”之前存在“ -l”、-g # 忽略,为兼容UNIX用。
-m, --format=commas
# 水平列出文件,每行尽可能多,相互用逗号和一个空格分隔。
-n, --numeric-uid-gid
# 列出数字化的 UID 和 GID 而不是用户名和组名。
-o # 以长格式列出目录内容,但是不显示组信息。等于使用“ --format=long --no-group
# ”选项。提供此选项是为了与其它版本的 ls 兼容。
-p # 在每个文件名后附上一个字符以说明该文件的类型。类似“ -F ”选项但是不 标示可执行文件。
-q, --hide-control-chars
# 用问号代替文件名中非打印的字符。这是缺省选项。
-r, --reverse
# 逆序排列目录内容。
-s, --size
# 在每个文件名左侧输出该文件的大小,以 1024 字节的块为单位。如果设置了 POSIXLY_CORRECT
# 的环境变量,除非用“ -k ”选项,块大小是 512 字节。
-t, --sort=time
# 按文件最近修改时间( i 节点中的 mtime )而不是按文件名字典序排序,新文件 靠前。
-u, --time=atime, --time=access, --time=use
# 类似选项“ -t ”,但是用文件最近访问时间( i 节点中的 atime )取代文件修
# 改时间。如果使用长格式列出,打印的时间是最近访问时间。
-w, --width cols
# 假定屏幕宽度是 cols ( cols 以实际数字取代)列。如未用此选项,缺省值是这
# 样获得的:如可能先尝试取自终端驱动,否则尝试取自环境变量 COLUMNS (如果设
# 置了的话),都不行则取 80 。
-x, --format=across, --format=horizontal
# 多列输出,横向排序。
-A, --almost-all
# 显示除 "." 和 ".." 外的所有文件。
-B, --ignore-backups
# 不输出以“ ~ ”结尾的备份文件,除非已经在命令行中给出。
-C, --format=vertical
# 多列输出,纵向排序。当标准输出是终端时这是缺省项。使用命令名 dir 和 d 时, 则总是缺省的。
-L, --dereference
# 列出符号链接指向的文件的信息,而不是符号链接本身。
-N, --literal
# 不要用引号引起文件名。
-Q, --quote-name
# 用双引号引起文件名,非打印字符以 C 语言的方法表示。
-R, --recursive
# 递归列出全部目录的内容。
-S, --sort=size
# 按文件大小而不是字典序排序目录内容,大文件靠前。
-T, --tabsize cols
# 假定每个制表符宽度是 cols 。缺省为 8。为求效率, ls 可能在输出中使用制表符。 若 cols 为0,则不使用制表符。
-U, --sort=none
# 不排序目录内容;按它们在磁盘上存储的顺序列出。(选项“-U”和“-f”的不
# 同是前者不启动或禁止相关的选项。)这在列很大的目录时特别有用,因为不加排序
# 能显著地加快速度。
-X, --sort=extension
# 按文件扩展名(由最后的 "." 之后的字符组成)的字典序排序。没有扩展名的先列出。
cp {将源文件或目录复制到目标文件或目录中}命令参数详解:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
实例1:
下面的第一行中是 cp 命令和具体的参数(-r 是“递归”, -u 是“更新”,-v 是“详细”)。接下来的三行显示被复制文件的信息,最后一行显示命令行提示符。这样,只拷贝新的文件到我的存储设备上,我就使用 cp 的“更新”和“详细”选项。
通常来说,参数 -r
也可用更详细的风格 --recursive
。但是以简短的方式,也可以这么连用 -ruv
。
cp -r -u -v /usr/men/tmp ~/men/tmp
实例2:
版本备份 --backup=numbered
参数意思为“我要做个备份,而且是带编号的连续备份”。所以一个备份就是 1 号,第二个就是 2 号,等等。
$ cp --force --backup=numbered test1.py test1.py
$ ls
test1.py test1.py.~1~ test1.py.~2~
实例3:
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.
或点点..
的形式。例如,下面的命令将指定文件复制到当前目录下:所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。
cp ../mary/homework/assign .
实例4:
将文件file复制到目录/usr/men/tmp
下,并改名为file1
cp file /usr/men/tmp/file1
实例5:
将目录/usr/men
下的所有文件及其子目录复制到目录/usr/zh
中
cp -r /usr/men /usr/zh
实例6:
当我们在Linux下使用cp命令复制文件时,有时会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:
cp aaa/* /bbb
# 复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。
cp -r aaa/* /bbb
# 这次依然需要按Y来确认操作,但是没有忽略子目录。
cp -r -a aaa/* /bbb
# 依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。
\cp -r -a aaa/* /bbb
# 成功,没有提示按Y、传递了目录属性、没有略过目录。
实例7:
递归强制复制目录到指定目录中覆盖已存在文件
cp -rfb ./* ../backup
# 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中
实例8:
拷贝目录下的隐藏文件如 .babelrc
cp -r aaa/.* ./bbb
# 将 aaa 目录下的,所有`.`开头的文件,复制到 bbb 目录中。
cp -a aaa ./bbb/
# 记住后面目录最好的'/' 带上 `-a` 参数
实例9:
复制到当前目录
cp aaa.conf ./
# 将 aaa.conf 复制到当前目录
mv{用来对文件或目录重新命名,或者移动目录、文件}命令参数详解:
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
实例1:
将目录/usr/men
中的所有文件移到当前目录(用.
表示)中:
mv /usr/men/* .
实例2:
移动文件
mv file_1.txt /home/office/
实例3:
移动多个文件
mv file_2.txt file_3.txt file_4.txt /home/office/
mv *.txt /home/office/
实例4:
移动目录
mv directory_1/ /home/office/
实例5:
重命名文件或目录
mv file_1.txt file_2.txt # 将文件file_1.txt改名为file_2.txt
实例6:
复制时创建备份
mv -bv *.txt /home/office
实例7:
无条件覆盖已经存在的文件
mv -f *.txt /home/office
find{在指定目录下查找文件}命令参数详解:
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-help或--help:在线帮助;
-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum<inode编号>:查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
-lname<范本样式>:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-type<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
实例1:
# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容
find . -type f -name "*" | xargs grep "140.206.111.111"
实例2:
列出当前目录及子目录下所有文件和文件夹
find .
实例3:
在/home
目录下查找以.txt结尾的文件名
find /home -name "*.txt"
实例4:
在/home
目录下查找以.txt结尾的文件名,但是忽略大小写
find /home -iname "*.txt"
实例5:
当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . \( -name "*.txt" -o -name "*.pdf" \)
或
find . -name "*.txt" -o -name "*.pdf"
实例6:
匹配文件路径或者文件
find /usr/ -path "*local*"
实例7:
根据文件类型进行搜索
find . -type 类型参数
补:类型参数的列表
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo
实例8:
基于目录的深度搜索:向下的最大深度为3
find . -maxdepth 3 -type f
基于目录的深度搜索:搜索出深度距离当前目录至少2个子目录的所有文件
find . -mindepth 2 -type f
实例9:
基于文件的时间戳进行查找:
find . -type f 时间戳
补:
UNIX/Linux文件系统每个文件都有三种时间戳:
访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间 (-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间 (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
基于文件的时间戳进行查找:搜索最近七天内被访问过的所有文件
find . -type f -atime -7
基于文件的时间戳进行查找:搜索恰好在七天前被访问过的所有文件
find . -type f -atime 7
基于文件的时间戳进行查找:搜索超过七天内被访问过的所有文件
find . -type f -atime +7
基于文件的时间戳进行查找:搜索访问时间超过10分钟的所有文件
find . -type f -amin +10
基于文件的时间戳进行查找:找出比file.log修改时间更长的所有文件
find . -type f -newer file.log
实例10:
根据文件的大小进行查找
find . -type f -size 文件大小单元
补:
文件大小单元:
b —— 块(512字节)
c —— 字节
w —— 字(2字节)
k —— 千字节
M —— 兆字节
G —— 吉字节
根据文件的大小进行查找:搜索大于10KB的文件(那么小于或等于10k,则是::小于-10k 等于=10k)
find . -type f -size +10k #查找大于10k
find . -type f -size -10k #查找小于10k
find . -type f -size =10k #查找等于10k
实例11:
删除匹配的文件:删除当前目录下所有.txt文件
find . -type f -name "*.txt" -delete