linux中文麻酱字_【树】Linux笔记 1
以下内容是参与【生信技能树-全球听第7期】的课程笔记,记录人:小瑛 ,有问题可在公众号后台留言
小白小白,请注意:笔记中出现的所有文件路径,仅作为参考,请勿模仿!
1. 登录服务器
1.1 Mac电脑登录前的设置
对于 Mac pro 来说,经常出现一种情况是 :登录没问题,但是超过 5 分钟不操作就会出现问题,没法输入,不得不重启终端或者 iTerm 。解决方法是:
【1】在mac,打开终端,不要登录服务器
【2】然后在本地运行下面命令
cat >~/.ssh/configHost * ServerAliveInterval 120 TCPKeepAlive no^C # Ctrl + C
1.2 登录服务器
打开邮箱找到曾老师给大家发的邮件,里面有用户名、密码和ip地址,登录方式为:ssh 用户名@ip地址
,如:
ssh vip28@94.191.82.93
回车,然后输入密码
1.3 修改命令行配色
复制粘贴下面两行代码:
echo 'export PS1="\[\033]2;\h:\u \w\007\033[33;1m\]\u \033[35;1m\t\033[0m \[\033[36;1m\]\w\[\033[0m\]\n\[\e[32;1m\]$ \[\e[0m\]"' >> ~/.bashrcsource ~/.bashrc
注意:如果管理员没有对你开放修改权限,可能你这次修改之后的内容,下次登录会失效。
1.4 查看帮助文档
man 命令,help 命令,或者某个命令的 --help 参数
man ls # 用 man 命令查看 ls 命令的帮助文档help ls # 用 help 命令查看 ls 命令的帮助文档ls --help # 用 --help 参数查看 ls 命令的帮助文档
1.5 文件属性
1+3+3+3
2. 命令格式
ls
列出目录文件情况
ls # 列出当前目录的文件ls ./ # 同上,‘.’号代表当前目录ls ./*txt # 列出当前目录下以 txt 结尾的文件ls ../ # 列出上层目录的文件ls -a # 列出当前目录下的所有文件,包括隐藏文件ls -l # 列出当前目录下文件的详细信息ll # ls -la 的简写,这个需要管理员自定义ls -lh # 加上 -h 参数,可显示文件大小的单位ls -lh / # 列出根目录下文件的详细信息ls -S # 以文件大小排序ls -t # 以时间排序ls -R # 递归目录列出文件ls -d # 显示目录本身,而非目录下文件
cd
切换工作目录
cd .. # 切换到上层目录,相对路径cd / # 切换到根目录cd /teach/ # 切换到根目录下的teach,绝对路径cd - # 返回上一次的工作目录cd ~ # 回到用户家目录cd # 同上,回到用户家目录
mkdir
创建目录
mkdir dir # 创建一个叫dir的文件夹mkdir dir/sub1 # 想要创建一个含有sub1子文件夹的文件夹dir,会报错mkdir -p dir/sub1 # 想要递归创建文件夹必须加参数-pmkdir f{1..3} # 批量创建 f1 f2 f3 文件夹mkdir -p f{1..3}/f{1..3} # 批量递归创建 f1 f2 f3 文件夹分别包含f1 f2 f3tree # 会显示文件夹树状结构图
tree
查看目录结构
tree -L 1 # 查看当前目录的1层树结构tree -L 2 # 查看当前目录的2层树结构,在一层的基础上再显示一层子目录
touch
创建文件(文本文件)要区别于mkdir
touch file.txt new.txt # 创建个别文本文件touch file{1..5} # 批量创建文本文件
rm
删除文件或文件夹,不可撤销
-f # force不显示警告讯息,强制删除-i # 在删除会先询问用户,交互性删除-r # 递归删除文件夹,一层一层删除,系统默认不会删除文件夹,加上此参数即可rm file.txt #文件是可以直接删除的rm file* # 批量删除以file开头的文件,如果有file开头的文件夹可能会报错,因为文件夹不能直接删除
mv
移动或者重命名
mv file1 Data/ # 把file1移动到Data路径下mv file1 file2 # 把file1重命名为file2mv file1 Data/file2 # 把file1移动到Data路径下并且重命名file2mv file* Data/ # 把file*来头的文件都移动到Data路径下
cp
拷贝
-r # 递归拷贝,由于拷贝文件夹cp readme.txt Data/ # 将readme.txt拷贝到Data/路径下cp readme.txt Data/read # 将readme.txt拷贝到Data/路径下且重命名为readcp -r dir Data/ # 将文件夹dir递归拷贝到Data/路径下
ln
Link链接,分软链接(常用)和硬链接(默认)
# 不加参数即为硬链接-s # 参数即为软链接,软链接的作用类似快捷方式ln -s /teach/software/Miniconda3-latest-Linux-x86_64.sh ./ # 被链接的文件采用绝对路径会比较不容易出错
tar
解压 & 压缩文件
-c # 创建一个新的tar归档文件(创建压缩文件)-X # 从已有tar归档文件中提取文件(解压缩)-f # 输出结果到文件或设备-V # 在处理文件时显示文件(显示处理进度)-j # 将输出重定向给bzip2命令-Z # 将输出重定向给gzip命令tar -zxvf Data.tar.gz # 解压.gz文件tar -jxvf Data.tar.bz2 # 解压.bz2文件tar -zcvf Data.tar.gz Data ...# 压缩多个文件为Data.tar.gz____________________________________________________________# 其他压缩和解压命令:只能处理一个文件zip unzip # 用于压缩和解压*zip 文件gzip gunzip # 用于压缩和解压*gz文件bzip2 bunzip2 # 用于压缩和解压*bz2 文件
cat
查看文本文件的内容,输出到屏幕,不会修改文件内容
-A # 列出所有内容,包括特殊字符,如制表符、隐藏文件等-n # 打印出所有行号-b # 仅打印非空白行行号cat readme.txt # 查看readme.txt文件内容cat -n readme.txt # 查看readme.txt文件内容并显示行号(包含空白行)cat >file # 写入文件 ,如果文件存在就会覆盖原来的内容Welcome to Biotrainee() ! # 写入的内容^C # 这里是按Crtl+C# cat 在写入内容时直接按backspace无效,必须 Crtl+ backspace# 只能删除末尾的,如果前面还有问题,只能重写,覆盖写入cat >>file # 追加写入文件Welcome to Biotrainee() ! # 写入的内容^C # 这里是按 Crtl+Czcat # 可以查看压缩的文本文件tac # 逆向查看,一行不会倒序,多行时倒序显示
head - tail
查看文件的前/后n行,默认10行
head Data/example.fq # 查看example.fq文件的前10行(默认)head -n 2 Data/example.fq # 查看example.fq文件的前2行tail Data/example.fq # 查看Data/example.fq文件的最后 10 行tail -n 2 Data/example.fq # 查看Data/example.fq文件的最后 2行,空白行也算一行也会显示head -n 2 Data/example.fq | tail -1 # 只查看第2行# 行数可以简写:-n 2 = -2
less - more
逐页查看,按空格翻页,按回车换行,用的比较少,一般用 less 比较多,按 q 退出同样是查看文件内容,当不明确文件大小,cat
可能会导致刷屏,建议使用 less 命令。
less Data/example.fq # 默认格式没行号且会自动换行,一般比较凌乱less -S Data/example.fq # 单行显示,格式会比较规整less -N Data/example.fq # 显示行号zless -N Data/reads.1.fq.gz # 查看压缩文件
wc
统计文本
wc readme.txt # 默认形式是行数、单词数、字符数都统计6 29 207 readme.txt # 上一步的返回结果wc -l readme.txt # 统计文本行数wc -w readme.txt # 统计文本字符串(单词)数,不管单词有没有含义wc -l readme.txt # 统计文本字节(字符)数cat readme.txt| wc -l # 合理利用计算资源
cut
文本切割
-d # 指定分隔符,默认\t制表符-f # 指定输出哪几列(字段fields)cut -f 1,3-5 # 切割文件的第1列和第345列cut -d 'h' -f 1 # 以'h'为分隔,取出第1列
sort
排序
-n # 按照数值从小到大进行排序,默认是按照1 10 2 20排序-V # 字符串中含有数值时,按照数值从小到大排序-r # 逆向排序,20 2 10 1排序,不是从大到小-nr # 实现从大到小排序-k # 指定区域,不指定就按一整行排序-t # 指定分隔符sort -k 3 | less -S # 按文件第3列排序,方便查看结果使用less -Ssort -n -k 4 | less -S # 遇到数字排序一定要小心,记得加上-n
uniq
去重复,只去除相邻两行,一般先排序,然后再去重复
-c ## 统计每个字符串连续出现的行数less -S Data/example.gtf | cut -f 3 | sort | uniq # 对排序后的结果去重复,保留唯一值less -S Data/example.gtf | cut -f 3 | sort | uniq -c # 会显示每个值重复的次数
paste
文本合并,但数量不一致时,不会像R那样循环补齐,没有就空着
-d # 指定分隔符,默认是制表符-s # 按行合并,默认是左右按列合并less -S Data/example.fq | paste - - # 将1列变成2列(按行)less -S Data/example.fq | paste - - - # 将1列变成3列(按行)paste file1 file2 # 将 file1 file2 按左右合并 file1 左,file2 右
tr
字符替换
-d # 删除指定字符-s # 缩减连续重复字符cat readme.txt | tr 'e' 'E' # 'e'被替换成'E'cat readme.txt | tr 'abc' 'ABC' # 'abc'被替换成'ABC',一一对应。cat readme.txt | tr '\n' '\t' # '\n'被替换成'\t'cat readme.txt | tr -d 'e' # 删除字符'e'
3. 正则表达式
是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
如果你是公众号阅读,可以尝试滑动表格
符号 | 含义 | 符号 | 含义 |
---|---|---|---|
^ | 行首 | \ {n\ } | 匹配之前项n次 |
$ | 行尾 | \ {n,\ } | 匹配之前项至少n次 |
. | 换行符之外的任意单个字符 | \ {m,n\ } | 之前项至少m, 最多n |
? | 匹配之前项0次或者一次(\?) | [ ] | 匹配[ ]内任意一个 |
+ | 匹配之前项1次或者多次(\ +) | [^ ] | 排除^后的字符 |
* | 匹配之前项0次或者多次 | | | 或者 |
cat readme.txt | grep '^T' # 匹配行首为T的行cat readme.txt | grep ')$' # 匹配用)结尾的行cat readme.txt | grep 'f.ee' # .可以是任意单词cat readme.txt | grep 'f\?ee' # 匹配ee/fee,f出现0/1次cat readme.txt | grep 're\+' # 匹配re/ree/reee...cat readme.txt | grep 'f*ee' # f可以出现任意次cat readme.txt | grep 'fe\{2\}l' # e匹配2次,花括号需要转义cat readme.txt | grep [bB] # 可以匹配大写或者小写bcat readme.txt | grep '[bB]' # 同上,有没有''都一样cat readme.txt | grep [^Tt] # 匹配除了Tt以外的所有
4. 文本处理三驾马车
grep
文本搜索工具,可匹配正则表达式使用
格式:grep [options] pattern file
参数 关键词 作用文件
-W # word精确查找某个关键词pattern-C # 统计匹配成功的行的数量,不是个数!-v # 反向选择,即输出没有没有匹配的行-n # 显示匹配成功的行所在的行号-r # 从目录中递归式地查找关键词pattern-e # 指定多个匹配模式-f # 从指定文件中读取要匹配的关键词pattern-i # 忽略大小写grep Biotrainee -r ./ # 在当前目录下递归式查找 Biotrainee 这个关键词grep 'gene' # 包含'gene'的所有单词,不仅仅是单词 genegrep -w 'gene' # 只查找单词 gene ,不包含gene_xxxgrep -v -w 'gene' # 除了单词 gene 以外的grep -w -e 'gene' -e 'UTR' # 查找多个关键词用-e连接grep -w -f file # 关键词太多,可以把它们写入一个文件file然后用文件查找grep -w 'gene' | -w 'UTR' # 找完'gene'再找'UTR',注意和上面的-e区别
sed
流编辑器,一般用来对文本进行增删改查!!!
格式:sed [-options] 'script' file(s)
参数 代码 作用文件
代码:[address] [ ! ] command
作用的行 取反 具体命令
1. address的表示方式
# 不指定具体的行就是对全局操作2 # 第2行2,4 # 第2行到第4行2,+4 # 从第2行到2+4行2,$ # 第2行到最后一行,$表示最后2~3 # 从第2行开始,每隔3行取一行,不是2-3行/pattern/ # 匹配上关键词pattern 的行[!] # 表示否定,取反
2. 常用命令(增删改查)
i # insert,在指定行的前增加一行,内容为i的后面接的字串a # append,在指定行的后面增加一行,内容为a后面接的字串d # delete, 删除某一行或者某几行,也可以指定删除匹配上的行c # change, 改变指定行的内容s # 替换,使用格式为's/old/new/ [flags]', 把old替换成new,默认只替换一个,可以指定flagsy # 转换,实现字符一对一转换,格式'y/inchars/outchars/ 'p # print,把匹配或修改过的行打印出来,通常与-n参数合用
3. 常用参数
-n # 禁止显示所有输入内容,只显示经过sed处理的行(常用)-e # 直接在命令模式上进行sed的动作编辑,接要执行的一个或者多个命令,和grep的-e参数很像-f # 执行含有sed动作的文件-r # sed的动作支持的扩展正则(默认基础正则)-i # 直接修改读取的文件内容,不输出(慎用!)cat readme.txt | sed '1i xxxxx ' # 在第一行前面插入xxxxxcat readme.txt | sed '1a xxxxx ' # 在第一行后面插入xxxxxcat readme.txt | sed '1,3d' # 删除1-3行都cat readme.txt | sed '1c xxxxx ' # 第一行替换为xxxxxcat readme.txt | sed 's/is/IS/' # 把每一行的is替换完为IS,每一行的第二个is不会改变cat readme.txt | sed 's/is/IS/g' # 把每一行的is替换完为IS,flags为全局cat readme.txt | sed '/^$/d' # 删除空白行cat readme.txt | sed '/ww/ s/ee/EE' # 定位到含有ww的行,把ee替换为EEcat readme.txt | sed -n '/ee/p' # 只输出含有ee的行,效果和 grep "ee" 一样cat readme.txt | sed 'y/abc/ABC/' # 用ABCf分别替换abc,效果和 tr 'abc' 'ABC' 一样cat readme.txt | sed 's/^../**/' # 把每一行的前两个字符替换为*cat readme.txt | sed '1~2 s/^../*/' # 把奇数行的前两个字符替换为*cat readme.txt | sed '2~2 s/^../*/' # 把偶数行的前两个字符替换为*cat xxx.fa | sed '2,$ y/ATCG/TAGC' # 互补序列的转换# Shell脚本获得核酸反向互补序列参考下方链接# https://blog.csdn.net/qq_42491125/article/details/102718191_____________________________________________________## sed 大小写转换sed 's/[A-Z]/\l&/g' # 大写转小写sed 's/\b[a-z]/\u&/g' # 小写转大写tr '[a-zA-Z]' '[A-Za-z]' # 大小写互相转换
awk
也称gawk,编程语言,可对文本和数据进行处理
用法:awk [options] ' {script} ' file
参数 代码 文件
代码的结构类型:
基础结构:'{script}'匹配结构:'/pattern/{script}'扩展结构:'BEGIN{script} {script} END{script}' 热身 逐行执行 最后执行
运行原理:awk在读取一行文本时,会用预定义的字段分隔符划分每个数据字段(行),并分配给一个变量。
$0 # 代表整个文本行$1 # 代表文本行中的第1个数据字段......$NF-1 # 代表文本行中倒数第二个数据字段$NF # 代表文本行中的最后一个数据字段
参数及命令:
-F # 默认的字段分隔符是任意空白字符(如:空格or制表符),也可以用-F参数自定义分隔符 # 切割行的时候建议使用cut,以为在一列中包含空格或者制表符时awk只能切除某一列的部分-v # var=value,定义awk程序中的一个变量及其默认值## 基础结构less -S Data/example.gtf | awk '{print $9}' | less -S # 切出第9行less -S Data/example.gtf | awk '{print $9,$10}' | less -S # 切出第9、10行less -S Data/example.gtf | awk -F '\t' '{print $9}' | less -S # 以制表符分割切出第9行## 基础结构--加强版,加入条件判断和循环语句less -S Data/example.gtf | awk '{if($3=="gene") print $0}' | less -S less -S Data/example.gtf | awk '{if($3=="gene") {print $0} else{print $3 " is not gene "}}' | less -Sless -S Data/example.gtf | awk '{for(i=1;i<4;i++){print $i}}' | less -S # 打印多列## 匹配结构:将含有gene关键词的行,整行打印less -S Data/example.gtf | awk '/gene/{print $0}' | less -S## 扩展结构标准版less -S Data/example.gtf | awk 'BEGIN{print "find UTR feature"} /UTR/{print $0} END{print "end"}'## 扩展结构省略END版less -S Data/example.gtf | awk 'BEGIN{FS="\t"} {print $9}' | less -S # {}内的多个代码可以用;分开less -S Data/example.gtf | awk 'BEGIN{FS="\t";OFS="\t"} {gsub("gene","Gene",$3);print $0}' | less -S
awk内置变量:
FS # 定义输入字段分隔符, IField Separator,同-FRS # 定义输入记录分隔符,Record SeparatorOFS # 定义输出字段分隔符,0ut Field Separator,默认是 分隔符不是制表符ORS # 定义输出记录分隔符,0ut Record SeparatorNF # 数据文件中的字段总数,可以简单理解为列数NR # 已处理的输入记录数,可以简单理解为行数自定义 # 也可以通过-v参数自定义变量或传递外部变量
awk数学运算:
+ # (加)- # (减)* # (乘)^ # (幂)/ # (除)** # (平方)% # (取余)int(x) # x的整数部分,取靠近零一侧的值 # 四合五入,可在原数据基础上+0.5,再取整1og(x) # x的自然对数
5. 操作技巧
以下是老师在讲解过程中穿插的小技巧,可以让操作更流畅、更高效。
查看历史命令:↑键、history
文件名和路径的补齐:Tab键(每天100次)
选中文件:双击
选中行:三击
文件命名:不要有空格、不要涉及保留字、不要有中文
查看文件结构:tree
登录服务器的第一个命令:ls(每天100次)
查看帮助文档:--help
巧用管道符:|
Linux操作系统中,严格区分大小写
直接到达行首:Home键 、Ctrl + a
直接到达行末:End键 、Ctrl + e
如果一个命令不想运行了就 Ctrl + c 结束掉
看到奇怪的结果也可以按 Ctrl + c 结束掉
Ctrl + c 不要和 Windows 操作系统里的复制混淆,要复制用鼠标
操作过程中所有修改在不赋值的情况下,都是不会被保存的,也不会修改原文件
保存文件可以用 >文件 ,重定向
对文档操作前,先 less 初步查看文档
空格和制表符在正常情况下看不出来,cat -A 可以将制表符可视化,制表符是^I
加参数的时候要么-w -c 分开,要么-wc合并,-w-c会报错
单行命令太长可以用 \ 连接
在less不加参数 -S 时,可以用鼠标双击具体的命令,看谁和谁是一起的
代码最外层一般都是成对的 ' ',里面嵌套成对的 " "
出现串列,可以使用 column -t | less -S
如需获得更好的阅读体验,可以点击“阅读全文”
后台回复关键词“Linux笔记 -1”,即可获取md文档网页链接
linux中文麻酱字_【树】Linux笔记 1相关推荐
- linux中文麻酱字_红糖麻酱卷的做法——Nice to meet you
做这吃食缘起相思. 我是在秋天到的北京,刚毕业,住在舅舅家.北京的秋天只得"萧索"二字,道路太宽,反而将路边的树衬的像树苗了. 树叶都跑光的时候,剩下光秃秃的树杆,似乎毫无御寒能力 ...
- linux中文麻酱字_买芝麻酱时,包装上只有这2个字,都是好芝麻酱
买芝麻酱时,包装上只有这2个字,都是好芝麻酱 俗话说得好,没有什么是一顿火锅解决不了的,如果有,那就两顿!国民饮食中,火锅的受欢迎程度绝对是第一,据说全国的餐饮店有将近一半都是火锅店.好友聚会吃火锅, ...
- linux中文麻酱字_芝麻酱的瓶子上有这些文字,就直接扔吧,玉磨坊告诉你
原标题:芝麻酱的瓶子上有这些文字,就直接扔吧,玉磨坊告诉你 在购买芝麻酱后的大部分时间里,我们都会感觉到芝麻酱的味道远比以前差.如果我们想扔掉它,那是可惜的.我们必须扔掉哪种芝麻酱? 首先就是原材料, ...
- linux中文麻酱字_在家自制芝麻酱、芝麻香油,味道纯正无添加,原来做法这么简单...
北方人对芝麻酱有天生的好感,吃火锅.涮锅的时候少不了用芝麻酱来做佐料,无论是羊肉还是豆腐,只要裹上一层细腻浓郁的芝麻酱,怎么吃都是喷香.南方吃火锅又偏爱味道相对清淡的芝麻香油,力求品尝食材的原汁原味. ...
- wps linux 中文ibus,解决wps for linux 中文输入法光标不跟随的问题
需要安装qt4-qtconfig和ibus-qt4,安装ibus-qt4之后才能在qt4-qtconfig"界面"选项卡默认输入法选项中看到ibus,选定它,然后设置XIM输入风格 ...
- linux 复制包括子目录_【Linux分享】Linux常用命令+教程分享
今天分享分为两部分 :)PART01 Linux常用命令分享/PART02 关于BD面试经验分享 30mins Linux Command:PART 1 你本可以张口就来.....本篇内容分享 ...
- linux降内核版本_查看linux版本内核 Linux内核版本的变化
1.major:表示主版本号,有结构性变化时才变更. 2.minor:表示次版本号,新增功能时才发生变化;一般奇数表示测试版,偶数表示生产版. 3.patch:表示对次版本的修订次数或补丁包数. 4. ...
- linux配置usb主从_基于Linux的USB主/从设备之间的三种通信方式
随着简单易用的USB接口日益流行,在嵌入式系统中添加对USB接口的支持已成为大势所趋.本文通过介绍Linux中支持USB的各种模块和库,分析了在Linux上利用USB实现高速串口和以太网连接等通信方式 ...
- linux查看tcl版本_查看Linux内核版本的方法有几个?你也是这样操作吗?
请关注本头条号,每天坚持更新原创干货技术文章.如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 内核是操作系统的核心组件. 它管理系统的资源,是计算机硬 ...
最新文章
- 7软件质量与测试规范
- 好程序员Web前端教程分享Vue学习心得
- I2C和SPI异同及使用注意
- 悲剧的程序员用程序写出的爱情
- strtol函数参数详解
- 【算法精讲】集成分类与随机森林
- js根据应纳税所得额计算税金
- 干货|针对单个网站的渗透思路(精)
- 后端系统架构 听课笔记
- java对两个表进行排序_Excel工作簿中多个worksheet工作表,如何对工作表进行排序?...
- 84岁院士坚持健身搞科研!病床上辅导多名硕博生完成论文
- 19个AI热门应用领域,你确定不了解一下?
- mysql一共有多少引擎_MySQL存储引擎你们知道多少?
- (7)Node.js 全局函数
- stm32实验报告心得体会_STM32实验报告
- 树莓派搭建私人服务器
- codeplex http://metrotoolkit.codeplex.com/
- MySQL 命令行帮助的使用
- 电商运营数据分析常用分析指标--交易数据指标、品类分析数据指标与内容分析数据指标
- 用米思齐mixly和APP INVENTOR 2通过MQTT控制灯亮和熄
热门文章
- Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
- 初学MyBatis-Plus
- BEP 7:CUDA外部内存管理插件(下)
- CUDA 7 流并发性优化
- 2021年大数据基础(四):​​​​​​​​​​​​​​​​​​​​​大数据业务分析基本步骤
- 2021年大数据Flink(三十五):​​​​​​​Table与SQL ​​​​​​案例二
- [JAVA EE] JPA 查询用法:自定义查询,分页查询
- hive mysql 不兼容_Hive+mySql遇到的问题和解决办法
- HarmonyOS UI 开发 vp ,fp , px 以及写具体数字的 理解
- RecyclerView smoothScrollToPosition 和 scrollToPosition 的区别