分类目录归档:terminal

vim

一、vim 操作技巧

1、vim中如何删除行?

dd:删除光标所在行,n dd删除指定的行数
删除命令:
x:删除光标后一个字符,相当于Del 
X:删除光标前一个字符,相当于Backspace 
dd:删除光标所在行,n dd删除指定的行数
D:删除光标后本行所有内容,包含光标所在字符
d0:删除光标前本行所有内容,不包含光标所在字符
dw.删除光标开始位置的字,包含光标所在字符</pre>

2、vim中命令如何撤销?

u:一步一步撤销
Ctr-r:反撤销

3、vim中如何选中多行(比如我想要多行缩进)

1、字母v,然后向下拖
2、文本行右移(shift+>)

4、vim中如何设置tab默认缩进四个空格?

1、vim ~/.vimrc
2、set ts=4

5、vim中文本如何左右移动(比如缩进)?

>>:文本行右移
<<:文本行左移

6、vim中复制粘贴命令?

yy复制当前行,nyy复制n行,yw复制单词
p:在光标所在位置向下新开除一行,粘贴

7、vim中的查找命令是什么?

1、比如要做world,直接末行模式下敲 /world 即可
2、n:下一个 N:上一个

8、vim中将整个文件中的abe替换为123(vim中的替换命令)?

1、末行模式下%s/abe/123/g
2、%表示整个文件,g是全局的意思,s是替换的意思

替换操作: r:替换当前字符 R:替换当前行光标后的字符查找命令::/:str查找 n:下一个 N:上一个 s.替换命令:把abc全部替换成123 末行模式下,将光标所在行的abc替换成123 :%s/abe/123/g

9、vim中,末行模式下,将第一行至第10行之间的abc替换成123?

1,10s/abc/123/g

10、vim中如何在vim中敲shell命令(比如我查看linux系统中是否存在某某文件)?

末行模式下,!感叹号加命令:!ls /etc

11、vim中重复上次命令的命令?

.:逗号,重复上一次操作的命令

替换操作:
r:替换当前字符
R:替换当前行光标后的字符查找命令::/:str查找
n:下一个 N:上一个
s.替换命令:把abc全部替换成123
末行模式下,将光标所在行的abc替换成123
:%s/abe/123/g
删除命令:
x:删除光标后一个字符,相当于Del
X:删除光标前一个字符,相当于Backspace
dd:删除光标所在行,n dd删除指定的行数
D:删除光标后本行所有内容,包含光标所在字符
d0:删除光标前本行所有内容,不包含光标所在字符
dw.删除光标开始位置的字,包含光标所在字符
撤销命令:
u:一步一步撤销
Ctr-r:反撤销:
重复命令:
.:重复上一次操作的命令

二、vim 修改光标效果

默认光标显示效果不好,想要修改,定制:
https://www.cnblogs.com/yzsatcnblogs/p/4277891.html

三、正则表达式

1、来源

https://blog.csdn.net/u014015972/article/details/50688837

2、替换

:1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之间搜索替换
:10s/from/to/ 表示只在第10行搜索替换
:%s/from/to/ 表示在所有行中搜索替换     :1,$s/from/to/g 同上,从第一行到最后一行,加上g表示全局

3、替换中的flag关键字

flags 有如下四个选项:
c confirm,每次替换前询问;
e error, 不显示错误;
g globle,不询问,整行替换。如果不加g选项,则只替换每行的第一个匹配到的字符串;
i ignore,忽略大小写
这些选项可以合并使用,如cgi表示不区分大小写,整行替换,替换前询问

4、正则表达式的元字符

. 匹配任意字符
[abc] 匹配方括号中的任意一个字符,可用-表示字符范围。如[a-z0-9]匹配小写字母和数字
[^abc] 匹配除方括号中字符之外的任意字符
\d 匹配阿拉伯数字,等同于[0-9]
\D 匹配阿拉伯数字之外的任意字符,等同于[^0-9]
\x 匹配十六进制数字,等同于[0-9A-Fa-f]
\X 匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]
\l 匹配[a-z]
\L 匹配[^a-z]
\u 匹配[A-Z]
\U 匹配[^A-Z]
\w 匹配单词字母,等同于[0-9A-Za-z_]
\W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]
\t 匹配<TAB>字符
\s 匹配空白字符,等同于[\t]
\S 匹配非空白字符,等同于[^\t]

5、一些普通字符需转意

* 匹配* 字符
.  匹配. 字符
\/ 匹配 / 字符
\  匹配 \ 字符
\[ 匹配 [ 字符
\] 匹配 ] 字符

6、表示数量的元字符

*  匹配0-任意个
\+ 匹配1-任意个
\? 匹配0-1个
\{n,m} 匹配n-m个
\{n}   匹配n个
\{n,}  匹配n-任意个
\{,m}  匹配0-m个

7、表示位置的元字符

$  匹配行尾
^  匹配行首
\< 匹配单词词首
\> 匹配单词词尾

8、替换变量

在正则式中以\(和\)括起来的正则表达式,在后面使用的时候可以用\1、\2等变量来访问\(和\)中的内容

9、几个例子

删除行尾空格::%s/\s+$//g
删除行首多余空格:%s/^\s*// 或者 %s/^ *//
删除沒有內容的空行:%s/^$// 或者 g/^$/d
删除包含有空格组成的空行:%s/^\s*$// 或者 g/^\s*$/d
删除以空格或TAB开头到结尾的空行:%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d
把文中的所有字符串“abc……xyz”替换为“xyz……abc”可以有下列写法

将行中开头数字删除:
110:/home/user/a.c:194: first defined here
:%/^\d\+://g

替换命令可以在全文中用一个单词替换另一个单词:
:%s/four/4/g  "%" 范围前缀表示在所有行中执行替换。
最后的 "g" 标记表示替换行中的所有匹配点。
如果仅仅对当前行进行操作,那么只要去掉%即可

如果你有一个象 "thirtyfour" 这样的单词,上面的命令会出错。
这种情况下,这个单词会被替换成"thirty4"。要解决这个问题,用 "\<" 来指定匹配单词开头:
:%s/\<four/4/g 显然,这样在处理 "fourty" 的时候还是会出错。
用 "\>" 来解决这个问题:
:%s/\<four\>/4/g

如果你在编码,你可能只想替换注释中的 "four",而保留代码中的。
由于这很难指定,可以在替换命令中加一个 "c" 标记,这样,Vim 会在每次替换前提示你:
:%s/\<four\>/4/gc

删除多余的空格:
要删除这些每行后面多余的空格,可以执行如下命令:
:%s/\s\+$//
命令前面指明范围是 "%",所以这会作用于整个文件。
"substitute" 命令的匹配模式是 "\s\+$"。这表示行末($)前的一个或者多个(\+)空格(\s).
替换命令的 "to" 部分是空的:"//"。这样就会删除那些匹配的空白字符。

匹配重复性模式:
星号项 "*" 规定在它前面的项可以重复任意次。因此:
/a*  匹配 "a","aa","aaa",等等。
但也匹配 "" (空字串),因为零次也包含在内。星号 "*" 仅仅应用于那个紧邻在它前面的项。
因此 "ab*" 匹配 "a","ab","abb","abbb",等等。
如要多次重复整个字符串,那么该字符串必须被组成一个项。
组成一项的方法就是在它前面加 "\(",后面加 "\)"。
因此这个命令:
/\(ab\)*  匹配: "ab","abab","ababab",等等。
而且也匹配 ""。要避免匹配空字串,使用 "\+"。
这表示前面一项可以被匹配一次或多次。
/ab\+ 匹配 "ab","abb","abbb",等等。它不匹配 后面没有跟随 "b" 的 "a"。
要匹配一个可选项,用 "\="。
例如:
/folders\=  匹配 "folder" 和 "folders"。

指定重复次数
要匹配某一项的特定次数重复,使用 "\{n,m}" 这样的形式。
其中 "n" 和 "m" 都是数字。
在它前面的那个项将被重复 "n" 到 "m" 次 (|inclusive| 包含 "n" 和 "m")。
例如:
/ab\{3,5} 匹配 "abbb","abbbb" 以及 "abbbbb"。
当 "n" 省略时,被默认为零。
当 "m" 省略时,被默认为无限大。
当 ",m" 省略时,就表示重复正好 "n" 次。
例如:
  模式           匹配次数
\{,4}           0,1,2,3 或 4
\{3,}           3,4,5,等等
\{0,1}          0 或 1,同 \=
\{0,}           0 或 更多,同 *
\{1,}           1 或 更多,同 \+
\{3}            3

多选一匹配
在一个查找模式中,"或" 运算符是 "\|"。
例如:
/foo\|bar 这个命令匹配了 "foo" 或 "bar"。
更多的抉择可以连在后面:
/one\|two\|three 匹配 "one","two" 或 "three"。
如要匹配其多次重复,那么整个抉择结构须置于 "\(" 和 "\)" 之间:
/\(foo\|bar\)\+  这个命令匹配 "foo","foobar","foofoo","barfoobar",等等。
再举个例子:
/end\(if\|while\|for\)
这个命令匹配 "endif","endwhile" 和 "endfor"。

四、shell脚本操作vim

1、开胃小菜(为啥不行,怎样调用?)

#! /bin/bash
vi abc.txt < EOF
i                    # 进入 insert 模式
Here is a document!  # 输入文本内容
^[                   # 意为按下ESC退出编辑模式
:wq                  # 保存退出
EOF

五、不区分大小写搜索

忽略大小写搜索:
  :set ignorecase
恢复大小写敏感:
  :set noignorecase

六、分屏操作

1、分屏启动

垂直大O:vim -On file_1 file_2 ...
水平小o:vim -on file_1  file_2 ...
n 表示数字:分几屏

2、关闭分屏

关闭当前窗口: ctrl+W c
ctrl+W q

3、分屏

上下:ctrl+W s
上下分屏,并打开新文件 :sp fileName
左右分割:ctrl+W v
左右分割,并打开新文件 :vsp fileName

4.移动光标是hjkl,在各屏间切换,只需按Ctrl+W

1.把光标移到右边        Ctrl+W l
2.把光标移到左边的屏中   Ctrl+W h
3.把光标移动到上边的屏中 Ctrl+W k
4.把光标移动到下面的屏中 Ctrl+W j
5.把光标移动到下一个屏中 Ctrl+W w

5.下面是改变尺寸的操作,主要是高度,对于宽度你可以使用Ctrl+W <或是>,但这可能需要最新的版本才支持。

1.让所有的屏都有一样的高度 Ctrl+W =
2.增加高度    Ctrl+W +
3.减少高度    Ctrl+W -
4.移动分屏

6.这个功能还是使用了Vim的光标键,只不过都是大写。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状

1.向右移动     Ctrl+W L
2.向左移动     Ctrl+W H
3.向上移动     Ctrl+W K
4.向下移动     Ctrl+W J

七、vim打开文件乱码问题

转1. http://blog.sina.com.cn/s/blog_40e1ba640102wm26.html 
2.http://www.cnblogs.com/joeyupdo/archive/2013/03/03/2941737.html
以下为copy链接2中的介绍
(1)encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在 .vimrc 中改变它的值才有意义
(2)fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此),网上是这样介绍的,但是我这样做在.vimrc中定义为utf-8似乎没有作用,只能在打开vim文件时手动设置才会起效,不知道什么原因。 
(3)fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
(4)termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。
系统locale是utf-8(很多linux系统默认的locale形式),编辑的文档是GB2312或GBK形式的(Windows记事本
默认保存形式,大部分编辑器也默认保存为这个形式,所以最常见),终端类型utf-8(也就是假定客户端是putty类的unicode软件)
则vim打开文档后,encoding=utf-8(locale决定的),fileencoding=latin1(自动编码判断机制不准导致的),termencoding=空(默认无需转换term编码),显示文件为乱码。
解决方案1:首先要修正fileencoding为cp936或者euc-cn(二者一样的,只不过叫法不同),注意修正的方法不是:set
fileencoding=cp936,这只是将文件保存为cp936,正确的方法是重新以cp936的编码方式加载文件为:edit
++enc=cp936,可以简写为:e ++enc=cp936。
但是这样做,文件关闭后重新打开又要重新设置一遍。出现乱码归根结底的原因是vim不能识别该文件的编码方式,导致不能正常解码(不知道是不是叫解码,我的理解)。所以,我在.vimrc中设置了fileencodings,相当于告诉vim当以utf-8解码文件不成功时以这么几种方式尝试,set fileencoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936,latin1. 这样打开正常了

tee

tee用途说明

把linux命令输出重定向到文件中:
ls >a.txt,
但不能看到输出,如果我们既想把输出保存到文件中,
又想在屏幕上看到输出内容,就可以使用tee命令了。
tee命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中,
tee命令可以重定向标准输出到多个文件。
要注意的是:
   在使用管道线时,前一个命令的标准错误输出不会被tee读取。

常用参数

1、语法

1、只输出到标准输出,格式:tee

2、输出到标准输出的同时,保存到文件file中。

如果文件不存在,则创建;如果已经存在,则覆盖之。
格式:tee file

3、输出到标准输出的同时,追加到文件file中。如果文件不存在,则创建;如果已经存在,就在末尾追加内容,而不是覆盖。

格式:tee -a file

4、多次输出到标准设备,如

两次: tee - ,三次: tee -- 四次:tee ---

5、输出到标准设备多次,同时保存到file1/file2中。

格式:tee file1 file2 -
     tee file1 file2 --

2、示例

示例一 tee命令与重定向的对比

[root@web ~]# seq 5 >1.txt 
[root@web ~]# cat 1.txt 
1
2
3
4
5
[root@web ~]# cat 1.txt >2.txt 
[root@web ~]# cat 1.txt | tee 3.txt 
1
2
3
4
5
[root@web ~]# cat 2.txt
1
2
3
4
5
[root@web ~]# cat 3.txt
1
2
3
4
5
[root@web ~]# cat 1.txt >>2.txt
[root@web ~]# cat 1.txt | tee -a 3.txt
1
2
3
4
5
[root@web ~]# cat 2.txt
1
2
3
4
5
1
2
3
4
5
[root@web ~]# cat 3.txt
1
2
3
4
5
1
2
3
4
5
[root@web ~]#

示例二 使用tee命令重复输出字符串

[root@web ~]# echo 12345 | tee
12345
[root@web ~]# echo 12345 | tee -
12345
12345
[root@web ~]# echo 12345 | tee - -
12345
12345
12345
[root@web ~]# echo 12345 | tee - - -
12345
12345
12345
12345
[root@web ~]# echo 12345 | tee - - - -
12345
12345
12345
12345
12345
[root@web ~]#
[root@web ~]# echo -n 12345 | tee
12345[root@web ~]# echo -n 12345 | tee -
1234512345[root@web ~]# echo -n 12345 | tee - -
123451234512345[root@web ~]# echo -n 12345 | tee - - -
12345123451234512345[root@web ~]# echo -n 12345 | tee - - - -
1234512345123451234512345[root@web ~]#
示例三 使用tee命令把标准错误输出也保存到文件
[root@web ~]# ls "*"
ls: *: 没有那个文件或目录
[root@web ~]# ls "*" | tee -
ls: *: 没有那个文件或目录
[root@web ~]# ls "*" | tee ls.txt
ls: *: 没有那个文件或目录
[root@web ~]# cat ls.txt
[root@web ~]# ls "*" 2>&1 | tee ls.txt
ls: *: 没有那个文件或目录
[root@web ~]# cat ls.txt
ls: *: 没有那个文件或目录
[root@web ~]#

SSH

一、openssh升级

0、别人的笔记,本文参考来源

https://www.cnblogs.com/pengyong1211/p/10308658.html

1、下载最新版本 OpenSSH

wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.8p1.tar.gz
目前最新版本是7.8,已经有openssh8.02

2、编译安装 OpenSSH

tar xzvf openssh-7.8p1.tar.gz
cd openssh-7.8p1
./configure --prefix=/usr --sysconfdir=/etc/ssh 

3、把老版本的ssh放到另外一个目录,这步是关键,这样就不用卸载旧版本

mkdir /etc/sshbak
mv  /etc/ssh/* /etc/sshbak/

4、编译源码包

make && make install

5、编译安装成功后,进行配置

cp  ./contrib/redhat/sshd.init  /etc/init.d/sshd ---启动文件
chkconfig --add sshd
chkconfig sshd on
修改配置文件  /etc/ssh/sshd_config
Port 22
PermitRootLogin yes
去掉这2行的注释 ,最后一个是允许root用户直接使用sshd服务登录服务器的!

6、启动

service  sshd  restart
使用ssh -V 命令查看一下,如果上面都没有报错的话,这里ssh的版本就是7.8了。
最关键的一步就是把老的ssh文件夹移到其他地方,然后新的ssh的目录仍然放在/etc/ssh下面,这样的升级过程中ssh就不会断开了,我这后面都是用这种方式升级openssh。

二、ssh 端口转发

http://wishcell.top/blog/2020/07/10/ssh端口转发

三、免密码登录

0、大致描述

对于自己名下的多台linux机器,每次登录输入密码十分烦琐。
如果想要不输入密码直接登录:
如A:192.168.1.2 作为一台编译服务器,需要在很多机器上登录

此时将其它机器的 ~/.ssh/id_rsa.pub 内容,copy到服务器的 authorized_keys 文件即可。
具体操作如下

1、找到配置服务器端配置文件 sshd_config

系统安装路径:
  /etc/ssh/sshd_config
自己采用默认配置安装:
  cd openssh-8.02 && ./configure && make -j4 && make install
  此时配置文件路径 /usr/local/etc/ssh/sshd_config

2、查看服务器 authorized_keys 配置

打开 sshd_config,找到 AuthorizedKeysFile,
它的默认配置是 .ssh/authorized_keys ,如果不确定 .ssh 的具体位置,可以直接将其写死:
/home/user/.ssh/authorized_keys

3、客户机生成密钥文件和私钥文件id_rsa,id_rsa.pub或id_dsa,id_dsa.pub

具体方法:到客户即上执行命令
ssh-keygen -t [rsa|dsa]
将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或
id_dsa,id_dsa.pub

如果采用 ssh-keygen -t rsa -f rsa_xxx 则可以指定输出文件名

4、同步.pub文件

A、手工,人肉同步

将 .pub 文件复制到服务器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys

B、自动同步

$ ssh-copy-id -i ~/.ssh/id_rsa.pub username@server -p 22
$ ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 10022 user@server"

5、重启 sshd 服务

有些服务器,可以使用命令:
   systemctl restart sshd
但是有些不行,直接手工重启,但必须在本机操作,不能远程:
  ps -ef | grep sshd  首先找到原来 sshd 课执行文件位置
  /usr/sbin/sshd -D
  然后将其kill掉,重新启动: /usr/sbin/sshd -D &

6、某些情况下,可能免密失败,仍需要密码,解决办法

A、常规方法,默认文件名

有时,登录服务器时,报错:
   `sign_and_send_pubkey: signing failed: agent refused operation`
然后还是要求输入账号密码。
此时,在客户端输入:
[user-dir] # eval  "$(ssh-agent -s)"
Agent pid 20392
[user-dir] # ssh-add
Identity added:/home/user/.ssh/id_rsa (user)
[user-dir] # ssh 192.168.1.2 -luser
login: Sat Oct 17 18:28:00 2020 from 192.168.1.3

B、特殊情况,指定文件名

ssh-keygen -f ~/.ssh/myname  
ssh-keygen -f ~/.ssh/myname  

提示:Your identification has been saved in /home/zorro/.ssh/myname  
Your public key has been saved in /home/zorro/.ssh/myname.pub  ---注1  (我这个命令生成的就是这个文件名)
之后  ssh-add ~/.ssh/myname (正常情况下 做到这里 再在web上upload就ok了)

好了 重点来了 这时候你需要看一下ssh_config 这个文件里的
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa ---这个是不是和注1 不一样?
IdentityFile ~/.ssh/id_dsa 

如果是, 当然我们最好不要改配置文件,那么
1.把你~/.ssh/下面生成的那俩文件 myname改成id_rsa
mv myname id_rsa
mv myname.pub id_rsa.pub
2.ssh-add  id_rsa.pub

7、别名登录

添加的位置:vim /etc/ssh/ssh_config
也可能,它包含了其它配置文件,在其它的配置文件中:
   include /etc/ssh/ssh_config.d/*.conf

# 其模板如下
Host <any name here>
  HostName <your server address>
  Port <22>
  User <username>
  IdentitiesOnly yes
# 一个具体的例子
Host aliyun
  HostName 192.168.21.43
  Port 22
  User vkso
  IdentitiesOnly yes

登录方式:
ssh aliyun
而且可以自动列出所有别名,相当方便

四、本人系统升级遇到的ssh连接诡异问题

原本是OK的,可以远程 ssh ip -luser 登录
将系统升了下级:
    yum -y install upgrade && yum -y install update
然后登录失败,输入用户名密码后,直接提示:
  permission denied
为此花了好多时间,22端口没有被 firewall 屏蔽,而且 sshd 也正常运行中

  最后尝试修改 sshd_config, 将默认端口22改成2222,再登录,竟然成功了

rsync

一、scp引出的麻烦

公司桌面迁移,从win7迁移到linux.
需要自行迁移数据,于是在windows上用 mobaxterm 开启了一个 sshd 服务。

在 linux 执行:
scp -r -P 2222 user@192.168.1.3:/cygdrive/d/escape ./

然后就静静的等,等它同步完成。

等了一天一夜,终于结束。但是很奇怪。
linux预留空间是290G,win7上的文件夹是160G,怎么现在Linux硬盘满了,显然同步还没有完成。

于是百度一番,原来 scp 确实存在这样的问题,主要是自己对各参数不精通。默认情况下它会给空目录分配空间,造成空间变大

然后改用人家推荐的 rsync 来同步:
rsync -avzP -e 'ssh -p 2222' --progress --delete  user@192.168.1.3:/cygdrive/d/escape ./

发现其同步速度比 scp 要快太多

rsync 多种参数配置
rsync -avvz --times --stats --checksum --human-readable --acls \
--itemize-changes --progress \
--out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \
/usr/include/glib-2.0 my-glib-copy/

个参数意义解释如下:
> -avvz = archive,verbose x 2,compress
> –times =保留修改时间
> –stats =提供一些文件传输统计信息
> –checksum =基于校验和跳过,而非mod-time&尺寸
> –human-readable =以人类可读格式输出的数字
> –acls =保留ACL(隐含-p)
> –itemize-changes =输出所有更新的更改摘要
> –progress =显示转移期间的进度
> –out-format ='[%t] [%i](上次修改时间:%M)(字节:%-10l)%-100n’ 
>%t =当前日期时间
>%i =正在更新的内容的逐项清单
>%M =文件的上次修改时间
>%-10l =文件的长度(以字节为单位)(-10表示对齐和精度)
>%-100n =文件名(短格式;在目录上尾随“/”)( – 100表示对齐和精度) 
注意:有关上述开关的完整详细信息,请参见rsync和rsyncd.conf的手册页. 
上面的命令产生以下脚本:

mobaxterm

一、安装程序,太方便,在windows中完全模拟linux风格

[Administrator.WINDOWS-LGJ801D] ➤ apt-get install tcl
Trying to download file setup.ini
wget: read error: Connection reset by peer
Trying to download file setup.ini
Downloading /home/mobaxterm/.aptcyg/mobasetup.32.ini using Windows internet settings
Updated setup.ini
Found package tcl

Installing tcl
Downloading tcl-8.6.8-1.tar.xz...
Downloading /home/mobaxterm/.aptcyg/release/tcl/tcl-8.6.8-1.tar.xz using Windows internet settings
Unpacking tcl-8.6.8-1.tar.xz...
Extracting dependencies for usr/bin/libtcl8.6.dll...
Extracting dependencies for usr/bin/tclsh8.6.exe...
Package tcl requires the following packages, installing cygwin libgcc1 tzdata zlib0
Package cygwin is already installed, skipping
Found package libgcc1
Package libgcc1 is already installed, skipping
Found package tzdata
Package tzdata is already installed, skipping
Found package zlib0
Package zlib0 is already installed, skipping
Package tcl installed.
Rebasing new libraries

[2020-09-06 08:33.27]  ~
[Administrator.WINDOWS-LGJ801D] ➤ apt-get install expect
Found package expect

Installing expect
Downloading expect-5.45-3.tar.xz...
Unpacking expect-5.45-3.tar.xz...
Extracting dependencies for usr/bin/expect.exe...
Extracting dependencies for usr/bin/libexpect5.45.dll...
Package expect requires the following packages, installing cygwin tcl
Package cygwin is already installed, skipping
Found package tcl
Package tcl is already installed, skipping
Package expect installed.

Rebasing new libraries

guake

一、缘起

公司切换到linux云桌面。抛弃原来在win7下使用的系列工具。
    第一个工具就是终端,尽管系统自带terminal也能总凑和。但是总感觉有些不爽。度娘推荐了guake,试用一下,果然十分满意。

   但是linux下只有一款终端,是不够的,想多开几个窗口,不能只用这一种终端。
   于是继续搜索,发现有人推荐了一系列终端,先记下:https://www.cnblogs.com/jpfss/p/11106318.html
分别是:tilda / Yakuake / Guake / Sjterm / Terminator /
 ROXTerm / Eterm / Rxvt / Aterm / Wterm / TermkKit(基于webkit) / Terminology
  我又试用了 Terminology,感觉十分轻快舒适

二、找到 guake,试用效果很满意

1、安装

一键安装 :sudo yum -y instal guake

2、遇到问题

打开后,发现前缀很长,很丑。
修改 ~/.vimrc

在最后添加一行:
unset PROMPT_COMMAND

重新启动,果然没有了之前的乱码,777...,但是界面仍然不漂亮,
稍微定制一下,在unset上面加一句:
PS1="[Mr.Zhou \w]# "

3、terminology 试用,效果还行

首先是小巧,明显感觉到轻盈快速。
其次是每次启动时可以指定背景图片:
  terminology -b=pic.jpg
但是字体不配置的话,仍然是美中不足

其它同类产品

1、 tilda 也很好

当开启第一个 tilda 窗口时,可以用F1 调出/隐藏。
当开启第二个 tilda 窗口时,可以用F2 调出/隐藏
...

2、roxterm 感觉不错

感觉很朴实,实用,舒服