linux
linux笔记
CJL_sysu
配置:WSL
WSL(windows subsystem for Linux)
使用WSL获得Ubuntu系统环境
WSL作为Windows10系统带来的全新特性,正在逐步颠覆开发人员既有的选择。
-
传统方式获取Linux操作系统环境,是安装完整的虚拟机,如VMware
-
使用WSL,可以以非常轻量化的方式,得到Linux系统环境
目前,开发者正在逐步抛弃以虚拟机的形式获取Linux系统环境,而在逐步拥抱WSL环境。
所以,课程也紧跟当下趋势,为同学们讲解如何使用WSL,简单、快捷的获得Linux系统环境。
所以,为什么要用WSL,其实很简单:
-
开发人员都在用,大家都用的,我们也要学习
-
实在是太方便了,简单、好用、轻量化、省内存
1.ls
list show
ls [-a -l -h] [Linux路径]
1 |
|
-a
表示显示隐藏文件
.点开头的文件默认隐藏
[cjl-linux@localhost ~]$ ls -a . .. .bash_history .bash_logout .bash_profile .bashrc .cache .config .dbus Desktop Documents Downloads .esd_auth .ICEauthority .local .mozilla Music Pictures .pki Public Templates Videos
-l
表示以列表(竖向排列方式)展示内容,并展示更多信息
[cjl-linux@localhost ~]$ ls -l total 0 drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Desktop drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Documents drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Downloads drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Music drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Pictures drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Public drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Templates drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Videos
-l
和-a
可以共用
1 |
|
[cjl-linux@localhost ~]$ ls -la total 32 drwx------. 16 cjl-linux cjl-linux 4096 May 27 03:27 . drwxr-xr-x. 3 root root 23 May 26 06:59 .. -rw-------. 1 cjl-linux cjl-linux 51 May 27 03:53 .bash_history -rw-r--r--. 1 cjl-linux cjl-linux 18 Oct 30 2018 .bash_logout -rw-r--r--. 1 cjl-linux cjl-linux 193 Oct 30 2018 .bash_profile -rw-r--r--. 1 cjl-linux cjl-linux 231 Oct 30 2018 .bashrc drwx------. 17 cjl-linux cjl-linux 4096 May 26 07:09 .cache drwxr-xr-x. 14 cjl-linux cjl-linux 261 May 26 07:01 .config drwx------. 3 cjl-linux cjl-linux 25 May 26 07:01 .dbus drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Desktop drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Documents drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Downloads -rw-------. 1 cjl-linux cjl-linux 16 May 26 07:01 .esd_auth -rw-------. 1 cjl-linux cjl-linux 934 May 27 03:27 .ICEauthority drwx------. 3 cjl-linux cjl-linux 19 May 26 07:01 .local drwxr-xr-x. 6 cjl-linux cjl-linux 81 May 26 07:02 .mozilla drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Music drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Pictures drwxrw----. 3 cjl-linux cjl-linux 19 May 26 07:08 .pki drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Public drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Templates drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Videos
[cjl-linux@localhost ~]$ ls -la /
total 24
dr-xr-xr-x. 17 root root 224 May 26 06:58 .
dr-xr-xr-x. 17 root root 224 May 26 06:58 ..
lrwxrwxrwx. 1 root root 7 May 26 06:42 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 May 27 02:42 boot
drwxr-xr-x. 19 root root 3280 May 27 03:26 dev
drwxr-xr-x. 143 root root 8192 May 27 03:26 etc
drwxr-xr-x. 3 root root 23 May 26 06:59 home
lrwxrwxrwx. 1 root root 7 May 26 06:42 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 May 26 06:42 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 10 2018 media
drwxr-xr-x. 2 root root 6 Apr 10 2018 mnt
drwxr-xr-x. 3 root root 16 May 26 06:49 opt
dr-xr-xr-x. 225 root root 0 May 27 03:26 proc
dr-xr-x---. 3 root root 151 May 26 07:00 root
drwxr-xr-x. 41 root root 1260 May 27 03:28 run
lrwxrwxrwx. 1 root root 8 May 26 06:42 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 10 2018 srv
dr-xr-xr-x. 13 root root 0 May 27 03:26 sys
drwxrwxrwt. 20 root root 4096 May 27 03:53 tmp
drwxr-xr-x. 13 root root 155 May 26 06:42 usr
drwxr-xr-x. 21 root root 4096 May 26 07:00 var
-h
用易于阅读的方式列出文件大小,如K
,M
,G
-h
必须搭配-l
使用
[cjl-linux@localhost ~]$ ls -lh /
total 24K
lrwxrwxrwx. 1 root root 7 May 26 06:42 bin -> usr/bin
dr-xr-xr-x. 5 root root 4.0K May 27 02:42 boot
drwxr-xr-x. 19 root root 3.3K May 27 03:26 dev
drwxr-xr-x. 143 root root 8.0K May 27 03:26 etc
drwxr-xr-x. 3 root root 23 May 26 06:59 home
lrwxrwxrwx. 1 root root 7 May 26 06:42 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 May 26 06:42 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 10 2018 media
drwxr-xr-x. 2 root root 6 Apr 10 2018 mnt
drwxr-xr-x. 3 root root 16 May 26 06:49 opt
dr-xr-xr-x. 230 root root 0 May 27 03:26 proc
dr-xr-x---. 3 root root 151 May 26 07:00 root
drwxr-xr-x. 41 root root 1.3K May 27 03:28 run
lrwxrwxrwx. 1 root root 8 May 26 06:42 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 10 2018 srv
dr-xr-xr-x. 13 root root 0 May 27 03:26 sys
drwxrwxrwt. 20 root root 4.0K May 27 03:53 tmp
drwxr-xr-x. 13 root root 155 May 26 06:42 usr
drwxr-xr-x. 21 root root 4.0K May 26 07:00 var
2.cd和pwd命令
cd:change directory
cd [linux路径]
- cd不需要选项,只有参数,表示要切换到哪个目录
- cd命令直接执行,不写参数,表示回到用户的home目录
[cjl-linux@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[cjl-linux@localhost ~]$ cd /
[cjl-linux@localhost /]$ ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[cjl-linux@localhost /]$ cd
[cjl-linux@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
pwd
=print work directory
通过ls
来验证当前工作目录是不恰当的
可以通过pwd
命令查看当前所在的工作目录
[cjl-linux@localhost ~]$ pwd /home/cjl-linux [cjl-linux@localhost ~]$ cd / [cjl-linux@localhost /]$ pwd / [cjl-linux@localhost /]$ cd /bin [cjl-linux@localhost bin]$ pwd /bin
3.相对路径和绝对路径和特殊路径符
cd /home/cjl-linux/Desktop
是绝对路径cd Desktop
是相对路径
返回上一级
特殊路径符
.
表示当前目录cd ./Desktop
表示切换到当前目录下的Desktop目录内,和cd Desktop
效果一致..
表示上一级目录,例如cd ../..
切换到上二级目录~
表示HOME目录,例如cd ~/Desktop
切换到HOME内的Desktop目录
4.mkdir
创建目录
mkdir
==Make Directory
语法:mkdir [-p] Linux路径
Linux路径可用绝对路径和相对路径
-p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
[cjl-linux@localhost ~]$ mkdir test01 [cjl-linux@localhost ~]$ ls Desktop Documents Downloads Music Pictures Public Templates test01 Videos
[cjl-linux@localhost ~]$ mkdir -p ./test01/01/02/03
注意:创建文件夹需要修改权限,只能在home目录内进行,涉及到权限问题,home外无法成功
[cjl-linux@localhost test01]$ mkdir /mytest mkdir: cannot create directory ‘/mytest’: Permission denied
5.文件操作命令touch
,cat
,more
touch创建文件
touch Linux路径
touch命令无选项,参数必填,表示要创建的文件路径,相对,绝对,特殊路径符均可以使用
[cjl-linux@localhost test01]$ ls 01 20230528 [cjl-linux@localhost test01]$ touch test.txt [cjl-linux@localhost test01]$ ls 01 20230528 test.txt
linux中文件一般为黑色,文件夹为蓝色
cat,more查看文件内容
cat linux路径
cat没有选项,只有必填参数,参数表示被查看的文件路径,相对,绝对,特殊路径符都可以使用
Ctrl +L
可以清空屏幕
[cjl-linux@localhost test01]$ ls 01 20230528 test.txt [cjl-linux@localhost test01]$ cat test.txt #include<iostream> using namespace std; int main() { cout<<"hello world!"<<endl; return 0; }
more命令可以查看文件内容,与cat不同的是:
- cat是直接将内容全部显示出来
- more支持翻页,如果文件内容过多,可以一页页地展示
可以尝试查看more /etc/services
空格翻页,q退出查看
6.cp
复制,mv
移动,rm
删除命令
cp命令:
cp [-r] 参数1 参数2
-r选项可选,用于复制文件夹使用,表示递归
参数1,Linux路径,表示被复制的文件或文件夹
参数2,Linux路径,表示要复制去的地方
[cjl-linux@localhost test01]$ ls 01 20230528 test.txt [cjl-linux@localhost test01]$ cp test.txt test2.txt [cjl-linux@localhost test01]$ ls 01 20230528 test2.txt test.txt
[cjl-linux@localhost test01]$ ls 01 20230528 test2.txt test.txt [cjl-linux@localhost test01]$ cp -r 01 01cpy [cjl-linux@localhost test01]$ ls 01 01cpy 20230528 test2.txt test.txt
mv命令
mv命令来自move
mv 参数1 参数2
没有可选的选项
参数1表示被移动的文件或文件夹
参数2表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
[cjl-linux@localhost test01]$ ls 01 01cpy 20230528 test2.txt test.txt [cjl-linux@localhost test01]$ mv test.txt 01/02/ [cjl-linux@localhost test01]$ cd 01/02 [cjl-linux@localhost 02]$ ls 03 test.txt
mv
可以用于改名
[cjl-linux@localhost Desktop]$ ls test3.txt [cjl-linux@localhost Desktop]$ mv test3.txt test.txt [cjl-linux@localhost Desktop]$ ls test.txt
移动文件夹
[cjl-linux@localhost Desktop]$ mv ../test01/01 .
rm命令
rm来自单词remove
rm [-r -f] 参数1 参数2 参数3 ....
同cp命令一样,-r选项用于删除文件夹
-f表示force,强制删除(不会弹出提示确认信息)
- 普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示
- 所以一般用户用不到-f选项
参数1,参数2,参数3…表示要删除的文件或1文件夹路径,用空格分开
[cjl-linux@localhost Desktop]$ ls 01 test01.txt test.txt [cjl-linux@localhost Desktop]$ rm test.txt [cjl-linux@localhost Desktop]$ ls 01 test01.txt
rm支持通配符*,用来模糊匹配
- test*匹配任何以test开头的内容
- *test匹配任何以test结尾的内容
*test*
表示匹配任何包含test的内容
可以通过su - root
,并输入密码123456(和普通用户默认一样)临时切换到root用户体验
通过输入exit命令,退回普通用户(临时用root,用完记得退出)
[root@localhost test01]# ls 01cpy 20230528 test1.txt test2.txt test3.txt [root@localhost test01]# rm test1.txt rm: remove regular file ‘test1.txt’? y [root@localhost test01]# ls 01cpy 20230528 test2.txt test3.txt
7.查找命令which
和find
1 |
|
[cjl-linux@localhost ~]$ which pwd /usr/bin/pwd
cd
,pwd
等命令相当于二进制程序,可以用which
命令找到它们文件的存放地址
which只针对 命令 的程序文件查找
find用于按文件名查找文件,语法:
find 起始路径 -name "被查找文件名"
为了在整个系统进行搜索,要切换到root用户获得管理员权限su - root
或su root
(亲测可行)
su
命令意思是switch user
在根目录查找名字为test的文件
1 |
|
[cjl-linux@localhost ~]$ su root Password: [root@localhost cjl-linux]# find / -name "test" find: ‘/run/user/1000/gvfs’: Permission denied /usr/bin/test /usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/ntb/test /usr/lib/alsa/init/test /usr/lib64/python2.7/test /usr/lib64/python2.7/unittest/test /usr/share/espeak-data/voices/test /usr/src/kernels/3.10.0-957.el7.x86_64/drivers/ntb/test /usr/src/kernels/3.10.0-957.el7.x86_64/include/config/test /usr/src/kernels/3.10.0-957.el7.x86_64/lib/raid6/test
find支持删除指定文件,例如
1 |
|
通配符
使用通配符*来做模糊查询
test*
匹配任何以test
开头的内容
*test
匹配任何以test
结尾的内容
*test*
匹配任何包含test
的内容
[root@localhost ~]# find / -name "*test"
…
find命令按照大小查找
find 起始路径 -size +|-n [kMG]
+,-表示大于和小于
n表示大小数字
kMG表示大小单位, k(小写字母)表示kB , M表示MB, G表示GB
查找小于10kB的文件:find / -size -10k
查找大于100MB的文件:find / -size +100M
查找大于1GB的文件:find / -size +1G
注: 文件很多输出不停 , 用快捷键ctrl+C
可以强制停止输出`
passwd修改密码
在root用户下
passwd
修改root密码
passwd cjl-linux
修改用户cjl-linux的密码
8.grep和wc和管道符
grep命令过滤文件内容
grep [-n] 关键字 文件路径
-
-n 可选,表示在结果中显示匹配的行的行号
-
参数,关键字,必填,表示过滤的关键字, 带有空格或其他特殊符号,建议使用“ ”将关键字包围起来
-
参数,文件路径,必填,表示要过滤的内容的文件路径,==可作为内容输入端口==
[cjl-linux@localhost ~]$ cat test.txt 114514 1919810 itheima is a brand of itcast itcast stock code is 003032 [cjl-linux@localhost ~]$ grep "itheima" test.txt itheima is a brand of itcast [cjl-linux@localhost ~]$ grep "itcast" test.txt itheima is a brand of itcast itcast stock code is 003032 [cjl-linux@localhost ~]$ grep -n "code" test.txt 3:itcast stock code is 003032
wc命令统计内容数量(统计文件信息)
可以通过wc
命令统计文件的行数、单词数量等
语法: wc [-c -m -l -w] 文件路径
- 选项,-c,统计bytes数量
- 选项, -m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量
- 参数,文件路径,被统计的文件,==可作为内容输入端口==
[cjl-linux@localhost ~]$ cat test.txt 114514 1919810 itheima is a brand of itcast itcast stock code is 003032 [cjl-linux@localhost ~]$ wc test.txt 3 13 72 test.txt
3表示行数 13表示单词数量(按照空格划分) 59字节数
包含选项:
[cjl-linux@localhost ~]$ wc -c test.txt 72 test.txt [cjl-linux@localhost ~]$ wc -m test.txt 72 test.txt [cjl-linux@localhost ~]$ wc -l test.txt 3 test.txt [cjl-linux@localhost ~]$ wc -w test.txt 13 test.txt
管道符的概念和使用
管道符:|
管道符的含义是:将管道符左边命令的结果,作为右边命令的输入
[cjl-linux@localhost ~]$ grep itheima test.txt itheima is a brand of itcast [cjl-linux@localhost ~]$ cat test.txt | grep itheima itheima is a brand of itcast [cjl-linux@localhost ~]$ cat test.txt | wc -l 3
[cjl-linux@localhost ~]$ ls Desktop Documents Downloads Music Pictures Public Templates test01 test.txt Videos [cjl-linux@localhost ~]$ ls | grep test test01 test.txt
管道符可以嵌套
[cjl-linux@localhost ~]$ cat test.txt | grep itcast itheima is a brand of itcast itcast stock code is 003032 [cjl-linux@localhost ~]$ cat test.txt | grep itcast | grep itheima itheima is a brand of itcast
9.echo-tail-重定向符
使用echo命令输出内容
可以使用echo命令在命令行内输出指定内容
语法:echo 输出的内容
无需选项,只有一个参数,表示要输出的内容,复杂内容可以用“ ”包围
演示:在终端上显示: Hello Linux
[cjl-linux@localhost ~]$ echo "Hello Linux" Hello Linux
带有空格或 \ 等特殊符号,建议使用双引号包围
因为不包围的话,空格后很容易被识别为参数2,尽管echo不受影响,但是要养成习惯哦
[cjl-linux@localhost ~]$ echo Hello Linux Hello Linux
反引号ˋ
的使用
看一下如下命令:echo pwd
[cjl-linux@localhost ~]$ echo pwd pwd
本意是想,输出当前的工作路径,但是pwd被作为普通字符输出了。
我们可以通过将命令用反引号(通常也称之为飘号)`将其包围
被`包围的内容,会被作为命令执行,而非普通字符
[cjl-linux@localhost ~]$ echo `pwd` /home/cjl-linux
重定向符号的使用
两个特殊符号,重定向符: >和>>
-
>
,将左侧命令的结果,覆盖写入到符号右侧指定的文件中 -
>>
,将左侧命令的结果,追加写入到符号右侧指定的文件中
示例1: >
覆盖内容
[cjl-linux@localhost ~]$ cat test.txt 114514 1919810 [cjl-linux@localhost ~]$ echo "hello linux" > test.txt [cjl-linux@localhost ~]$ cat test.txt hello linux
示例2: >>
追加内容
[cjl-linux@localhost ~]$ echo "114514 1919810" >> test.txt [cjl-linux@localhost ~]$ cat test.txt hello linux 114514 1919810
[cjl-linux@localhost ~]$ ls >> test.txt [cjl-linux@localhost ~]$ cat test.txt hello linux 114514 1919810 Desktop Documents Downloads Music Pictures Public Templates test01 test.txt Videos
tail命令跟踪文件更改
使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改,语法如下:
tail [-f -num] Linux路径
-
参数,Linux路径,表示被跟踪的文件路径
-
选项,-f,表示持续跟踪文件的最新更改(follow)
(这个程序不会自动结束,如果在文件尾部追加内容,屏幕上会自动更新文件的内容)
快捷键
Ctrl+C
可以停止该命令的执行 -
选项,-num,表示,查看尾部多少行,不填默认10行
[cjl-linux@localhost ~]$ ls > test.txt [cjl-linux@localhost ~]$ ls / >>test.txt [cjl-linux@localhost ~]$ tail test.txt opt proc root run sbin srv sys tmp usr var
只看5行:
[cjl-linux@localhost ~]$ tail -5 test.txt srv sys tmp usr var
10. VI编辑器
vi\vim编辑器介绍
vi\vim是visual interface的简称,是Linux中最经典的文本编辑器
同图形化界面中的文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。
vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。
命令模式
如果需要通过vi/vim编辑器编辑文件,请通过如下命令:
vi 文件路径
vim 文件路径
vim兼容全部的vi功能,后续全部使用vim命令
- 如果文件路径表示的文件==不存在==,那么此命令会用于==编辑新文件==
- 如果文件路径表示的文件==存在==,那么此命令用于==编辑已有文件==
通过vi/vim命令编辑文件,会打开一个新的窗口,此时这个窗口就是:命令模式窗口
命令模式是vi编辑器的入口和出口,如上图
- 进入vi编辑器会进入命令模式
- 通过命令模式输入键盘指令,可以进入输入模式
- 输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式
在命令模式下
- 按两次y,再按一次p,可以复制粘贴当前行
- 按两次d,可以删除当前行
- 按一次u,可以撤销
退出时输入wq , w表示保存 , q表示退出
:set paste 开启时 可以保证在输入模式粘贴时格式不错乱
11.root用户
root用户(超级管理员)
无论是Windows、MacoS、Linux均采用多用户的管理模式进行权限管理。
在Linux系统中,拥有最大权限的账户名为: root (超级管理员)
而在前期,我们一直使用的账户是普通的用户:cjl-linux
普通用户的权限,一般在其HOME目录内是不受限的
一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
su和exit命令
在前面,我们接触过su命令切换到root账户。
su命令就是用于账户切换的系统命令,其来源英文单词: Switch User
语法:su [-] [用户名]
-
符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),==建议带上==- 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
- 切换用户后,可以通过
exit
或logout
命令退回上一个用户,也可以使用快捷键:ctrl +d
- 使用普通用户,切换到其它用户需要输入密码,如切换到root用户
- 使用root用户切换到其它用户,无需密码,可以直接切换
sudo命令
在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。
但是我们不建议长期使用root用户,避免带来系统损坏。
我们可以使用sudo命令,为普通的命令授权,临时以root身份执行。
语法: sudo 其它命令
在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权
但是并不是所有的用户,都有权利使用sudo,我们==需要为普通用户配置sudo认证==
12. 用户和用户组
用户组管理
以下命令需root用户执行
- 创建用户组
groupadd 用户组名
- 删除用户组
groupdel 用户组名
为后续演示,我们创建一个itcast用户组: groupadd itcast
用户管理
以下命令需root用户执行
-
创建用户
useradd [-g -d] 用户名
- 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
- 选项:-d指定用户HOME路径,不指定,HOME目录默认在: /home/用户名
-
删除用户
userdel [-r] 用户名
- 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
-
查看用户所属组
id [用户名]
- 参数:用户名,被查看的用户,如果不提供则查看自身
-
修改用户所属组
usermod -aG
用户组 用户名,将指定用户加入指定用户组
[root@localhost ~]# useradd test2 -g itcast -d /home/test222 [root@localhost ~]# su - test2 [test2@localhost ~]$ pwd /home/test222
[root@localhost ~]# userdel test2 [root@localhost ~]# cd /home [root@localhost home]# ls cjl-linux test222
[root@localhost home]# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@localhost home]# id cjl-linux uid=1000(cjl-linux) gid=1000(cjl-linux) groups=1000(cjl-linux)
[root@localhost home]# useradd test4 [root@localhost home]# id test4 uid=1001(test4) gid=1002(test4) groups=1002(test4) [root@localhost home]# usermod -aG itcast test4 [root@localhost home]# id test4 uid=1001(test4) gid=1002(test4) groups=1002(test4),1001(itcast)
-
查看当前系统中有哪些用户
getent passwd
共有7份信息, 分别是: 用户名: 密码(x): 用户ID: 组ID: 描述信息(无用): HOME目录: 执行终端(默认bash)
-
查看当前系统中有哪些用户组
语法:
getent group
包含3份信息,组名称:组认证(显示为×):组ID
13.查看权限控制信息
[cjl-linux@localhost ~]$ ls -l total 8 drwxr-xr-x. 3 cjl-linux cjl-linux 34 May 29 19:18 Desktop drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Documents drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Downloads -rw-rw-r--. 1 cjl-linux cjl-linux 72 Jul 7 06:42 hello.txt drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Music drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Pictures drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Public drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Templates drwxrwxr-x. 4 cjl-linux cjl-linux 52 May 29 18:07 test01 -rw-rw-r--. 1 cjl-linux cjl-linux 168 Jul 7 06:16 test.txt drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Videos
rwx
那么,rwx到底代表什么呢?
-
r表示读权限
-
w表示写权限
-
x表示执行权限
针对文件、文件夹的不同, rwx的含义有细微差别
-
r,针对文件可以查看文件内容
- 针对文件夹,可以查看文件夹内容,如ls命令
-
w,针对文件表示可以修改此文件
- 针对文件夹,可以在文件夹内:创建、删除、改名等操作
-
x,针对文件表示可以将文件作为程序执行
- 针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
14.chmod命令修改权限信息
我们可以使用chmod命令,修改文件、文件夹的权限信息。
注意,只有文件、文件夹的所属用户或root用户可以修改。
语法: chmod [-R] 权限 文件或文件夹
- 选项:-R,对文件夹内的全部内容应用同样的操作
示例:
-
chmod u=rwx,g=rx,o=x hello.txt
,将文件权限修改为:rwxr-x–x- 其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限
-
chmod-R u=rwx,g=rx,o=x test
, 将文件夹test以及文件夹内全部内容权限设置为: rwxr-x–x
权限的数字序号
除此之外,还有快捷写法:chmod 751 hello.txt
权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。
数字的细节如下:r记为4,w记为2,x记为1,可以有:
-
0: 无任何权限, 即 —
-
1: 仅有×权限, 即 --x
-
2: 仅有w权限 , 即 -w-
-
3: 有w和x权限, 即 -wx
-
4: 仅有r权限, 即 r–
-
5: 有r和x权限, 即 r-x
-
6: 有r和w权限, 即 rw-
-
7: 有全部权限, 即 rwx
所以751表示: rwx(7) r-x(5)–x(1)
chown命令修改所属用户
chown命令change owner
使用chown命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行
语法: chown [-R][用户][:][用户组]文件或文件夹
-
选项,-R, 同chmod,对文件夹内全部内容应用相同规则
-
选项,用户,修改所属用户
-
选项,用户组,修改所属用户组
-
:用于分隔用户和用户组
示例:
-
chown root hello.txt
, 将hello.txt所属用户修改为root -
chown :root hello.txt
,将hello.txt所属用户组修改为root -
chown root:itheima hello.txt
, 将hello.txt所属用户修改为root,用户组修改为itheima -
chown -R root test
,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则
15.linux各类小技巧快捷键
ctrl + c 强制停止
ctrl+d退出或登出
[root@localhost ~]# python Python 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print("hello world") hello world
history查看历史命令
可以查看历史输入过的全部命令(序号越大,时间距离现在越近)
[cjl-linux@localhost ~]$ history | grep ch 72 touch test.txt 131 which pwd 136 which cd 143 touch test.txt 163 echo "Hello Linux" 164 echo Hello Linux 165 echo pwd 166 echo `pwd` 168 echo "114514 1919810"> test.txt 170 echo "hello linux" > test.txt 172 echo "114514 1919810" >> test.txt 201 chmod u=rwx,g=r,o=w test.txt 211 chmod 700 test.txt 219 history | grep ch
使用!自动匹配最近执行过的命令(用!py代替python) py是第一个以py开头的命令
220 python 221 history 222 pwd 223 ls 224 ls -l 225 history [cjl-linux@localhost ~]$ !py python Python 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2 Type "help", "copyright", "credits" or "license" for more information.
ctrl+r历史命令搜索
如果搜索到的内容是你需要的,那么:
- 回车键可以直接执行
- 键盘左右键,可以得到此命令(不执行)
会在history自下而上搜索
光标移动快捷键
-
ctrl + a,跳到命令开头
-
ctrl + e,跳到命令结尾
-
ctrl+键盘左键,向左跳一个单词
-
ctrl + 键盘右键,向右跳一个单词
ctrl+L清屏
clear也有同样效果
16.软件安装
yum进行软件安装(centOS)
Linux系统的应用商店
操作系统安装软件有许多种方式,一般分为:
-
下载安装包自行安装
-
如 win系统使用 exe文 件、Msi文 件等
-
如Mac系 统 使用 dmg文 件、pkg文 件 等
-
-
系统的应用商店内安装
-
如 win系 统 有 Microsoft Store商 店
-
如Mac系 统有AppStore商店
-
Linux系统同样支持这两种方式,我们首先,先来学习使用: Linux命令行内的"应用商店", yum命令安装软件
.rpm是linux的软件安装包格式
yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。
语法: yum [-y] [install | remove | search]软件名称
-
选项: -y, 自动确认,无需手动确认安装或卸载过程
-
install: 安装
-
remove: 卸载
-
search: 搜索
yum命令需要root权限哦,可以su切换到root,或使用sudo提权。
yum命令需要联网
apt进行软件安装(Ubuntu,debian)
前面学习的各类Linux命令,都是通用的。但是软件安装,CentOS系统和Ubuntu是使用不同的包管理器。
CentOS使用yum管理器,Ubuntu使用apt管理器
通过前面学习的WSL环境,我们可以得到Ubuntu运行环境。
语法:apt [-y] [install | removesearch] 软件名称
用法和yum一致,同样需要root权限
- apt install wget, 安装wget
- apt remove wget, 移除wget
- apt search wget, 搜索wget
1 |
|
17.systemctl控制软件启动关闭
[cjl-linux@localhost ~]$ systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2023-07-08 02:01:30 PDT; 1h 57min ago Docs: man:firewalld(1) Main PID: 6557 (firewalld) Tasks: 2 CGroup: /system.slice/firewalld.service └─6557 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
systemctl命令
除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。
- yum install -y ntp, 安装ntp软件
可以通过ntpd服务名,配合systemctl进行控制
- yum install -y httpd, 安装apache服务器软件
可以通过httpd服务名,配合systemctl进行控制
[root@localhost ~]# yum install -y ntp [root@localhost ~]# systemctl status ntpd ● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled) Active: inactive (dead)
部分软件安装后没有自动集成到systemctl中,我们可以手动添加。
这部分内容在后续章节和大家详细讲解。
18.ln软链接(快捷方式)
In命令创建软连接
在系统中创建软链接,可以将文件、文件夹链接到其它位置。
类似Windows系统中的_快捷方式_
语法: ln -s 参数1 参数2
-
-s选项,创建软连接
-
参数1:被链接的文件或文件夹
-
参数2: 要链接去的目的地
实例:
-
In -s /etc/yum.conf ~/yum.conf
-
In -s /etc/yum ~/yum
注:~
表示HOME目录
[cjl-linux@localhost etc]$ ln -s /etc/yum.conf ~/yum.conf [cjl-linux@localhost etc]$ cd ~/ [cjl-linux@localhost ~]$ ls -l total 8 drwxr-xr-x. 3 cjl-linux cjl-linux 34 May 29 19:18 Desktop drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Documents drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Downloads -rw-rw-r--. 1 cjl-linux cjl-linux 72 Jul 7 06:42 hello.txt drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Music drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Pictures drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Public drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Templates drwxrwxr-x. 4 cjl-linux cjl-linux 52 May 29 18:07 test01 -rwx------. 1 root cjl-linux 57 Jul 7 22:46 test.txt drwxr-xr-x. 2 cjl-linux cjl-linux 6 May 26 07:01 Videos lrwxrwxrwx. 1 cjl-linux cjl-linux 13 Jul 8 04:22 yum.conf -> /etc/yum.conf
19.日期和时区
date 命令查看日期时间
[cjl-linux@localhost ~]$ date 2023年 07月 08日 星期六 04:42:29 PDT [cjl-linux@localhost ~]$ date +%Y-%m-%d 2023-07-08 [cjl-linux@localhost ~]$ date "+%Y-%m-%d %H:%M:%S" 2023-07-08 04:45:13 [cjl-linux@localhost ~]$ date +"%Y-%m-%d %H:%M:%S" 2023-07-08 04:45:39
修改linux系统的时区
[cjl-linux@localhost ~]$ su - 密码: 上一次登录:六 7月 8 04:38:25 PDT 2023pts/0 上 [root@localhost ~]# rm -f /etc/localtime [root@localhost ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime [root@localhost ~]# date Sat Jul 8 19:59:18 CST 2023
手动使用ntp进行时间同步和校准
[root@localhost ~]# ntpdate -u ntp.aliyun.com 8 Jul 20:04:29 ntpdate[14028]: adjust time server 203.107.6.88 offset 0.001643 sec
20.IP地址和主机名
IP地址
每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯
IP地址主要有2个版本, V4版本和V6版本(V6很少用,课程暂不涉及)
IPv4版本的地址格式是: a.b.c.d,其中abcd表示0-255的数字,如192.168.88.101就是一个标准的IP地址
可以通过命令: ifconfig,查看本机的ip地址,如无法使用ifconfig命令,可以安装: yum -y install net-tools
1 |
|
可知IP地址为172.22.139.108
特殊IP地址
- 127.0.0.1 用于指代本机
- 0.0.0.0 ,特殊IP地址
- 可以用于指代本机
- 可以在端口绑定中用来确定绑定关系(后续讲解)
- 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问
主机名
每一台电脑除了对外联络地址(IP地址)以外,也可以有一个名字,称之为主机名
无论是Windows或Linux系统,都可以给系统设置主机名
1 |
|
修改主机名
[root@localhost ~]# hostname localhost.localdomain [root@localhost ~]# hostnamectl set-hostname "CJL Linux" [root@localhost ~]# hostname cjllinux
域名解析
IP地址实在是难以记忆, 有没有什么办法可以通过主机名或替代的字符地址去代替数字化的IP地址呢?
实际上,我们一直都是通过字符化的地址去访问服务器,很少指定IP地址
比如,我们在浏览器内打开: www.baidu.com,会打开百度的网址
其中,www.baidu.com,是百度的网址,我们称之为:域名
21.配置linux固定IP地址
为什么需要固定IP
当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。
DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更
原因1:办公电脑IP地址变化无所谓,但是我们要远程连接到Linux系统,如果IP地址经常变化我们就要频繁修改适配很麻烦
原因2:在刚刚我们配置了虚拟机IP地址和主机名的映射,如果IP频繁更改,我们也需要频繁更新映射关系
综上所述,我们需要IP地址固定下来,不要变化了。
在VMware Workstation中配置固定IP
配置固定IP需要2个大步骤:
- 在VMware Workstation (或Fusion)中配置IP地址网关和网段(IP地址的范围)
- 在Linux系统中手动修改配置文件,固定IP
[cjl-linux@cjllinux etc]$ ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.88.130 netmask 255.255.255.0 broadcast 192.168.88.255
21.网络请求和下载
1.掌握使用ping命令检查服务器是否可联通
可以通过ping命令,检查指定的网络服务器是否是可联通状态
语法: ping [-c num] ip或主机名
选项: -c, 检查的次数,不使用-c选项,将无限次数持续检查
参数:ip或主机名,被检查的服务器的ip地址或主机名地址
2.掌握使用wget命令下载文件
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法: wget [-b] url
选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log
文件参数:url,下载链接
3.掌握使用curl命令发起网络请求
示例:
向cip.cc发起网络请求: curl cip.cc
向python.itheima.com发起网络请求: curl python.itheima.com
(会得到网站的html代码)
通过curl下载hadoop-3.3.0安装包: curl-O http://archive.apache.org/dist/hadoop/common/hadoop3.3.0/hadoop-3.3.0.tar.gz
[cjl-linux@cjllinux ~]$ curl cip.cc IP : 58.249.112.87 地址 : 中国 广东 广州 运营商 : 联通
数据二 : 广东省广州市 | 联通
数据三 : 中国广东省广州市 | 联通
URL : http://www.cip.cc/58.249.112.87
22.端口
1.什么是端口?
端口是指计算机和外部交互的出入口,可以分为物理端口和虚拟端口
-
物理端口:USB、HDMI、DP、VGA、RJ45等
-
虚拟端口:操作系统和外部交互的出入口
IP只能确定计算机,通过端口才能锁定要交互的程序
2.端口的划分
-
公认端口:1~1023,用于系统内置或常用知名软件绑定使用
-
注册端口:1024~49151,用于松散绑定使用(用户自定义)
-
动态端口:49152~65535,用于临时使用(多用于出口)
3.查看端口占用
-
nmap IP地址
,查看指定IP的对外暴露端口 -
``netstat-anp | grep 端口号`,查看本机指定端口号的占用情况
23.进程
程序运行在操作系统中,是被操作系统所管理的。
为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个:进程
并会为每一个进程都分配一个独有的:进程ID(进程号)
查看进程树
1 |
|
关闭进程
在Windows系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它。
同样,在Linux中,可以通过kill命令关闭进程。
语法: kill [-9] 进程ID
选项:-9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。
命令关闭:
窗口1:
[cjl-linux@cjllinux ~]$ tail 已终止
窗口2:
[cjl-linux@cjllinux ~]$ ps -ef | grep tail cjl-lin+ 11617 9258 0 22:03 pts/0 00:00:00 tail cjl-lin+ 11619 11517 0 22:03 pts/1 00:00:00 grep --color=auto tail [cjl-linux@cjllinux ~]$ kill 11617
强制关闭:
窗口1:
[cjl-linux@cjllinux ~]$ tail 已杀死
窗口2:
[cjl-linux@cjllinux ~]$ ps -ef | grep tail cjl-lin+ 11662 9258 0 22:05 pts/0 00:00:00 tail cjl-lin+ 11665 11517 0 22:05 pts/1 00:00:00 grep --color=auto tail [cjl-linux@cjllinux ~]$ kill -9 11662
kill的用法
查看kill指令的用法
1 |
|
1 |
|
上面用过的kill -9
实际上是SIGKILL
SIGHUP
用于更新程序的代码, 从而实现不重启程序就能更新配置
24.主机状态监控
top查看系统资源占用
可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器
默认每5秒刷新一次,语法:直接输入top即可,按q或ctrl + c退出
top命令选项
top命令也支持选项:
选项 功能
-p 只显示某个进程的信息
-d 设置刷新时间,默认是5s
-c 显示产生进程的完整命令,默认是进程名
-n 指定刷新次数,比如top -n 3
,刷新输出3次后退出
-b 以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp
-i 不显示任何闲置(idle)或无用(zombie) 的进程
-u 查找特定用户启动的进程
top交互式选项
当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制
按键 功能
h键 按下h键,会显示帮助画面
c键 按下c键,会显示产生进程的完整命令,等同于-c参数,再次按下c键,变为默认显示
f键 按下f键,可以选择需要展示的项目
M键 按下M键,根据驻留内存大小(RES)排序
P键 按下P键,根据CPU使用百分比大小进行排序
T键 按下T键,根据时间/累计时间进行排序
E键 按下E键,切换顶部内存显示单位
e键 按下e键,切换进程内存显示单位
l键 按下l键,切换显示平均负载和启动时间信息。
i键 按下i键,不显示闲置或无用的进程,等同于-i参数,再次按下,变为默认显示
t键 按下t键,切换显示CPU状态信息m键按下m键,切换显示内存信息
df磁盘信息监控
使用df命令,可以查看硬盘的使用情况
语法: df [-h]
选项: -h,以更加人性化的单位显示
[cjl-linux@cjllinux ~]$ df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda3 38G 6.0G 32G 16% / devtmpfs 895M 0 895M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 11M 900M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/sda1 297M 157M 140M 53% /boot tmpfs 182M 32K 182M 1% /run/user/1000
磁盘信息监控
可以使用iostat查看CPU、磁盘的相关信息
语法:iostat [-x] [num1] [num2]
选项: -x, 显示更多信息
num1:数字,刷新间隔,
num2:数字,刷新几次
(后面的图片都存在云端了,感谢黑马程序员:smile:)
iostat命令
查看CPU、磁盘的相关信息
sar命令
查看网络统计
25.环境变量
在讲解which命令的时候,我们知道使用的一系列命令其实本质上就是一个个的可执行程序。
比如,cd命令的本体就是: /usr/bin/cd这个程序文件。
我们是否会有疑问,为何无论当前工作目录在哪里,都能执行: /usr/bin/cd这个程序呢?
环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。
在Linux系统中执行:env命令即可查看当前系统中记录的环境变量
环境变量是一种KeyValue型结构
环境变量:PATH
在前面提出的问题中,我们说无论当前工作目录是什么,都能执行/usr/bin/cd这个程序,这个就是借助环境变量中:PATH这个项目的值来做到的。
[cjl-linux@cjllinux ~]$ env | grep PATH PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/cjl-linux/.local/bin:/home/cjl-linux/bin WINDOWPATH=1
当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体
比如执行cd命令,就从第三个目录/usr/bin中搜索到了cd命令,并执行
$符号
可以取出指定的环境变量的值
语法:$变量名
示例:
echo $PATH
,输出PATH环境变量的值
echo ${PATH}ABC
,输出PATH环境变量的值以及ABC
如果变量名和其它内容混淆在一起,可以使用${}
[cjl-linux@cjllinux ~]$ echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/cjl-linux/.local/bin:/home/cjl-linux/bin
自行设置环境变量
PATH记录了执行程序的搜索路径
可以将自定义路径加入PATH内,实现自定义命令在任意地方均可执行的效果
-
临时设置:export 变量名=变量值
[cjl-linux@cjllinux ~]$ export MYNAME=CJL [cjl-linux@cjllinux ~]$ echo "$MYNAME is handsome" CJL is handsome
重启终端窗口后,临时设置的环境变量就不再可用
-
永久设置:
-
针对用户,设置用户HOME目录内:
~/.bashrc
文件# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=# User specific aliases and functions
export MYNAME=CJL然后用
source .bashrc
使更改生效 -
针对全局,设置
/etc/profile
-
并通过语法:source 配置文件,进行立刻生效,或重新登录FinalShell生效
-
自定义环境变量PATH
环境变量PATH这个项目里面记录了系统执行命令的搜索路径。
这些搜索路径我们也可以自行添加到PATH中去。
测试:
•在当前HOME目录内创建文件夹,myenv,在文件夹内创建文件mkhaha
•通过vim编辑器,在mkhaha文件内填入:echo 哈哈哈哈哈
完成上述操作后,随意切换工作目录,执行mkhaha命令尝试一下,会发现无法执行
•修改PATH的值
临时修改PATH:export PATH=$PATH:/home/itheima/myenv,再次执行mkhaha,无论在哪里都能执行了
或将export PATH=$PATH:/home/itheima/myenv,填入用户环境变量文件或系统环境变量文件中去
26.上传和下载
我们可以通过FinalShell工具,方便地和虚拟机进行数据交换。
在FinalShell软件的下方窗体中,提供了Linux的文件系统视图,可以方便的:
•浏览文件系统,找到合适的文件,右键点击下载,即可传输到本地电脑
•浏览文件系统,找到合适的目录,将本地电脑的文件拓展进入,即可方便的上传数据到Linux中
rz,sz命令
当然,除了通过FinalShell的下方窗体进行文件的传输以外,也可以通过rz、sz命令进行文件传输。
rz、sz命令需要安装,可以通过:yum -y install lrzsz,即可安装。
rz命令,进行上传,语法:直接输入rz即可
sz命令进行下载,语法:sz 要下载的文件
27.压缩文件
市面上有非常多的压缩格式
•zip格式:Linux、Windows、MacOS,常用
•7zip:Windows系统常用
•rar:Windows系统常用
•tar:Linux、MacOS常用
•gzip:Linux、MacOS常用
在Windows系统中常用的软件如:winrar、bandizip等软件,都支持各类常见的压缩格式,这里不多做讨论。
我们现在要学习,如何在Linux系统中操作:tar、gzip、zip这三种压缩格式
完成文件的压缩、解压操作
tar命令
Linux和Mac系统常用有2种压缩格式,后缀名分别是:
•.tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装
•.gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积
针对这两种格式,使用tar命令均可以进行压缩和解压缩的操作
语法:
•-c,(create)创建压缩文件,用于压缩模式
•-v,显示压缩、解压过程,用于查看进度
•-x,解压模式
•-f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
•-z,gzip模式,不使用-z就是普通的tarball格式
•-C,选择解压的目的地,用于解压模式
压缩
tar的常用组合为:
•tar -cvf test.tar 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar文件内
•tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内,使用gzip模式
注意:
•-z选项如果使用的话,一般处于选项位第一个
•-f选项,必须在选项位最后一个
解压
常用的tar解压组合有
•tar -xvf test.tar
解压test.tar,将文件解压至当前目录
•tar -xvf test.tar -C /home/itheima
解压test.tar.gz,将文件解压至指定目录(/home/itheima)
•tar -zxvf test.tar.gz -C /home/itheima
以Gzip模式解压test.tar.gz,将文件解压至指定目录(/home/itheima)
注意:
•-f选项,必须在选项组合体的最后一位
•-z选项,建议在开头位置
•-C选项单独使用,和解压所需的其它参数分开
zip命令压缩
可以使用zip命令,压缩文件为zip压缩包
语法:
•-r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致
示例:
•zip test.zip a.txt b.txt c.txt
将a.txt b.txt c.txt 压缩到test.zip文件内
•zip -r test.zip test itheima a.txt
将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内
unzip命令解压
使用unzip命令,可以方便的解压zip压缩包
语法:
•-d,指定要解压去的位置,同tar的-C选项
•参数,被解压的zip压缩包文件
示例:
•unzip test.zip,将test.zip解压到当前目录
•unzip test.zip -d /home/itheima,将test.zip解压到指定文件夹内(/home/itheima)
注意:同名内容会被替换
28.ssh命令
1 |
|
ssh端口转发
SSH命令后不登录B主机,仅启用ssh隧道,仅监听A主机127.0.0.1地址,关闭A主机终端后隧道不会断开
1 |
|
29.给命令起别名
编辑~/.bashrc
示例:
1 |
|
然后执行source ~/.bashrc
30.磁盘挂载
fdisk -l
查看当前的磁盘
df -h
查看当前硬盘的挂载情况
-
格式化数据盘
例如要挂载/dev/vdb, 执行
mkfs.ext4 /dev/vdb
-
创建将要挂载的目录,例如
mkdir /data1
-
将新数据盘挂载在该目录下
mount /dev/vdb /data1
-
使用
df -h
,看是否挂载成功 -
设置系统重启后自动挂载数据盘
echo '/dev/vdb /data1 ext4 defaults 0 0' >> /etc/fstab
cat /etc/fstab
查看是否设置成功
31. nginx
1 |
|
指令 | 含义 |
---|---|
nginx -s quit | 优雅停止 |
nginx -s stop | 立即停止 |
nginx -s reload | 重载配置文件,修改配置文件后需要执行这个以让配置文件生效 |
nginx -s reopen | 重新打开日志文件 |
nginx -V | 查看nginx的安装目录、编译参数等 |
nginx -t | 检查nginx配置文件是否有语法错误 |
输入nginx -V
,可以看到--conf-path=/etc/nginx/nginx.conf
为配置文件地址,
上传
1 |
|
配置https
在server块中加入:
1 |
|
然后执行
1 |
|
如果nginx的端口被占用了,执行下面的语句杀死占用的进程
1 |
|
在server块外面添加以下内容,设置重定向,以让来自http的请求自动跳转到https
1 |
|
32. jupyter notebook
1 |
|
Writing default config to: /root/.jupyter/jupyter_notebook_config.py
1 |
|
添加以下内容
1 |
|
1 |
|
nohup 全称:no hang up(不挂起)。也就是说,当前交互命令行退出的时候,程序还在运行。
nohup Command [Arg…] [ &] 最后的" &":表示后台运行,不霸占交互命令行
1 |
|
如何杀死jupyter进程?
1 |
|
33.ANSI转义序列
主要用途是在命令行中打印彩色字符
例如
1 |
|
hello_red
hello_red
这里的\033是八进制数,\x1b是十六进制数,二者等价(在有些地方可能只能用\x1b)
颜色设置方法
前景色 | 背景色 | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黃色 |
34 | 44 | 蓝色 |
35 | 45 | 紫红色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
1 |
|
Green and Red
其他功能的控制码
ansi控制码 | 功能 |
---|---|
\033[0m |
关闭所有属性 ,也就是说此控制码前面的控制码将会失效,此控制码中的0可以省略。 |
\033[1m |
加粗 |
\033[4m |
下划线 |
\033[5m |
闪烁 |
\033[7m |
反显 ,撞色显示,显示为白底黑字,或者显示为黑底白字 |
\033[8m |
消隐 ,字符颜色将会与背景颜色相同(隐藏字符) |
\033[2J |
清空整个屏幕并将光标移动到左上角 |
在~/.bashrc
加入以下内容,让终端用户名和路径都带上颜色
1 |
|
35. du
查看文件夹的大小
1 |
|
36.开关图形界面
关闭图形界面进入tty模式
终端输入:
1 |
|
输入如下命令可以重新打开图形界面。
1 |
|
37.开机自启动服务
参考https://blog.csdn.net/weixin_52297807/article/details/136724871
1.编辑/lib/systemd/system/rc-local.service
1 |
|
如果文件修改,需要重新加载
1 |
|
2.创建/etc/rc.local
脚本文件,并写入想要运行的脚本程序。
3.给rc.local执行的权限
1 |
|
4.启用服务
1 |
|
38.创建swap分区
参考文献https://blog.csdn.net/u014644574/article/details/127405490
查看内存和swap大小
1 |
|
增加swap分区
1 |
|
39.ubuntu远程桌面
详见https://www.linuxmi.com/ubuntu-22-04-rdp-remote-desktop.html
支持vnc或rdp协议(推荐rdp)
管理远程桌面服务:
1 |
|
40.shell
ubuntu修改默认的shell:
1 |
|
tmux
tmux 是一个强大的终端复用器(terminal multiplexer),它允许你在一个终端窗口中管理多个会话、窗口和面板。你可以把它想象成一个虚拟终端,在这个虚拟终端中,你可以同时运行多个命令行程序,就像在多个终端窗口中一样。
使用tmux主要的好处是可以作为守护进程来执行程序,避免因为SSH连接中断导致程序终止,遭受不必要的损失
https://www.ruanyifeng.com/blog/2019/10/tmux.html
解决无法用鼠标滚动的问题
在~/.tmux.conf
加入以下内容
1 |
|
应用更改
1 |
|
fish
fish 是一个对用户友好的 shell(相对其它 shell 而言),它提供内置的命令补全提示、基于浏览器的帮助和设置界面、更易于编写的脚本代码等等实用功能。
建议将fish写在~/.bashrc
中,通过bash启动fish,而不是将fish作为默认shell
41.网络
nslookup
例如
1 |
|
DNS
ubuntu配置DNS: https://www.laozuo.org/25628.html
nmap端口扫描
下面表示扫描1到65535所有在监听的tcp端口。
1 |
|
示例
1 |
|