零、基础命令:
现有内容:
查看当前内容:ls
切换路径:cd
新建文件:touch
新建文件夹:mkdir
删除:rm
复制:cp
移动:mv
查看文件内容:cat
创建共享文件夹
历史记录:history
man手册
常用快捷键、基础命令
1.基本认识
cl @ cl : ~ $
用户名 主机名 当前路径(家目录) 命令提示符
查看用户名:whoami
查看主机名:hostname
查看当前路径:pwd (当前用户目录)/home/cl
回到家目录:cd
2.linux文件系统标准
倒置树形方式
/:根目录
/home:存放所有用户的目录
/bin: 二进制文件,存放普通用户的命令
/dev:系统的设备文件
/lib:存放与系统有关的库文件
/mnt:挂载目录
/etc:配置文件
3.ls
功能:查看当前路径下的文件
ls -a:列出当前路径下所有文件,包括隐藏文件
ls -i:查看所有文件的inode号
ls -l:列出当前路径下所有文件的详细信息
d rwxrwxr-x 3 cl cl 4096 1月 8 15:47 demo
类型 权限 链接数 用户名 组名 大小 最后一次修改的时间 文件名
5.文件类型
bsp-lcd
b:块设备文件 block 存储设备(硬盘、sd卡) /dev
s:套接字文件 socket
p:管道文件 pipe
-:普通文件
l:软链接文件 类似于windows的快捷方式
c:字符设备文件 鼠标、键盘 /dev/input/mouse
d:目录文件 文件夹
6.文件权限:drwxrwxr-x
rwx rwx r-x
当前用户权限 组权限 其他用户权限
111 111 101
775
r:读权限
w:写权限
x:可执行
-:无权限
修改文件权限:chmod
chmod 777 demo
chmod 权限值 文件名
要把一个文件夹下所有子文件夹中文件赋权限
chmod -R 777 文件名
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help : 显示辅助说明
7.cd 切换路径
cd + 绝对路径 :从根目录下开始索引(pwd查看绝对路径)
cd + 相对路径 :相对于当前路径开始索引
. :表示当前
… :表示上一级
cd ~:回到家目录
cd :回到家目录
cd -:回到上一次的路径
cd /:回到根目录
8.新建文件touch/文件夹mkdir
新建普通文件:touch 普通文件名.后缀
同时创建多个普通文件:
touch 1.c 2.h 3.txt
创建一个同名文件:更新时间戳
新建目录文件:mkdir 文件夹名
同时创建多个文件夹:mkdir 文件夹1名 文件夹2名
创建一个同名文件夹:X!文件已存在
同时创建具有层级关系的文件夹:mkdir -p 文件夹1/文件夹2/文件夹3
9.删除 rm
删除普通文件 :rm + 普通文件名
删除文件夹: rm -r 文件夹名
强制删除文件夹: rm -rf 文件夹名
10.复制 cp
复制普通文件:cp 普通文件名 目标路径 :将普通文件复制并粘贴到目标路径下
复制文件夹: cp -r 目录文件名 目标路径 :将目录文件复制并粘贴到目标路径下
cp 普通文件名 路径/新文件名 :另存为
例:将1.c复制到Music下并改名为hello.c:
eg:cp 1.c ~/Music/hello.c
11.移动 mv
将文件/文件夹移动到目标路径下:
mv 文件/文件夹名 目标路径
重命名:
mv 原文件名 新文件名
12.查看文件内容 cat
cat
1.一次显示整个文件。
cat filename
这里可以是一个文件或多个文件,执行后会以追加的形式展示
2.从键盘创建一个文件。
cat > filename
按下Ctrl+D退出
只能创建新文件,不能编辑已有文件
3.将几个文件合并为一个文件。
cat file1 file2 > file
13.创建共享文件夹
首先在windows里面创建一个文件夹(不要有中文)
虚拟机->设置->选项->共享文件夹->总是启用->添加->选中之前创建的文件夹->完成(ubuntu子系统可以直接在windows下操作文件,就不需要共享文件夹了,但速度不快)
/mnt/ //后面就根据自己的路径找共享文件夹咯(ls查看当前路径下文件)
15、历史记录
history:查看历史命令
history num:显示num条历史记录
16、man手册
如何看懂man手册
man ls:查看ls命令的手册
man有多个手册,可用man [num] <关键字>来标识查看第几个手册
1:命令
2:系统调用
3:库函数
17、wc统计指定文件中的字节数、字数、行数
wc -w 文件名:显示单词个数
wc -l 文件名:显示行数
wc -c 文件名:显示字符个数
18、通配符
配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符
通配符 | 含义 | 实例 |
---|---|---|
星号(*) | 匹配任意长度的字符串 | 用file_*.txt,匹配file_wang.txt、file_Lee.txt、file3_Liu.txt |
问号(?) | 匹配一个长度的字符 | 用file_?.txt,匹配file_1.txt、file1_2.txt、file_3.txt |
方括号([…]) | 匹配其中指定的一个字符 | 用file_[otr].txt,匹配file_o.txt、file_r.txt和file_t.txt |
方括号([ - ]) | 匹配指定的一个字符范围 | 用file_[a-z].txt,匹配file_a.txt、file_b.txt,直到file_z.txt |
方括号([^…]) | 除了其中指定的字符,均可匹配 | 用file_[^otr].txt,除了file_o.txt、file_r.txt和file_t.txt的其他文件 |
常用的快捷键
放大终端:ctrl shift +
缩小终端:ctrl -
清屏:ctrl l
clear
查看历史命令:上下键
补全:tab
su:用户切换命令,默认为切换到超级管理员,su <用户名>为切换为相应用户
sudo:暂时以管理员权限执行某个命令
reboot:重启系统,需要超级管理员权限
reboot -f:强制重启
shutdown:关机
sudo shutdown -h now:立即关机
sudo shutdown -r now:立即重启
sudo shutdown -h +10 “byebye”:定时10分钟后关机
sudo shutdown -r +10 “byebye”:定时10分钟后重启
一、底行模式常用指令
:q>不保存退出
:q!不保存强制性退出
:w保存编辑
:wq保存并退出
:set nu显示行号
:set nonu取消行号
:Is 列出打开的所有文件
:n 切换打开的文件(向后)
:N 切换打开的文件(向前)
:prep切换打开的文件(向前)
:15 光标快速定位到第15行
/xxx 从光标位置向后搜索xxx,搜索到后定位到行
?xxx 从光标位置向前搜索xxx,搜索到后定位到行
一点五、插入模式:编辑文件
编辑文本: vi(默认)、vim + 文件名
三大模式切换(命令模式,(插入)编辑模式,(末行)底行模式)
i 切换到输入模式,以输入字符
esc 退出输入模式,切换到命令模式
: 切换到命令模式,以在最底一行输入命令。
底行模式:
保存:w
另存为: w 路径/文件名
退出:q
保存并退出:wq
强制操作:!
另存为:w 文件名
将文档还原成最原始的状态:e!
读取文件内容到当前文本:r 文件名
分屏:vsp
指定行复制:5,10y
指定行剪切:5,10d
查找: /str (str表示要查找的字符串)
替换: s/str1/str2 :将光标所在行的首个str1替换成str2
s/str1/str2/g :将光标所在行的所有str1替换成str2
% s/str1/str2/g :将全文的所有str1替换成str2
1,$ s/str1/str2/g :将全文的所有str1替换成str2
二、命令模式常用指令
h 光标左移
j 光标下移
k 光标上移
| 光标右移
x删除光标所在字符
u撤销编辑
ctrl+r恢复编辑
ctrl + f 向下翻页(front)
ctrI + b 向上翻页(back)
ctrI + d 向下翻半页(down)
ctrI + u 向上翻半页(up)
dd 删除光标所在行
32G定位到32行
o 在光标所在行的下方插入一-行并切换到输入模式
yy 复制光标所在的行
p 在光标所在行的下方粘帖
P 在光标所在行的上方粘帖
单行复制:yy
多行复制:nyy (n是行数)
粘贴:p
单行删除/剪切:dd
多行删除/剪切:ndd
撤销:u
恢复:ctrl r
光标移动到首行 gg
光标移动到末行 G
光标移动到行首:0
光标移动到行尾:$
代码格式整理:gg=G
/ 进入搜索状态
三、压缩-解压
Linux 系统中压缩文件夹的命令是 tar。你可以使用如下的命令压缩文件夹:
tar -czvf 压缩文件名.tar.gz 要压缩的文件夹名
这条命令会将:文件夹 要压缩的文件夹名 压缩成名为 压缩文件名.tar.gz 的压缩包。
你也可以使用 zip 命令来压缩文件夹:
zip -r 压缩文件名.zip 要压缩的文件夹名
这条命令会将文件夹 要压缩的文件夹名 压缩成名为 压缩文件名.zip 的压缩包。
tar –xvf file.tar 解压 tar包
tar -xzvf file.tar.gz 解压tar.gz
tar -xjvf file.tar.bz2 解压 tar.bz2
tar –xZvf file.tar.Z 解压tar.Z
unrar e file.rar 解压rar
unzip file.zip 解压zip
更多tar选项->tar命令选项补充
五、文件搜索
1、文件搜索:find
命令所在路径:/bin/find
语法:find [搜索范围] [匹配条件]
功能描述:文件搜索
1.1、locate
locate命令其实是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
locate命令的使用实例:
locate /etc/sh
搜索etc目录下所有以sh开头的文件。
locate ~/m
搜索用户主目录下,所有以m开头的文件。
locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
2、以文件名查找:find
find /etc -name init
搜素etc目录下以文件名为init的文件,注意是精确搜索
find /etc -name *init*
搜索etc目录下包含init的文件,*通配符匹配任何字符包括零个字符。
find /etc -name init???
搜索etc目录下init后加三个字符的文件。?通配符匹配一个字符
find /etc -iname init
搜索etc目录下init文件,iname为不区分大小写查找
3、以文件大小来查找:find
find / -size 204800
在根目录下查找大于100MB的文件。
204800为数据块,Linux中1数据块等于0.5KB,204800数据块=100MB
5、以所有者或所属组查找:find
find /home -user[或-gruop] shenchao
在家目录下查找所有者(或者所属组)为shenchao的文件。
6、根据时间属性来查找:find
find /etc -cmin 5
在/etc下查找5分钟内(超过或等于)被修改过属性的文件和目录
-amin 访问时间access
-cmin 文件属性change
-mmin 文件内容modify
注意一个是改变文件属性,一个是改变文件内容
7、查找的联合命令:find
在/etc目录下查找大于80MB小于100MB的文件
find /etc -size +163840 -a -size -204800
-a 表示and ,两个条件同时满足
-o 表示or,两个条件满足任意一个即可。
在/etc目录下查找inittab文件并显示其详细信息
find /etc -name inittab -exec ls -l {} \;
-exec[-ok] xx命令 {} ; 表示对搜索结果执行xx操作
-exec和-ok的区别是,-ok会对每一个搜索结果执行操作前进行询问。
可联合多个命令
find /etc -name init??? -a -type f -exec ls -l {} \;
表示在etc目录下以文件名查找init???文件,不查找此类目录或软连接,并对查找结果显示详细信息。
8、根据类型或i节点查找
-type 根据文件类型查找:f 文件 。 d 目录 。 l 软连接文件
-inum 根据i节点查找:主要用于文件名奇怪不方便,或者寻找文件的硬链接
六、修改-查看时间
查看当前时间:
date
修改系统时间命令
date -s "2023-1-1 12:00:00"
再输入命令hwclock -w写入BIOS,否则重启后系统时间失效
hwclock -w
修改具体时间,不修改日期
date -s 12:00:00
只修改日期,不修改具体时间
date -s 2022-10-24
也别忘记要写入BIOS
hwclock -w
七、比较文件
comm
该命令对两个文本文件进行比较,并显示每个文件独有的行和它们共有的行。
例如现在有文件test1.txt和test2.txt两个文件
comm test1.txt test2.txt
第一列包含第一个文件参数特有的行,第二列包含第二个文件参数特有的行,第三列包含两个文件共有的行
我们可以通过使用选项 -n ,来选择隐藏指定的列,其中 n 可以是1、2或3。假设我们只想输出两个文件共有的行,我们可以使用 comm -12 file1.txt file2.txt
comm -12 test1.txt test2.txt
diff
diff 是一个更加复杂的工具。它支持多种输出格式,并有能力一次处理大量的文本文件集。 diff 经常被用来创建 diff 补丁文件,这些文件被 path 等程序用来将一个或多个文件的一个版本转换成另一个版本。让我们在之前的两个文件上运行
diff file1.txt file2.txt
这是默认的输出样式。在该格式中,每组变化之前都有一个变化命令,以 range operation range 的形式描述将第一个文件转换为第二个文件所需的位置和变化类型。
1d0
< a
这告诉我们必须删除 test1 的第一行,也就是带a的那一行。
4a4
> e
这告诉我们,我们必须在第一个文件里添加一行,在第四行的位置。然后告诉我们在哪一行添加 e
通过添加 -c 选项来使用上下文格式:
diff -c file1.txt file2.txt
在顶部我们可以看到,两个文件的名称以及时间戳,第一个文件使用星号标记,第二个文件使用破折号标记。 diff 将使用星号或破折号来让我们知道,它在整个列表的其余部分谈论的是哪个文件。
接下来我们会看到一行星号,这仅仅是为了格式化。
然后我们得到一系列的变化,在第一组变化中,我们可以看到:
*** 1,4 ****这意味着第一个文件中的第1行到第4行。
可以看到:
- a
b
c
d
这就是文件的内容。只不过在 a 前面有个 - ,这意味着我们要删除它。
标志 | 含义 |
---|---|
blank | 不需要任何改 |
- | 需要删除行 |
+ | 需要添加行 |
! | 需要改变行 |
在第一组变化中,我们可以看到带有 -a 的行需要从第一个文件中删除。第二组变化为:
--- 1,4 ----
b
c
d
+ e
—1,4---- 是第二个文件的范围, + e 意味着我们需要添加该行到第一个文件中,记住我们的目标是让第一个文件匹配第二个文件。
也可以统一格式,它与格式上下文类似,但是更简洁。它消除了上下文的重复行
diff -u file1.txt file2.txt
其他
待添加