kalilinux可以做什么下误删了面板(panel),请问怎样恢复其中的已打开程序列表(windowlist)

扩展属性、 任务列表、 输出和选项 Windows
Visual Studio 2015
若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅&。
您可以访问 Visual Studio 中的任何工具窗口。&本演练演示如何将工具窗口有关的信息集成到一个新选项页和上的新设置属性页上,以及如何将写入到任务列表和输出windows。
启动 Visual Studio 2015 中,您并不安装 Visual Studio SDK 从下载中心获得。&它将包括作为 Visual Studio 安装程序中的可选功能。&您还可以在以后安装 VS SDK。&有关详细信息,请参阅。
创建一个名为项目TodoList使用 VSIX 模板,并将添加一个名为的自定义工具窗口项模板TodoWindow。
有关使用一个工具窗口创建扩展的详细信息,请参阅。
添加在其中可键入一个新的 ToDo 项目,以添加新项到列表中,一个按钮和列表框中显示的项在列表中的文本框。
在 TodoWindow.xaml,从 UserControl 中删除按钮、 文本框中,和 StackPanel 控件。
此时不会删除button1_Click事件处理程序,则将在稍后的步骤中重用。
从所有 WPF 控件部分工具箱,拖动画布到网格控件。
拖动TextBox、按钮,和一个ListBox到画布上。&排列元素,使文本框和按钮在同一级别,以及 ListBox 填充其余部分的下方,如下面的图片中所示的窗口。
在 XAML 窗格中,找到按钮,并将其内容的属性设置为添加。&通过添加重新连接到按钮控件按钮事件处理程序Click=&button1_Click&属性。&画布块应如下所示︰
&Canvas HorizontalAlignment=&Left& Width=&306&&
&TextBox x:Name=&textBox& HorizontalAlignment=&Left& Height=&23& Margin=&10,10,0,0& TextWrapping=&Wrap& Text=&TextBox& VerticalAlignment=&Top& Width=&208&/&
&Button x:Name=&button& Content=&Add& HorizontalAlignment=&Left& Margin=&236,13,0,0& VerticalAlignment=&Top& Width=&48& Click=&button1_Click&/&
&ListBox x:Name=&listBox& HorizontalAlignment=&Left& Height=&222& Margin=&10,56,0,0& VerticalAlignment=&Top& Width=&274&/&
在 TodoWindowControl.xaml.cs 文件中,添加以下 using 语句︰
添加对 TodoWindow 的公共引用并让 TodoWindowControl 构造函数采用 TodoWindow 参数。&该代码应如下所示︰
public TodoW
public TodoWindowControl(TodoWindow window)
InitializeComponent();
TodoWindow.cs,在将更改 TodoWindowControl 构造函数,以便包括 TodoWindow 参数。&该代码应如下所示︰
public TodoWindow() : base(null)
this.Caption = &TodoWindow&;
this.BitmapResourceID = 301;
this.BitmapIndex = 1;
this.Content = new TodoWindowControl(this);
您可以提供中的页选项对话框中,以便用户可以更改工具窗口中的设置。&创建选项页需要两个类,用于描述的选项和 TodoListPackage.cs 或 TodoListPackage.vb 文件中的条目。
添加一个名为类ToolsOptions.cs。&使 ToolsOptions 类继承自。
class ToolsOptions : DialogPage
添加以下 using 语句︰
using Microsoft.VisualStudio.S
在本演练中选项页提供了名为 DaysAhead 只能有一个选项。&添加一个名为的私有字段daysAhead和一个名为属性DaysAhead到 ToolsOptions 类︰
private double daysA
public double DaysAhead
get { return daysA }
set { daysAhead = }
现在,您必须使该项目注意该选项页。
在 TodoWindowPackage.cs,添加到
TodoWindowPackage 类︰
[ProvideOptionPage(typeof(ToolsOptions), &ToDo&, &General&, 101, 106, true)]
ProvideOptionPage 构造函数的第一个参数是类 ToolsOptions,以前创建的类型。&第二个参数,&ToDo&是中类别的名称选项对话框。&第三个参数,&常规&是的子类别的名称选项选项页将在其中可用的对话框。&接下来两个参数是字符串; 尝试添加的资源 Id第一种是该类别的名称,第二个是子类别的名称。&最后一个参数确定是否可以通过使用自动化访问此页。
当用户打开选项页上时,它应类似于下图。
请注意该类别ToDo和 subcategory常规。
通过创建一个名为将有关的各个项的信息存储在 ToDo 列表中的 TodoItem 类可以使任务列表信息可用。
添加一个名为类TodoItem.cs。
向用户提供的工具窗口时,将由 TodoItems 表示列表框中的项。&当用户选择其中一项在列表框中,属性窗口将显示与项有关的信息。
若要使数据中可用属性窗口中,您将数据转换为具有两个特殊属性的公共属性Description和Category。&Description是在底部显示的文本属性窗口。&Category确定该属性应出现时属性窗口显示在按分类顺序视图。&如下图中属性窗口处于按分类顺序视图中,名称中的属性ToDo
字段选择类别后,和的说明名称属性显示在窗口的底部。
添加以下 using 语句 TodoItem.cs 文件。
using System.ComponentM
using System.Windows.F
using Microsoft.VisualStudio.Shell.I
添加public到类声明的访问修饰符。
public class TodoItem
添加两个属性名称和 DueDate。&我们将更高版本执行的 UpdateList() 和 CheckForErrors()。
public class TodoItem
private TodoWindowC
private string
[Description(&Name of the ToDo item&)]
[Category(&ToDo Fields&)]
public string Name
get { return }
parent.UpdateList(this);
private DateTime dueD
[Description(&Due date of the ToDo item&)]
[Category(&ToDo Fields&)]
public DateTime DueDate
get { return dueD }
parent.UpdateList(this);
parent.CheckForErrors();
添加到用户控件的专用引用。&添加的构造函数的用户控制和此 ToDo 项的名称。&若要查找 daysAhead 值,它获取选项页属性。
private TodoWindowC
public TodoItem(TodoWindowControl control, string itemName)
name = itemN
dueDate = DateTime.N
double daysAhead = 0;
IVsPackage package = parent.parent.Package as IVsP
if (package != null)
package.GetAutomationObject(&ToDo.General&, out obj);
ToolsOptions options = obj as ToolsO
if (options != null)
daysAhead = options.DaysA
dueDate = dueDate.AddDays(daysAhead);
因为实例TodoItem类将存储在列表框和列表框将调用ToString函数,还必须重载ToString函数。&在构造函数之后和类的末尾之前,请将以下代码添加到
TodoItem.cs。
public override string ToString()
return name + & Due: & + dueDate.ToShortDateString();
在 TodoWindowControl.xaml.cs,添加存根 (stub) 方法的 TodoWindowControl 类CheckForError和UpdateList方法。&将它们放在
ProcessDialogChar 之后和之前的文件的末尾。
public void CheckForErrors()
public void UpdateList(TodoItem item)
CheckForError方法将调用父对象中具有相同名称的方法,该方法将检查是否已发生的任何错误,并正确处理这些。&UpdateList方法将更新的列表框中的父控件;
当调用该方法Name和DueDate中此类更改的属性。&它们将更高版本实现。
现在,编写代码,用于管理将绑定到 ListBox属性窗口。
必须更改该按钮单击处理程序来读取文本框、 创建 TodoItem,并将其添加到列表框。
替换现有button1_Click函数包含用于创建新的 TodoItem 并将其添加到列表框的代码。&它将调用 TrackSelection(),将在以后定义。
private void button1_Click(object sender, RoutedEventArgs e)
if (textBox.Text.Length & 0)
var item = new TodoItem(this, textBox.Text);
listBox.Items.Add(item);
TrackSelection();
CheckForErrors();
在设计视图选择列表框控件。&在属性窗口中,单击事件处理程序按钮并找到 SelectionChanged 事件。&在文本框中填充listBox_SelectionChanged。&执行此操作将添加 SelectionChanged 处理程序存根,并将其分配给该事件。
实现 TrackSelection() 方法。&由于您将需要获取服务,需要进行&TodoWindowControl
可访问。&将以下方法添加到 TodoWindow 类︰
internal object GetVsService(Type service)
return GetService(service);
添加以下 using 语句 TodoWindowControl.xaml.cs:
using System.Runtime.InteropS
using Microsoft.VisualStudio.Shell.I
using Microsoft.VisualS
using Microsoft.VisualStudio.S
填充 SelectionChanged 处理程序中,如下所示︰
private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
TrackSelection();
现在,填写 TrackSelection 函数,它将提供与集成属性窗口。&在用户将某项添加到列表框,或单击列表框中的项目时,调用此函数。&它将 ListBox 的内容添加到 SelectionContainer 并将传递到 SelectionContainer属性窗口的事件处理程序。&TrackSelection
服务跟踪的用户界面 (UI) 中选定的对象,并显示其属性
private SelectionContainer mySelC
private System.Collections.ArrayList mySelI
private IVsWindowFrame frame = null;
private void TrackSelection()
if (frame == null)
var shell = parent.GetVsService(typeof(SVsUIShell)) as IVsUIS
if (shell != null)
var guidPropertyBrowser = new
Guid(ToolWindowGuids.PropertyBrowser);
shell.FindToolWindow((uint)__VSFINDTOOLWIN.FTW_fForceCreate,
ref guidPropertyBrowser, out frame);
if (frame != null)
frame.Show();
if (mySelContainer == null)
mySelContainer = new SelectionContainer();
mySelItems = new System.Collections.ArrayList();
var selected = listBox.SelectedItem as TodoI
if (selected != null)
mySelItems.Add(selected);
mySelContainer.SelectedObjects = mySelI
ITrackSelection track = parent.GetVsService(typeof(STrackSelection))
as ITrackS
if (track != null)
track.OnSelectChange(mySelContainer);
现在,您有一个类,属性窗口可以使用,您可以将集成属性与工具窗口的窗口。&当用户单击工具窗口中,在列表框中的项属性应相应地更新窗口。&同样,当用户更改中的 ToDo 项属性窗口中,应更新关联的项。
现在,在 TodoWindowControl.xaml.cs 添加 UpdateList 函数代码的其余部分。&它应删除并重新从列表框中添加已修改的 TodoItem。
public void UpdateList(TodoItem item)
var index = listBox.SelectedI
listBox.Items.RemoveAt(index);
listBox.Items.Insert(index, item);
listBox.SelectedItem =
测试您的代码。&生成项目并启动调试。&应显示的实验实例。
打开工具 / 选项页。&您应看到在左窗格中的 ToDo 类别。&按字母顺序列出了类别,因此在 Ts 下查找。
在 Todo 选项页中,您应看到 DaysAhead 属性设置为0。&将其更改为2。
在视图上 / 其他窗口菜单打开TodoWindow。&类型EndDate在文本框中单击添加。
在列表框中,您应该看到两个天晚于今天的日期。
有关任务列表,您创建新的对象的类型为 Task,,然后添加到该任务对象任务列表通过调用其 Add 方法。&要写入到输出窗口中,调用其 GetPane 方法以获取窗格对象,,,然后调用窗格中对象的 OutputString 方法。
在 TodoWindowControl.xaml.cs 中,button1_Click方法中,添加代码以获取常规窗格输出窗口中
(这是默认值),并向其中写入。&该方法应如下所示︰
private void button1_Click(object sender, EventArgs e)
if (textBox.Text.Length & 0)
var item = new TodoItem(this, textBox.Text);
listBox.Items.Add(item);
var outputWindow = parent.GetVsService(
typeof(SVsOutputWindow)) as IVsOutputW
IVsOutputWindowP
Guid guidGeneralPane = VSConstants.GUID_OutWindowGeneralP
outputWindow.GetPane(ref guidGeneralPane, out pane);
if (pane != null)
pane.OutputString(string.Format(
&To Do item created: {0}\r\n&,
item.ToString()));
TrackSelection();
CheckForErrors();
若要将项添加到任务列表中,你需要将嵌套的类添加到 TodoWindowControl 类。&嵌套的类需要派生自。&将以下代码添加到
TodoWindowControl 类的末尾。
[Guid(&72de1eAD-a00c-4f57-bff7-57edb162d0be&)]
public class TodoWindowTaskProvider : TaskProvider
public TodoWindowTaskProvider(IServiceProvider sp)
: base(sp)
接下来将对 TodoTaskProvider 的私有引用和 CreateProvider() 方法添加到 TodoWindowControl 类。&该代码应如下所示︰
private TodoWindowTaskProvider taskP
private void CreateProvider()
if (taskProvider == null)
taskProvider = new TodoWindowTaskProvider(parent);
taskProvider.ProviderName = &To Do&;
将 ClearError(),清除任务列表,并 ReportError(),将条目添加到任务列表中,添加到 TodoWindowControl 类。
private void ClearError()
CreateProvider();
taskProvider.Tasks.Clear();
private void ReportError(string p)
CreateProvider();
var errorTask = new Task();
errorTask.CanDelete = false;
errorTask.Category = TaskCategory.C
errorTask.Text =
taskProvider.Tasks.Add(errorTask);
taskProvider.Show();
var taskList = parent.GetVsService(typeof(SVsTaskList))
as IVsTaskList2;
if (taskList == null)
var guidProvider = typeof(TodoWindowTaskProvider).GUID;
taskList.SetActiveProvider(ref guidProvider);
现在,如下所示实现 CheckForErrors 方法。
public void CheckForErrors()
foreach (TodoItem item in listBox.Items)
if (item.DueDate & DateTime.Now)
ReportError(&To Do Item is out of date: &
+ item.ToString());
生成项目并启动调试。&将显示的实验实例。
打开 TodoWindow (视图 / 其他窗口 / TodoWindow)。
在文本框中键入内容,然后单击添加。
到期日期 2 天后今天添加到列表框中。&未出现任何错误,与任务列表(视图 / 任务列表) 应没有任何条目。
现在将设置更改启用工具 / 选项 / ToDo来自页2回0。
键入内容中的其他TodoWindow&,然后单击添加再次。&这会触发错误以及将项记入任务列表。
添加项时,初始日期设置为现在再加上 2 天。
在视图菜单上,单击输出若要打开输出窗口。
请注意,每次添加项,一条消息将显示在任务列表窗格。
单击其中一个列表框中的项。
属性窗口将显示两个项的属性。
更改其中一个属性,然后按 enter 键。
在列表框中更新项。
用过activiti的朋友都知道,activiti做工作流用起来非常方便,可以很容易的基于activiti开发出一个基础的OA流程,可以有多种任务,事件,网关提供给大家选择,想了解详细的,可以点击下方...
在工作中使用Activiti modeler时难免会遇到局限,如usertask中的属性,完全不够用,这时需要我们去扩展。  activiti modeler通过读取stencilset.json生成...
gradle官网:https://docs.gradle.org/3.5/dsl/org.gradle.api.tasks.Delete.htmlDemo地址:https://github.com/z...
为了满足业务需要,流程设计阶段需对设计产物流程定义文件中节点属性进行扩展,譬如:任务是否支持退回、退回方式、退回的节点,任务转派人、任务可跳转的节点范围等属性信息。为了保证扩展后的流程定义文件能够正常...
Revit里有一个选项界面
这个选项界面里默认包括了:
常规、用户界面、图形、文件位置、等等
其实这个界面是可以扩展的
直接上代码:
没有更多推荐了,系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。
GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。
GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
会话恢复只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。多窗口在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。会话共享Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。GNU's Screen 官方站点:
# screen [-AmRvx -ls -wipe][-d &作业名称&][-h &行数&][-r &作业名称&][-s ][-S &作业名称&]
-A  将所有的视窗都调整为目前终端机的大小。-d &作业名称&  将指定的screen作业离线。-h &行数&  指定视窗的缓冲区行数。-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。-r &作业名称&  恢复离线的screen作业。-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。-s  指定建立新视窗时,所要执行的shell。-S &作业名称&  指定screen作业的名称。-v  显示版本信息。-x  恢复之前离线的screen作业。-ls或--list  显示目前所有的screen作业。-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。
四、常用screen参数
screen -S yourname -& 新建一个叫yourname的sessionscreen -ls -& 列出当前所有的sessionscreen -r yourname -& 回到yourname这个sessionscreen -d yourname -& 远程detach某个sessionscreen -d -r yourname -& 结束当前session并回到yourname这个session
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。C-a ? -& 显示所有键绑定信息C-a c -& 创建一个新的运行shell的窗口并切换到该窗口C-a n -& Next,切换到下一个 window C-a p -& Previous,切换到前一个 window C-a 0..9 -& 切换到第 0..9 个 windowCtrl+a [Space] -& 由视窗0循序切换到视窗9C-a C-a -& 在两个最近使用的 window 间切换 C-a x -& 锁住当前的 window,需用用户密码解锁C-a d -& detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 C-a z -& 把当前session放到后台执行,用 shell 的 fg 命令则可回去。C-a w -& 显示所有窗口列表C-a t -& Time,显示当前时间,和系统的 load C-a k -& kill window,强行关闭当前的 windowC-a [ -& 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode C-a ] -& Paste,把刚刚在 copy mode 选定的内容贴上
五、使用 screen
5.1 安装screen
流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。
[root@TS-DEV ~]# yum install screen
[root@TS-DEV ~]# rpm -qa|grep screen
screen-4.0.3-4.el5
[root@TS-DEV ~]#
5.2 创建一个新的窗口
安装完成后,直接敲命令screen就可以启动它。但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨:
[root@TS-DEV ~]# screen -S david
screen启动后,会创建第一个窗口,也就是窗口No. 0,并在其中打开一个系统默认的shell,一般都会是bash。所以你敲入命令screen之后,会立刻又返回到命令提示符,仿佛什么也没有发生似的,其实你已经进入Screen的世界了。当然,也可以在screen命令之后加入你喜欢的参数,使之直接打开你指定的程序,例如:
[root@TS-DEV ~]# screen vi david.txt
screen创建一个执行vi david.txt的单窗口会话,退出vi 将退出该窗口/会话。
5.3 查看窗口和窗口名称
打开多个窗口后,可以使用快捷键C-a w列出当前所有窗口。如果使用文本终端,这个列表会列在屏幕左下角,如果使用X环境下的终端模拟器,这个列表会列在标题栏里。窗口列表的样子一般是这样:
这个例子中我开启了三个窗口,其中*号表示当前位于窗口2,-号表示上一次切换窗口时位于窗口1。
Screen默认会为窗口命名为编号和窗口中运行程序名的组合,上面的例子中窗口都是默认名字。练习了上面查看窗口的方法,你可能就希望各个窗口可以有不同的名字以方便区分了。可以使用快捷键C-a A来为当前窗口重命名,按下快捷键后,Screen会允许你为当前窗口输入新的名字,回车确认。
5.4 会话分离与恢复
你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。例如,我们打开一个screen窗口编辑/tmp/david.txt文件:
[root@TS-DEV ~]# screen vi /tmp/david.txt
之后我们想暂时退出做点别的事情,比如出去散散步,那么在screen窗口键入C-a d,Screen会给出detached提示:
暂时中断会话
半个小时之后回来了,找到该screen会话:
[root@TS-DEV ~]# screen -ls
重新连接会话:
[root@TS-DEV ~]# screen -r 12865
一切都在。
当然,如果你在另一台机器上没有分离一个Screen会话,就无从恢复会话了。
这时可以使用下面命令强制将这个会话从它所在的终端分离,转移到新的终端上来:
5.5 清除dead 会话
如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话:
5.6 关闭或杀死窗口
正常情况下,当你退出一个窗口中最后一个程序(通常是bash)后,这个窗口就关闭了。另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。
如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。
除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。其实C-a :这个快捷键允许用户直接输入的命令有很多,包括分屏可以输入split等,这也是实现Screen功能的一个途径,不过个人认为还是快捷键比较方便些。
六、screen
6.1 会话共享
还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个screen会话,你朋友可以在他的终端上命令:
[root@TS-DEV ~]# screen -x
这个命令会将你朋友的终端Attach到你的Screen会话上,并且你的终端不会被Detach。这样你就可以和朋友共享同一个会话了,如果你们当前又处于同一个窗口,那就相当于坐在同一个显示器前面,你的操作会同步演示给你朋友,你朋友的操作也会同步演示给你。当然,如果你们切换到这个会话的不同窗口中去,那还是可以分别进行不同的操作的。
6.2 会话锁定与解锁
Screen允许使用快捷键C-a s锁定会话。锁定以后,再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应,但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。
也可以使用C-a x锁定会话,不同的是这样锁定之后,会话会被Screen所属用户的密码保护,需要输入密码才能继续访问这个会话。
6.3 发送命令到screen会话
在Screen会话之外,可以通过screen命令操作一个Screen会话,这也为使用Screen作为脚本程序增加了便利。关于Screen在脚本中的应用超出了入门的范围,这里只看一个例子,体会一下在会话之外对Screen的操作:
[root@TS-DEV ~]# screen -S sandy -X screen ping www.baidu.com
这个命令在一个叫做sandy的screen会话中创建一个新窗口,并在其中运行ping命令。
6.4 屏幕分割
现在显示器那么大,将一个屏幕分割成不同区域显示不同的Screen窗口显然是个很酷的事情。可以使用快捷键C-a S将显示器水平分割,Screen 4.00.03版本以后,也支持垂直分屏,快捷键是C-a |。分屏以后,可以使用C-a &tab&在各个区块间切换,每一区块上都可以创建窗口并在其中运行进程。
可以用C-a X快捷键关闭当前焦点所在的屏幕区块,也可以用C-a Q关闭除当前区块之外其他的所有区块。关闭的区块中的窗口并不会关闭,还可以通过窗口切换找到它。
6.5 C/P模式和操作
screen的另一个很强大的功能就是可以在不同窗口之间进行复制粘贴了。使用快捷键C-a &Esc&或者C-a [可以进入copy/paste模式,这个模式下可以像在vi中一样移动光标,并可以使用空格键设置标记。其实在这个模式下有很多类似vi的操作,譬如使用/进行搜索,使用y快速标记一行,使用w快速标记一个单词等。关于C/P模式下的高级操作,其文档的这一部分有比较详细的说明。
一般情况下,可以移动光标到指定位置,按下空格设置一个开头标记,然后移动光标到结尾位置,按下空格设置第二个标记,同时会将两个标记之间的部分储存在copy/paste buffer中,并退出copy/paste模式。在正常模式下,可以使用快捷键C-a ]将储存在buffer中的内容粘贴到当前窗口。
6.6 更多screen功能
同大多数UNIX程序一样,GNU Screen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件/etc/screenrc和$HOME/.screenrc中指定更多,例如设定screen选项,定制绑定键,设定screen会话自启动窗口,启用多用户模式,定制用户访问权限控制等等。如果你愿意的话,也可以自己指定screen配置文件。
以多用户功能为例,screen默认是以单用户模式运行的,你需要在配置文件中指定multiuser on 来打开多用户模式,通过acl*(acladd,acldel,aclchg...)命令,你可以灵活配置其他用户访问你的screen会话。更多配置文件内容请参考screen的man页。
David Camp
技术交流,请加QQ群:
    系统运维技术分享Ⅲ:
业务合作,请联系作者QQ:我的微信号:mchina_tang给我写信:mchina_我的地址:江苏·苏州
我们永远相信,分享是一种美德 | We Believe, Great People Share Knowledge...
上一篇:下一篇:
阅读(174486)
Linux screen 命令详解
linux 命令多窗口
好用的工具---screen命令
题场景:要在服务器上配置环境,但是我的电脑无法直接连到服务器上,通常要经过好几次ssh跳转。配环境需要设置好几个用户,这自然需要同时打开好几个连
接服务器的终端窗口,每个连接到服务器的终端窗口...
Linux操作系统下Screen命令的简单使用方法
有时候我们经常需要登录远程服务器运行一些程序,如果这些程序需要运行很长时间(几个小时),而程序运行过程中出现网络故障,或者客户机故障,这时候客户机与远程服务器的链接将终端,并且远程服务器没有正常结束的...
Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的...
在Linux中,我们经常会做一些关于数据的操作(备份、传输、压缩等)或是要在后台持续的运行一些程序。由于,工作的数据量很大或者工作要持续很长的时间,我们就必须保证这个终端的启动,一旦终端关...
screen命令基本用法:
1、创建一个screen窗口:screen
(8989为sceen名称)
[root@test-fan-nouseapp-vm...
http://www.vpser.net/manage/screen.htmlcentos :yum install screen ;Debian/Ubuntu系统执行:apt-get install...
这篇文章很好,https://blog.csdn.net/hejunqing14/article/details/总结一下:screen -S namescreen python ./...
没有更多推荐了,
(window.slotbydup=window.slotbydup || []).push({
id: "5865577",
container: s,
size: "300,250",
display: "inlay-fix"

我要回帖

更多关于 kalilinux手机版 的文章

 

随机推荐