我需要编写一个 shell 脚本来处理 3 个参数($1 $2 和 $3)。在 bash 中,我必须跳过参数 2(我实际上正在编写类似 ./script.sh para1 para3 的内容)。
脚本没问题。但我不能跳过第二个参数。我怎么跳过这个?
我正在将我的开发环境从 Windows 迁移到 OS X,并且遇到了 TFTP 问题。我使用 TFTP 将文件上传到嵌入式网络设备,这是在设备上获取文件的唯一选项(不提供 SCP 支持)。
每次我为这个设备构建固件时,都有一系列三个文件需要上传到它。在 Windows 上,我有一些简单的脚本可以一次性上传我需要的所有文件,这使得部署一切变得更加简单。这些脚本很简单,因为 Windows TFTP 客户端是在这样的单行命令中运行的:
tftp -i <Server IP Address> PUT <Local Filename> <Server Filename>
Run Code Online (Sandbox Code Playgroud)
在 OS X 上似乎没有任何方法可以使用这样的命令上传文件。 相反,您必须打开 tftp 程序并执行一系列如下所示的命令:
$ tftp
tftp> connect <Server IP Address>
tftp> mode binary
tftp> put <Local Filename> <Server Filename>
tftp> quit
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有找到如何编写脚本来执行此操作的运气,尽管我没有大量的 Unix shell 脚本经验。有没有人尝试过做类似的事情并提出任何解决方案?
我想将别名直接回显到我的.bashrc文件中。这是我正在使用的:
echo alias cdear='cd | clear' >> .bashrc
Run Code Online (Sandbox Code Playgroud)
但是, in.bashrc中的新行不包含引号。
我还希望在 .bashrc 的末尾加上最后一行的换行符。
如何更改我的命令以便:
我想rm在递归删除目录时提示我,如下所示:
$ rm -r <dir>
Do you want to remove the dir(Y/N)?
Run Code Online (Sandbox Code Playgroud)
有没有我可以传递的论点可以rm做到这一点?
我有YADR安装在我的笔记本电脑,我决定通过运行摆脱它rm -rf ~/.yadr作为指导其作者。然而,在我做了那个奇怪的事情之后:如果我尝试编辑我的 vimrc 并输入
$ vi .vim
Run Code Online (Sandbox Code Playgroud)
自动完成将显示以下文件:
.vim@ .viminfo .vimrc@
Run Code Online (Sandbox Code Playgroud)
那么@.vimrc 的末尾是什么?如果我只是输入vi .vimrc它声称它是一个新文件。然后,如果我尝试保存该编辑过的文件,则会出现此错误:
.vimrc" E166: Can't open linked file for writing
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
这个命令的开关和参数是什么意思?
exec su -s /bin/sh -c 'exec "$0" "$@"' root -- /opt/nsq/bin/nsqd
Run Code Online (Sandbox Code Playgroud)
具体的--部分和exec "$0" "$@"应该做什么。
我知道$0为脚本设置一个循环以保持运行。
您可以忽略该/opt/nsq/bin/nsqd部分。这是我正在运行的应用程序。
我在后台同时运行多个任务。
command_a | tee > command_a.log &
command_b | tee > command_b.log &
Run Code Online (Sandbox Code Playgroud)
如果一切正常,则消息将保存到日志文件中。
如果出现问题,它会在屏幕上打印错误。
但是command_a 和command_b 非常相似,很难分辨哪个错误信息是由哪个命令产生的。
我可以在错误消息中添加前缀字符串,例如:
command_a: error 123
command_b: error 456
command_a: error 256
command_a: error 555
command_b: error 333
Run Code Online (Sandbox Code Playgroud) 我知道我们可以从命令行启动应用程序,例如:
open -a "/Applications/Google Chrome.app"/
Run Code Online (Sandbox Code Playgroud)
如何从命令行退出该应用程序?
我正在尝试制作一个脚本来备份我的服务器,但我对 bash 脚本的了解非常有限。我希望脚本将备份文件命名为 ht-“今天的日期”。我该怎么做?是否可以将命令(例如 date 命令)用作变量?
我一直在阅读有关 shell、终端、bash 的帖子,但我对这些术语越来越感到困惑。
难道DOS有一个壳,就像Linux中的bash的?
这是 DOS shell,一个显示命令行的 shell?
同样在这种情况下,如果我理解正确,终端是键盘和显示器?