-
tmux 中的复制很简单就是鼠标选中变黄就行, 然后ctrl a ] 就可以复制;(这个只适用于tmux到tmux的复制,可以包含不同的窗口);
-
tmux到tmux的复制也可以shift 选中 ctrl insert ; shift insert 进行粘贴;
-
tmux -> vim中的复制也可以用上面的ctrl insert,shift insert 进行粘贴;(无论是否进入paste模式都可以粘贴)
-
vim-> vim 的复制同上(但是遇到长的就失效了,应该怎么选中)
-
弄的时候可以用cat, 用tmux中的复制, [,]的, 但是也可以左键选中(支持鼠标)一出现黄色就代表着进入了复制模式,只需要ctrl a 然后] , 就可以粘贴了, 也可以粘贴到vim中去, 这种方法是支持滑轮的
shell中脚本执行后create,test,之后如果再执行的话, 必须要重新创建, 否则会爆出一大堆错误;
-eq //equals等于
-ne //no equals不等于
-gt //greater than 大于
-lt //less than小于
-ge //greater equals大于等于
-le //less equals小于等于
- exit命令用来退出当前shell进程,并返回一个退出状态;使用$?可以接收这个退出状态。
exit命令可以接受一个整数值作为参数,代表退出状态。如果不指定,默认状态值是 0。
exit退出状态只能是一个介于 0~255 之间的整数,其中只有 0 表示成功,其它值都表示失败。
test -e filename # 判断文件是否存在
- -e 文件是否存在
- -f 是否为文件
- -d 是否为目录
test -r filename # 判断文件是否可读
如果等号的前面那一个空格缺失:
就是上面的错误;
后面的一个空格缺失是下面的错误;
- 细节shell中=的两边不能留有空格;否则会判如上错误;
以全排列为例子进行语法对比:
m是第几个排列:
#include <iostream>
using namespace std;
const int N = 110;
int n,m;
int path[N];
bool st[N];
bool dfs(int u)
{
if(u==n)//获得了一个全排列
{
m--;
if(!m)
{
for(int i=0;i<n;i++)printf("%d ",path[i]);
return true;
}
return false;
}
for (int i = 1; i <= n; i ++ )
{
if(!st[i])
{
st[i]=true;
path[u]=i;
if(dfs(u+1))return true;
st[i]=false;
}
}
return false;
}
int main()
{
cin>>n>>m;
dfs(0);
return 0;
}
#! /bin/bash
read n
read m
for ((i = 1; i <= n; i ++ ))
do
st[$i]=0
done
dfs() {
if [ $1 -eq $n ]
then
m=`expr $m - 1`
if [ $m -eq 0 ]
then
echo ${path[@]}
return 0
fi
return 1
fi
local j=0
for ((j = 1; j <= n; j ++ ))
do
if [ ${st[$j]} -eq 0 ]
then
path[$1]=$j
st[$j]=1
if dfs `expr $1 + 1`
then
return 0
fi
st[$j]=0
fi
done
return 1
}
dfs 0
这个就是文件重定向;就是把10的输出写进了input.txt中
同时文件多了一个, input.txt文件,
然后执行
./ main.sh input.txt output.txt
此后就output.txt就会出现;后缀就是一个类型, 测试的关键只保留main.sh就可以