查看使用帮助
man ls # 许多Linux自带命令可以通过man查看使用帮助
ls --help
ls -h # 有些程序可以通过-h, --help查看使用帮助
显示目录内容
ls # 显示目录内容
ls -l # 以列表显示形式显示目录内容,通常在~/.bashrc文件中增加一行:alias ll='ls -l' ,以后就可以直接使用别名ll了,更方便
ll -h # 以人类可读的方式显示文件大小
ll -t # 以文件的修改时间排序,最新修改的在最前面
ll -tr # 以文件的修改时间排序,最新修改的在最后面
watch -n n -dc ls -l # 追踪目录内容的变化,每n秒刷新一次
pwd - 显示当前目录
pwd # 显示当前目录的绝对路径
ls `pwd`/file # 显示文件的绝对路径
切换目录
cd dir # 切换到目录dir
cd # 切换到用户的HOME目录
cd ~ # 同cd,~表示HOME目录
cd .. # 切换到上一级目录;一个点.表示当前目录,两个点..表示上一级目录
cd - # 切换到进入当前目录之前所在的目录
创建目录
mkdir dir # 创建dir目录
mkdir -p dir1/dir2 # 递归创建目录,如dir1不存在,会先创建dir1
按行合并文件
cat file # 合并一个或多个文件至标准输出,当只有一个文件时,相当于显示所有文件内容
cat file1 file2 # 合并file1和file2的内容,并在屏幕上输出
cat R1.fq.gz R2.fq.gz # 可以合并gzip压缩文件,如测序数据原始reads的合并
按列合并文件
paste -d ' ' file1 file2 # 按列对列的方式一行一行合并文件。默认列中间加TAB键, -d参数可以改变列之间的分隔符
分割文件
split -d -l 10000 file chunk_ # 按行数分割文件,每个文件最多10000行,分割成的文件名为chunk_01, chunk_02。。。
split -d -b 100m file chunk_ # 按大小分割文件,每个文件最多100m,分割成的文件名为chunk_01, chunk_02。。。
剪切文件
cut -f 1 file # 剪切文件的第1列
cut -f 1,2 # 剪切文件的第1,2列
cut -f 3- # 剪切第3列及之后的所有列
cut -d ' ' -f 1 file # 剪切第1列,但以空格作为列与列之间的分隔符。默认以TAB作为分隔符
grep '^>' test.fa | cut -c 2- # 得到fasta文件中的序列名称(去掉了>符号)
显示文件内容
less file # 分屏显示文件内容,按空格键显示下一页,按下/后可以搜索内容
less -SN file # 显示文件的行号,并且截断太长的行
head file # 默认显示文件前10行
head -n 20 file # 显示文件前20行
tail file # 默认显示文件后10行
tail -n 20 file # 显示文件后20行
tail -n +2 file # 跳过第1行,显示从第2行开始的所有行,可用于跳过文件的标题行
tail -f file # 当文件的内容还在增加时,实时显示末尾增加的内容,常用于查看日志文件的更新情况
统计文件内容
wc -l file # 统计文件行数
创建文件
touch file # 创建一个空文件
touch {file1,file2,file3} # 同时创建3个文件
文件、目录的复制,移动删除
scp file1 file2 # 将file1复制一份,命名为file2,复制目录要加-r参数:scp -r
mv file1 dir1/ # 将file1移动到dir1/目录下
mv file1 file2 # 重命名:即将file1移动成为file2
rm file # 删除文件,删除目录要加-r参数:rm -r
rm -f file # 文件若不存在,删除时会报错,加-f参数就不会报错
文件打包压缩
# 平时tar基本上就能完成打包、压缩、解压的任务了
tar czvf file.tar.gz files # 打包并压缩
tar xvf file.tar.gz # 解包,解压缩
gzip file # 压缩
gunzip file.gz # 解压
改变文件目录的权限
chmod +x file # 增加[本人]可执行权限
chmod -x file # 取消[本人]可执行权限
chmod a+x file # 增加[所有人]可执行权限
chmod a-x file # 取消[所有人]可执行权限
chmod 777 file #给予文件运行权限
移动文件权限
chown <112> file # 将文件的所有权给112
chown -R <112> dirname # 将目录以及目录内的文件的所有权给112
排列
sort file # 默认按字典序对文件进行排序
sort -k2,2 -k3,3 file # 先按第2列排序,第2列相同,再按第3列排序
sort -k2,2n file # 按第2列排序,且第2列是数字,升序
sort -k2,2nr file # 按第2列排序,且第2列是数字,降序
sort -u file # 先排序文件,然后去除相邻的重复行,只保留一条记录
sort file | uniq # 去除相信的重复行,只保留一条记录,相当于: sort -u file
# 利用sort, uniq取两个文件的交、并、补集
sort a b | uniq # 并集
sort a b | uniq -d > c # 交集
sort a c | uniq -u # 补集
从网址下载文件
wget <http> # 下载文件到当前目录,文件名保持不变
ssh远程连接
ssh username@host # ssh 远程连接至服务器
scp username@host:/path/to/file . # 将远程服务器上的文件传输到当前目录,文件名保持不变,复制目录加参数-r
scp file username@host:/path/to/dir/ # 将本地文件复制到远程服务器,文件名保持不变,复制目录加参数-r
rsync -azvP dir1 dir2 # 将dir1的内容同步至dir2
rsync -azvP --delete dir1 dir2 # 同步dir2与dir1,dir1中删除的文件,dir2中也要跟着删除
rsync -azvP --exclude 'file' dir1 dir2 # 同步dir2与dir2,且将file排除在外
df -h # 查看磁盘使用情况,-h表示以人类可读的方式显示容量大小
du -sh # 查看当前目录使用了多少磁盘空间
du -sh * # 查看当前目录下各文件或文件夹使用的磁盘空间
free -h # 查看内存使用情况
top -c # 查看CPU,内存的使用情况
htop # top的完美替代品,Linux系统不自带,需要安装, ubuntu系统:apt install htop
ps aut # 查看后台任务运行情况,第2列是任务的PID号
kill -9 PID # 删除编号为PID的任务
nohup ./run.sh &> run.sh.o & # 远程SSH登录服务器,在后台运行任务,断开远程连接后任务仍然在后台跑
./run.sh # 假如任务是直接这样开始跑的
ctrl + z # 按ctrl + z,将任务放到后台
jobs # 输入jobs命令,回车,可以看到任务是暂停的: [1]+ Stopped(SIGTSTP) bash run.sh
bg # 让后台暂停的任务开始运行
jobs # 再次运行jobs,可以看到任务已经跑起来了: [1]+ Running bash run.sh &
disown -r # 从当前shell中移除运行中的作业,至此,可以关掉终端回家了