GVKun编程网logo

shell – sbt:无法从cygwin上的mintty交互式运行(shell无法执行)

29

此处将为大家介绍关于shell–sbt:无法从cygwin上的mintty交互式运行的详细内容,并且为您解答有关shell无法执行的相关问题,此外,我们还将为您介绍关于BashShell;读命令;在W

此处将为大家介绍关于shell – sbt:无法从cygwin上的mintty交互式运行的详细内容,并且为您解答有关shell无法执行的相关问题,此外,我们还将为您介绍关于Bash Shell;读命令;在Windows 7上使用Cygwin、bash – Powershell比cygwin / unix-shell更具优势、bash – 为什么Cygwin很慢地执行shell命令?、bash – 加快Cygwin上的文件比较(使用`cmp`)?的有用信息。

本文目录一览:

shell – sbt:无法从cygwin上的mintty交互式运行(shell无法执行)

shell – sbt:无法从cygwin上的mintty交互式运行(shell无法执行)

当我从DOS shell或cygwin bash终端以交互方式运行sbt时,它运行正常.但是,当我尝试从我首选的mintty终端运行时,sbt不响应我的命令,直到我发送文件结束(control-)和sbt退出.

当我使用bash终端时,TERM设置为cygwin,当我使用mintty时,它是xterm.

有谁知道如何解决这一问题?

解决方法

它最终通过与 this answer相反,我将-Djline.terminal = jline.UnixTerminal java选项添加到我的sbt启动脚本来修复问题.

Bash Shell;读命令;在Windows 7上使用Cygwin

Bash Shell;读命令;在Windows 7上使用Cygwin

好的,所以我遇到了这个问题.我在 Windows上编写了一个在cygwin中运行的脚本.我已经尝试了一堆基本的示例脚本,以防它是我的脚本问题.

所以我尝试了这个:

#!/bin/bash
echo -e "Enter your name and press [ENTER]: \c" 
read var_name
echo "Your name is: $var_name"

然后我将运行它并输入var_name的名称.

我明白了:

$./project1.sh
Enter your name and press [ENTER]: Jake
': not a valid identifierad: `var_name
Your name is:

据我所知,我遇到了阅读问题.我正在尝试为我的课程开展一个项目,但我似乎无法弄清楚为什么它不会读它.我毫不夸张地跟着这本书,然后在网上使用这些似乎对我不起作用的例子.有没有人知道这是我的设置还是我错过了什么,谢谢.

你应该对该脚本执行od -xcb.我的猜测是,它几乎肯定会有错误的行结束字符.

我建议这是因为该行:

': not a valid identifierad: `var_name

看起来像两条线一样可疑:

.........................ad: `var_name
': not a valid identifier

合并在一起(.字符表示已被覆盖的内容).

如果你在该行中的变量是var_namecarriage-return而不是更正常的var_name,那就是这种情况.

事实上它是Cygwin也指出了这个结论,因为当你使用Windows编辑器编辑你的脚本时经常遇到麻烦,这个编辑器使用CR / LF,其中Cygwin只需要LF.

我怀疑你会发现在你的实际脚本上做一个od -xcb表明你在一个或多个脚本行上有那些Windows行结尾.

事实上,我刚刚在Ubuntu下通过在读取行的末尾放置一个CTRL-M并输出(稍微修改以显示CTRL-M)来测试它:

pax@pax-desktop:~$od -xcb qq.sh ; ./qq.sh

0000000    2123    622f    6e69    622f    7361    0a68    6365    6f68
          #   !   /   b   i   n   /   b   a   s   h  \n   e   c   h   o
        043 041 057 142 151 156 057 142 141 163 150 012 145 143 150 157
0000020    2d20    2065    4522    746e    7265    7920    756f    2072
              -   e       "   E   n   t   e   r       y   o   u   r    
        040 055 145 040 042 105 156 164 145 162 040 171 157 165 162 040
0000040    616e    656d    6120    646e    7020    6572    7373    5b20
          n   a   m   e       a   n   d       p   r   e   s   s       [
        156 141 155 145 040 141 156 144 040 160 162 145 163 163 040 133
0000060    4e45    4554    5d52    203a    635c    2022    720a    6165
          E   N   T   E   R   ]   :       \   c   "      \n   r   e   a
        105 116 124 105 122 135 072 040 134 143 042 040 012 162 145 141
0000100    2064    6176    5f72    616e    656d    0a0d    6365    6f68
          d       v   a   r   _   n   a   m   e  \r  \n   e   c   h   o
                                                 ^^

        144 040 166 141 162 137 156 141 155 145 015 012 145 143 150 157
0000120    2220    6f59    7275    6e20    6d61    2065    7369    203a
              "   Y   o   u   r       n   a   m   e       i   s   :    
        040 042 131 157 165 162 040 156 141 155 145 040 151 163 072 040
0000140    7624    7261    6e5f    6d61    2265    0a0a
          $  v   a   r   _   n   a   m   e   "  \n  \n
        044 166 141 162 137 156 141 155 145 042 012 012
0000154

Enter your name and press [ENTER]: pax
': not a valid identifierar_name
Your name is:

换句话说,与您所看到的非常相似.

顺便说一句(现在我可以访问我的Cygwin环境),你看到的是输出:

abcdefghij.sh: line 99 read: `var_name
`: not a valid identifier

第二行覆盖第一行,给出:

`: not a valid identifierad: `var_name

换句话说,奇怪的单词identifyierad实际上由标识符和最终广告组成:来自:之所以与上面的例子相似(而不是精确)是因为你的文件名和行号与我的小测试脚本不同.

bash – Powershell比cygwin / unix-shell更具优势

bash – Powershell比cygwin / unix-shell更具优势

我所知道的明显区别是能够与某些MS产品(如Exchange)进行交互.但对于不需要管理此类产品的人来说,Power shell的优势是什么?学习Powershell的原因是什么(假设我能熟练使用bash和cygwin)?
StackOverflow上的Jeffrey Snover(Power Shell设计师)给出了很好的答案:

https://stackoverflow.com/questions/573623/#573861

bash – 为什么Cygwin很慢地执行shell命令?

bash – 为什么Cygwin很慢地执行shell命令?

只需测试一个非常简单的命令,如:
while true; do bash -c "echo hello"; done

你会发现Cygwin的bash缓慢多少.有人知道为什么吗

这是在win7上安装的cygwin 1.7.

感谢Jared的测试思路,我修改了命令(添加bash -c):

time for i in {1..10} ; do bash -c "echo Hello" ; done
Hello
...
real 0m7.711s //it's the problem
user 0m0.091s
sys 0m0.476s
如何从防病毒软件中排除Cygwin路径?

bash – 加快Cygwin上的文件比较(使用`cmp`)?

bash – 加快Cygwin上的文件比较(使用`cmp`)?

我在Cygwin上写了一个bash脚本,它更像是rsync,虽然不同,我相信我实际上不能将rsync用于我需要的东西.它迭代相应目录中的大约一千对文件,并将它们与cmp进行比较.

不幸的是,这似乎非常缓慢 – 大约十(编辑:实际上是25!)次,只要使用Python程序生成一组文件.

我是否正确地认为这是非常缓慢的?有没有简单的替代方案会更快?

(详细说明我的用例:我在一个临时目录中自动生成一堆.c文件,当我重新生成它们时,我只想将已更改的文件复制到实际的源目录中保持未更改的那些(使用他们的旧创建时间),以便make知道它不需要重新编译它们.不是所有生成的文件都是.c文件,所以我需要进行二进制比较而不是文本比较.)

解决方法

也许你应该使用Python来做一些甚至全部的比较工作呢?

如果文件大小相同,一个改进就是只打扰运行cmp;如果它们不同,显然文件已经改变.您可以考虑使用MD5或SHA1或SHA-256或任何您喜欢的内容(使用python模块或扩展,如果这是正确的术语),而不是运行cmp.如果您认为自己不会处理恶意,那么MD5可能足以识别差异.

即使在shell脚本中,您也可以运行外部散列命令,并为其指定一个目录中所有文件的名称,然后为其指定其他目录中所有文件的名称.然后,您可以读取两组哈希值和文件名,并确定哪些已更改.

是的,听起来好像花了太长时间.但问题包括必须启动1000份cmp,以及其他处理.上面的Python和shell脚本建议都有共同点,它们避免运行程序1000次;他们试图尽量减少执行的程序数量.执行过程数量的减少将为您带来相当大的收益,我期待.

如果您可以保留“当前文件集”中的哈希值,并为新的文件集生成新的哈希值,然后进行比较,那么您将会做得很好.显然,如果缺少包含“旧哈希”(当前文件集)的文件,则必须从现有文件重新生成它.这在评论中略微充实了信息.

另一种可能性:您是否可以跟踪用于生成这些文件的数据中的更改,并使用它来告诉您哪些文件已更改(或者至少限制可能已更改的文件集,因此需要比较,因为你的评论表明大多数文件每次都是相同的).

我们今天的关于shell – sbt:无法从cygwin上的mintty交互式运行shell无法执行的分享已经告一段落,感谢您的关注,如果您想了解更多关于Bash Shell;读命令;在Windows 7上使用Cygwin、bash – Powershell比cygwin / unix-shell更具优势、bash – 为什么Cygwin很慢地执行shell命令?、bash – 加快Cygwin上的文件比较(使用`cmp`)?的相关信息,请在本站查询。

本文标签: