终端是开发者与操作系统之间的重要桥梁,通过它,我们可以快速进行各种操作。无论是查找文件、修改权限,还是处理文本文件,熟练掌握一些基础的终端命令可以显著提高工作效率。
这里,我们来介绍 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
掌握这些常用的终端命令能帮助我们在开发和运维工作中事半功倍。每个命令都有其特定的功能,熟练运用它们,我们将能够更高效地处理文件、查找信息、修改权限,甚至进行复杂的文本处理。