门户网站怎么做优化,Wordpress的未来,装修公司网站建设费用,打车网站开发管道符号
#xff08;1#xff09;管道符号 | 将前一个命令的输出作为下一个命令的输入
例如#xff1a;
以下为 ./semester输出中提取包含 Last-Modified 的行并写入文件 last-modified.txt./semester | grep Last-Modified ~/last-modif…管道符号
1管道符号 | 将前一个命令的输出作为下一个命令的输入
例如
以下为 ./semester输出中提取包含 Last-Modified 的行并写入文件 last-modified.txt./semester | grep Last-Modified ~/last-modified.txtshell
1. Shell 脚本基础操作
1变量赋值和引用 注意不要在变量赋值时使用空格 正确 foobar错误 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是: $PPIDecho# 脚本参数 ($0, $1, $2, ..., $#)
# $0 表示脚本名
# $1, $2, ... 表示脚本参数
# $# 表示脚本参数个数
# $ 表示所有脚本参数列表
# $* 表示所有脚本参数作为一个字符串
echo 脚本名: $0
echo 第一个参数: $1
echo 第二个参数: $2
echo 参数个数: $#
echo 所有参数 (列表): $
echo 所有参数 (字符串): $*echo# 遍历所有参数
for arg in $; doecho 参数: $arg
done2字符串
单引号 不转义变量例如 $foo 输出 $foo。双引号 会转义变量例如 $foo 输出 bar假设 foobar。
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
sum0
i0
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 52带步长的数字序列
echo {1..10..2}
# 输出 1 3 5 7 93字母序列
echo {a..e}
# 输出 a b c d e复杂目录结构的创建
mkdir -p project/{src/{main,test},lib,bin,docs}目录结构project/
├── bin/
├── docs/
├── lib/
└── src/├── main/└── test/6Shell 脚本中的重定向 1标准输入、输出和错误流
标准输入文件描述符 0。标准输出文件描述符 1。标准错误文件描述符 2。
#!/bin/bash
echo 这是标准输出
echo 这是标准错误 22重定向操作符 (, , ) 将输出重定向到文件覆盖。 将输出追加到文件。 从文件中读取输入。
#!/bin/bash
echo 追加内容 output.txt
cat output.txt3文件描述符和重定向 (21)
21 将标准错误重定向到标准输出。
#!/bin/bash
echo 标准输出 combined.log# 重定向到标准错误流
echo 标准错误 2# 将标准输出重定向到 output.txt 文件。
# 21将标准错误重定向到标准输出因此标准错误也被写入 output.txt 文件。ls /nonexistent output.txt 21
7特殊文件
/dev/null 是一个特殊文件丢弃所有写入它的数据。将不需要的输出重定向到 /dev/null。
#!/bin/bash
echo 这条信息将被丢弃 /dev/nullls /nonexistent /dev/null 21Shell 工具
find命令
1find 命令简介
基本语法find [path] [expression]默认行为find .查找当前目录中的所有文件和目录
2按名称搜索
-name按名称查找文件。通配符*?[ ]。
查找当前目录下所有txt文件find . -name file.txt3按类型搜索 使用 -type 过滤文件类型。概念 -type f普通文件。-type d目录。
查找当前目录中的所有目录含子目录find . -type d4按大小搜索
阅读 使用 -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 rm2使用 find 和 xargs 查找并压缩文件。
find . -name *.html -print0 | xargs -0 zip html_files.zipvim
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-wh 和 C-wj 在窗口间切换。
5自定义 Vim
创建 .vimrc 文件并进行基本配置
vim ~/.vimrcset number 显示行号
syntax on 语法高亮
set tabstop4 设置 tab 宽度为 4
set expandtab 用空格替代 tab