一、文件与目录操作基础常用命令
1.查看文件情况
ls
-
Is:显示文件或目录
-
ls -l:列出文件详细信息
-
ls -a:列出隐藏文件和目录
-
ls -lh:以人类可读的格式显示文件大小
-
ls -F:区分Linux中的目录和文件
-
ls -lr:按字母顺序对文件和目录进行排序
-
ls -X:按字母顺序对文件扩展名进行排序
-
ls -R:递归列出文件
-
ls -ltr:按修改时间倒序显示文件
-
ls -tl:按时间和日期对文件进行排序
-
ls -lS:按降序显示文件大小
-
ls -i:显示文件和目录的 inode 编号
-
ls -m:逐个列出目录内容,并用逗号分隔
-
ls -Q:列出目录内容,所有目录内容都用双引号括起来
-
ls -g:在长列表格式中省略组所有权
-
ls *.文件类型: 列出特定文件类型
-
ls -n:列出文件的UID和GID
-
ls -l /tmp:列出目录 /tmp 下的文件
#创建 ls 命令别名 alias ls="ls -l" #删除先前定义的别名 unalias ls
2.查看文件内容
cat
基本语法:
$ # 输出 FILE 文件的全部内容
$ cat [OPTION] FILE
[!IMPORTANT]
输出 file.txt 的全部内容
$ cat file.txt
查看 test1.txt 与 test2.txt 连接后的内容
$ cat test1.txt test2.txt
[!note]
cat 是 concatenate(连接)的缩写,cat 工具实际的功能是连接多个文件,然后输出。当只有一个文件的时候,cat 就会直接输出这个文件,
less
less 命令用于查看文件内容。它可以显示大型文本文件,并允许用户在文件中上下翻页、搜索和跳转等操作。相比于使用 cat 命令直接输出文件内容,less 提供了更好的交互体验和更多的功能选项。
基本语法:
$ #查看文本文件
$ less [options] file
常用命令选项:
- -b <缓冲区大小> 设置缓冲区的大小
- -e 当文件显示结束后,自动离开
- -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
- -g 只标志最后搜索的关键词
- -i 忽略搜索时的大小写
- -m 显示类似more命令的百分比
- -N 显示每行的行号
- -o <文件名> 将less 输出的内容在指定文件中保存起来
- -Q 不使用警告音
- -s 显示连续空行为一行
- -S 行过长时间将超出部分舍弃
- -x <数字> 将"tab"键显示为规定的数字空格
- /字符串:向下搜索"字符串"的功能
- ?字符串:向上搜索"字符串"的功能
- b 向上翻一页
- d 向后翻半页
- h 显示帮助界面
- Q 退出less 命令
- u 向前滚动半页
- y 向前滚动一行
- 空格键 滚动一页
- 回车键 滚动一行
- [pagedown]: 向下翻动一页
- [pageup]: 向上翻动一页
常用快捷键
-
ctrl + F - 向前移动一屏
-
ctrl + B - 向后移动一屏
-
ctrl + D - 向前移动半屏
-
ctrl + U - 向后移动半屏
-
j - 下一行
-
k - 上一行
-
G - 移动到最后一行
-
g - 移动到第一行
-
q - 退出 less 命令
-
v - 使用配置的编辑器编辑当前文件
-
h - 显示 less 的帮助文档
-
&pattern - 仅显示匹配模式的行,而不是整个文件
示例
-
查看文本文件
$ less /path/to/file $ #/path/to/file是要查看的文本文件的路径。
-
显示行号
$ less -n /path/to/file $ # -n表示显示行号。
-
搜索文本
$ # 使用/或?命令来搜索文本。 $ $ / hello $ # /表示正向搜索,?表示反向搜索。按n键可以跳转到下一个匹配 项,按N键可以跳转到上一个匹配项。
-
标记文本
$ # 使用m命令来标记文本的某一行 $ $ m 10 $ # m表示标记,10表示要标记的行号。
标记之后,可以使用’命令来跳转到标记的行
$ ' a $ # '表示跳转到标记,a表示标记的名称。
-
3.创建目录
mkdir
$ # 创建一个目录,名为 DIR_NAME
$ mkdir [OPTION] DIR_NAME...
mkdir | 创建一个空目录 |
---|---|
mkdir -p | 如果中间目录不存在,则创建;如果要创建的目录已经存在,则不报错 |
mkdir -v | 每次创建新目录都显示信息 |
4.创建文件
touch
$ # 创建一个文件,名为 FILE_NAME
$ touch FILE_NAME...
5.编辑文件
vim编辑器
1>vim的三种模式
命令模式:不能对文件直接编辑,只能通过快捷键进行一些操作(如移动光标、复制、粘贴等),打开vim后默认进入命令模式;
末行模式:可在末行输入一些命令对文件进行操作(如搜索、替换、保存、退出、高亮等);
编辑模式:可对文件内容进行编辑;
2>vim的进入和退出
进入
基本语法:
$ vim 文件名称
如果文件已存在,则直接打开;
如果文件不存在,则vim编辑器会自动在内存中创建一个新文件
其他语法:
1:vim +数字 文件路径 //打开指定文件并将光标移动到指定行(数字对应的行数)
2:vim +/关键词 文件路径 //打开指定文件并高亮显示关键词
3:vim 文件路径1 文件路径2 文件路径3 //可同时打开多个文件,文件之间可切换操作
vim +10 test.txt
vim +/fofowall test.txt
vim test1.txt test2.txt
退出
:q //键盘输入英文:号进入末行模式,输入字母q再回车
3>vim模式切换
1.切换到命令模式
用vim指令打开文件时默认为命令模式;
按一下键盘ESC键可从编辑模式切换到命令模式;
按一下或连按两下ESC键或用键盘删除末行模式下的英文符号:可从末行模式切换到命令模式
2.切换到编辑模式
命令模式下键盘输入字母i或a(还有其他字母也可以这两个比较常用)可切换到编辑模式以编辑
3.切换到末行模式
命令模式下键盘输入英文符号:可切换到末行模式;
[!注意]
vim刚打开文件时默认为命令模式,命令模式可切换到末行模式或编辑模式,但末行模式与编辑模式之间不能直接相互切换;
4>命令模式
1.光标移动
- ^ **//**光标移动到光标所在行的行首
- $ **//**光标移动到光标所在行的行尾
- gg **//**光标移动到文件的首行
- G **//**光标移动到文件的尾行
- ctrl+b **//**向上翻屏
- ctrl+f **//**向下翻屏
- 数字G **//**光标移动到指定行(数字对应的行数)
- 数字+键盘方向键上**/**下 **//光标以光标所在行为准向上/**下移动指定行(对应的数字)
- 数字+键盘方向键左**/**右 **//光标以光标所在位置为准向左/**右移动指定个字符(对应的数字)
- :数字 **//**键盘输入英文符号:+数字再回车,光标移动到指定行(末行模式)
2.剪切和删除
- dd **//**剪切光标所在行,光标所在行的下面行会上移填补剪切行
- 数字dd **//**输入数字+字母dd,从光标所在行起向下剪切指定行,后面行会上移填补剪切部分
- D **//**剪切光标所在行但后面行不会上移填补剪切行,剪切行变空
3.复制和粘贴
- yy **//**复制光标所在行
- 数字yy **//**从光标所在行开始向下复制指定行,包括了光标所在行
- ctrl+v **//**键盘ctrl+v进入可视化复制,用键盘的方向键控制复制区域,然后键盘输入字母yy即可完成复制
- p **//**在光标处粘贴复制的内容
4.撤销和恢复
- :u **//**键盘输入符号:和字母u再回车(末行模式),撤销上一步操作
- ctrl+r **//**取消之前的撤销操作
5>末行模式
1.保存
- :w **//**键盘输入英文符号:+字母w再回车,保存当前文件
- :w 文件路径 **//**键盘输入英文符号:+字母w+空格+文件路径再回车,另存为指定文件
2.退出
- :q **//**退出当前文件
- :wq **//**键盘输入英文符号:+字母wq再回车,保存当前文件并退出
- :q! **//**键盘输入英文符号:+字母q+英文符号!再回车,不保存对文件的修改并退出
3.外部命令
- :q外部命令 **//**键盘输入英文符号:+字母q+外部命令再回车,外部命令如 ls 命令等,不退出文件的同时执行外部命令,执行后按任意键可以切换回文件
4.显示行号
- :set nu **//**显示文件每行的行号,显示行号是暂时的下次打开该文件不会再显示
- :set nonu **//**取消行号显示
5.搜索
- /关键词 **//**按关键词查找,查找到的内容会被高亮显示
- N**/**n **//光标移动到上/**下一个查找到的内容(命令模式)
- :nohl **//**取消查找到的内容的高亮显示,若不取消内容会一直高亮显示
6.替换
- 😒/搜索的内容/新内容 //用新内容替换光标所在行第一处被搜索到的内容
- 😒/搜索的内容/新内容/g //用新内容替换光标所在行全部被搜索到的内容
- :%s/搜索的内容/新内容 //用新内容替换整个文件每一行第一处被搜索到的内容
- :%s/搜索的内容/新内容/g //用新内容替换整个文件全部被搜索到的内容
7.切换文件
- :files **//**查看同时打开的所有文件的名称
%a表示它对应的文件是当前操作的文件,
#表示它对应的文件是上一个操作的文件,
- :open 文件名 **//**切换到其他打开的文件进行操作
- :bn **//**切换到下一个打开的文件
- :bp **//**切换到上一个操作的文件
6>编辑模式
命令模式下键盘输入以下字母可进入编辑模式进行对应的操作:
选项 | 含义 |
---|---|
i | 在光标所在字符前开始插入 |
a | 在光标所在字符前开始插入 |
o | 在光标所在行的下面另起一行开始插入 |
I | 在光标所在行的行首开始插入,若行首有空格则在空格后插入 |
A | 在光标所在行的行尾开始插入 |
O | 在光标所在行的上面另起一行开始插入 |
S | 删除光标所在行并开始插入 |
退出编辑模式键盘按ESC键
7>其他
-
syntax on/off **//**开启/关闭代码着色
-
set nu/nonu **//**显示/不显示行号
配置分类:
临时配置:在末行模式下输入配置,此配置是暂时的,下次打开文件时不会生效;
个人配置:个人配置文件路径是~/.vimrc,即当前用户家目录下的隐藏文件.vimrc,此配置只对当前用户永久生效,若不存在.vimrc文件可自行创建编辑加入vim配置;
全局配置:全局配置文件路是/etc/vim/vimrc,此配置对所有用户永久生效,可编辑全局配置文件加入vim配置;
优先级:
对于同一配置项,当个人配置存在此配置项时遵循个人配置,否则遵循全局配置;
- :x **//**文件未被修改直接退出,文件被修改过保存并退出
:x和:wq的区别:
使用:wq,文件的修改时间一定会改变;
使用:x,在文件未被修改的情况下,并不会改变文件的修改时间;
注意:一般不要使用 X ,X是给文件进行加密操作
vim 中计算器的使用
1.进入编辑模式
2.按下按键 “ctrl + R” ,然后输入 “ = ” ,此时光标变道最后一行
3.输入需要计算的内容,按下回车
异常退出
在编辑文件之后没有正常的去 wq (保存退出),而是遇到突然关闭终端或者断点的情况,则会显示:
解决办法:将交换文件(在编译过程中产生的临时文件)删除掉即可
- rm -f passwd.swp
6.复制文件、文件夹
cp
$ # 将 SOURCE 文件拷贝到 DEST 文件,拷贝得到的文件即为 DEST
$ cp [OPTION] SOURCE DEST
$ # 将 SOURCE 文件拷贝到 DIRECTORY 目录下,SOURCE 可以为不止一个文件
$ cp [OPTION] SOURCE... DIRECTORY
常用选项 | 含义 |
---|---|
-r ,-R ,–recursive | 递归复制,常用于复制目录 |
-f , --force | 覆盖目标地址同名文件 |
-u , --update | 仅当源文件比目标文件新才进行复制 |
-l ,–link | 创建硬链接 |
-s , --symbolic-link | 创建软链接 |
示例:
将
file1.txt
复制一份到同目录,命名为file2.txt
$ cp file1.txt file2.txt
将
file1.txt
、file2.txt
文件复制到同目录下的file
目录中$ cp file1.txt file2.txt ./file/
将
file
文件夹及其所有子文件复制到同目录下的test
文件夹中$ cp -r dir1 ./test/
7.移动文件和目录
$ # 将 SOURCE 文件移动到 DEST 文件
$ mv [OPTION] SOURCE DEST
$ # 将 SOURCE 文件移动到 DIRECTORY 目录下,SOURCE 可以为多个文件
$ mv [OPTION] SOURCE... DIRECTORY
常用选项 | 含义 |
---|---|
-f ,–force | 覆盖目标地址同名文件 |
-u ,–update | 仅当源文件比目标文件新才进行移动 |
8.删除文件和目录
$ # 删除 FILE 文件,FILE 可以为多个文件。
$ # 如果需要删除目录,需要通过 -r 选项递归删除目录
$ rm [OPTION] FILE...
常用选项 | 含义 |
---|---|
-f ,–force | 无视不存在或者没有权限的文件和参数 |
-r ,-R ,–recursive | 递归删除目录及其子文件 |
-d , --dir | 删除空目录 |
示例:
删除
file1.txt
文件:$ rm file1.txt
删除
test
目录及其下的所有文件:$ rm -r test/
删除
test1/
、test2/
、file1.txt
这些文件、目录。其中,这些文件或者目录可能不存在、写保护或者没有权限读写:$ rm -rf test1/ test2/ file1.txt
9.搜索文件和目录
$ # 在 PATH(路径)中根据 EXPRESSION(表达式)搜索文件
$ find [OPTION] PATH [EXPRESSION]
常用选项 | 含义 |
---|---|
-name ‘*.ext’ | 文件名后缀为 ext。其中 * 是任意匹配符 |
-type f/d/l/p/s/c/b | 查找指定文件类型的文件 |
-size +1M | 大于 1M 的文件,+ 代表大于这个大小,对应地,- 代表小于之后的大小 |
-or | 或运算符,代表它前后两个条件满足一个即可 |
find -maxdepth 【数字】 | 查找指定最大深度的文件 |
-maxdepth 【数字】-name 【文件名】 | 查找指定最大深度的指定文件 |
注:
(f:普通文件、d:文件夹、l:链接文件、p:管道文件、s: 槽、c:字符设备文件、b:块设备文件)
示例:
在当前目录搜索名为 report.pdf 的文件:
$ find . -name 'report.pdf'
在全盘搜索大于 1G 的文件:
$ find / -size +1G
在用户目录搜索所有名为 node_modules 的文件夹:
$ find ~/ -name 'node_modules' -type d
10.统计文件大小
操作 | 含义 |
---|---|
wc | 统计文本中行数、字数、字符数 |
wc -l | 将每个文件的行数及文件名输出到屏幕上 |
wc -c | 统计字节 |
11.查看文件大小
$ #查看FILE文件大小
$ du [OPTION] FILE
选项 | 含义 |
---|---|
-a | -all,显示目录中个别文件的大小 |
-b | -bytes,显示目录或文件大小时,以byte为单位 |
-c | -total,除了显示个别目录或文件的大小外,同花也显示所有文件或目录的总和 |
-k | -kilobytes,以KB(1024bytes)为单位输出。 |
-m | –megabytes ,以MB为单位输出。 |
-s | -summarize,仅显示总计,只列出最后加总的值。 |
-h | human-readable, 以K,M,G为单位,提高信息的可读性。 |
二、文件权限设置:chmod
Linux的基本权限有9个,分别是owner、group、others三种身份有各自的r(读)、w(写)、x(可执行)权限。
1、归属(所有权)
属主(owener):拥有该文件或目录的用户 --user – u
数组(group):拥有改文件或目录的组账号 --group – g
其他人(others):除了属主和数组的其他人 --others – o
2、访问权限
可读(read):允许查看文件内容,显示目录列表 -r —4
可写(write):允许修改文件内容,-w —2
vim 重定向,允许在目录中,可以在目录中创建、移动、删除文件或者子目录 -w
—mkdir 、touch 、rm 、vim 、mv、cp
可执行(execute):允许运行程序,切换目录 (cd) -x —1
- 可以使用数字表示权限:
r->4
w->2
x->1
- 当文件权限为“rwxrwxrwx”时,权限数字是:777
owner->4+2+1=7
group->4+2+1=7
others->4+2+1=7
3、给文件赋予权限的指令
$ chmod [权限数字] [文件名]
例如:给file文件授予可读可写可执行的权限:
$ chmod 777 file
2、owner、group和others三种身份各自的三个权限,用u、g、o代表三种身份,用a(all)代表所有身份,命令为:其中的权限为r|w|x。格式为:
设置权限:chmod u|g|o|a = 【设置权限】文件或目录
+添加权限:chmod u|g|o|a = +【添加权限】文件或目录
-减少权限:chmod u|g|o|a = -【减少权限】 文件或者目录
3、例如给文件的属主设置可读可写的权限:
$ chmod u=rwx file
三、 tar 操作存档、压缩文件
经常,我们希望将许多文件打包然后发送给其他人,这时候就会用到 tar
这个命令,作为一个存档工具,它可以将许多文件打包为一个存档文件。
通常,可以使用其自带的 gzip 或 bzip2 算法进行压缩,生成压缩文件:
$ tar [OPTIONS] FILE...
选项 | 含义 |
---|---|
-A | 将一个存档文件中的内容追加到另一个存档文件中 |
-r | 将一些文件追加到一个存档文件中 |
-c | 从一些文件创建存档文件 |
-t | 列出一个存档文件的内容 |
-v | 在打包、压缩或解压缩过程中显示详细信息 |
-x | 从存档文件中提取出文件 |
-f | 使用指定的存档文件 |
-C | 指定输出的目录 |
-z | 使用 gzip 算法处理存档文件 |
-j | 使用 bzip2 算法处理存档文件 |
-J | 使用 xz 算法处理存档文件 |
- 将
file1
、file2
、file3
打包为target.tar
:$ tar -c -f target.tar file1 file2 file3
- 将
target.tar
中的文件提取到test
目录中:$ tar -x -f target.tar -C test/
- 将
file1
、file2
、file3
打包,并使用 gzip 算法压缩,得到压缩文件target.tar.gz
:$ tar -cz -f target.tar.gz file1 file2 file3
- 将压缩文件
target.tar.gz
解压到test
目录中:$ tar -xz -f target.tar.gz -C test/
- 将
archive1.tar
、archive2.tar
、archive3.tar
三个存档文件中的文件追加到archive.tar
中$ tar -Af archive.tar archive1.tar archive2.tar archive3.tar
- 列出
target.tar
存档文件中的内容$ tar -t -f target.tar $ # 打印出文件的详细信息 $ tar -tv -f target.tar
注意:
组合 tar 的选项
与大部分 Linux 命令相同,tar 命令允许将多个单字母(使用单个
-
符号的)选项组合为一个参数,便于用户输入。例如,以下命令是等价的:$ tar -c -z -v -f target.tar test/ $ tar -czvf target.tar test/ $ tar -f target.tar -czv test/
四、文件数据排序:sort
sort命令可以用于文件数据排序,然后将排序结果打印出来。默认是字典序排序。
$ sort [OPTION] [FILE]
选项 | 含义 |
---|---|
-r | 倒叙排序,相反的顺序进行排序 |
-k(数字) | 指定第几列排序(后面接数字) |
-n | 按数值进行排序 |
-t | 指定分隔符,默认是空白 |
-u | 去重 |
-b | 忽略每行前面开始出的空格字符 |
-c | 检查文件是否已经按照顺序排序 |
-d | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符 |
-f | 排序时,将小写字母视为大写字母 |
-i | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符 |
-m | 将几个排序号的文件进行合并 |
-M | 将前面3个字母依照月份的缩写进行排序 |
示例:
-
sort:对b.txt文件进行排序:cat b.txt|sort
[root@localhost shell-test]# cat b.txt|sort a b cc 你好 数字 中国 [root@localhost lianxi]# cat bb.txt|sort 123 22 233 4
-
sort -n:按数值进行排序。cat bb.txt|sort -n
[root@sc-master lianxi]# cat bb.txt|sort -n 4 22 123 233
-
sort -r:倒叙排序。
[root@localhost shell-test]# cat b.txt|sort -r 中国 数字 你好 b cc a
-
sort -k(数字) -n :指定第几列排序。
[root@localhost lianxi]# cat b.txt|sort -k2 a 你好 数字 中国 b cc
-
sort -k(数字) -t:指定分隔符为“:”。分隔符按:指定第六列的排序。
root@localhost lianxi]# cat /etc/passwd |sort -k6 -t
参考文档: