10 个常用终端命令

每个开发者都应该知道的终端命令
bioinformatics
tools
programming
linux
terminal
Author
Published

Monday, January 6, 2025

终端是开发者与操作系统之间的重要桥梁,通过它,我们可以快速进行各种操作。无论是查找文件、修改权限,还是处理文本文件,熟练掌握一些基础的终端命令可以显著提高工作效率。

这里,我们来介绍 10 个每个开发者都应该知道的终端命令,它们能帮助我们在日常开发工作中更加高效地使用终端。

1. grep - 查找内容

grep 是一个强大的搜索命令,用于在文件中查找指定的文本内容。它常用于查找特定的关键词,支持正则表达式,功能非常强大。

常见用法:

grep "let's find something" file.[txt,json,js,md,etc]

在 file.txt 文件中查找匹配 pattern 的行。

# case-insensitive search
grep -i "pattern" file.txt
# count occurrences
grep -c "pattern" file.txt
# search for multiple patterns
grep -e "pattern1" -e "pattern2" file.txt
# recursive search in directories
grep -o -r "pattern" /path/to/directory | wc -l

2. man - 查看命令帮助

man 是 manual 的缩写,用于查看命令的帮助文档。当我们对某个命令不熟悉时,可以通过 man 命令查看其用法、选项和参数等详细信息。

man grep

查看 grep 命令的帮助文档。

3. cat - 查看文件内容

cat 是一个用于查看文件内容的命令,它可以一次性显示整个文件的内容。如果文件较大,可以结合其他命令来分页显示内容。

cat file.txt

显示 file.txt 文件的所有内容。

# combine multiple files
cat file1.txt file2.txt > combined.txt
# create a new file
cat > newfile.txt

4. head - 查看文件开头

head 命令用于显示文件的前几行内容。默认情况下,它会显示文件的前10行,但可以通过参数指定显示行数。

head -n 20 file.txt

显示文件 file.txt 的前20行。

5. awk - 文本处理工具

我们在这篇文章探索 AWK已经有过介绍。

6. sed - 流编辑器

sed 是一个流编辑器,用于处理和修改文件内容。它通过匹配模式和替换操作,可以高效地修改文本文件。

# replace a word or pattern in a file
sed -i '' 's/old/new/g' file.md

-i 选项表示就地编辑(in-place editing),即直接修改文件内容。如果不使用 -i,sed 会将结果输出到标准输出,而不会修改原文件。-i 选项后面通常需要一个备份文件的扩展名。如果提供一个空字符串 ’’,表示不创建备份文件。如果不提供这个参数,sed 会默认创建一个备份文件。s 表示替换操作,g 表示全局替换(global),即替换每一行中所有匹配的 old,而不仅仅是第一个匹配项。

# print specific lines
sed -n '10,20p' file.json

-n 选项表示静默模式(silent mode),只有通过 p 命令显式打印的行才会输出。10,20p 表示打印第 10 到第 20 行。

# regular expression
sed 's/[0-9]*/X/g' file.csv

将文件中的数字替换为 X。

# rename files in bulk
for file in *.txt; do 
  mv "$file" "$(echo "$file" | sed 's/.txt$/.md/')"
done

echo “$file” 是为了将文件名传递给 sed 命令,然后将 .txt 后缀替换为 .md。

7. tail - 查看文件末尾

tail 命令用于查看文件的最后几行内容,特别适合查看日志文件的最新信息。与 head 命令相反,tail 显示的是文件的结尾部分。

tail -f logfile.log

实时查看日志,-f 选项表示跟踪(follow),即实时显示文件的更新内容。

8. chmod - 修改文件权限

每个文件和目录都有权限属性,用于控制用户对文件的访问权限。权限属性包括读、写、执行权限,分别对应 r、w、x。用户组包括所有者、所属组和其他用户,分别对应 owner、group、others。chmod 命令用于修改文件或目录的访问权限,可以通过符号模式或数字模式来设置权限。

符号模式包括 u(所有者)、g(所属组)、o(其他用户)、a(所有用户),加号 + 表示添加权限,减号 - 表示删除权限,等号 = 表示设置权限。

chmod +x script.sh

给 script.sh 脚本添加执行权限。

数字模式包括 0-7,分别对应 rwx 权限。r=4,w=2,x=1。例如,755 表示所有者可读写执行,所属组和其他用户可读执行;777 表示所有用户可读写执行。

chmod 755 file.txt

递归修改目录权限:

chmod -R 755 /path/to/directory

9. xargs - 将输出作为参数传递

xargs 命令常与其他命令结合使用,它可以将标准输入转换为命令行参数,并将其传递给后续的命令。

echo "file1 file2 file3" | xargs rm

将 file1 file2 file3 传递给 rm 命令,删除这三个文件。

结合 find 使用:

find . -name "*.txt" | xargs rm

压缩文件:

ls *.log | xargs tar -czvf logs.tar.gz

10. find - 查找文件

find 是一个非常强大的文件查找命令,它可以根据不同的条件查找文件。可以按文件名、大小、修改时间等进行搜索。

常见用法:

find /path/to/search -name "astro"

在指定路径下查找所有 astro 文件。

# clean up log files
find /var/log -type f -name "*.log" -mtime +7 -delete

-type f 表示只查找文件,-mtime +7 表示修改时间在 7 天前的文件,-delete 表示删除这些文件。

# backup files
find /path/to/files -name "*.txt" -exec cp {} /path/to/backup \;

-exec 选项用于执行其他命令,{} 表示查找到的文件,; 表示命令结束。

takeaway

掌握这些常用的终端命令能帮助我们在开发和运维工作中事半功倍。每个命令都有其特定的功能,熟练运用它们,我们将能够更高效地处理文件、查找信息、修改权限,甚至进行复杂的文本处理。