- Linux常用命令——文件管理
- Linux常用命令——文本编辑
- Linux常用命令——系统管理
- Linux常用命令——其他
文件管理
cp
复制
参数说明:
- -i 提示
- -r 复制目录及目录内所有项目
注意:命令行复制,如果目标文件已经存在,会提示是否覆盖,shell 脚本中,如果不加 -i 参数,则不会提示直接覆盖!
mv
移动文件(也可以修改文件名)
本质是 复制(cp)+删除(rm)
# 重命名filename1 -> filename2
mv filename1 filename2
# 移动文件 file -> dir
mv filenames dir
注意:当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录
which
在 PATH 指定的路径中,搜索某个系统命令的位置
返回第一个搜索结果(执行的哪个)
# 查看 ls 命令是否存在,执行哪个
which ls
# 查找cd
which cd
# 显示不存在,因为 cd 是内建命令
# 而 which 查找显示是 PATH 中的命令
whereis
只能用于程序名的搜索
参数说明:
- -b 查找可执行文件
- -m 查找帮助文件
- -s 查找源代码文件
- -u 查找其它文件
locate
在 /var/lib/slocate 数据库中查找,数据库由 updatedb 程序更新,updatedb 由 cron daemon 周期性调用。一般,搜索数据库(locate)比搜索整个硬盘(find)快,但如果档案最近才建立或刚更名,可能会找不到。在内定值中,updatedb 每天执行一次,可以修改 crontab 来更新设定值 (etc/crontab)。
参数说明:
- -l num 限制显示的行数
- -r 使用正则运算式
find
在磁盘中搜索文件
注意:
- 在find后第一个
- ( ) , !
之前的部分为 path,之后的是 expression - path 为空则使用当前路径
- expression 为空则使用 -print
参数说明:
- -name 按照文件名查找文件
- -perm 按文件权限查找文件
- -user 按文件属主查找文件
- -group 按照文件所属的组来查找文件
- -type 查找某一类型的文件
- -amin n 查找系统中最后N分钟访问的文件
- -atime n 查找系统中最后n天访问的文件
- -cmin n 查找系统中最后N分钟被改变文件状态的文件
- -ctime n 查找系统中最后n天被改变文件状态的文件
- -mmin n 查找系统中最后N分钟被改变文件数据的文件
- -mtime n 查找系统中最后n天被改变文件数据的文件
- 用减号
-
来限定更改时间在距今n日以内的文件 - 而用加号
+
来限定更改时间在距今n日以前的文件
- 用减号
- -maxdepth n 最大查找目录深度
- -depth 查找完目录中所有的文件后才进入子目录
- -prune 指出需要忽略的目录 (如果同时使用了-depth,那么-prune会被忽略)
- -newer 查找更改时间比某个文件新但比另一个文件旧的所有文件
- -print 将匹配的文件输出到标准输出
- -print0 在find的每一个结果之后加一个NULL字符,而不是默认的
\n
# 查找当前目录中以一个小写字母开头,最后是 4 到 9 加上 .log 结束的文件:
find . -name '[a-z]*[4-9].log' -print
# 在 test 目录查找不在 test4 子目录查找
find test -path 'test/test4' -prune -o -print
# 查找更改时间比文件 log2012.log新但比文件 log2017.log 旧的文件
find -newer log2012.log ! -newer log2017.log
特殊参数:
-exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。
-ok 和-exec的作用相同,只不过在执行每个命令前,让用户确定是否执行
# 在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)
find . -type f -mtime +10 -exec rm -f {} \;
# 当前目录下查找文件名以 passwd 开头,内容包含 "pkg" 字符的文件
find . -f -name 'passwd*' -exec grep "pkg" {} \;
# 用 exec 选项执行 cp 命令
find . -name '*.log' -exec cp {} test3 \;
四种查找的区别
- which 查看可执行文件的位置
- whereis 查看文件的位置
- locate 配合数据库查看文件位置
- find 实际搜寻硬盘查询文件名称
whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。
查看当前 PATH 配置:
echo $PATH
或使用 env
查看所有环境变量及对应值
chmod
改变文件访问权限(详见linux基础)
命令格式:
chmod [参数] [权限] [文件或目录]
参数说明:
- -c 显示更改的部分的信息
- -R 处理指定目录以及子目录
chown
改变文件指定的用户或组
参数说明:
- -c 显示更改的部分的信息
- -R 处理指定目录以及子目录
# 改变拥有者和群组 并显示改变信息
chown -c mail:mail log2012.log
ln
为文件在另外一个位置建立一个同步的链接
命令格式:
ln [option] source link
常用参数:
- -b 删除,覆盖以前建立的链接
- -s 软链接(符号链接)
- -v 显示详细处理过程
lsattr
显示文件属性
命令格式:
lsattr [参数] [文件或目录]
参数说明:
- -a 显示所有文件和目录
- -R 递归处理,将指定目录下的所有文件及子目录一并处理。
- -v 显示文件或目录版本。
- -V 显示版本信息。
chattr
改变文件属性
属性说明:
- a:仅允许追加数据
- i:不允许任何操作
命令格式:
chattr [参数][+/-/=<属性>][文件或目录]
参数说明:
- -R 递归处理,将指定目录下的所有文件及子目录一并处理。
- -v<版本编号> 设置文件或目录版本。
- -V 显示指令执行过程。
- +<属性> 开启文件或目录的该项属性。
- -<属性> 关闭文件或目录的该项属性。
- =<属性> 指定文件或目录的该项属性。
#用chattr命令防止系统中某个关键文件被修改:
#root用户也无法做任何操作
chattr +i /etc/resolv.conf
lsattr /etc/resolv.conf
#会显示如下属性
----i-------- /etc/resolv.conf
#让某个文件只能往里面追加数据,适用于各种日志文件:
chattr +a /var/log/messages
Comments NOTHING