Linux 命令速查手册
man - 获得帮助
ls - 显示目录内容
1 2 3 4 5 6
| ls ls -l ll -h ll -t ll -tr watch -n 3 -dc ls -l
|
pwd - 显示当前目录
cd - 切换目录
1 2 3 4 5
| cd dir cd cd ~ cd .. cd -
|
mkdir - 创建目录
1 2
| mkdir dir mkdir -p dir1/dir2
|
cat - 合并文件(按行)
1 2 3
| cat file cat file1 file2 cat R1.fq.gz R2.fq.gz
|
paste - 合并文件(按列)
1
| paste -d ' ' file1 file2
|
split - 分割文件
1 2
| split -d -l 10000 file chunk_ split -d -b 100m file chunk_
|
cut - 剪切文件
1 2 3 4
| cut -f 1 file cut -f 1,2 cut -f 3- cut -d ' ' -f 1 file
|
less, head, tail -
显示文件内容
1 2 3 4 5 6 7 8
| less file less -SN file head file head -n 20 file tail file tail -n 20 file tail -n +2 file tail -f file
|
wc - 统计文件内容
touch - 创建文件
cp, mv, rm-
文件/目录的复制,移动,删除
1 2 3 4 5
| scp file1 file2 scp -rmv file1 dir1/ mv file1 file2 rm file rm -rm -f file
|
tar - 文件打包/压缩
1 2 3 4 5
| tar czvf file.tar.gz files tar xvf file.tar.gz gzip file gunzip file.gz
|
chmod - 改变文件/目录权限
1 2 3 4
| chmod +x file chmod -x file chmod a+x file chmod a-x file
|
chown - 改变文件/目录归属
1 2
| chown User:UserGroup file chown -R User:UserGroup dir
|
sort, uniq - 排序,去重
1 2 3 4 5 6 7 8 9
| sort file sort -k2,2 -k3,3 file sort -k2,2n file sort -k2,2nr file sort -u file sort file | uniq sort a b | uniq sort a b | uniq -d > c sort a c | uniq -u
|
wget - 下载文件
1
| wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-aarch64.sh
|
ssh - 远程登录
1 2
| ssh username@host ssh username@host -p PORTS
|
scp - 远程文件传输
1 2
| scp username@host:/path/to/file . scp file username@host:/path/to/dir/
|
rsync - 远程文件拷贝
rsync 与 scp
不同,它只是做增量更新且支持断点续传,也就是要复制的文件存在于目标文件夹且内容与当前要复制的相同,则不会复制。
1 2 3
| rsync -azvP dir1 dir2 rsync -azvP --delete dir1 dir2 rsync -azvP --exclude 'file' dir1 dir2
|
df, du, free -
查看磁盘/内存使用情况
1 2 3 4
| df -h du -sh du -sh * free -h
|
top, htop, ps, kill - 任务管理
1 2 3 4
| top -c htop ps aut kill -9 PID
|
nohup,disown - 远程任务管理
在终端如果看到以下输出说明运行成功:
1
| appending output to nohup.out
|
这时我们打开 root 目录 可以看到生成了 nohup.out 文件。
如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到
PID,然后使用 kill 命令来删除:
1
| ps -aux | grep "runoob.sh"
|
1
| nohup COMMAND > error.log &
|
| - 管道
管道,将前一个命令的输出作为后一个命令的输入
command1 | command2
>, >> - 输入输出重定向
Linux 中常用重定向操作符有:
标准输入 /dev/stdin
:代码为0
,
使用<
或<<
标准输出
/dev/stdout
:代码为1
,使用>(覆盖)
或>>(追加)
标准错误输出 /dev/stderr
:代码为
2,使用2>
或 2>>
&>
标准输出和错误输出同时重定向
/dev/null
代表垃圾箱,不想要保存的东西都可以重定向到这里
find, locate, which -
文件查找
1 2 3 4 5
| find -name file find dir/ -name file find dir/ -name '*file*' locate file which command
|
xargs - 命令组合工具
1 2 3 4 5 6
| cat file | xargs cat file | xargs -n3 find /home/data -name '*.gz' | xargs -n1 -I{} cp {} /archives/data/ find /ifs/result -name '*.gz' | xargs tar czvf all.gz find . -type f -name '*.log' -print0 | xargs -0 rm -f find . -type f -name '*.py' -print0 | xargs -0 wc -l
|
parallel - 并行工具
parallel 是增强版的 xargs。假如一个脚本文件中有 4 条命令:
假设有这样一个.sh
1 2 3 4 5
| echo a echo b echo c echo d
|
1 2
| cat run.sh | parallel -j 4
|
1 2
| find *.fq | parallel -j 12 "fastqc {} --outdir ." find *.bam | parallel --dry-run 'samtools index {}'
|
useradd - 添加用户
groupadd - 添加用户组
usermod - 修改用户
1 2 3 4 5 6
| usermod -c "Hello World !" <username> usermod -d /var/www <username> usermod -L <username> usermod -U <username> usermod -aG <usergroup> <username> usermod -G <usergroup><username>
|
passwd - 更改密码
grep
用于查找文件里符合条件的字符串。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
grep pattern files grep -v pattern files grep -f pattern.txt files grep -i pattern files grep -i pattern files grep -n pattern files grep -c pattern files grep -l pattern files grep -L pattern files grep -C number pattern files grep pattern1 | grep pattern2 files grep -E "pattern1|pattern2" files grep '^#' result.vcf grep '^hello$' files grep -v '^\s*$' file
|
sed
sed 是 stream editor 的缩写,中文称之为“流编辑器”。
command 部分,针对每行要进行的处理
file,要处理的文件
Actions
d:删除该行
p:打印该行
i:在行的前面插入新行
a:在行的后面插入新行
r:读取指定文件的内容。
w:写入指定文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| sed -n '10p' file sed -n '10,20p' file sed -n '/pattern/p' file sed -n '/pattern1/,/pattern2/p' file sed '10d' file sed '10,20d' file sed '/pattern/d' sed '/^\s*$/d' file sed 's/^\s*//' file sed 's/\s*$//' file sed 's/^\s*//;s/\s*$//' file sed 's/AA/BB/' file sed 's/AA/BB/g' file sed -i 's/AA/BB/g' file sed '/CC/s/AA/BB/g' file sed 's/pattern/&XXXX/' file sed 's/pattern.*/&XXXX' file sed 'y/ABC/XYZ/' file sed '1i\hello' file sed '1a\hello' file sed '1r file2' file1 sed '/pattern/w file2' file1
|