下面是一些未归类的命令及操作方法,专门记在此文中,以便将来查询。由于文章较长,请用Ctrl+F查询关键字来定位到你需要的内容。
(1)Eclipse C++项目设置 头文件/include 路径
在一个项目上点击右键→Properties→C/C++ General→Paths and Symbols→Includes→在“GNU C”和“GNU C++”中添加头文件路径。
基本要添加的路径可用如下命令获取:
echo "" | g++ -v -x c++ -E -
路径没有设置好的话,项目中会看到很多无法识别的类。
(2)SecureCRT全屏切换的快捷键
如果你不小心按错了键使SecureCRT进入全屏模式的话,可能会发现找不到按钮可以让它切换回正常模式。 请按 Alt + Enter 切换到正常模式。
(3)Visual Studio的启动程序在哪个目录下
在你安装目录下的 Common7\IDE\devenv.exe
(4)Win7下运行Visual Studio时提示“要运行Visual Studio 2005 SP1,建议使用管理员权限”的问题
右键点击上面提到的“devenv.exe”,点击“属性”→“兼容性”→选中“以兼容模式运行这个程序”→选择“Windows Server 2003 (Service Pack 1)”,然后重新启动Visual Studio程序,就会发现提示已经消失了。
文章来源:http://www.codelast.com/
(5)让Total Commander在快速搜索的时候,只显示符合条件的文件(其他的文件隐藏起来)
Total Commander菜单的“配置”→“选项”→“快速搜索”→“快速搜索(当前文件夹)”中选择“字母(显示快速搜索框)”→“文件名精确匹配”两个复选框都不要选中,然后回到Total Commander的文件浏览器中,随便按几个按键让它开始快速搜索,会发现在下方出现了一个“搜索”小对话框,右边有一个按钮,上面写着“Ctrl+S”,你需要确保它是按下的状态,这样就可以筛选掉不符合快速搜索条件的文件了。
(6)让VS 2012创建项目时,提示“未能正确加载Visual C++ Language Manager Package...”的解决办法
下载这个patch并安装即可解决。
(7)在PowerPoint中输入上标、下标的快捷键
上标:选中要置为上标的数字,按Ctrl+Shift+=
下标:选中要置为下标的数字,按Ctrl+=
再按一次相同的快捷键则取消效果。
文章来源:http://www.codelast.com/
(8)用Linux find命令查找所有包含指定字符串内容的文件
find /home/codelast/ -name "*" | xargs grep "abc"
表示查找 /home/codelast/ 目录下,所有内容里包含字符串“abc”的文件。这种方法,若包含子目录,则无法递归查找下去。
另一种方法:用grep命令实现:
grep -n -r "abc" ./
表示查找当前目录(./)下,含有字符串“abc”的所有文件。-n表示打印出行号,-r表示递归查找,也就是说目录中若包含子目录,会一级级查找下去。
(9)VIM跳到第一行、最后一行的快捷键
跳到第一行/首行:gg 或 :0
跳到最后一行/末行:Shift+G 或 :$
(10)用sed命令批量删除一堆文本文件中的指定字符串
sed -i "s/abcde//g" file*
表示将当前目录下的所有file*文件中的“abcde”字符串删除(替换为空字符串就等于是删除了)。
如果要删除匹配的行呢?像下面这样:
sed -i "/emails/d" file*
表示删除所有file*文件中,含有“emails”字符串的所有行。
(11)Emacs刷新缓冲区(buffer)的快捷键
例如,在Emacs中打开的文件被其他程序修改了,需要在Emacs中体现出来,可以这样:
M-x revert-buffer
(12)Linux shell命令:统计一个目录下(包括子目录)的文件/目录个数
统计一个目录下(包括子目录)的文件个数:
ls -lR dir_to_scan | grep "^-" | wc -l
统计一个目录下(包括子目录)的目录个数:
ls -lR dir_to_scan | grep "^d" | wc -l
以上命令中,dir_to_scan即为要搜索的目录。
文章来源:http://www.codelast.com/
(13)grep查询制表符\t
用grep查询一个文本文件中的制表符,如果直接这样写是无效的:
grep "\t" file.txt
就算file.txt中有制表符,也匹配不到。
应该这样:
grep -P "\t" file.txt
(14)lftp的基本用法
登录远程FTP服务器:
lftp 用户名@服务器地址:服务器端口
然后会让你输入密码登录。
如果嫌麻烦的话可以直接把密码写在命令中:
lftp 用户名:密码@服务器地址:服务器端口
但是显然,这样会被shell history记录下来,不太安全。
上传一个本地文件到FTP服务器上:
put /home/codelast/local_file.txt
这样会把本地的文件上传到你所在的FTP目录下。
(15)JAVA中,"UTF-8"这个字符串常量定义在哪?
程序中会经常使用到"UTF-8"这个字符串常量,如果老是写这个字符串的话,显然很二,所以,要么自己定义一个字符串常量,要么用哪里已经定义好的。请看这个链接。
我习惯于使用org.apache.commons.codec.CharEncoding.UTF_8这个字符串常量,它依赖于Apache的commons-codec,jar包名形如commons-codec-1.6.jar(版本不同则不是这个名字)。
另外还有一个常用的选择就是使用Guava库:
com.google.common.base.Charsets.UTF_8.name()
同样将得到“UTF-8”。
(16)rsync over ssh的用法
直接看命令:
rsync -avz -e ssh 用户名@服务器地址:远程文件路径 本地路径
例如:
rsync -avz -e ssh user@codelast.com:/abc/file.gz /home/codelast/
则会将远程服务器上的 /abc/file.gz 文件同步到本地的 /home/codelast/ 目录下。
(17)使用rsync从client向server推送文件时,发生 auth failed on module xxx from unknown (192.168.1.26): missing secret for user "rsync" 错误(从rsync server的日志中可以看到)的解决办法
请注意,如果你的rsync server端用到了一个密码文件(例如rsyncd.secrets),它的文件权限必须为600或400(不允许other用户读写):
chmod 600 rsyncd.secrets
否则就会发生上面的错误。
文章来源:http://www.codelast.com/
(18)吃掉shell命令的错误提示
这是个非常简单的老问题了,例如,你 ls 一个不存在的文件,就会输出错误提示“ls: xxx: No such file or directory”,如果在shell脚本中执行这个命令,不想让它输出错误提示的话,可以这样:
ls xxx >/dev/null 2>&1
(19)Eclipse CDT打开一个.cpp文件时,默认显示是代码折叠的问题
代码折叠,意味着函数什么的只显示一行,括号中的具体内容不显示,这样可能会导致很多人不习惯,可以在配置中改掉:
Window→Preference→C/C++→Editor→Folding,去掉“Enable folding when opening a new editor”选项上的勾即可。重新打开代码文件,就没有代码折叠的问题了。
(20)用“msmtp 邮件地址”发送邮件时提示“Fmsmtp: GNU SASL: Base 64 coding error in SASL library”错误的解决办法
在命令行用msmtp发送邮件的方法是:
msmtp abc@gmail.com (输入一些内容,任意行数,任意字数,完成之后,按 Ctrl+D 键,邮件会立即发送)
其中,abc@gmai.com是要邮件接收地址。
但是可能你还没输入任何内容,只是执行了“msmtp 邮件地址”这个命令,就提示了类似于下面的错误:
Fmsmtp: GNU SASL: Base 64 coding error in SASL librarymsmtp: could not send mail (account default from /root/.msmtprc)
此时可以尝试把.msmtprc配置文件中的“auth login”改为“auth plain”,即有可能解决问题。
(21)awk求文件中某一列的和
假设要求文件file.txt中第3列的和,则:
awk -F"\t" '{(total+=$3)};END{print total}' file.txt
上面指定了3列的分隔符为\t
(22)强制Chrome访问指定网站时使用https
例如访问Google时强制Chrome使用https,怎么做?在Chrome的浏览器栏输入:
Chrome://net-internals/
在左上角的下拉框里选择“HSTS”,在下面的“Domain:”输入框里填上“google.com”,然后再勾上“Include subdomains for STS”(表示对所有google.com的子域名都有效),再点击“Add”,然后重新打开浏览器,再访问Google,就会发现真的强制使用https了。
(23)解决无法使用screen命令时提示的错误:Cannot open your terminal '/dev/pts/0' - please check.
只需要先执行一个命令即可:
script /dev/null
然后再执行screen命令,OK了。
(24)修复CentOS 5下的bash注入漏洞
近日(2014年9月),一个引人注目的bash漏洞浮出水面,具体解读可看这里。在CentOS下测试你的系统是否有漏洞:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
若输出下面的结果则说明你的bash有严重漏洞:
vulnerable this is a test
修复方法很简单:
yum update bash -y /sbin/ldconfig rpm -qa bash
之后再用上面的测试方法进行测试,若只输出“this is a test”则说明漏洞已完全修复!
文章来源:http://www.codelast.com/
(25)awk取最后一列、倒数第二列
用awk分割后,取最后一列以及倒数第二列的方法:
[codelast@ temp]$ cat a.txt /usr/bin/1.txt /usr/bin/2.txt /usr/bin/3.txt [codelast@ temp]$ cat a.txt | awk -F "/" '{print $(NF-1)"/"$NF}' bin/1.txt bin/2.txt bin/3.txt
可见$NF表示最后一列,并且可用它减去任意数字得到其前面的列。
(26)查看Ruby gem的安装路径
gem environment
在输出结果中有类似于下面的这一段,即为其安装路径:
- GEM PATHS: - /usr/lib64/ruby/gems/2.1.0 - /root/.gem/ruby/2.1.0
(27)如何查看本地的Ruby doc/本地Ruby doc server的开启
[codelast@ ~]$ gem server --daemon Server started at http://0.0.0.0:8808
然后就可以用浏览器访问 http://0.0.0.0:8808 来查看安装过的gem的Ruby doc了。
(28)Ubuntu下的Thunderbird,在新邮件到达时不显示通知
默认情况下,有新邮件到达时,Thunderbird会在Ubuntu的右上角显示一个弹出的小窗口通知,如果邮件多的话,这个窗口就会频繁弹出,非常令人不悦,因此可以修改Thunderbird的配置,让它不显示:
编辑→首选项→常规→新消息到达时→去掉“显示警告”前的勾
(29)T如何清空Chrome的Secure Shell插件中的known_hosts记录?
在Secure Shell的主界面里,用快捷键“Ctrl+Shift+J”打开JavaScript控制台工具,执行如下命令:
> term_.command.removeAllKnownHosts() true
回车之后就搞定了。
(30)screen强制接管一个会话(session)
当用 screen -r 无法 attach 一个session的时候,可以用下面的命令,踢掉原来的用户,强制attach到指定的session上:
screen -D -r <session_id>
文章来源:http://www.codelast.com/
(31)如何防止Google表单把输入的“true”自动转化为大写的“TRUE”
这个特性不是Google表单的bug,但是确实很恼人。其实只要在输入的时候,在“true”(不含引号)前面加一个单引号就可以输入小写的true了,就像这样:
'true
(32)Zookeeper server以指定的配置文件启动
./zkServer.sh start zoo.cfg
(33)读取本地磁盘上的Thrift文件,以及把Thrfit对象写到本地文件
一言不合直接看代码:
// 待读取的Thrift格式文件的路径 String filePath = "/home/codelast/my-thrift-file"; // 读取成byte数组 byte[] bytes = Files.readAllBytes(new File(filePath).toPath()); // 反序列化器 TDeserializer deserializer = new TDeserializer(); // 文件中存储的Thrift对象的格式 MyThrift myThriftObject = new MyThrift(); // 反序列化,执行之后文件中存储的数据就被保存到了 myThriftObject 这个对象中 deserializer.deserialize(myThriftObject, bytes);
以及写文件:
private void writeThriftObject2File(MyThrift thriftObj, String outputFilePath) throws IOException, TException { BufferedOutputStream bufferedOut = new BufferedOutputStream(new FileOutputStream(outputFilePath), 2048); TBinaryProtocol binaryOut = new TBinaryProtocol(new TIOStreamTransport(bufferedOut)); thriftObj.write(binaryOut); bufferedOut.flush(); }
文章来源:http://www.codelast.com/
(34)tmux从小屏幕换到大屏幕之后显示不全屏的问题
如果你在一台分辨率小的电脑上创建了一个tmux session,然后在一台分辨率高的电脑上attach这个session,会发现attach上之后,tmux并不是全屏显示,而是小分辨率那部分形成了一个框框,在屏幕的其他部分都是无用的区域,这看起来非常难受,事实上,可以在attach的时候,加一个 -d 参数解决这个问题:
tmux attach -d
如果要 attach 到指定序号的session上,这样做:
tmux attach -d -t 3
其中 3 是session的序号。
注意:这个操作会detach其他的tmux客户端。
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):