创建新文档

您的文档标题(将显示为 H1)
URL 友好名称(无空格,使用连字符)
创建文档的路径(可选,使用正斜杠创建子目录)

移动/重命名文档

文档的当前位置
文档的新路径(包括别名)
这只会更改文档的路径,不会修改文档的标题(H1 标题)。

删除文档

您确定要删除此文档吗?此操作无法撤销。

警告:如果这是一个文件夹,包括子文件夹和文档在内的所有内容将被删除。

Message

Message content goes here.

Confirm Action

Are you sure?

附件

允许的文件类型:jpg, jpeg, png, gif, svg, webp, txt, log, csv, sfd, zip, pdf, docx, xlsx, pptx, mp4(最大:10MB)

文档文件

正在加载附件...

文档历史

以前的版本

Loading versions...

预览

选择要预览的版本

Wiki 设置

用户界面语言
每个文档保留的版本数量。设置为0以禁用版本控制。
上传文件的最大允许大小(MB)。

用户管理

添加新用户

留空以保持当前密码
拥有这些组的用户可以访问受限部分。

为您的Wiki部分定义基于路径的访问规则。规则按顺序评估。首次匹配生效。

活动规则

从ZIP归档文件导入Markdown文件。文件将被处理并存储在适当的文档结构中。ZIP中的目录结构(类别/子类别)将在wiki中保留。

上传包含要导入的Markdown(.md)文件的ZIP归档(压缩包)。

创建和管理您的 Wiki 数据备份。备份包括所有文档、图像和配置文件。

可用备份

正在加载备份...

添加/编辑访问规则

已选择: /

添加列

bash 输入输出和重定向

#BASH #Shell 输入与输出重定向常见用法

一、将命令输出保存到文件

# 覆盖和追加
command > overwrited.txt
command >> appended.txt
# 重定向标准输出和错误
command &> logs.txt
command > logs.txt 2>&1

二、将命令的输出结果传递给另外一个命令:管道

ps -ef | grep docker

三、将命令的输出作为一个临时文件,提供给另一个命令

#!/bin/bash

WorkDir=$(cd $(dirname $0); pwd)
EXPORT_TO=$WorkDir/markdown

[ -d $EXPORT_TO ] || mkdir $EXPORT_TO

readarray -t memos_id < <(sqlite3 $WorkDir/storage/memos_dev.db 'select id from memo;')
# 等价于
# sqlite3 $WorkDir/storage/memos_dev.db 'select id from memo > /tmp/memo_id.txt
# readarray -t /tmp/memo_id.txt
# rm /tmp/memo_id.txt

for mem in "${memos_id[@]}"; do
  echo "EXPORT memo id ${mem}"
  sqlite3 $WorkDir/storage/memos_dev.db "select content from memo where id=$mem;" > "$EXPORT_TO/$mem.md"
done;

这段脚本有两个关键点:

四、HereDoc 提供一整段预先编制好的内容作为前面命令的标准输入

readarray -t fruits << End
apple
banana
orange
End

当检测到结束符时,系统将之前的内容作为标准输入提供给 readarray

总结

将连接符左右两边的命令分为左值和右值,重定向符号的选择如下

左值 右值 定向符号 备注
命令 文件 >,>>,&> 命令输出重定向到文件
命令 命令 | 将命令输出提供给右侧命令
命令 命令 < <(command) 将右侧命令输出作为文件,注意空格
命令 文本 << EndTag 将右侧大段文本,以EndTag结束,作为文件,提供给前面命令
命令 文件 < 将右侧文件内容定向给左侧命令标准输入

实际上 <(command) 是可以单用的,它可以用在需要以文件名作为命令行参数的场合。比如,在较老版本的openssl签署SAN证书时,会使用到以下命令

openssl req -nodes -x509 -sha256 -newkey rsa:4096 \
  -keyout example.org.key \
  -out example.org.crt \
  -days 356 \
  -subj "/C=NL/ST=Zuid Holland/L=Rotterdam/O=ACME Corp/OU=IT Dept/CN=example.org" \
  -extensions san \
  -config <( \
  echo '[req]'; \
  echo 'distinguished_name=req'; \
  echo '[san]'; \
  echo 'subjectAltName=DNS:localhost,DNS:example.org')

其中的 -config 参数,原本就需要提供一个文件名。

附件

正在加载附件...

评论

暂无评论。成为第一个评论者!

搜索结果