1、文件和目录操作——详细介绍
1.ls:列出目录内容
示例:ls 目录内容
示例:ls -l 以长格式列出目录详细内容
示例:ls -a 增加显示隐含目录
其中:
蓝:目录;
绿:可执行文件;
红:压缩文件;
浅蓝:链接文件;
灰:其他文件;
红底白字:错误的链接文件
2.pwd:显示当前目录的路径
示例:pwd 显示当前工作目录
3.cd:切换目录
示例:cd 切换到当前用户的主目录 /home/用户名
cd
示例:cd ~ 切换到用户的主目录的快捷方式 /home/用户名
cd ~
示例:cd … 切换到上一级目录
cd ..
示例:cd - 切换到上一个工作目录
cd -
示例:cd 路径 切换到绝对路径 /home/用户名/路径
cd /home/aaa_user/ea_dir/g_dir
示例:cd 加路径 切换到相对路径(一般都在当前目录 的下一个路径)
cd ea_dir/g_dir
示例:cd / 切换到根目录
cd /
cd /..
连续返回上级目录
示例:cd …/…/…/… 切换到上4个目录
cd ../../../..
示例:cd …/… 切换到上2个目录
cd ../..
4.建立目录:mkdir 目录名
创建单个目录:
mkdir example
创建多个目录:只需在mkdir命令后用空格分隔每个目录名即可
mkdir dir1 dir2
创建嵌套目录:可以使用-p选项。例如,要创建parent/child/subchild
mkdir -p parent/child/subchild
指定目录权限:你也可以在创建目录时指定其权限。权限使用标准的Linux权限表示法(如755、700等)。例如,创建一个权限为755的目录:
mkdir -m 755 example
查看帮助信息
如果你不确定mkdir命令的具体用法或者有哪些选项可用,可以通过查看帮助文档来获取信息:
mkdir --help
或者查看手册页(man page):
man mkdir
5.删除空目录:rmdir 目录名
删除单个空目录
rmdir empty_dir
删除多个空目录
2. rmdir dir1 dir2 dir3
6.无条件删除子目录: rm -rf 目录名
没有提示,确定删除目录和内容
rm -rf /path/to/example_dir
有提示,确定删除目录和内容
rm -ri 目录路径
7.查看当前目录大小:du
du命令用于估计文件或目录的磁盘使用空间。它非常有用,特别是当你想要查看当前目录或其子目录占用的磁盘空间时。下面是一些du命令的基本用法:
直接使用 du -h,树状输出,大小和目录
du -h
1. 查看当前目录的总大小
要查看当前目录(不包括子目录)的大小,你可以使用:
du -sh .
这里的选项解释如下:
- -s 或 --summarize:显示总计,而不是列出每个子目录的大小。
- -h 或 --human-readable:以易读的格式(如KB、MB、GB)显示大小。
2. 查看当前目录及其所有子目录的大小
如果你想要查看当前目录及其所有子目录的大小,但不以树状结构显示,可以使用:
du -h --max-depth=1 .
这里的选项解释如下:
- –max-depth=1:限制显示的目录深度。1 表示只查看当前目录下的直接子目录大小,不递归查看更深层次的子目录。如果你想查看更深层次的子目录,可以增加数字(例如,–max-depth=2)。
3. 以树状结构查看当前目录及其所有子目录的大小
如果你想要以树状结构查看当前目录及其所有子目录的大小,可以使用:
du -h --max-depth=1 | sort -hr
这里的选项解释如下:
- sort -hr:对输出进行排序,-h 表示按人类可读的数字排序,-r 表示逆序(从大到小)。
4. 查看特定文件或目录的大小
如果你想要查看特定文件或目录的大小,只需将文件名或路径替换为.即可。例如,查看名为example.txt的文件大小:
du -sh example.txt
5. 排除某些目录或文件
如果你想在计算时排除某些目录或文件,可以使用–exclude选项。例如,排除名为node_modules的目录:
du -h --exclude=node_modules --max-depth=1 .
8.cp:复制文件或目录
1. 复制文件
cp source_file destination_file
这将复制source_file到destination_file。如果destination_file已存在,它将被覆盖。
2. 复制目录
cp -r /path/to/source_dir /path/to/destination_dir
使用-r或-R选项来递归复制目录及其内部所有文件和子目录。
这将复制source_dir目录到destination_dir目录中。
3. 保留原有属性(如时间戳)
cp -p example.txt example_copy.txt
这将复制example.txt到example_copy.txt,并保留原文件的修改时间和权限。
4. 交互式复制(询问是否覆盖文件)
cp -i example.txt example_copy.txt
如果example_copy.txt已存在,系统会询问用户是否要覆盖它。
5. 显示被复制的文件名(verbose模式)
基本用法:
cp -v source_file destination_file
使用-v选项来显示正在被复制的文件名。
示例:
cp -v example.txt example_copy.txt
这将显示正在复制的文件名。
6. 链接文件而非复制(硬链接或符号链接)
硬链接:
cp --reflink=always source_file destination_file
使用–reflink=always选项创建硬链接而非复制文件内容(在某些文件系统上支持)。这可以更快地创建硬链接,但需要源文件和目标文件位于同一文件系统上。
符号链接:
cp -s source_file destination_link
使用-s选项创建符号链接而非复制文件内容。符号链接是一个指向另一个文件的引用。
通过这些示例和选项,你可以根据需要灵活地使用cp命令来复制文件和目录。
示例:cp source_file destination_file 复制文件
9.mv:移动或重命名文件或目录
示例:mv old_name new_name 重命名文件
基本语法
mv [选项] 源文件 目标文件
mv [选项] 源文件1 源文件2 ... 目标目录
常见选项
- -i 或 --interactive:在覆盖文件之前提示用户确认。
- -f 或 --force:强制移动文件或目录,不提示用户确认,并覆盖目标位置的文件(如果存在)。
- -n 或 --no-clobber:不覆盖已存在的文件。
- -v 或 --verbose:显示命令执行过程中的详细信息。
示例用法
重命名文件
将文件 file1.txt 重命名为 file2.txt:
mv file1.txt file2.txt
移动文件
将文件 file1.txt 移动到 /home/user/Documents/ 目录:
mv file1.txt /home/user/Documents/
移动多个文件到一个目录
将 file1.txt 和 file2.txt 移动到 /home/user/Documents/ 目录:
mv file1.txt file2.txt /home/user/Documents/
强制移动(不提示覆盖)
强制将 file1.txt 移动为 file2.txt,即使 file2.txt 已存在也不提示用户确认:
mv -f file1.txt file2.txt
在覆盖前提示
在将 file1.txt 移动为 file2.txt 之前提示用户确认(如果 file2.txt 已存在):
mv -i file1.txt file2.txt
显示详细信息
显示移动过程中的详细信息:
mv -v file1.txt /home/user/Documents/
移动目录
将目录 dir1 移动到 /home/user/Documents/:
mv dir1 /home/user/Documents/
注意:当移动目录时,如果目标位置已经存在一个同名目录,mv 命令将会把源目录移动到目标目录内,而不是替换它。
使用 mv 命令时要小心,特别是当使用 -f 选项时,因为这会覆盖目标文件而不提示,可能导致数据丢失。如果不确定,可以先使用 -i 选项来让命令在覆盖文件之前提示你确认。
10.touch:创建空文件或更新文件的时间戳
创建新文件
要创建一个新的空文件,只需使用touch命令后跟文件名:
touch filename.txt
这将会在当前目录下创建一个名为filename.txt的空文件。如果文件已经存在,这个命令将不会改变文件的内容,但会更新文件的访问和修改时间。
更新文件时间戳
touch命令也可以用来更新现有文件的时间戳。这包括文件的访问时间(atime)和修改时间(mtime)。
touch existingfile.txt
这将更新existingfile.txt的访问和修改时间为当前时间。
使用特定时间更新文件时间戳
你还可以使用-t选项来指定一个特定的时间来更新文件的时间戳。时间格式通常是[[CC]YY]MMDDhhmm[.ss]:
touch -t 202502081200 filename.txt
这将把filename.txt的时间戳设置为2025年2月8日12:00。
创建多个文件
touch命令可以同时创建多个文件:
touch file1.txt file2.txt file3.txt
这将在当前目录下创建三个新的空文件:file1.txt、file2.txt和file3.txt。
更改文件的访问时间或修改时间
使用-a选项可以只更改文件的访问时间,而不改变修改时间;使用-m选项可以只更改文件的修改时间,而不改变访问时间:
touch -a filename.txt # 只更新访问时间
touch -m filename.txt # 只更新修改时间
显示详细信息
在使用touch命令时,如果你想要看到命令执行的结果,可以使用-c(或–no-create)选项与-v(或–verbose)选项组合。这样,如果文件不存在,touch命令不会创建它,但会显示一个消息说明文件不存在:
touch -cv filename.txt
如果文件已经存在,它将显示文件的名称以及更新后的时间戳。
注意事项
在使用touch命令时,请确保你有足够的权限在指定目录下创建文件或更新文件的时间戳。
如果文件名包含特殊字符或空格,请记得使用引号将文件名括起来,例如touch “my file.txt”。
2. 文件内容查看和编辑
8.浏览文件:more 文件名.txt;less 文件名.txt
9.复制文件: cp 源文件 目标文件 (-r:包含目录)
10.查找文件:(1)find (2)locate 命令名
11.链接:
(1)建立hard链接:ln 来源文件 链接文件(-d:创建目录链接);(2)建立符号链接:ln -s 来源文件 链接文件
cat:查看文件内容
示例:cat file.txt 显示文件内容
more:分页查看文件内容
示例:more file.txt 分页显示文件内容
less:分页查看文件内容,支持更多交互操作
示例:less file.txt 类似more,但功能更强大
查看文件
基本语法是less [选项] [文件名]。可以在终端中输入less example.txt。
退出less
- 在less界面中,按下q键即可退出。如果按下q键无法退出,可以尝试使用Ctrl+C组合键来强制退出。另外,也可以使用Ctrl+Z组合键将less命令放入后台运行,然后使用kill命令来结束该进程。
find:在文件系统中搜索文件
示例:find /home -name “*.txt” 在/home目录下搜索所有.txt文件
grep:在文件中查找指定模式的文本
示例:grep “pattern” file.txt 在file.txt中搜索包含"pattern"的行