tmux基本操作

tmux是什么

tmux(terminal multiplexer)是Linux上的终端复用神器,可从一个屏幕上管理多个终端(准确说是伪终端)。使用该工具,用户可以连接或断开会话,而保持终端在后台运行。类似的工具还有screen,个人对这二者的使用感受是,用过tmux就再也不想用screen了。

tmux基本结构

tmux的结构包括会话(session)、窗口(window)、窗格(pane)三部分,会话实质是伪终端的集合,每个窗格表示一个伪终端,多个窗格展现在一个屏幕上,这一屏幕就叫窗口。基本结构及状态信息如下图所示:

tmux基本操作

基本的操作无非就是对会话、窗口、窗格进行管理,包括创建、关闭、重命名、连接、分离、选择等等。

一般使用命令和快捷键进行操作,可在系统shell终端和tmux命令模式(类似vim的命令模式)下使用命令,或者在tmux终端使用快捷键。

tmux默认的快捷键前缀是Ctrl+b(下文用prefix指代),按下前缀组合键后松开,再按下命令键进行快捷操作,比如使用prefix d分离会话(应该写作prefix d而不是prefix+d,因为d键不需要与prefix同时按下)。

快捷键可以自定义,比如将前缀改为Ctrl+a,但需要保留shell默认的Ctrl+a快捷键,按如下所示修改~/.tmux.conf文件:

现在已将原先的Ctrl+aprefix Ctrl+a取代,即需要按两次Ctrl+a生效。

第4行的作用是使用prefix r重新加载配置文件,并输出提示,否则需要关闭会话后配置文件才能生效,也可手动加载配置文件,在tmux终端输入”prefix :”进入命令模式,用source-file命令加载配置文件。

注意,将多个命令写在一起作为命令序列时,命令之间要用空格和分号分隔。 

会话管理 

常用命令

tmux new  创建默认名称的会话(在tmux命令模式使用new命令可实现同样的功能,其他命令同理,后文不再列出tmux终端命令)

tmux new -s mysession  创建名为mysession的会话

tmux ls  显示会话列表

tmux a  连接上一个会话

tmux a -t mysession  连接指定会话

tmux rename -t s1 s2  重命名会话s1为s2

tmux kill-session  关闭上次打开的会话

tmux kill-session -t s1  关闭会话s1

tmux kill-session -a -t s1  关闭除s1外的所有会话

tmux kill-server  关闭所有会话

常用快捷键

prefix s  列出会话,可进行切换

prefix $  重命名会话

prefix d  分离当前会话

prefix D  分离指定会话

窗口管理

prefix c  创建一个新窗口

prefix ,  重命名当前窗口

prefix w  列出所有窗口,可进行切换

prefix n  进入下一个窗口

prefix p  进入上一个窗口

prefix l  进入之前操作的窗口

prefix 0~9  选择编号0~9对应的窗口

prefix .  修改当前窗口索引编号

prefix ‘  切换至指定编号(可大于9)的窗口

prefix f  根据显示的内容搜索窗格

prefix &  关闭当前窗口

窗格管理

prefix %  水平方向创建窗格

prefix “  垂直方向创建窗格

prefix Up|Down|Left|Right  根据箭头方向切换窗格

prefix q  显示窗格编号

prefix o  顺时针切换窗格

prefix }  与下一个窗格交换位置

prefix {  与上一个窗格交换位置

prefix x  关闭当前窗格

prefix space(空格键)  重新排列当前窗口下的所有窗格

prefix !  将当前窗格置于新窗口

prefix Ctrl+o  逆时针旋转当前窗口的窗格

prefix t  在当前窗格显示时间

prefix z  放大当前窗格(再次按下将还原)

prefix i  显示当前窗格信息

其他命令

tmux list-key  列出所有绑定的键,等同于prefix ?

tmux list-command  列出所有命令

以上为tmux的常见操作,基本可以满足大部分的工作需求,至于更高端的操作待日后再整理。

————————————————–

参考资料:

1. man tmux;

2. 《Tmux 速成教程:技巧和调整》。

centos7安装python3.7

环境:Centos7.6 1810 + python 3.7.3

第一步:安装依赖包

第二步:下载python包

第三步:编译安装,把Python3.7安装到 /usr/local 目录

第四步:建立软链接

其他:linux下安装虚拟环境

修改Centos7源

PrimaryKeyRelatedField

官网解释:

PrimaryKeyRelatedField may be used to represent the target of the relationship using its primary key.

使用主键来呈现关系 目标

https://www.django-rest-framework.org/api-guide/relations/#primarykeyrelatedfield

用主键来呈现,便于保存数据库

*django中related_name作用

一句话总结:在一个对象查询多个对象的场景使用

如,

1,作者和书籍,在书籍外键设置related_name,查询指定作者的所有书籍时使用。

2,商品和图片,在图片外键设置related_name,查询指定商品的所有图片是使用。

两篇文章供参考:

https://www.cnblogs.com/pyspark/p/8638180.html

https://blog.csdn.net/wuliangtianzu/article/details/82656647

*django rest framework serializers小结

一共有两篇文章参考:

《Django rest framework之序列化小结》https://www.cnblogs.com/pyspark/p/8607801.html

《django rest framework serializers小结》https://blog.csdn.net/l_vip/article/details/79156113

引言
  serializers是什么?官网是这样的”Serializers allow complex data such as querysets and model instances to be converted to native Python datatypes that can then be easily rendered into JSON, XML or other content types. “翻译出来就是,将复杂的数据结构变成json或者xml这个格式的。
  
  在最近的学习中,个人看法,serializers有以下几个作用:
   – 将queryset与model实例等进行序列化,转化成json格式,返回给用户(api接口)。
  - 将post与patch/put的上来的数据进行验证。
   – 对post与patch/put数据进行处理。
 (后面的内容,将用patch表示put/patch更新,博主认为patch更贴近更新的说法)
  简单来说,针对get来说,serializers的作用体现在第一条,但如果是其他请求,serializers能够发挥2,3条的作用!

  本文比较长,用张图简单介绍一下主要内容

作者:_气呀呀呀
来源:CSDN
原文:https://blog.csdn.net/l_vip/article/details/79156113
版权声明:本文为博主原创文章,转载请附上博文链接!

django自定义用户验证错误后的提示信息

over