文件管理

2024/6/23 Linux

# mkdir 新建文件夹

格式:mkdir [选项] 目录

例子:mkdir -p /path/to/directory,递归创建/path/to/directory

# cd 切换目录

格式: cd 目录

例子: cd .. ,进入上一级父目录

# pwd 显示当前路径

格式: pwd [选项]

例子: pwd ,查看当前所在目录

# ls 列出文件

ll 是 ls -l 的别名,参数 -l 成为长格式,列出当前文件夹下的详细内容。

从左到右依次是:文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后访问(修改)时间等。

第一部分是文件类型:- 普通文件 , d 目录文件,I 链接文件,p 管理文件, b 块设备文件, c 文件, s 套接字文件

第二部分是权限模式:r表示读取(read)、w表示写入(write),x表示执行(execute)

ls -a, a为all的首字母缩写,该命令可以列出系统的隐藏文件,隐藏文件以“.”开头。

# find 查找文件

find 命令在指定目录查找文件。语法:

find path -option [-print] [-exec -ok command] {} \;
1
  • path 表示查找目录的范围,即在哪里找文件,可以用Linux默认目录表示,例如:. (当前目录),~ (家目录),/ (根目录)。
  • option 表示查找规则条件,例如:按文件名(-name)查找文件。
  • print 表示把查找结果标准输出,一般为默认选项,可以不写。
  • exec 和 ok 可以对查找结果做进一步的指令操作,它们两者的不同在于 ok 在操作前询问用户,而 exec 不会。
  • "{} ;"为固定格式,它们之间有空格。

按照文件名(-name)查找文件

# 查找家目录中扩展名为“.log”的文件
find ~ -name "*.log"

# 查找 /etc/ 目录下以c开头或以conf结尾的文件
find /etc/ -name "c*" -o -name "*conf"
1
2
3
4
5

按文件大小(-size)查找文件

# 查找/tmp目录下小于512KB的文件
find /tmp -size -512k
1
2

按时间戳(-atime/-mtime/-ctime)查找文件

atime:access time,通常为最后读文件的时间;

mtime:modified time,通常为最后写文件的时间;

ctime:change time,通常为最后改变文件权限属性的时间。

时间戳参数还可以用分钟为单位,-atime/-mtime/-ctime对应-amin/-mmin/-cmin

可以通过 stat 命令查看文件的信息

[root@localhost0131 ~]# stat /etc/ssh/sshd_config 
  File: ‘/etc/ssh/sshd_config’
  Size: 3907            Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 354805      Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2024-06-23 09:15:10.048000526 +0800
Modify: 2019-08-09 09:40:39.000000000 +0800
Change: 2021-11-28 20:45:26.638590177 +0800
 Birth: -
1
2
3
4
5
6
7
8
9
10

# touch 新建空文件

touch命令可以新建空文件,更新文件修改时间

格式: touch [选项] 文件

例子: touch foo.txt ,创建foo.txt空文件

# mv 剪贴或重命名文件或文件夹

格式: mv [选项] 源文件或目录 目标文件或目录

例子: mv foo.txt foo.txt.backup ,将文件foo.txt重命名为foo.txt.backup

mv foo.txt backup ,将文件foo.txt移动到目录backup中

# cp 复制文件或文件夹

格式: cp [选项] 源文件或目录 目标文件或目录

例子: cp foo.txt foo.txt.backup ,将文件foo.txt拷贝一份副本foo.txt.backup

cp foo.txt backup ,将文件foo.txt复制到目录backup中

# rm 删除文件或文件夹

格式: rm [选项] 文件或目录

例子: rm foo.txt ,删除文件foo.txt

rm -rf foo ,将文件夹foo及其子文件夹中所有内容删除,其不用一一确认

# cat 查看文件全部内容

cat将一个文件的内容发送到标准输出设备,例如显示屏。

格式: cat [选项] 文件

例子: cat /etc/ssh/sshd_config ,显示文件sshd_config的内容

cat -n /etc/ssh/sshd_config ,显示文件sshd_config的内容,同时在文件每行前进行编号

# more 与 less 分屏查看长文件内容

more 命令从前向后读取文件。

格式: more [选项] 文件

例子: more /etc/ssh/sshd_config

按键 用途
按【Space】空格键 向下翻页
按【B】键 向上翻页
按【Q 】键 或 【Ctrl+C】组合键 退出当前界面

less是more命令的改良版,对more的交互快捷键是兼容的,支持【PgUp】和【PgDn】逐行阅读。

按键 用途
按【PgUp】键 向上一行
按【PgDn】键 向下一行
按【Enter】键 向下一行

# head 与 tail 查看文件指定内容

head 命令后直接跟文件名称默认会显示文件的前10行,如果想指定查看的行数可以使用参数-n。

tail 命令,查看文件的后几行。-f 参数可以用来动态查看文件的最后几行,一般用于监控日志文件或实时文件,占用提示符窗口而不会退出。

head nohub.out		# 查看文件nohub.out的前10行内容
head -20 nohub.out	# 查看文件nohub.out的前20行内容
tail -20 nohub.out	# 查看文件nohub.out的后20行内容
tail -n 20 -f nohub.out	# 动态查看文件nohub.out的后20行内容
1
2
3
4

# vi 与 vim 编辑文件

vi 有三种基本工作模式:命令模式、插入模式和末行模式。

插入模式的常用快捷键:

快捷键 功能
i 在光标前插入
a 在光标后插入
I 在光标所在行行首插入
A 在光标所在行行尾插入
o 在当前行的下面另起一行,并变为插入模式
O 在当前行的上面另起一行,并变为插入模式

插入模式的常用命令:

命令 作用
x 删除光标所在处字符
nx 删除光标所在处后n个字符
dd 剪切当前行/删除光标所在行
ndd 剪切当前行以下n行/删除光标所在行后n行
D 删除光标所在处到行尾的内容
dG 删除光标所在行到文件末尾的内容
:n1,n2d 删除指定范围的行
yy 复制当前行
nyy 复制当前行以下n行
yw 复制单词
y$ 复制光标到行尾
y^ 复制行首到光标
p 粘贴在光标所在行下
P 粘贴在光标所在行上
fC 快速移动到字符C
rC 替换光标所在处字符为字母C
R 从光标所在处开始替换字符,按Esc结束
u 取消上一步操作

末行模式的常用命令:

命令 功能
:set nu 设置行号
:set nonu 取消行号
:wq! 保存退出。:wq 是 write (存盘) 和 quit (退出) 的组合命令。
:q! 不保存强制退出

在末行模式中,值得一提的命令是查找与替换。

查找命令以 “/” 字符开始,后接被查找的字符,与 less 命令的查找快捷键相同。

命令 功能
n 跳转到下一个匹配字符串
N 跳转到上一个匹配字符串

例如查找字母t,输入“/t”,屏幕中就会反白显示查找的内容。

替换命令由三个反斜杠(///)连接而成,第一个反斜杠之前表示替换的范围,第一个和第二个反斜杠之间表示需要被替换的字符串,第二个和第三个反斜杠之间表示替换成的字符串。

例如::20,30s/set/SET/g 表示替换20~30行的所有set为SET,参数g表示全局替换,如果不加参数g,表示只替换本行的第一个匹配的字符串。

常用的定位命令:

命令 功能
gg 跳到第一行
G 跳到最后一行
nG 跳到第n行
:n 跳到第n行
0 移至光标所在行行首
$ 移至光标所在行行尾