我发现。。shell脚本貌似不像C或者Python一样自带注释语法,不过拐弯抹角还是有一些方法的。。囧 方法1:利用逻辑语句 利用了逻辑语句的执行顺序,缺点是注释中不能出现括号,否则会报错! ###逻辑或前如果为真,后边的语句块自动不执行 #1 :||{ 注释内容… } #2 ((1))||{ 注释内容… } #3 true||{ 注释内容… } ###逻辑与前如果为假,后边的语句块自动不执行 #4 ((0))&&{ 注释内容… } <!–more–> #5 false&&{ 注释内容… } 方法2:利用Here Documents语法 利用了shell脚本的here documents的语法,注意<<后边是自己命名的,做到前后呼应即可,如下为两例,但是我测试的几种命名只有例1中的方法没有什么缺点,在例二或者其他命名中,如果出现反单引号`则可能会报错! #e.g. 1 :<<” 注释内容… ” #e.g. 2 :<< BLOCK 注释内容… BLOCK 方法3:利用sed命令 如果是使用vim编辑,利用sed语法,vim中的normal模式下: #全文注释: :0,$ s/^/#/ #m到n行注释: :m,n s/^/#/ #全文去注释: :0,$ s/^#// #m到n行去注释: :m,n s/^#// […]

最近由于需要实现从一个客户端电脑定时远程上传图片到阿里云服务器的功能,需要实现SCP的免密码传输。所以查资料并做了一个记录,希望对大家有帮助。 步骤 1.Client上某用户执行ssh-keygen命令,生成建立安全信任关系的证书 ssh-keygen -b 1024 -t rsa 这里如果~/.ssh/id_rsa.pub 已经存在,说明以前已经生成过,可以直接跳过这步。 2.将公钥证书id_rsa.pub内容复制到Server某用户的~/.ssh/authorized_keys目录中 ## 方法1 scp -p ~/.ssh/id_rsa.pub [username]@[server_ip]:[user_home]/.ssh/authorized_keys ## 方法2 client: cat ~/.ssh/id_rsa.pub #然后复制它 server: vim ~/.ssh/authorized_keys #然后粘贴保存 3.使用方法 #已经不需要输入密码 #比如ssh登录: <!–more–> ssh [user_name]@[ip_address] #再如scp传输文件: scp [path_to_file] [user_name]@[ip_address]:[dir_path]

刚想玩玩kvm,结果分不清这几个命令。。搜了一下,记录下来,希望对大家有帮助。 摘抄 1 在老版本中有单独的qemu-kvm模块存在,结合qemu一起做虚拟机工作。在后续新版本中,已经将qemu-kvm模块完全合并到qemu中去。因此当需要使用kvm特性时候,只需要qemu-system-x86_64 启动命令中增加参数 –enable-kvm参数使能即可。 (http://blog.csdn.net/tantexian/article/details/41281171) 2 I asked the mailing list, here’s what I got: qemu-arch like /usr/local/bin/qemu-x86_64 is for running a program of that arch on the host machine of what ever arch, but not a virtual machine qemu-system-arch like /usr/local/bin/qemu-system-x86_64 is for running a system of that arch on the host […]

这是我学习sed的一个总结,只限于自己和比我水平低(就是没接触过)的同学看。。。除了参考资料,讲解也包括很大成分的个人理解,如果发现错误,希望大家可以提醒我及时更正,谢谢~! sed概述 sed是一个流编辑器,更准确的说是一个行编辑器,就是sed处理文本处理命令用于逐行处理文本中的文字。 这是sed命令的格式: sed [options] [commands] [input-file] 就是说sed命令一般由“sed”、选项、命令和待处理文本文件组成。 举个例子: 对于文本test.txt: this is the first line. the 2nd line. hello, this is the 3rd line. 命令sed -n ‘/hello/p’ test 就会产生以下输出: hello, this is the 3rd line. 其中-n选项表示屏蔽sed默认输出。单引号中/hello/表示匹配带有”hello”的行p代表打印所匹配的行。 sed执行的流程 读取一行到模式空间缓冲区

常用git,做个记录,方便查询,利人利己,如有错误,欢迎指正~ 创建仓库 git init 创建仓库 git clone xxx.git(远程库的地址) 克隆一个远程仓库 git remote add origin xxx.git(远程库的地址) 指定一个远程仓库地址,命名为origin 提交更改 git rm file_name 删除文件 git add file_name 添加文件到仓库暂存区(index) git commit -m “xxx” 提交更改给仓库 git commit -am “xxx” 上两条的终极合体,添加所有已追踪文件的更改到暂存区,并提交 git log 显示提交日志 git status 显示当前仓库状态 git push [-f] [remote_name] [branch_name] 上传到远程仓库,加-f表示强制覆盖远程仓库的上传(要谨慎)

由于网上很多配置wifi的方式在我的伽利略开发板上都行不通,最后终于找到这个可以用的“冷门”办法: 系统配置 开发板: Intel Galileo gen2 无线网卡:PCI-e intel wifi link 5100 开发板系统: EGLIBC based Linux(download) 所用工具 硬件: usb无线网卡或者pci-e接口的无线网卡。 (注意如果你用的是和我一样的pci-e网卡,注意顺便买来天线接上,不然信号贼弱,这种网卡不接天线是不行的。) 软件: comman(开发板的完整版linux已经内置) 参考: 《connman百度百科》( http://baike.baidu.com/link?url=3C6RQqswxVvGMxNy7XA1-bWUBU6W0G7_Rvvsv2DRyv04nontgZ9oX7MRgeeNvMuRmjRMqf75_tqspSgjhb8Ysa )

紧接上篇文章(《Galileo开发板+微信公众平台实现简单的物联网家庭监控》( http://blog.jcix.top/2015-11-27/galileo_wechat/ ) ), 以下功能做了改进: * 实现了Galileo开发板上用USB摄像头+python版opencv监控并通过微信公众平台进行异常报警的功能。 * 通过connman实现了wifi网络的自动连接和随时修改功能。 * 通过post到服务器,实现了微信控制led灯亮、灭或者光控的功能。 视频监控功能的实现 (完整代码在github: https://github.com/zhangjaycee/galileo_pys/blob/master/cam_wechat.py ) 1.图像采集 galileo支持python的opencv库,这给简单的图像处理提供了极大的便利。 图像采集: cap = cv2.VideoCapture(0)#打开摄像头 cap.set(3,320) cap.set(4,240) while True: ret, frame = cap.read() 2.图像处理 我们要做键控,所以可以记录第一帧,然后通过帧间差别进行报警。 cap = cv2.VideoCapture(0) <!–more–> cap.set(3,320) cap.set(4,240) avg = None lastUploaded = datetime.datetime.now() motionCounter = 0 normal_count = 0 start_flag = 0 time.sleep(10) while True: […]

题目一: Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[‘ and ‘]’, determine if the input string is valid. The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not. 大意:给定一个字符串,只包含”(){}[]”这些字符,判断字符串的括号是否都匹配。 思路 显然是用栈的思想做。 代码 (Python) class Solution(object): def isValid(self, s): “”” :type s: […]

题目一 Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 大意:合并两个列表,返回一个新的列表,新的列表要把前边给定的两个列表链接起来。 思路: 其实就是把两个有序列表变成一个有序列表,只要维护两个指针,分别将当前最小的数复制到第三个列表中,然后将相应指针后移即可。道理很简单。 需要注意到是,python中,如果一个变量等于一个列表(比如,list1为一个列表,定义a1 = list1),则这个变量(a1)其实类似c中的指针的概念(a1和list1等价,都是“指针”),并不是拷贝了这个列表(如要实现拷贝复制,可以写a1 = list1[:])。 对于本题,这样的语法其实产生了两种写法,(见下边小节)。对于本题,两种写法都对,第一种写法比较简洁,但是却改变了原来的l1和l2列表,因为p3指针赋值的时候,直接用了l1或者l2的节点,那么下一次赋值的时候,便改变了这个节点的next指针。第二种写法采用了oj所定义的ListNode类的构造函数,直接用符合要求的l1或者l2的节点的val值创建一个新的node链接在l3后边,所以不改变原先的l1和l2列表。 所以,具体用哪一种,要根据知己需求定。 代码1(python) # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = […]