一、用户管理 1.usermod usermod可以用来设置用户的主组/附加组和登录Shell。 主组:通常在新建用户时由-g选项指定,如果不指定则默认创建一个和用户同名的组。通常主组保存在/etc/passwd的第4列(也就是GID对应的组)。 附加组:在/etc/group中最后一列表示该组的用户列表,Linux中,附加组通常用于指定用户的附加权限。
qsd@qsd-virtual-machine:~$ id
uid=1000(qsd) gid=1000(qsd) 组=1000(qsd),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
//用户标识 主组标识 组=主组,附加组(从adm到sambashare,都是用来指定qsd用户的附加权限的)
qsd@qsd-virtual-machine:~$ cat -n /etc/passwd | grep qsd
41 qsd:x:1000:1000:qsd,,,:/home/qsd:/bin/bash
//第三列1000是用户标识,第四列1000是主组标识
qsd@qsd-virtual-machine:~$ cat -n /etc/group | grep qsd
5 adm:x:4:syslog,qsd
18 cdrom:x:24:qsd
21 sudo:x:27:qsd
23 dip:x:30:qsd
35 plugdev:x:46:qsd
55 lpadmin:x:116:qsd
65 qsd:x:1000:
66 sambashare:x:126:qsd
//除了65行的qsd是qsd组(组代号1000),其他的qsd都是qsd用户,在哪个组,就拥有哪个组的附加权限。
qsd@qsd-virtual-machine:~$ id zhangsan
uid=1001(zhangsan) gid=1001(dev) 组=1001(dev)
//只有主组,没有附加组。没有在sudo附加组中,则不能使用sudo命令
-g修改的是主组,-G修改的是附加组。绝大多数情况下,都是只用-G增加用户的附加权限。 usermod -g 组 用户名:修改用户的主组(passwd中的GID) usermod -G 组 用户名:修改用户的附加组 usermod -s /bin/bash 用户名:修改用户登录Shell 【设置了用户的附加组之后,需要重新登陆才能生效】
qsd@qsd-virtual-machine:~$ sudo usermod -G sudo zhangsan
qsd@qsd-virtual-machine:~$ id zhangsan
uid=1001(zhangsan) gid=1001(dev) 组=1001(dev),27(sudo)
默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用usermod -G sudo 用户名 将用户添加到sudo附加组中。
2.usermod指定用户登录Shell Shell:可以输入终端命令的窗口。Shell是一个软件。 ubuntu下,使用useradd添加一个用户以后,这个用户默认使用的Shell是dash,而ubuntu标准用户使用的Shell默认是bash(带颜色显示的) usermod -s /bin/bash 用户名:修改用户登录Shell
41 qsd:x:1000:1000:qsd,,,:/home/qsd:/bin/bash
42 zhangsan:x:1001:1001::/home/zhangsan:/bin/dash
qsd@qsd-virtual-machine:~$ sudo usermod -s /bin/bash zhangsan
qsd@qsd-virtual-machine:~$ cat -n /etc/passwd
42 zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
/etc/passwd最后一列信息就表示该用户使用的Shell。
3.which查看命令所在位置 (1)/etc/passwd是用于保存用户信息的一个文本文件。 /usr/bin/passwd是用于修改用户密码的程序。 这两个passwd是不同的。 sudo passwd 用户名:修改用户密码 (2)which命令可以查看执行命令所在位置。
qsd@qsd-virtual-machine:~$ which ls
/bin/ls
ls -l /bin/ls
qsd@qsd-virtual-machine:~$ which useradd
/usr/sbin/useradd
ls -l /usr/sbin/useradd
qsd@qsd-virtual-machine:~$ which passwd
/usr/bin/passwd
//passwd命令所在位置为/usr/bin/passwd
qsd@qsd-virtual-machine:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 59640 3月 23 2019 /usr/bin/passwd
//第一组的rws表示对于root用户来说可读可写可执行。【s也是可执行权限】
qsd@qsd-virtual-machine:~$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2445 1月 28 11:41 /etc/passwd
//对root用户来说这个passwd文件只有读写权限
bin和sbin 在Linux中,绝大多数可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin中的。 /bin(binary)是二进制执行文件目录,主要用于具体应用。 /sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理。 /usr/bin(user commands for application)后期安装的一些软件。 /usr/sbin(super user commands for application)超级用户的一些管理程序。
cd这个终端命令是内置在系统内核中的,没有独立的文件,因此用which无法找到cd命令的位置。
4.su切换用户
su - 用户名 | 切换用户,并且切换目录 | -可以切换到用户家目录,否则保持位置不变 |
---|
exit | 退出当前登录账户 | |
如果su 用户名之间有一个减号(减号两边都有空格),则在切换用户的同时,还会把当前的工作目录切换到目标用户的家目录。如果不使用减号,则只会切换用户而不会切换目录 su不接用户名,可以切换到root,但是不推荐使用,因为不安全。
A用户因为权限不够,使用su命令切换到B用户,以B用户的身份执行一些命令,完成之后使用exit命令退出B用户的身份,继续以A用户的身份执行命令。如果A用户再exit,就会退出Shell。
qsd@qsd-virtual-machine:~$ whoami
qsd
qsd@qsd-virtual-machine:~$ su zhangsan
密码:
zhangsan@qsd-virtual-machine:/home/qsd$ cd
//切换到zhangsan用户的家目录
zhangsan@qsd-virtual-machine:~$
zhangsan@qsd-virtual-machine:~$ exit
exit
qsd@qsd-virtual-machine:~$
qsd@qsd-virtual-machine:~$ su - zhangsan
密码:
zhangsan@qsd-virtual-machine:~$
//切换过来直接就是zhangsan用户的家目录
zhangsan@qsd-virtual-machine:~$ su -
密码:
su:认证失败
zhangsan@qsd-virtual-machine:~$ sudo su
[sudo] zhangsan 的密码:
root@qsd-virtual-machine:/home/zhangsan
root@qsd-virtual-machine:/home/zhangsan
exit
zhangsan@qsd-virtual-machine:~$
su -//认证失败是因为root用户没有设置密码
直接使用su 切换到root账户失败(可能是由于root用户没有设置密码,而root密码是随机生成的,所以一般无法直接切换) 改用sudo su
5.修改文件权限
命令 | 作用 |
---|
chown | 修改拥有者 | chgrp | 修改组 | chmod | 修改权限 |
这三个命令分别对应了ls -l 输出的文件目录详细信息的三列。
chown 用户名 文件名/目录名:修改文件/目录的拥有者 chgrp -R 组名 文件名/目录名:递归修改文件/目录的组 chmod -R 755 文件名/目录名:递归修改文件权限
qsd@qsd-virtual-machine:~/桌面$ ls -l
总用量 4
drwxrwxr-x 2 qsd qsd 4096 1月 28 15:49 aaa
qsd@qsd-virtual-machine:~/桌面$ sudo chown zhangsan aaa/
//修改拥有者
[sudo] qsd 的密码:
qsd@qsd-virtual-machine:~/桌面$ ls -l
总用量 4
drwxrwxr-x 2 zhangsan qsd 4096 1月 28 15:49 aaa
qsd@qsd-virtual-machine:~/桌面$ sudo chgrp dev aaa/
chmod的数字表示法 chmod在设置权限时,可以简单地使用三个数字分别对应拥有者、组和其他用户的权限。 chmod -R 755 文件名/目录名 (不加-R的话,只修改了目录的权限,而目录中的子目录或文件的权限并没有修改) 7表示文件拥有者的权限,5表示组成员的权限,第二个5表示其他用户的权限。
直接修改文件/目录的读写执行权限,这种方法不能精确到拥有者/组/其他用户。 chmod +/-rwx 文件名/目录名
r | w | x | sum | 权限 |
---|
4 | 2 | 1 | 7 | rwx | 4 | 2 | 0 | 6 | rw- | 4 | 0 | 1 | 5 | r-x | 4 | 0 | 0 | 4 | r– | 0 | 2 | 1 | 3 | -wx | 0 | 2 | 0 | 2 | -w- | 0 | 0 | 1 | 1 | –x | 0 | 0 | 0 | 0 | — |
常见的数字组合有(u-用户,g-组,o-其他) 777:u=rwx,g=rwx,o=rwx 755:u=rwx,g=rx,o=rx 644:u=rw,g=r,o=r
qsd@qsd-virtual-machine:~/桌面$ chmod 754 01.py //将01.py的权限修改为u=rwx,g=rx,o=r qsd@qsd-virtual-machine:~/桌面$ chmod 640 123.txt //将123.txt的权限修改为u=rw,g=r,o=- qsd@qsd-virtual-machine:~/桌面$ chmod -R 775 test //将test目录以及目录下的所有文件权限修改为u=rwx,g=rwx,o=rx
二、系统信息 系统信息相关命令主要是为了方便通过远程终端维护服务器时,查看服务器上当前系统日期和时间/磁盘空间占用情况/程序执行情况。
1.时间和日期
date | 查看系统时间 |
---|
cal | calendar,查看日历(当前月),-y选项可以查看一年的日历 |
qsd@qsd-virtual-machine:~/桌面$ date
2022年 01月 28日 星期五 16:27:52 CST
qsd@qsd-virtual-machine:~/桌面$ cal
一月 2022
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
2.磁盘信息
df -h | disk free显示磁盘剩余空间 |
---|
du -h[目录名] | disk usage 显示目录下的文件大小 |
-h选项以人性化的方式显示文件大小。 du命令不接任何目录名查看的是当前目录的空间占用情况。
qsd@qsd-virtual-machine:~/桌面$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 20G 7.6G 11G 41% /
//重点查看挂载点上根目录,使用情况
qsd@qsd-virtual-machine:~/桌面$ du -h
4.0K ./test
4.0K ./aaa
12K .
3.进程信息 进程就是当前正在执行的一个程序。
ps aux | process status查看进程的详细状况 |
---|
top | 动态显示运行中的进程并且排序 | kill [-9] 进程代号 | 终止指定代号的进程,-9表示强行终止 |
qsd@qsd-virtual-machine:~/桌面$ ps
PID TTY TIME CMD
2597 pts/0 00:00:00 bash
4198 pts/0 00:00:00 bash
4466 pts/0 00:00:00 ps
kill 2597
只有ps命令而不带任何选项时默认是只会显示当前用户通过终端启动的应用程序。 【ps命令后面跟的选项不需要带减号-】
选项 | 含义 |
---|
a | 显示终端上的所有进程,包括其他用户的进程 | u | 显示进程的详细状态 | x | 显示没有控制终端的进程 |
要退出top命令可以直接输入q。【top是一个实时监控的程序】
使用kill命令时,最好只终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃。 (先用ps命令确认一下进程代号PID)
三、其他命令 1.查找文件 find命令通常用来在特定的目录下搜索符合条件的文件。
find [路径] -name “*.py” | 查找指定路径下扩展名是.py的文件,包括子目录 |
---|
如果省略路径,则表示在当前文件夹下查找。 注意通配符的使用。
//搜索桌面目录下文件名包含1的文件
qsd@qsd-virtual-machine:~/桌面$ find -name "*1*"
./01.py
./123.txt
find ~/桌面 -name "*1*"
//搜索桌面目录下所有以.txt为扩展名的文件
qsd@qsd-virtual-machine:~/桌面$ find -name "*.txt"
./test/tt.txt
./123.txt
2.软链接
ln -s 被链接的源文件 链接文件 | 建立文件的软链接,类似于Windows下的快捷方式 |
---|
源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用。
不加-s选项建立的是一个硬链接文件。 【硬链接–》两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接】
qsd@qsd-virtual-machine:~/桌面$ mv 01.py demo/b/c
qsd@qsd-virtual-machine:~/桌面$ ln -s demo/b/c/01.py 01_xiangdui
//为01.py文件在桌面上创建软链接
ls -l
lrwxrwxrwx 1 qsd qsd 14 1月 28 17:48 01_xiangdui -> demo/b/c/01.py
qsd@qsd-virtual-machine:~/桌面$ ln -s /home/qsd/桌面/demo/b/c/01.py 01_juedui
ls -l
lrwxrwxrwx 1 qsd qsd 31 1月 28 17:51 01_juedui -> /home/qsd/桌面/demo/b/c/01.py
cat 01_xiangdui//或者cat 01_juedui都可以正常显示01.py的内容
mv 01* demo//将桌面上的两个软链接都移动到demo文件夹中//此时tree会发现01_xiangdui的软链接变成了红色
qsd@qsd-virtual-machine:~/桌面/demo$ cat 01_juedui
//可以正常显示
qsd@qsd-virtual-machine:~/桌面/demo$ cat 01_xiangdui
cat: 01_xiangdui: 没有那个文件或目录
如果相对路径的软链接移动了位置,就会出错。而绝对路径的软链接则一直有效。
3.硬链接 在使用ln创建链接时,如果没有-s选项,会创建一个硬链接而不是软链接。
qsd@qsd-virtual-machine:~/桌面/demo$ ln /home/qsd/桌面/demo/b/c/01.py 01_hard
ls -l
-rwxr-xr-- 2 qsd qsd 4 1月 28 17:46 01_hard
cat 01_hard//可以正常显示01.py内容
qsd@qsd-virtual-machine:~/桌面/demo$ rm b/c/01.py
//删除01.py后tree发现01_juedui,01_xiangdui都变红,01_hard正常,而用cat命令只能查看01_hard,其他两个都会提示“没有那个文件或目录”
软链接链接的文件一旦被删除,软链接就会失效。
4.软链接和硬链接 在Linux中,文件名和文件的数据是分开存储的。
文件名和文件数据是保存在磁盘上不同位置的,但是我们通过文件名访问到文件数据。 软链接文件中保存了文件的完整路径。删除掉源文件后,软链接也就失效了。
而硬链接实际上就是文件的另一个文件名。(文件名是文件数据的大名,硬链接是文件数据的小名) 【只有把文件名和硬链接都删除后,才是真正把源文件从磁盘上删除】
5.打包压缩 (1)在不同OS中,常用的打包压缩方式是不同的。 Windows常用rar Mac常用zip Linux常用tar.gz (2)打包/解包 tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件。 【tar工具只负责打包而不负责压缩】
#打包文件 tar -cvf 打包文件.tar 被打包的文件/路径 【如果有多个被打包的文件,则用空格分隔】
#解包文件 tar -xvf 打包文件.tar
tar选项说明
选项 | 含义 |
---|
c | 生成档案文件,创建打包文件 | x | 解开档案文件 | v | 列出归档解档的详细过程,显示进度 | f | 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后 |
注意:f选项必须放在最后,其他选项顺序可以随意。
实验: 删除桌面下的所有内容; 在桌面下新建三个空白文件01.py,02.py,03.py; 将这三个文件打一个py.tar的包; 新建tar目录,并将py.tar移动到tar目录下; 解包py.tar;
qsd@qsd-virtual-machine:~/桌面$ rm -r *
qsd@qsd-virtual-machine:~/桌面$ ls -l
总用量 0
qsd@qsd-virtual-machine:~/桌面$ touch 01.py
qsd@qsd-virtual-machine:~/桌面$ touch 02.py
qsd@qsd-virtual-machine:~/桌面$ touch 03.py
qsd@qsd-virtual-machine:~/桌面$ tar -cvf py.tar 01.py 02.py 03.py
01.py
02.py
03.py
qsd@qsd-virtual-machine:~/桌面$ ls -l
总用量 12
-rw-rw-r-- 1 qsd qsd 0 1月 28 20:22 01.py
-rw-rw-r-- 1 qsd qsd 0 1月 28 20:22 02.py
-rw-rw-r-- 1 qsd qsd 0 1月 28 20:22 03.py
-rw-rw-r-- 1 qsd qsd 10240 1月 28 20:23 py.tar
qsd@qsd-virtual-machine:~/桌面$ mkdir tar
qsd@qsd-virtual-machine:~/桌面$ mv py.tar tar
qsd@qsd-virtual-machine:~/桌面$ tree
.
├── 01.py
├── 02.py
├── 03.py
└── tar
└── py.tar
1 directory, 4 files
qsd@qsd-virtual-machine:~/桌面$ cd tar
qsd@qsd-virtual-machine:~/桌面/tar$ tar -xvf py.tar
01.py
02.py
03.py
qsd@qsd-virtual-machine:~/桌面/tar$ ls -lh
总用量 12K
-rw-rw-r-- 1 qsd qsd 0 1月 28 20:22 01.py
-rw-rw-r-- 1 qsd qsd 0 1月 28 20:22 02.py
-rw-rw-r-- 1 qsd qsd 0 1月 28 20:22 03.py
-rw-rw-r-- 1 qsd qsd 10K 1月 28 20:23 py.tar
(3)压缩/解压缩 tar与gzip命令结合可以实现文件的打包和压缩。
其中,tar只负责打包文件,但不压缩。 用gzip压缩tar打包后的文件,其扩展名一般用xxx.tar.gz。 在Linux中,最常见的压缩文件格式就是xxx.tar.gz。
在tar命令中有一个选项-z可以调用gzip,从而可以方便的实现压缩和解压缩的功能。
#压缩文件 tar -zcvf 打包文件.tar.gz 被压缩的文件/路径
#解压缩文件 tar -zxvf 打包文件.tar.gz
#解压缩到指定路径 tar -zxvf 打包文件.tar.gz -C 目标路径 【-C选项:解压缩到指定目录,注意:要解压缩的目录必须存在】
qsd@qsd-virtual-machine:~/桌面$ tar -zcvf py.tar.gz *.py
qsd@qsd-virtual-machine:~/桌面$ tar -cvf py.tar *.py
ls -lh
-rw-rw-r-- 1 qsd qsd 10K 1月 28 20:40 py.tar
-rw-rw-r-- 1 qsd qsd 134 1月 28 20:39 py.tar.gz
qsd@qsd-virtual-machine:~/桌面$ mkdir gz
qsd@qsd-virtual-machine:~/桌面$ mv py.tar.gz gz
qsd@qsd-virtual-machine:~/桌面$ cd gz
qsd@qsd-virtual-machine:~/桌面/gz$ tar -zxvf py.tar.gz
(4)bzip(two)压缩格式 tar与bzip2命令结合可以实现文件的打包和压缩。(用法和gzip一样)
其中,tar只负责打包文件,但不压缩。 用bzip2压缩tar打包后的文件,其扩展名一般用xxx.tar.bz2。
在tar命令中有一个选项-j可以调用bzip2,从而可以方便的实现压缩和解压缩的功能。
#压缩文件 tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径
#解压缩文件 tar -jxvf 打包文件.tar.bz2
#解压缩到指定路径 tar -jxvf 打包文件.tar.bz2 -C 目标路径
qsd@qsd-virtual-machine:~/桌面/gz$ tar -jcvf py.tar.bz2 *.py
01.py
02.py
03.py
qsd@qsd-virtual-machine:~/桌面/gz$ mkdir bz2
qsd@qsd-virtual-machine:~/桌面/gz$ tar -jxvf py.tar.bz2 -C bz2
四、软件安装 1.通过apt安装/卸载软件 (1)apt是Advanced Packaging Tool,是Linux下的一款安装包管理工具,可以在终端中方便的安装/卸载/更新软件包。
#安装软件 $ sudo apt install 软件包
#卸载软件 $ sudo apt remove 软件名
#更新已安装的包 $ sudo apt upgrade(系统会自动检测机器上有哪些软件包需要更新并更新) (2)实验 #sl可以在终端中输出一个小火车提示 sudo apt install sl
#htop是一个比较漂亮的查看当前进程排名的软件(htop和top一样,按q退出) sudo apt install htop
2.配置软件源 如果希望在ubuntu中安装软件更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提供软件下载/安装服务。
提示:更换服务器之后,需要一个相对比较长时间的更新过程,需要耐心等待。更新完成后,再安装软件都会从新设置的服务器下载软件了。
ubuntu有一个主服务器,这个服务器上保存了所有可以通过apt安装的软件的安装包。当用户使用apt命令安装软件时,系统会默认从主服务器上查找是否有对应的软件包,如果有就将其下载到本地然后进行安装。 这个主服务器就是软件源
镜像源:就是所有服务器的内容是相同的(镜像),但是根据所在位置不同,国内服务器通常速度会更快一些。 ubuntu的服务器是放在国外的,如果国内用户从国外服务器上下载就会很慢。所以国内一些公司提供了镜像服务器(阿里镜像服务器,清华镜像服务器,搜狐镜像服务器),内容和主服务器是一样的,并且由于在国内,所以提高了国内用户的访问速度。
在ubuntu中打开系统设置窗口–软件和更新-下载自-其他站点-通过“选择最佳服务器”选择一个速度最快的,进行授权。 之后点击关闭时会弹出一个窗口提示“可用软件的列表信息已过时”,点击“重新载入”,等待之后即可。
五、Python简介 1.python(蟒蛇) 第一个Python解释器是用C语言实现的,并能够调用C语言的库文件。
2.解释器 编译器将高级语言翻译成机器语言。 编译器翻译的方式有两种:编译和解释。 两种方式之间的区别在于翻译时间点的不同。 当编译器以解释方式运行的时候,也称之为解释器。
使用编译器编译的语言-编译型语言。 如C、C++。编译器将源程序编译成最终的可执行文件。 统一编译,依次执行。 编译型语言比解释型语言执行速度更快。 跨平台性:Windows系统上的编译器只能将源程序编译为Windows系统可执行的机器语言,而不能在其他OS上执行。
使用解释器解释的语言-解释型语言。 如Python。解释器逐行解释每一句源代码,然后将其执行。读取一行,翻译一行;翻译一行,执行一行。 跨平台性:在不同的OS上安装不同的解释器,同一份代码可以在不同OS上执行。
3.Python 开源 适用于短期开发的日常任务。 Python的设计哲学:优雅、明确、简单。 Python代码量少。
4.Python特点 (1)Python是完全面向对象的语言 函数、模块、数字、字符串都是对象,在Python中一切皆对象; 支持继承、重载、多重继承; 支持重载运算符,也支持泛型设计; (2)Python拥有一个强大的标准库 Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。 (3)Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算、人工智能、机器学习、web开发、数据库接口、图形系统多个领域。
5.面向对象是一种思维方式,也是一门程序设计技术。
|