此篇博客的指令运行环境为vmware下的ubuntu2020.04
1、文件显示
1.1 cat
功能:显示文本文件的内容
//常见用法
gec@gec-sakura:~/test$ ls
hello.c test.txt
gec@gec-sakura:~/test$ cat hello.c //显示文本文件内容
#include <stdio.h>
int main(int argc,char** argv)
{
printf("hello world!\n");
return 0;
}
gec@gec-sakura:~/test$ cat -n hello.c //cat -n 文件名字 ---> 显示文本文件内容(显示行号)
1 #include <stdio.h>
2
3 int main(int argc,char** argv)
4 {
5 printf("hello world!\n");
6
7 return 0;
8 }
gec@gec-sakura:~/test$ cat -A hello.c //cat -A 文件名字 ---> 显示文本文件内容(含不可见字符)
#include <stdio.h>$
$
int main(int argc,char** argv)$
{$
^Iprintf("hello world!\n");$
$
^Ireturn 0;$
}$
注意:
在某些情况下,我们可能需要检测文件中那些不可见的字符。比如在Windows系统中编辑了程序源文件,放到Ubuntu系统中编译可能会出现字符错误,这是因为Windows系统中的某些回车符、制表符跟Ubuntu系统的不一致,导致无法编译,而这些字符是不可见的,因此可以使用上述 cat -A 来识别。
1.2 head/tail
功能:查看指定文件的头部/尾部内容
//常见用法
file.name为文件名字 -n为 n为展示的行数
gec@ubuntu:~$ head file.name
gec@ubuntu:~$ head -n file.name
gec@ubuntu:~$ tail file.txt
gec@ubuntu:~$ tail -n file.name
gec@gec-sakura:~/test$ head -4 hello.c
#include <stdio.h>
int main(int argc,char** argv)
{
gec@gec-sakura:~/test$ tail -4 hello.c
printf("hello world!\n");
return 0;
}
1.3 less/more
功能:以分页方式查看长文件
//常见用法:
//file.name 为 文件的名字
gec@ubuntu:~$ less file.name
gec@ubuntu:~$ more file.name
//more
按enter一行一行的显示,空格键一屏一屏的显示,按q退出
//less
方向键上/下,按q退出
1.4 od
功能:查看二进制文件
//常见用法
file 为 二进制文件的名字
gec@ubuntu:~$ od -x file --> 以十六进制查看file
gec@ubuntu:~$ od -o file --> 以八进制查看file
gec@ubuntu:~$ od -d file --> 以十进制查看file
gec@ubuntu:~$ od -b file --> 以二进制查看file
2、文件复制
2.1 cp(copy)
功能:复制文件或者复制整个目录
//常见用法
gec@ubuntu:~$ cp file1 file2 ==> 将文件file1复制为file2
gec@ubuntu:~$ cp dir1/ dir2/ -r ==> 将目录dir1/复制为dir2/
注意:如果file2 或 dir2 已存在,则将会被覆盖
cp【options】SOURCE DEST
SOURCE:源文件。即可以是普通文件,也可以是目录
DEST:目标文件。即可以是普通文件,也可以是目录
options:-r: recursive(递归),若DEST是目录文件,必须要用递归删除。
-f: force(强制)。非交互模式
2.2 scp(security copy)
功能:跨网络复制文件或者复制整个目录
//常见用法
将远程主机x.x.x.x中的文件a.txt复制到当前目录下,file.name 为 文件名字
gec@ubuntu:~$ scp user@x.x.x.x:/home/gec/file.name .
注意:
user是源文件所在主机的用户名。
x.x.x.x是源文件所在主机的IP地址。
成功执行上述命令后,需要输入主机x.x.x.x中用户user的密码方可复制文件。
3、创建与删除
3.1 touch
功能:1、在文件存在的情况下:将文件最近修改时间更新为当前时间
2、在文件不存在的情况下:创建一个空文件
//假设test.txt已存在
gec@gec-sakura:~/test$ ls -l
总用量 28
-rwxrwxr-x 1 gec gec 16696 3月 1 14:25 hello
-rw-rw-r-- 1 gec gec 94 3月 1 14:11 hello.c
-rw-rw-r-- 1 gec gec 5 2月 28 18:55 test.txt
gec@gec-sakura:~/test$ touch test.txt
gec@gec-sakura:~/test$ ls -l
总用量 28
-rwxrwxr-x 1 gec gec 16696 3月 1 14:25 hello
-rw-rw-r-- 1 gec gec 94 3月 1 14:11 hello.c
-rw-rw-r-- 1 gec gec 5 3月 1 14:49 test.txt
//假设test.c不存在
gec@gec-sakura:~/test$ touch test.c
gec@gec-sakura:~/test$ ls -l
总用量 28
-rwxrwxr-x 1 gec gec 16696 3月 1 14:25 hello
-rw-rw-r-- 1 gec gec 94 3月 1 14:11 hello.c
-rw-rw-r-- 1 gec gec 0 3月 1 14:50 test.c
-rw-rw-r-- 1 gec gec 5 3月 1 14:49 test.txt
3.2 mkdir/rmdir(make/remove directory)
功能:创建/删除空目录
//常见用法
gec@ubuntu:~$ mkdir dir1 // --> 创建空目录dir1
gec@ubuntu:~$ mkdir dir2/dir3 -p // --> 创建嵌套空目录dir2/dir3
gec@ubuntu:~$ rmdir dir4 // --> 删除空目录dir4
gec@gec-sakura:~/test$ mkdir dir1
gec@gec-sakura:~/test$ ls
dir1 hello.c
gec@gec-sakura:~/test$ mkdir -p ./dir2/dir3
gec@gec-sakura:~/test$ ls
dir1 dir2 hello.c
gec@gec-sakura:~/test$ rmdir dir1
gec@gec-sakura:~/test$ ls
dir2 hello.c
注意:
如果目录不为空,则不能用rmdir删除,而只能用rm,比如上述的目录dir2,由于dir2中有dir3,因此dir2不是空目录,此时只能这么删除
3.3 rm(remove)
功能:删除文件或目录
//常见用法:
gec@ubuntu:~$ rm file.name //删除文件
gec@ubuntu:~$ rm -r dir/ //删除目录
gec@gec-sakura:~/test$ ls
dir2 hello.c
gec@gec-sakura:~/test$ rm hello.c
gec@gec-sakura:~/test$ rm dir2/
rm: 无法删除 'dir2/': 是一个目录
gec@gec-sakura:~/test$ rm dir2/ -r
gec@gec-sakura:~/test$ ls
gec@gec-sakura:~/test$
rm 【options】DEST 可选项是可以有可以没有
DEST:要删除的目标(普通文件,目录)
options:1、-r(recursive)递归 若DEST是目录文件,必须要用递归删除
2、-f(force)强制 非交互模式删除
交互模式:在正式删除之前会询问用户是否确实要删除
非交互模式:不询问用户是否确定删除
4、查找
4.1 find
功能:在指定目录中,按指定条件寻找文件
//常见用法
gec@ubuntu:~$ find /usr -name "*.h" ==> 在/usr中查找以.h结尾的文件
gec@ubuntu:~$ find /tmp -type s ==> 在/tmp中查找类型为套接字的文件
find xxx -name "xxx1"(在目录xxx下查找文件xxx1) ---->-name 后面输入的是文件名或者目录 find 目录名 -name "文件名"
find /home/gec -name "test.c" //("*.c")
find ./test -name "hello.c" ---->在指定的目录下查找字符串为的hello.c文件名 ,如果是当前目录下查找,可以省略./test
比如:
gec@ubuntu:~$ find ./test/ -name "stdio.h" ---->查找文件
./test/stdio.h
gec@ubuntu:~$ find ./test/ -name "dir1" ---->查找目录
./test/dir1
[13.1] 文件名
find 查找的目录 -name "查找的文件名或者目录"
[13.2] 文件类型
find 查找目录 -type 文件类型 比如: find ./ -type f
- 普通文件 find ./ -type f ------>查看当前目录下的普通文件
d 目录文件
b 块设备文件
c 字符设备文件
l 连接文件
p 管道文件
s 套接字文件
[13.3] 文件大小
find 查找目录 -size -10M
+:大于 +10k
-:小于-10k
等于10k 10k
单位:
k----小写
M-----大写
大于10k小于100k
比如:find . -size +10k -size -100k
find . -size +10k -size -20k
[13.4] 按日期
find 查找的目录 -ctime +(-)n
1) 创建日期 -ctime -n或者+n //creat
-n:n天以内
+n:n天以外
比如:find . -ctime -1
2) 修改日期:-mtime -n或者+n //modify
3) 访问日期:-atime -n或者+n //access
4.2 grep
功能:在指定文件或目录中,按指定条件寻找字符串
//常见用法:
gec@ubuntu:~$ grep 'apple' /usr -rn ==> 在/usr中查找包含apple的文件
grep 'test' xxx -Hn(在xxx文件中查找字符test,如果找到将行号与文件名打印出来)
grep 'main' test.c -Hn
grep 'test' * -Hrnw(在当前目录下查找所有文件字符串‘test’,如果查看到,则逐个打印出来,并且打印行号与文件名)
5、其它
5.1 diff(difference)
功能:比较两个文件的差异
gec@ubuntu:~$ diff file1 file2 ==> 检测文件file1和file2的差异信息
gec@ubuntu:~$ diff dir1/ dir2/ -urN ==> 检测目录dir1/和dir2/的差异信息
gec@gec-sakura:~/test$ diff test.txt test2.txt
1d0
< 123
gec@gec-sakura:~/test$ diff test.txt test2.txt -urN
--- test.txt 2023-03-01 15:18:20.970710354 +0800
+++ test2.txt 2023-03-01 15:18:03.294663625 +0800
@@ -1 +0,0 @@
-123
5.2 file(determine file type)
功能:检测指定文件的格式信息
//常见用法:
gec@ubuntu:~$ file a.tar.bz2 ==> 检测文件a.tar.bz2的格式
gec@ubuntu:~$ file a.out ==> 检测文件a.out的格式
gec@gec-sakura:~/test$ file dir1
dir1: directory
gec@gec-sakura:~/test$ file test.txt
test.txt: ASCII text
5.3 mv(move)
功能:移动文件,或给文件重命名
//常见用法:
gec@ubuntu:~$ mv file dir/
gec@ubuntu:~$ mv file1 file2
移动:mv SOURCE DEST 把SOURCE移动到DEST中去
重命名:mv 1.txt 2.txt 把1.txt改名为2.txt
gec@gec-sakura:~/test$ ls
dir1 test2.txt
gec@gec-sakura:~/test$ mv test2.txt dir1/
gec@gec-sakura:~/test$ ls
dir1
gec@gec-sakura:~/test$ ls -l ./dir1/
总用量 0
-rw-rw-r-- 1 gec gec 0 3月 1 15:18 test2.txt
gec@gec-sakura:~/test$ mv dir1/ dir2/
gec@gec-sakura:~/test$ ls
dir2
5.4 wc
功能:计算字符数、单词数和行数
//常见用法:
gec@ubuntu:~$ wc ==> 计算从键盘输入的数据,以ctrl+d结束
gec@ubuntu:~$ wc file.txt ==> 计算文件file.txt的数据
gec@gec-sakura:~/test$ wc
auidhabudiahwduj
1 1 17
gec@gec-sakura:~/test$ ls
dir2
gec@gec-sakura:~/test$ wc ./dir2/test2.txt
0 0 0 ./dir2/test2.txt