入门级的Unix专业知识足以对付许多生信分析,初学者要牢牢把握以下概念:
1、目录导航:目录树是什么,如何使用cd命令
2、绝对和相对路径:如何访问目录中的文件
3、简单的Unix命令做什么:ls, mv, m, mkdir, cat, man
4、获取帮助信息:如何进一步了解unix命令的作用
5、什么是“flags”:如何自定义典型的unix程序 “ls vs ls -l”
6、Shell重定向:什么是标准输入和输出,如何“channel”(将一个程序的输出传递给另一个程序的输入)
When using graphical user interfaces the command line shell is accessed via an application called “Terminal” . When the “Terminal” runs it launches a so-called “shell” that by default opens into a folder that is called your “home” directory.
当“Terminal”(终端)运行时,它会启动“shell”(壳),默认情况下壳会进入所谓“home”(主)目录的文件夹。
The shell is an interface that interprets and executes the commands that entered into it via words. There are different types of shells, the most commonly used shell is called bash.
shell是一个接口,它解释并执行文字命令。有不同类型的shell,最常用的shell称为bash。
P96给了一些学习Unix的教程,解决问题的途径,了解Shell的网站,接下来就是:
Unix Bootcamp
了解一些常用的命令,主要是了解Unix的文件系统,如何移动、拷贝、编辑文件。
ls 输出当前目录下的文件和目录
ls #展示当前目录
ls /bin #展示根目录下bin目录
ls / #展示根目录
pwd命令告诉用户目前处于哪个目录下
如果键入的命令不起作用,很可能处在错误的目录下,经常运行pwd看看自己在哪里是个好习惯
mkdir 创建一个新目录
mkdir edu
ls
mkdir -p ~/refs/hg38 #可以创造多级目录
mkdir ~/refs/hg38 #会报错
cd 进入一个目录
cd #进入主目录
cd edu #进入edu目录
pwd #显示当前所在目录
mkdir lecture #在edu目录下创建lecture目录
cd lecture
pwd
mkdir data
cd data
pwd
上述操作,可以通过“命令+命令行选项”,等同于:
mkdir -p ~/edu/lecture/docs #-p即为命令行选项
指定根目录的"/"不能丢
cd /step1/step2 #绝对路径
cd step1/step2/ #相对路径
.. 上一级目录
cd .. #进入当前目录的父目录
cd ../.. #进入当前目录的上两级目录
概念:绝对目录和相对目录
可以基于绝对目录或相对目录改变你的工作目录,怎么方便怎么来
# 假设现在在~/edu/lecture,想去~/edu/tmp
cd ../tmp #相对目录,当前目录的父目录
pwd
cd ~/edu/tmp #绝对目录,~代表主目录,对我而言等同“/home/biow”
pwd
找到回家的路
cd #回到主目录
cd / #回到根目录
cd ~ #回到主目录,和cd一样
让ls命令更有用
cd ~/edu/lecture/
ls ../../
#命令行选项 -l
ls -l
ls -l ../..
#ls还有更多命令行选项,尝试以下命令
ls -l
ls -R
ls -l -t -r
ls -lh #一个"-"指定多个命令行选项,很常用
如果不知道有些命令行选项是干什么的,查阅Unix文档吧
man 提供命令行的帮助手册
man cd #空格翻页,b前一页,q推出,↑↓键按行滚动
man ls
man man #禁止禁止套娃
# man命令用到了Unix的文本查看器程序,less
例:ls命令的手册
rmdir 删除目录(只会删除空目录)
cd ~/edu/lecture/
rmdir data #只有在待删除目录的父目录下才能执行rmdir的命令
cd ..
rmdir lecture #想了解rmdir的更多内容可以man rmdir
ls
rmdir / #报错
tab键补全
输入rmd+tab,可以补全为rmdir
输入rm+tab,没反应
输入rm+两次tab,返回所有可能补全的内容
history 返回历史命令,或者直接↑↓键查看
history命令展示了我之前搭建环境命令接下来是一些处理文件的命令,包括:将文件从位置a复制到位置b、移动文件、重命名文件、删除文件、查看文件
文件复制到/从位置复制、移动文件、重命名文件、删除文件,最重要的是查看文件
touch 创建空文件
cd edu
touch heaven.txt
touch earth.txt
ls
mv 移动文件/文件夹
mkdir temp #相对路径,指当前目录下的temp文件夹
mv heaven.txt temp #使用mv命令需要指定移动对象和目标文件夹
mv earth.txt temp
ls temp
上述分别用两个命令分别移动文件,也可以用以下命令一次性移动两个文件
#星号为通配符
mv *.txt temp #移动所有以".txt"结尾的文件
mv *t temp #移动所有以"t"结尾的文件
mv *ea* temp #移动所有中间包含"ea"的文件
mv也可以在移动文件的同时对文件重命名
touch rags #创建名为rags的文件
ls
mv rags temp/riches #将rags文件移动至temp子目录并命名为riches
ls temp/
#假如temp子目录下有名为riches的子目录,则rags会被移动至riches子目录,且不会重命名为riches
#显然,rm也可以在重命名文件的同时不移动文件(将文件移动至原目录)
mv temp/riches temp/rags
rename 也可以对文件重命名
man rename
#SYNOPSIS: rename [options] expression replacment file
#rename将指定file中出现的第一个expression替换为replacement
#提示我没找到rename这个命令,需要通过“sudo apt install rename”命令安装,扯远了
mv还可以移动目录
mv temp temp2
#执行后edu目录下没有temp目录了,只有temp2目录,temp2目录下是原来temp目录下的所有文件。
【极度危险】rm 删除文件
cd temp2
ls
rm -i earth.txt heaven.txt rags
#rm -i可以在删除前显示确认信息,输入y确认删除
cp 拷贝文件
touch file1 #当前目录创建file1
cp file1 file2 #复制文件为file2
ls
touch ~/edu/file3 #通过绝对目录创建file3
cp ~/edu/file3 ./lecture/file4 #"."可用来代指当前目录,将edu目录下的file3复制为当前目录lecture子目录的file4
#比较以下命令
ls
ls .
ls ./
ls ..
ls ../..
cp -R或cp -r 拷贝目录
man cp
cp -r lecture lecture1 #将子目录lecture及子目录下所有文件拷贝为子目录lecture1
cp -r lecture lecture1/taowa
less和more 查看文件
echo "Call me Ishmael."
Call me Ishmael.
echo "Call me Ishmael." > opening_lines.txt #">"重定向命令,【极度危险】会覆盖同名文件
more opening_lines.txt #more 查看文件
less opening_lines.txt #less 查看文件,less功能更丰富,且无需读取整个文件即可查看,速度更快
cat 查看文件
echo "The primroses were over." >> opening_lines.txt # ">>" 增添命令
cat opening_lines.txt
#可以使用cat快速合并多个文件,或拷贝文件
#合并多个文件
echo "test text 1" > file1.txt
echo "test text 2" > file2.txt
echo "test text 3" > file3.txt
cat file*.txt > file4.txt
#拷贝文件
cat opening_lines.txt > copy_1.txt
wc 查看文件行数,单词数,字符数
$ ls
opening_lines.txt
$ ls -l
total 4
-rw-rw-r-- 1 ubuntu ubuntu 42 Jun 15 04:13 opening_lines.txt
$ wc opening_lines.txt
2 7 42 opening_lines.txt #查看行、单词数、字符数
$ wc -l opening_lines.txt #-l 只查看行数
2 opening_lines.txt
ls
nano 对文件进行简单编辑
Nano是安装在大多数Unix系统上的轻量级编辑器。有许多功能更强大的编辑器(如“emacs”和“vi”),但学习曲线很陡峭。
nano opening_lines.txt
#后续自行摸索
echo 显示环境变量 ($PATH)
echo命令的另一个用途是显示环境变量的内容。
它们包含特定用户或系统范围的值,这些值既包括简单的信息(如用户名),也可给出文件系统上有用位置的列表。
echo $USER
echo $HOME
echo $PATH
#The last one shows the content of the $PATH environment variable, which displays a — colon separated — list of directories that are expected to contain programs that you can run. This includes all of the Unix commands that you have seen so far. These are files that live in directories which are run like programs (e.g. ls is just a special type of file in the /bin directory).
#可以在$PATH中添加自定义目录,因为有时候我们会把生信软件安装在非标准目录中
网友评论