Python高级 Day2 linux基础2
准备初始数据:
1. 在桌面创建test目录
mkdir test
2. 拷贝/opt/sublime_text 目录下的文件 到test目录中
(只复制文件,不复制目录)
cp /opt/sublime_text/* ./test
一、 linux命令
1. | : 管道命令
管道:一个命令的输出可以通过管道作为另一个命令的输入
示例1: 分别用ls 和 tree命令查看 根目录/ 的内容,且分屏显示
1. ls / | more
2. tree / | more
2. ln : 链接命令
(ln: link)
格式: ln [选项] 目标 链接名
选项: -s : 创建软链接(soft), 好比windows中的快捷方式
- 硬链接
ln 目标 链接名
- 软链接
ln -s 目标 链接名 :好比windows中的快捷方式
示例1 :在桌面创建一个01.txt文件,对该文件创建软连接01_s_link.txt
1. touch 01.txt
2. ln -s 01.txt 01_soft_link.txt
示例2:在桌面创建一个01.txt文件,对该文件创建硬连接01_link.txt
ln 01.txt 01_link.txt
软链接与硬链接相同点与区别
1. 软链接与硬链接最终都是指向同一个文件存储区域(文件描述符)
2. 当源文件名删除, 软链接变成无效链接,而硬链接还可以打开源文件的内容
3. 文件详细列表显示时, 软链接的文件类型是 l,而硬链接是 -
4. 软连接可以链接文件和目录,而硬链接只能链接文件
提示: 如果是在目标文件所在目录以外的目录创建软链接,那么软链接的目标文件路径写绝对路径
3. grep: 查找某个文件的文本 ,显示匹配行
格式:grep [-选项] ‘搜索内容串’ 文件名
选项:
- i: 不区分大小写
- n: 显示匹配行的行号
- v: 显示不匹配的行
示例1: 把家目录中的文件信息写入桌面的home.txt中, 并且查找D字符
(当前目录是桌面)
1. ls ~ > home.txt
2. grep 'D' home.txt
3. grep -i 'D' home.txt
4. grep -in 'D' home.txt
5. grep -inv 'D' home.txt
示例2: 查询mysql程序是否运行(拓展)
命令: ps(process:进程)
ps -aux | grep 'mysql'
提示: ps命令 , 查看当前运行的进程 ,-aux: 以bsd的格式显示内容
4. find:查找文件
格式 find [路径] [-name|-size|-perm] [匹配规则]
(当前目录是Desktop/test目录)
a> 按名称查找
示例1:查找test目录中扩展名是py的文件
find ./ -name '*.py'
示例2:查找test目录中以c或者s字母开头的文件
find ./ -name '[cs]*'
b>按大小查找
示例2:查找test目录大于2M的文件
find ./ -size +2M
c>按权限查找(perm : permission:权限)
find ./ -perm 权限值
文件的权限:rwxr-xr-x
不同类型的用户:
1. 属主用户
2. 属主用户的同组用户
3. 其他用户
示例3:查找出test目录中属主用户有读写权限,同组用户及其他用户只有读权限的文件
find ./ -perm 644
rw- r-- r--
421 4 4
6
示例4:查找出test目录中属主用户有读写执行权限,同组用户及其他用户只有读和执行权限的文件
find ./ -perm 755
rwx r-x r-x
7 5 5
5. tar: 打包压缩命令
格式 : tar [选项] 打包后的文件名 要打包的文件
选项:
1. c :创建打包文件,归档文件
2. v :显示打包或者拆包详情
3. f :指定打包后的文件名称,f后面接xxx.tar文件
4. x :解包,拆包
5. z :以gzip压缩或者解压文件
6. C : 解压到指定路径,-C 选项 后面接解压后存放文件的目录
(当前目录是test目录)
示例1: 对test目录下的所有文件打包成my.tar 文件
tar -cvf my.tar *
示例2: 对my.tar 文件进行拆包
tar -xvf my.tar
示例3: 对test目录下的所有文件打包且以gzip格式压缩 成 my.tar.gz文件
tar -czvf my.tar.gz *
示例4: 对my.tar.gz 解压及拆包到桌面的test2目录中
1. tar -xzvf my.tar.gz
2.
2.1 mkdir ../test2
2.2 tar -xzvf my.tar.gz -C ../test2
写出使用tar打包并压缩为**.tar.bz2的命令
tar -jcvf my.tar.bz2
写出解压缩**.tar.bz2的命令
tar -jxvf my.tar.bz2
6. chmod :对文件或目录设置权限
a>字母法
格式: chmod u/g/o/a +/-/= rwx 文件
用户:
u: 属主用户
g: 同组其他用户
o: 其他用户
a:所有用户
授权:
+: 添加权限
-: 移除权限
=: 设定权限
权限:
r: 读
w:写
x: 执行
-:无权限
示例1: 对test2目录下的sublime.py 文件的拥有者用户及同组用户添加执行权限,对其他用户添加写权限
chmod u+x,g+x,o+w sublime.py
示例2: 对test2目录下的sublime.py同组用户移除执行权限,对其他用户设置无权限
1. chmod g-x,o=- sublime.py
2. chmod g-x,o= sublime.py
b>数字法
格式:chmod 权限数字表示法 文件名
示例3:使用数字法对test2目录的sublime.py所有用户均设置读写执行权限
chmod 777 sublime.py
rwx rwx rwx
421
7. which : 查找命令的位置
示例:分别查看ls和shutdown两个命令在哪个目录中
1. which ls
2. which shutdown
8. 与用户相关命令(who、sudo、passwd、su、exit)
a> who : 查看哪些用户在登录
示例1:查看当前哪些用户在登录
python@ubuntu:~/Desktop$ who
python tty7 2018-09-10 14:31 (:0)
python pts/2 2018-09-10 16:36 (192.168.110.95)
1. 用户名:python
2. 连接方式: tty7: 本地连接 pts: 远程连接
远程主机的ip:192.168.110.95
b> sudo : superuser do : 超级用户授权当前用户执行命令
格式: sudo command
示例2:在/opt目录下创建images文件夹
python@ubuntu:/opt$ mkdir images
mkdir: 无法创建目录"images": 权限不够
python@ubuntu:/opt$ sudo mkdir images
[sudo] python 的密码:
python@ubuntu:/opt$ ls
google images pycharm-2016.3.1 sublime_text vmware-tools-installer
python@ubuntu:/opt$
c> passwd : 设置用户的密码
格式: sudo passwd 用户名
示例3:设置root用户密码
sudo passwd root
d> su(switch user) : 切换用户
示例4:使用su命令切换到root用户
su root
e> exit : 退出用户登录,不是关机
1. 如果是ubuntu图形界面打开的命令终端,退出当前终端
2. 如果是使用ssh远程登录,退出登录账户
3. 如果是切换后的登录用户,退出则返回上一个登录账号
示例5:使用exit命令退出命令终端界面
9. 关机相关命令(reboot、shutdown)
a> reboot: 重启
b> shutdown: 关机
-h: halt ,停掉系统,并没有掉电,主板是通电的
1. shutdown –r now :立即重启
2. shutdown -h now :立即关机
3. shutdown -h 20:25 :指定某个时间关机
4. shutdown -h +10 : 10分钟后关机
二、 ubuntu软件的安装与卸载
四种安装软件的方式:
通过deb格式的离线软件包安装
直接解压gzip等压缩格式文件
通过apt-get包管理器从软件源中在线安装
从软件源码手动编译安装
1. 离线安装
a> 直接解压gzip等压缩格式文件
示例1: 解压 pycharm.tar.gz 文件到 /opt/mysoft ,并且运行pycharm软件
1. sudo mkdir /opt/mysoft
2. sudo tar -xzvf pycharm.tar.gz -C /opt/mysoft
3. 执行文件:
python@ubuntu:/opt/mysoft/pycharm-community-2017.2.4/bin$ ./pycharm.sh
提示: xxx.sh是linux 可执行的shell脚本文件
好比 windows xxx.exe ,bat文件
b> 通过ubuntu支持的安装包安装
ubuntu 支持deb格式 ,deb格式是Debian系统(包含Debian和Ubuntu)专属安装包格式 ,好比android 的xxx.apk格式
格式:
sudo dpkg -i xxx.deb # 安装包
(-i:install)
sudo dpkg -r package # 删除包
(-r: remove)
示例2: 在ubuntu环境中安装和卸载网络助手软件
安装: sudo dpkg -i qq.deb
卸载: sudo dpkg -r mnetassist
提示: 命令 : dpkg -l :列举当前安装的程序(包)的名称
dpkg -l | grep 'mnet' (搜索大概的名字)
2. 通过apt-get包管理器从软件源中在线安装(最常用的方式)
apt-get 常用命令:
sudo apt-get install package
sudo apt-get remove package
sudo apt-get update 更新源
示例3: 安装sl包,并且演示效果
安装: sudo apt-get install sl
卸载: sudo apt-get remove sl
三、 vim 软件的使用
1. 三种工作模式:
命令模式
编辑模式
末行模式
a> 命令模式:打开文件,默认进入此模式,通过命令的方式对文档进行编辑,比如复制,粘贴,删除行等操作
b> 编辑模式: 在命令模式中按i或者a进入编辑模式,可输入文本进行编辑文档。按'esc'退出编辑模式,进入命令模式
c> 末行模式: 在命令模式按':' 进入末行模式,在末行模式中可实现查找替换文本、保存退出文件等操作,按'esc'进入命令模式
2. 命令模式下的vim操作(了解)
a> 进入编辑模式
1. i或者a (i在光标前添加文本,a在光标后添加文本)
b> 移动光标
1. 方向箭头 (上下左右)
2. hjkl (上下左右)
3. G和gg (G 文档最后一行, gg 文档首行)
c> 删除命令
1. dd和n dd (dd删除光标所在行,5 dd删除指定行数,从光标所在行开始计算)
d> 撤销与恢复命令
1. u (撤销)
2. ctrl+r (恢复)
e> 复制粘贴命令
1. yy 和 n yy (yy复制当前行,5 yy复制5行)
2. p和n p (p在光标所在位置向下新开一行粘贴,5p 粘贴5次)
示例1: 复制2行内容, 放在末尾进行粘贴
2yy G p
示例2: 删除当前光标所在行,及以下的2行的数据
2 dd
3. 末行模式下的vim操作(了解)
a> 查找替换操作
1. /str (查找字符串)
在命令模式直接按/ 符号, 进入末行模式
/ab (查询ab字符 ,enter回车后,按n指向下一个匹配的字符,去掉高亮显示:noh)
2. %s/str/reg/g (替换字符串)
在命令模式直接按:符号, 进入末行模式
%(多行操作)
s( 替换命令,默认替换当前行)
/str (要替换的文本)
/reg (替换的规则)
/g(一行中替换多次)
示例3: 查找文档中的abc字符
在命令模式直接按/ 符号, 进入末行模式
/abc (查询ab字符 ,enter回车后,按n指向下一个匹配的字符,去掉高亮显示:noh)
示例4: 把文档中的abc字符改为xyz
在命令模式直接按:符号, 进入末行模式
:%s/abc/xyz/g
b> 保存退出命令
1. w (保存文档)
2. q (退出文档)
3. wq (保存且退出文档)
4. x (保存且退出文档)
5. q! (不保存退出文档)
6. set number/nonumber (显示行号或者隐藏行号)
7. :9 (定位到某行)
四、 SSH服务
1. SSH介绍
ssh(Secure Shell): 安全外壳 是一种网络安全协议,利用SSH协议可以有效防止远程管理过程中的信息泄露问题
2. ssh服务器安装
sudo apt-get install openssh-server
3. 远程登录服务端
a> Linux\Mac系统 通过ssh命令客户端远程登录服务端
格式 : ssh 用户名@服务器IP
python@ubuntu:~$ ssh python@192.168.110.96
The authenticity of host '192.168.110.96 (192.168.110.96)' can't be established.
ECDSA key fingerprint is SHA256:/O0d2GZ+OZ85kT+GacHP5WrgpMeJwyWBOSfk1xTidXQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.110.96' (ECDSA) to the list of known hosts.
python@192.168.110.96's password:
b> windows中使用ssh客户端工具putty\xshell 远程登录服务端
1. ping 服务端的ip地址
2. 使用putty\xshell 第三方ssh客户端工具远程登录ssh服务端
4. 基于ssh的文件上传下载
a> scp命令(linux/mac支持该命令)
scp(secure copy)安全拷贝,基于ssh协议的远程文件拷贝命令,拷贝目录需要加 -r 选项
提示: windows环境不支持该命令
1. 安全拷贝远程主机文件到本地
格式: scp RemoteUserName@RemoteHostIp:RemoteFile FileName
scp python@192.168.110.96: Desktop/info.txt ./
2. 安全拷贝本地文件到远程主机
格式: scp FileName RemoteUserName@RemoteHostIp:RemoteFile
scp ./local.txt python@192.168.110.96: Desktop/
示例1:拷贝远程ubuntu虚拟机桌面的remote_order.txt 到本地
(在远程桌面创建remote目录,再创建remote_order.txt文件)
scp RemoteUserName@RemoteHostIp:RemoteFile FileName
scp python@192.168.110.96:Desktop/u/cc.txt ./
示例2:拷贝本地的local_order.txt文件到远程ubuntu虚拟机桌面
(在本地桌面创建local目录,再创建local_order.txt文件)
scp FileName RemoteUserName@RemoteHostIp:RemoteFile
scp w.txt python@192.168.110.96:./Desktop/remote
其他:
1. ssh客户端支持root登录
- sudo vim /etc/ssh/sshd_config
- 修改PermitRootLogin配置项
将原先的prohibit-password修改为 yes
- 重启ssh服务
sudo service ssh restart
2. 设置root账号密码
python@ubuntu:/home$ sudo passwd root
[sudo] python 的密码:
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
python@ubuntu:/home$ su root
密码:
root@ubuntu:/home# cd python
root@ubuntu:/home/python#