标签: shell

Linux bash 中的跳过参数

我需要编写一个 shell 脚本来处理 3 个参数($1 $2 和 $3)。在 bash 中,我必须跳过参数 2(我实际上正在编写类似 ./script.sh para1 para3 的内容)。

脚本没问题。但我不能跳过第二个参数。我怎么跳过这个?

linux bash shell

3
推荐指数
1
解决办法
8326
查看次数

是否可以在 OS X 中通过 shell 脚本传输 TFTP 文件?

我正在将我的开发环境从 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 脚本经验。有没有人尝试过做类似的事情并提出任何解决方案?

unix shell tftp macos

3
推荐指数
1
解决办法
9638
查看次数

将别名回显到 .bashrc 文件中

我想将别名直接回显到我的.bashrc文件中。这是我正在使用的:

echo alias cdear='cd | clear' >> .bashrc
Run Code Online (Sandbox Code Playgroud)

但是, in.bashrc中的新行不包含引号。

我还希望在 .bashrc 的末尾加上最后一行的换行符。

如何更改我的命令以便:

  1. 确保保留引号?
  2. 确保使用换行符将别名添加到文件末尾?

linux shell alias bashrc

3
推荐指数
1
解决办法
1598
查看次数

rm -r 命令的警告

我想rm在递归删除目录时提示我,如下所示:

$ rm -r <dir>
Do you want to remove the dir(Y/N)?
Run Code Online (Sandbox Code Playgroud)

有没有我可以传递的论点可以rm做到这一点?

bash shell

3
推荐指数
1
解决办法
386
查看次数

@ 在 OS X 中自动完成的文件名末尾是什么意思?

我有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)

有任何想法吗?

vim shell macos

3
推荐指数
1
解决办法
803
查看次数

这些 exec su 参数有什么作用?

这个命令的开关和参数是什么意思?

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部分。这是我正在运行的应用程序。

linux shell shell-script upstart init

3
推荐指数
1
解决办法
2813
查看次数

Linux shell:如何向 stderr 消息添加前缀字符串?

我在后台同时运行多个任务。

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)

shell stderr

3
推荐指数
1
解决办法
2942
查看次数

如何退出从 Mac OS X 终端打开的应用程序?

我知道我们可以从命令行启动应用程序,例如:

 open -a "/Applications/Google Chrome.app"/
Run Code Online (Sandbox Code Playgroud)

如何从命令行退出该应用程序?

shell macos

3
推荐指数
1
解决办法
4467
查看次数

如何制作一个用今天的日期命名文件的 bash 脚本

我正在尝试制作一个脚本来备份我的服务器,但我对 bash 脚本的了解非常有限。我希望脚本将备份文件命名为 ht-“今天的日期”。我该怎么做?是否可以将命令(例如 date 命令)用作变量?

script bash shell bash-scripting

3
推荐指数
1
解决办法
1035
查看次数

“DOS”有外壳吗?

我一直在阅读有关 shell、终端、bash 的帖子,但我对这些术语越来越感到困惑。

难道DOS有一个壳,就像Linux中的bash的?

这是 DOS shell,一个显示命令行的 shell?

FreeDOS 截图

同样在这种情况下,如果我理解正确,终端是键盘和显示器?

linux terminal bash shell command-line

3
推荐指数
1
解决办法
938
查看次数