woodcorpse的个人博客分享 http://blog.sciencenet.cn/u/woodcorpse

博文

Linux Shell Tips小技巧

已有 1446 次阅读 2019-8-29 20:08 |个人分类:Linux|系统分类:科研笔记

[TOC]

sed

指定行

sed -n '5,10{/pattern/p}' file

删除文本

# 删除第一行
sed '1d' temp.txt
# 删除1-4行
sed '1,4d' temp.txt

替换文本

file文件中的第三行中的aaa替换为fff
sed -i '3s/aaa/fff/' file

文件中找出包含xxx的行,并将其中的aaa替换为fff
sed -i '/xxx/s/aaa/fff/g' file

文件第1行,将其中的#号或是*号替换为fff
sed -i '1s/[#*]/fff/gp' file

小技巧

查找N天内修改文件

# 查看当前目录下3天内修改的文件
find ./ -iname "*" -atime 3 -type f

Shell写R语言

  1. 需要转义为\\,
  2. 变量格式为${var}

makefile写shell

  1. \"需要写为\"/$

bad interpreter错误

/bin/bash: bad interpreter: Text file busy
/bin/bash: /mnt/bai/yongxin/bin/DAOTU_egr_fdr.sh: /bin/bash: bad interpreter: Text file busy 解决方法:用editplus打开,删除原文件,再保存即可;也可尝试添加可执行权限

替换换行符为空格

sed 's/\n/ /g' # 无效
tr "\n" " "

压缩并打包目录

tar -czf small.tar.gz small(目录名)

重定向标准错误

bowtie >> temp 2>&1
bowtie &>>temp

sed只替换一次

sed ':a;N;$!ba;s/a/A/g' file
- :a 创建一个labela
- N 将下一行读入到模式空间
- $! 如果不是最后一行,ba跳转到label a处
- s/a/A/ 替换a为A,只替换一次

查看服务器信息命令合集linux_info.sh

Linux Shell中内部变量

http://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html

- $$ Shell本身的PID(ProcessID) 
- $! Shell最后运行的后台Process的PID 
- $? 最后运行的命令的结束代码(返回值) 
- $- 使用Set命令设定的Flag一览 
- $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 
- $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 
- $# 添加到Shell的参数个数 
- $0 Shell本身的文件名 
- $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数

bad substitution错误

shell写R脚本时,无法写入,报错: bad substitution
原因可能是有的Linux变量打错,找不到,检查所有{}中变量名是否正确,如多个空格或拼写错误,{height }多个空格只报bad substitution,还不知道是那行

Ubuntu 16.04中文乱码

一般默认是支持,可能是终端有问题,如Xshell,设置连接属性-终端-编码-Unicode(UTF-8) (无论什么都选这个,即使用中文编码显示中文也是乱码)

locale # 显示系统语言信息
export LANG="en_US.UTF-8" # 临时改为英文
export LANG="zh_CN.UTF-8" # 临时改为中文
vim ~/.bashrc # 添加上面句子可永久修改

命令行的数学运算

a=3
b=5
let c=a+b
echo $c

-bash: cannot create temp file for here-document: No space left on device

/temp没有空间了,清理一下就可以了

/boot满了

http://www.linuxidc.com/Linux/2015-05/117401.htm

linux更新,旧的内核不会删除,如果给/boot单独分区就会满

查看 dpkg --get-selections|grep linux
linux-后面带image的是旧的内核。因为我已经将旧的内核删除了,所以后面显示deinstall,不删除的话是install。我们要做的就是将后面带image的Linux内核删除。

sudo apt-get remove linux-image-(版本号)(就是上面带image的版本)

有卸载不完全的(有提示),可以用 sudo apt-get autoremove来删除。

总结:可以直接使用autoremove移动绝大多数旧内核,想深入清楚可指定版本号删除旧内核

Ubuntu全局环境变量

/etc/bash.bashrc中添加的配置,每个用户都会读取

vim /etc/bash.bashrc

网卡配置

su
vim /etc/network/interfaces
# 添加如下内容
auto eno113np0
iface eno113np0 inet static
address 159.226.116.224
netmask  255.255.255.192
gateway  159.226.116.254
dns-nameservers 159.226.8.6
hwaddress ether F4:8E:38:D6:E9:97

ifconfig eno113np0 down
ifconfig eno113np0 up


http://wap.sciencenet.cn/blog-3334560-1195793.html

上一篇:mSystems:干旱对土壤微生物组的影响
下一篇:QIIME 2用户文档. 5粪菌移植分析练习Fecal microbiota transplant (FMT)(2017

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-11-28 04:06

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部