使用 Windows,即使没有收到回复,您也可以 ping 给定的域名并将 IP 作为变量捕获。我相信命令看起来像这样:
ping domain.com
for /f "tokens=1,2 delims=[]" %%A in ('ping /n 1 /w 1 domain.com ^| find "Pinging"') do set ipaddress=%%B"`
Run Code Online (Sandbox Code Playgroud)
这基本上就是我想要做的,但是在 bash 脚本而不是批处理文件中。我偶然发现了很多非常接近的问题,但并不是我想要的。我似乎无法找出解决此问题的最佳方法。
有任何想法吗?
我正在处理一大群无组织的媒体文件,这些文件是使用几种不同的相机和摄像机捕获的,我想在 bash 脚本中使用 exiftool 来重命名每个文件及其创建日期和时间、制造商和型号。
使用此命令,图像将根据需要重命名:
exiftool -m -P '-filename<${DateTimeOriginal}_${Make}_${Model}.%e' myfile.jpg
Run Code Online (Sandbox Code Playgroud)
我已经知道我可以使用 -d FMT 选项格式化日期和时间,但为了清楚起见我省略了它。
这是我在使用 DSLR“*.mov”视频时面临的问题:
有谁知道如何“强制”exiftool 使用原始的 .mov 扩展名?
有没有办法告诉 exiftool 检查 exif 标签是否存在?如果第一个标签不存在,则使用另一个标签?
我试过类似的东西
if [ -n `exiftool -m -p '$DateTime' filename]
then
...
Run Code Online (Sandbox Code Playgroud)
但是 exiftool 给我一个错误,所以空字符串检查总是失败。任何提示?
当我分离命令时:
$ command &
Run Code Online (Sandbox Code Playgroud)
结果是 STDOUT 的打印输出:
[1] < PID >
Run Code Online (Sandbox Code Playgroud)
我想监控这个PID。但是,除了 STDOUT,我不能在任何地方写这个输出!如何将其重定向到文件或变量?
我试过了:
$ command 1> ./temp.txt &
Run Code Online (Sandbox Code Playgroud)
但这仍然找到了标准输出的方法!
在此先感谢您的帮助!
1) 在 Mountain Lion 中,您可以通过 Preferences 更改终端的设置,以便在与打开选项卡相同的目录中打开一个新选项卡。(即,如果我在 ~/workspace 并打开一个新选项卡,则新选项卡将位于 ~/workspace)。
2) 同样在 Mountain Lion 中,可以通过 ~/.profile 中的以下指令让选项卡的标题自动反映当前目录的基本名称:
# automatically change the title of the terminal window to the directory basename
PROMPT_COMMAND='echo -n -e "\033]0;${PWD##*/}\007"'
Run Code Online (Sandbox Code Playgroud)
但是,这似乎也消除了终端在与打开选项卡相同的目录中打开新选项卡的能力。也就是说,有 2) 似乎使 1) 无效。有没有办法解决这个问题,让这两件事可以同时发生?

我对 MAC 还是很陌生,我一直在寻找一种编写脚本或使用 GUI 来完成以下操作的方法。
在选项卡式视图中向一组主机打开 Iterm 并通过 ssh 连接到每个主机。
在 gui 我可以做
新窗口 -->> 配置文件 -->> 打开我创建的配置文件
这给了我一个窗口,可以对单个主机执行 ssh 命令。
非常感谢任何帮助或指导。
在发布之前,我已经通读了类似的问题,因为它们似乎都没有解决我的问题。
我的一个数据处理脚本中有一个简单的循环,看起来像这样......
for f in *.dat; do
process ${f}
done
Run Code Online (Sandbox Code Playgroud)
我想建立一个状态指示器,所以我希望能够计算 中的元素数量*.dat,但我找不到任何线索,而且 Google 对这种搜索并不完全友好。
我正在使用 Mac 10.7.5 和 bash shell。我正在尝试在一组文件中查找字符串的实例,但不断收到此错误
Daves-MacBook-Pro:folder davea$ find . -name "*" | xargs grep 'state-icons'
xargs: grep: Argument list too long
Run Code Online (Sandbox Code Playgroud)
如何运行命令(或类似命令)以避免此错误?
我希望数据按照 Python 排序的方式排序,比较 ASCII 值。但是sort命令似乎太聪明了。看一看。由于'.' < '9':
$ sort
.
9
^D
.
9
Run Code Online (Sandbox Code Playgroud)
和 :
$ sort
1.
19
^D
1.
19
Run Code Online (Sandbox Code Playgroud)
这两个还好。但出于某种原因,如果我只是在末尾添加字符:
$ sort
1.c
19z
^D
19z
1.c
Run Code Online (Sandbox Code Playgroud)
可能它试图将其解读为数字或其他东西。我不想那样,我希望它对比较每个字符的 ASCII 值的东西进行排序。在 中找不到这样的选项man,有什么想法吗?
为什么这不起作用?
$ ssh vm "bullshitcommand; echo $?"
bash: bullshitcommand: command not found
0
Run Code Online (Sandbox Code Playgroud)
我期望非零返回码。
我正在使用 screen ( http://www.gnu.org/software/screen/manual/screen.html ) 来访问我的 Minecraft 控制台。我在 中创建了一个服务器/etc/init.d,并在后台运行 minecraft。
然后,要访问 minecraft 控制台,我只需screen -r在 bash 中键入 # 。
我现在可以在屏幕外壳中执行命令。问题是,如果我执行一些导出一堆文本的命令,它会超过屏幕的大小并将乞求输出推离页面。我似乎无法向上滚动并看到它。
如何向后滚动并查看所有输出?如何暂停输出(可能类似于more或less)?