Linux常用命令中,除了常见的mv、rm、cat、cp、find、ln等你们还知道有哪些命令呢?本文将介绍一下文件管理常见的命令。
ln 连接文件或目录
功能:ln ]指令用连接文件或目录,如同指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或者目录复制到目录中。若同时指定多个文件或者目录,且最后的目的地并非是一个已经存在的目录。则会出现错误信息。
语法:ln –s [源文件][目标文件] //创建软连接
参数
-b 删除,覆盖目标文件之前的备份。
-d 建立目录的硬连接。
-f 强行建立文件或目录的连接,不论文件或目录是否存在。
-i 覆盖既有文件之前先询问用户。
-n 把符号连接的目的目录视为一般文件。
-s 对源文件建立符号连接,而非硬连接。
-v 显示指令执行过程。
ln 软连接与硬连接
创建软连接
ln –s test.c ./myfile
创建了一个软链接:
创建了一个硬链接:
硬链接会创建独立的虚拟文件,其中包含了原始文件信息及位置。但是他们从根本上而言是同一个文件,引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件必须事先存在,只不过这次使用ln命令时不需要加入额外的参数了。
ln xxx xxx_l
在上面的例子中,我们使用了 ls -i 命令显示了xx*的inode编号以及长列表。注意,带有硬链接的文件共享inode编号。这是因为它们终归是同一个文件。
cat 全文本显示
参数
-n 由 1 开始对所有输出的行数编号
-b 只不过对于空白行不编号
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
cat可能是平常用的比较多的文件管理命令了,常见使用方法如下:
cat test.c //将.c文件显示在终端下
cat -n test.c//显示全文本信息,并且显示行号
cat 将test.c 文件合并到test1.c中,首先创建一个新文件touch test1.c
touch 改变文件或目录时间
功能:一是用来创建新的空文件。二是用touch指令可更改文件或目录的日期时间,包括存取时间和更改时间。
参数
-a 只更改存取时间。
-c 不建立任何文件。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 只更改变动时间。
-r 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
常见用法
touch project.c //创建一个新的文件
touch text.txt //
创建一个新的空文件,通过stat 命令 看看到文件大小、设备、Uid等信息。主要是下面的访问更改信息。
chmod 变更文件或目录的权限
功能:在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。
权限范围的表示法
u:User,即文件或目录的拥有者。
g:Group,即文件或目录的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
有关权限代号的部分
r:读取权限,数字代号为"4"。
w:写入权限,数字代号为"2"。
x:执行或切换权限,数字代号为"1"。
-:不具任何权限,数字代号为"0"。
参数
-c 效果类似"-v"参数,但仅回报更改的部分。
-f 不显示错误信息。
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v 显示指令执行过程。
将文件 test.txt 设为所有人皆可读取
chmod ugo+r test.txt
将文件 test.txt 设为所有人皆可读取
hmod a+r test.txt
此外chmod也可以用数字来表示权限
chmod 777 test
语法为:
chomd abc test
这里abc表示数据权限:
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
less 任意浏览搜索文本
功能:less命令可以向前浏览文件。
参数
-N 并且显示每行的行号
常见按钮
f #向前滚动一屏
b #向后滚动一屏
回车或j #向前移动一行
k #向后移动一行
G #移动到最后一行
g #移动到第一行
q #退出
find 查找文件或目录
功能:find指令用于查找符合条件的文件。任何位于参数之前的字符串都将被视为欲查找的目录。
列出当前目录及子目录下所有文件和文件夹
常见用法
在/home/目录下查找以.txt结尾的文件名
find /home -name “*.txt”
.txt文件太多,仅显示一部分信息。
找出/home下不是以.txt结尾的文件
find /home ! -name "*.txt"
find 根据文件时间戳进行搜索
语法: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
find 根据文件大小进行匹配
语法:find . -type f -size 文件大小单元
搜索大于5KB的文件
find . -type f -size +5k
搜索小于5KB的文件
find . -type f -size -5k
cp 复制文件或目录
功能:cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
参数:
-a 此参数的效果和同时指定"-dpR"参数相同。
-b 删除,覆盖目标文件之前的备份,备份文件会在字尾加上一个备份字符串。
-d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。
-f 强行复制文件或目录,不论目标文件或目录是否已存在。
-i 覆盖既有文件之前先询问用户。
-l 对源文件建立硬连接,而非复制文件。
-p 保留源文件或目录的属性。
-P 保留源文件或目录的路径。
-r 递归处理,将指定目录下的文件与子目录一并处理。
-s 对源文件建立符号连接,而非复制文件。
-u 使用这项参数后只会在源文件的更改时间较目标文件更新时或是 名称相互对应的目标文件并不存在,才复制文件。
-v 显示指令执行过程。
将文件test.c复制到目录myfile/下
交互式地将当前目录./中的以t打头的所有.c文件复制到目录myfile/中
mv 移动或更名现有的文件或目录
功能:mv可移动文件或目录,或是更改文件或目录的名称。
语法:mv [源文件] [目标文件]
参数
-b 若需覆盖文件,则覆盖前先行备份。
-f 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文 件或目录。
-i 覆盖前先行询问用户。
-u 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。
-v 执行时显示详细的信息。
将文件 myfile 移动到目录file文件下
mv myfile/ file/
rm 删除文件或目录
功能:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。
参数
-d 直接把欲删除的目录的硬连接数据删成0,删除该目录。
-f 强制删除文件或目录。
-i 删除既有文件或目录之前先询问用户。
-v 显示指令执行过程。
强制删除 当前目录下的 project.c 和test1.c文件。
rm -f project.c test1.c
总结
文本管理命令较多,可根据使用场景不同选择使用不同的命令。本文仅介绍一些常见用法,更多用法可使用man命令查看。
扫二维码关注微信公众号,获取技术干货