- sort排序的时候要加上 LC_ALL=C, 否则排序可能不符合预期,具体请参考文章
- 如何删除行尾的^M特殊符号:%s/\r//g
如何将urlencode后的编码还原
1
2
3from urllib import unquote
str = '%E7%88%86%E6'
print unquote(str)如何将在一个版本上开发的代码移植到另一个版本上
1
2
3
4svn diff > code.diff
patch -p0 -i code.diff
注意:可能会有拒绝,以.rej结尾,所有patch完之后,一定别忘了执行命令:
find . -name "*.rej" 来合并下diffsort排序指定分隔符
1
sort -t $'\t' : 使用-t参数, 注意是单引号
std::sort,cmp函数在元素相等时要返回false,否则会core掉,可以使用stable_sort
求差集
1
2a-b : grep -F -v -f b a | sort | uniq
b-a : grep -F -v -f a b | sort | uniqgrep
- 忽略大小写:-i
- 查询二进制文件:-a (相当于–binary-files=text)
压缩 & 解压
tar
1
2
3
4
5压缩:tar -zcvf xxx.tar.gz yourdirectory
解压:tar -zxvf xxx.tar.gz
只打包不压缩 :tar -cvf xxx.tar yourdirectory
解包:tar -xvf xxx.tarzip
1
解压:unzip xxx.zip
tar.bz2
1
2bzip2 -d filename.tar.bz2, 生成filename.tar
tar -xvf filename.tar
wget
- nohup wget -r -l0 –preserve-permissions ftp_file &
- preserve-permissions : 保存权限
- -l0 :表示一直递归到最后一层,防止目标文件层次过多导致无法完全wget下来
- -nH –cut-dirs=5 表示wget的时候使用目录裁剪
lsof
- lsof -i:port_id : 查看端口号对应的进程id
删除文件中的^@
- ^@就是\0, 执行命令: sed -r ‘s/\x0//g’
- 输入ctrl+V ctrl+@, 可以在vim中打出来,直接在vim中替换
- 文档转换成unix格式, 删除文档中包含^M
- dos2unix
- linux安装需要注意的PATH
- 动态链接库:LD_LIBRARY_PATH,使用的时候需要: export LD_LIBRARY_PATH = new_installed:$LD_LIBRARY_PATH
- 可执行程序的查找路径:PATH, 使用的时候需要: export PATH = new_installed:$PATH
- 删除源码软件安装
- 1.找到安装目录,执行命令make uninstall
- 2.如果第一步无法删除成功,说明不支持这种卸载方式,可以通过执行whereis查看可执行文件/lib等文件安装到了什么位置,然后执行rm删除
使用python生成随机数
1
2import random
rand_list = [ random.randint(0, 100000) for i in range(100) ]将一个文件中特定的文件拷贝到另一个文件
比如:将a文件中所有cpp文件拷贝到b文件 使用xargs实现1
find a -name "*.cpp" | xargs -i cp {} b
其中:-i表示find传递给xargs的结果由{}来代替
- map和unordered_map的区别
- map内部是红黑树实现的,内部是有序的
- unordered_map内部实现了一个哈希表,无序的
用vector接收用户输入参数
1
2
3int main(int argc, char** argv) {
std::vector<std::string> args(argv, argv + argc);
}grep显示匹配行之前之后n行
1
2
3-A n 显示匹配行和之后的n行
-B n 显示匹配行和之前的n行
-C n 显示匹配行之后和之后各n行mount硬盘
1
2lsblk : 查看当前磁盘的情况
mount /dev/sdb /disk : 前面是磁盘位置,后面是挂载目录多线程不要使用cout
多线程情况下使用cout << a << endl, <<中间可能被中断掉,建议使用printf- linux机器登录后很快自动退出
解决方案:/etc/profile 中设置TIMEOUT 改大一些 - 查看进程id对应的程序路径
ll /proc/PID - 修改文件夹所有权
chown -R username:username /xxxx/xxxx/xxx shell计算绝对值
1
{res#-}, 解释:${var#Pattern} Remove from $var the shortest part of $Pattern that matches the front end of $var
shell while忽略循环条件
1
2
3while :; do
command
doneBeautifulSoup避免标签自动转小写, 使用xml方式打开
1
soup = BeautifulSoup(open("test.xml"), 'xml')
shell多行注释
1
2<<EOF
EOFshell相等判断
- 整型 : eq
- 字符串 : =
shell获取日期
1
2today=`date +%Y%m%d`
yesterday=`date -d "1 days ago $today" +%Y%m%d`将前台任务变成后台任务
1
2ctrl + z
bg (将最近暂停的后台任务继续执行)python dict 按照value排序
1
2
3
4
5
6
7
8
9
10my_dict = {"a" : 15, "b" : 5, "c" : 7}
#<type 'dict'>
print type(my_dict)
sort_dict = sorted(my_dict.items(), key = lambda item : item[1])
#<type 'list'>
print type(sort_dict)
#[('b', 5), ('c', 7), ('a', 15)]
print sort_dictpython好用的进度条工具
1
2
3
4from tqdm import tqdm
my_list = [x for x in range(1000)]
for i in tqdm(range(len(my_list))):
time.sleep(0.1)linux文件删除后空间仍没释放
1
2找到进程后,杀死进程
sudo /usr/sbin/lsof | grep deletedpython调用shell
1
2
3参数需要用%s传递
import os
os.system('cat %s | sort -u > %s' %(f1, f2))