维修保养网站开发上google必须翻墙吗
管道符号
(1)管道符号 | 将前一个命令的输出作为下一个命令的输入
例如:
以下为 ./semester输出中提取包含 "Last-Modified" 的行并写入文件 last-modified.txt./semester | grep "Last-Modified" > ~/last-modified.txt
 
shell
1. Shell 脚本基础操作
(1)变量赋值和引用
-  
注意:不要在变量赋值时使用空格 正确: foo=bar错误: foo = bar。 -  
引用变量时,需要在变量名前加上美元符号 $。这会告诉 Bash 解释器去获取变量的值。$foo 
特殊变量:
#!/bin/bash# 特殊变量示例和说明# 退出状态码 ($?)
# $? 表示上一个命令的退出状态码
echo "Running 'ls /' command"
ls /
echo "退出状态码是: $?"echo "Running 'ls /nonexistent' command"
ls /nonexistent
echo "退出状态码是: $?"echo# 进程ID ($$) 和 父进程ID ($PPID)
# $$ 表示当前脚本的进程ID
# $PPID 表示当前脚本的父进程ID
echo "当前脚本的进程ID是: $$"
echo "当前脚本的父进程ID是: $PPID"echo# 脚本参数 ($0, $1, $2, ..., $#)
# $0 表示脚本名
# $1, $2, ... 表示脚本参数
# $# 表示脚本参数个数
# $@ 表示所有脚本参数(列表)
# $* 表示所有脚本参数(作为一个字符串)
echo "脚本名: $0"
echo "第一个参数: $1"
echo "第二个参数: $2"
echo "参数个数: $#"
echo "所有参数 (列表): $@"
echo "所有参数 (字符串): $*"echo# 遍历所有参数
for arg in "$@"; doecho "参数: $arg"
done
 
 
(2)字符串
单引号 ':不转义变量,例如 '$foo' 输出 $foo。双引号 ":会转义变量,例如 "$foo" 输出 bar(假设 foo=bar)。 
(3)控制流
 (1)数值比较符
-eq 等于 equal-ne 不等于 not equal-gt 大于 greater than-ge 大于或等于 greater than or equal-lt 小于 less than-le 小于或等于 less than or equal 
(2)字符串比较操作符
[ -z "$a" ]  # 如果字符串 a 的长度为 0
[ -n "$a" ]  # 如果字符串 a 的长度非 0
 
(3)文件比较操作符
[ -e "$file" ]  # 如果文件存在[ -f "$file" ]  # 如果是一个普通文件[ -d "$file" ]  # 如果是一个目录[ -s "$file" ]  # 如果文件非空[ -r "$file" ]  # 如果文件可读[ -w "$file" ]  # 如果文件可写[ -x "$file" ]  # 如果文件可执行 
(4)条件判断 (if, else if, else)
if语法:if [ condition ]; then ... fielse if语法:elif [ condition ]; then ... fielse语法:else ... fi
#!/bin/bash
read -p "输入文件路径: " filepath
if [ -e $filepath ]; thenif [ -f $filepath ]; thenecho "这是一个普通文件"elif [ -d $filepath ]; thenecho "这是一个目录"elseecho "这是其他类型的文件"fi
elseecho "文件不存在"
fi
 
(5)循环 (for, while, until)
for语法:for var in list; do ... donewhile语法:while [ condition ]; do ... doneuntil语法:until [ condition ]; do ... done
#!/bin/bash
for i in {1..10}; doecho $i
done#!/bin/bash
sum=0
i=0
while [ $i -lt 100 ];doi=$((i + 1))sum=$((sum + i))
done 
echo "结果为$sum" 
(4)命令替换
$(CMD):执行命令 CMD 并用其输出替换。echo "Starting program at $(date)"
 
(5)通配(Globbing)
(1)通配符
- 星号
 *:匹配任意数量的字符(包括零个字符)。- 问号
 ?:匹配任意一个字符。
示例:*.txt:匹配当前目录下所有扩展名为 .txt 的文件。file?.txt:
匹配 file1.txt、file2.txt,但不匹配 file10.txt(因为 ? 只匹配一个字符)。 
(2)花括号
{}用于展开命令花括号扩展是一种用于生成一系列字符串的方法.
这会将当前目录下所有扩展名为 .py 和 .sh 的文件移动到 folder 目录。mv *{.py,.sh} folder    分解为    mv *.py *.sh folder
 
花括号扩展的高级用法:
(1)数字序列:
echo {1..5}
# 输出 1 2 3 4 5
 
(2)带步长的数字序列:
echo {1..10..2}
# 输出 1 3 5 7 9
 
(3)字母序列:
echo {a..e}
# 输出 a b c d e
 
复杂目录结构的创建:
mkdir -p project/{src/{main,test},lib,bin,docs}目录结构:project/
├── bin/
├── docs/
├── lib/
└── src/├── main/└── test/
 
(6)Shell 脚本中的重定向
(1)标准输入、输出和错误流
- 标准输入(文件描述符 0)。
 - 标准输出(文件描述符 1)。
 - 标准错误(文件描述符 2)。
 
#!/bin/bash
echo "这是标准输出"
echo "这是标准错误" >&2
 
        (2)重定向操作符 (>, >>, <)
 
>将输出重定向到文件(覆盖)。>>将输出追加到文件。<从文件中读取输入。
#!/bin/bash
echo "追加内容" >> output.txt
cat output.txt
 
        (3)文件描述符和重定向 (2>&1) 
 
2>&1将标准错误重定向到标准输出。
#!/bin/bash
echo "标准输出" > combined.log# 重定向到标准错误流  
echo "标准错误" >&2# >:将标准输出重定向到 output.txt 文件。
# 2>&1:将标准错误重定向到标准输出,因此标准错误也被写入 output.txt 文件。ls /nonexistent > output.txt 2>&1 
(7)特殊文件
/dev/null是一个特殊文件,丢弃所有写入它的数据。- 将不需要的输出重定向到 
/dev/null。 
#!/bin/bash
echo "这条信息将被丢弃" > /dev/nullls /nonexistent > /dev/null 2>&1
 
Shell 工具
find命令
(1)find 命令简介
 
- 基本语法:
find [path] [expression] - 默认行为:
find .(查找当前目录中的所有文件和目录) 
(2)按名称搜索
-name:按名称查找文件。- 通配符:
*,?,[ ]。 
查找当前目录下所有txt文件find . -name "file.txt"
 
(3)按类型搜索
- 使用 
-type过滤文件类型。 - 概念: 
-type f:普通文件。-type d:目录。
 
查找当前目录中的所有目录(含子目录find . -type d
 
(4)按大小搜索
- 阅读: 使用 
-size过滤文件大小。 - 概念: 
-size +n:大于n块。-size -n:小于n块。-size n:正好n块。
 
查找所有大于 1MB 的文件。find . -size +1M 
(5)组合条件
- 阅读: 使用 
-and,-or和-not组合多个条件。 - 概念: 
-and,-a:逻辑与。-or,-o:逻辑或。-not,!:逻辑非。
 
查找所有大于 1MB 的 .vsix 文件。find . -size +1M -and -name "*.vsix" 
(5)执行命令
- 阅读: 使用 
-exec在找到的文件上执行命令。 - 概念: 
-exec:在每个文件上执行一个命令。{}:当前文件的占位符。\;:命令的结束符。
 
查找所有 .txt 文件并删除它们。find . -name "*.txt" -exec rm {} \;
 
xargs命令
用于将标准输入的数据转化为命令的参数
(1)使用 find 和 xargs 查找并删除文件。
 
使用 -0 选项,以 null 字符作为输入分隔符
使用 -print0 选项以 null 字符(\0)分隔每个文件名。 
find . -name "*.log" -print0 | xargs -0 rm
 
(2)使用 find 和 xargs 查找并压缩文件。
 
find . -name "*.html" -print0 | xargs -0 zip html_files.zip
 
vim
(1)基本操作
- 尝试退出 Vim,不保存更改: 
- 输入 
:q - 输入 
:q!强制退出 
 - 输入 
 - 保存并退出: 
- 输入 
:wq 
 - 输入 
 
(2)基本编辑命令
 
- 删除文本: 
- 将光标移到 
Delete me,按dd删除整行。 
 - 将光标移到 
 - 复制和粘贴: 
- 将光标移到 
Copy me,按yy复制整行,按p在当前行后粘贴。 
 - 将光标移到 
 - 撤销和重做: 
- 按 
u撤销刚才的粘贴操作,按<C-r>重做粘贴操作。 
 - 按 
 
(3)查找和替换
- 查找文本: 
- 输入 
/Vim查找Vim,按n跳到下一个匹配项。 
 - 输入 
 - 替换文本: 
- 输入 
:%s/Vim/NeoVim/g替换所有Vim为NeoVim。 
 - 输入 
 
(4)多窗口编辑
- 打开并分割窗口: 
- 在 Vim 中输入 
:split practice6-2.txt打开第二个文件并进行水平分割。 - 使用 
<C-w>h和<C-w>j在窗口间切换。 
 - 在 Vim 中输入 
 
(5)自定义 Vim
创建 .vimrc 文件并进行基本配置:
vim ~/.vimrcset number            " 显示行号
syntax on             " 语法高亮
set tabstop=4         " 设置 tab 宽度为 4
set expandtab         " 用空格替代 tab 
