如何编写一个脚本来接受来自文件名参数或标准输入的输入?
例如,您可以使用less这种方式。一个可以执行less filename和等效cat filename | less。
有没有一种简单的“开箱即用”的方式来做到这一点?还是我需要重新发明轮子并在脚本中编写一些逻辑?
谁处理(解释)* in
echo *
Run Code Online (Sandbox Code Playgroud)
回声是否看到星号或外壳会关心它并返回文件名列表..
关于什么
cp temp temp*
Run Code Online (Sandbox Code Playgroud) 我有以下 bash 脚本:
# do some time consuming task here
read -p "Give me some input: " input
Run Code Online (Sandbox Code Playgroud)
现在您可能已经猜到了,如果用户在“耗时任务”期间按了一些随机键,那么不需要的输入也会被考虑在内。stdin在发出读取命令之前如何清除(或至少忽略它)?
视窗控制台:
如何在不使用中间文件的情况下通过 B 获得 A 的输出?
换句话说:Windows 相当于/dev/stdout什么?
如何在标准输入中表明一个人已经完成了进入测试?
例如,假设我希望使用 MD5 加密“蓝色”(我知道 MD5 不安全,但仅针对此示例)。我试过
user$ blue | md5
Run Code Online (Sandbox Code Playgroud)
我被引导理解是一个管道输入到标准输入的方式,但它不能正常工作。
但如果我只是输入
user$ md5
Run Code Online (Sandbox Code Playgroud)
我可以输入“蓝色”这个词。但是如何向 md5 表明我已完成输入文本?
我有两个音乐库,一个版本比另一个新。我想将它们与我需要将哪些文件从新音乐树复制到旧文件进行比较。
我已经diff --brief -r /oldmusicdir/ /newmusicdir/根据另一个用户的建议进行了尝试,但是 ^C 十五分钟后的过程(我猜差异是扫描音乐文件本身——这不是必需的)。
然后我尝试find /oldmusicdir/ -type d | sort > oldmusicdir了旧的和新的,然后运行diff oldmusicdir newmusicdir但是,因为我将音乐目录存储在不同的位置,所以每个条目都被标记了。
接下来我尝试运行,find /musicdir/ -type d | basename -s - | sort > musicdir但我的 musicdir 文件只是读取“-”
有谁知道如何让 basename 从 STDIN 接受?或者,有没有人有更好的方法来快速比较两个音乐目录?
谢谢!
假设我有两个名为ProgramA和 的程序ProgramB。我想在 Windows cmd 解释器中同时运行它们。但我希望StdOutofProgramA挂钩到StdInof ProgramB,而StdOutofProgramB挂钩到StdInof ProgramA。
像这样的东西
________________ ________________ | | | | | StdIn(== ? === ? ==(StdOut | | 程序A | | 程序B | | | | | | 标准输出)== ? === ? ==)标准输入 | |________________| |________________|
是否有任何命令可以执行此操作 - 某种方法可以从 cmd 实现此功能?
我需要使用bash的重定向工具来实现特定的效果。
我知道我可以将文件重定向到某个程序的标准输入:
[user@host]$ application < file.txt
Run Code Online (Sandbox Code Playgroud)
问题是,我想知道在将文件内容传递给该程序后,我能否重新获得对该程序输入的控制权。换句话说,我想运行一个类似于上面的命令,然后,我希望它等待来自标准输入(键盘)的进一步命令,而不是终止应用程序。
当我写这个问题时,我突然想到我可能会编写另一个应用程序(或脚本),首先将一些数据写入标准输出,然后充当回显,例如:
[user@host]$ stdin_proxy.sh | application
Run Code Online (Sandbox Code Playgroud)
它会起作用吗,有没有更好的方法来做到这一点?有一堆 Googleable 教程涵盖了这个问题,但它们都相当于一个建议——“在读取文件内容后重新打开标准输入”。然而,我无权访问application.
我想在一个名为f的非现有文件上启动 vim ,内容为c。无论˚F和Ç是任意的,我想没有把在VIM配置任何东西来填充新的缓冲区与Ç。
基本上,我想结合
$ 回声c | vim -
和
$ vim f
vim 是否有一个标志可以让我实现这一目标?
在 Bash 中,我可以做这样的事情
somecmd << END
a lot of
text here
END
Run Code Online (Sandbox Code Playgroud)
直接从脚本向命令提供输入。我需要在 CMD.exe 批处理文件(.cmd 脚本)中做同样的事情。是否可以?
stdin ×10
bash ×4
shell ×4
linux ×2
redirection ×2
shell-script ×2
stdout ×2
windows ×2
batch-file ×1
cmd.exe ×1
command-line ×1
diff ×1
pipe ×1
terminal ×1
unix ×1
vim ×1