在运行 Ruby 脚本之后,几乎 100% 的时间,bash 命令行似乎都处于非活动状态,而实际上它正在默默地接受我的击键而不向我显示它们。
通过多个操作系统更新,多个版本的 Ruby 都发生了这种情况;目前,我在 OS X 10.9.2 上运行 v1.9.2p29。reset解决问题;clear,等人,不要。
下面的“现在你没有”等是看不见的echo命令的输出。
$ echo Now you see my typing...
Now you see my typing...
$ bundle exec jekyll build
...
done.
$ This is the output of an unseen echo command
$ About to run "reset"
$ echo And we''re back.
And we're back.
Run Code Online (Sandbox Code Playgroud)
stty -a 工作正常时的输出:
speed 9600 baud; 57 rows; 187 columns;
lflags: icanon isig -iexten echo …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种将字符串转换为干净url 的方法。
例如 :
wget http://myurl.com/toto/foo bar.jpg
Run Code Online (Sandbox Code Playgroud)
这是要下载http://myurl.com/toto/foo和http://bar.jpg。
我要下载http://myurl.com/toto%20bar.jpg。
我尝试了一些标志,--restrict-file-names=ascii但没有成功。
我不想要一种编码方式而不是一种逐一替换的方式。
任何的想法 ?
作为任何命令行用户,我有时想使用众所周知的命令计算文本文件中的行数:
cat some_text_file | wc -l
Run Code Online (Sandbox Code Playgroud)
我在 Mac OS X 上遇到了这个问题,据我所知,它与不同的行尾有关(有时我从使用 OS X 特定行尾的 Mac OS X 版本的 Excel 输出,这对于 wc -l 来说是无法理解的; 在将行结尾更改为 UNIX 样式后,例如在 SublimeText 中,一切都按预期工作)。
所以我的问题:
我可以以某种方式wc -l将行结束类型作为应该使用的 somee 参数传递吗?如果是,请提供一些示例。
我想设置一个相对于脚本位置的环境变量。我可以在脚本(test.sh)期间轻松找到并设置它:
#!/bin/bash
export MY_VARIABLE=$(dirname $0)
echo MY_VARIABLE is : $MY_VARIABLE
Run Code Online (Sandbox Code Playgroud)
称呼:
./test.sh
Run Code Online (Sandbox Code Playgroud)
输出:
MY_VARIABLE is : .
Run Code Online (Sandbox Code Playgroud)
如果我想在其他脚本中使用该变量,则需要使用 source 命令进行设置。这当然不起作用,因为我现在不是调用 test.sh 脚本,而是调用 source 命令。
source test.sh
Run Code Online (Sandbox Code Playgroud)
输出:
dirname: illegal option -- b
usage: dirname path
MY_VARIABLE is :
Run Code Online (Sandbox Code Playgroud)
有没有办法在脚本中定义一个环境变量,然后可以与 source 命令一起使用?
当我将错误的参数传递给脚本 curl 失败但脚本继续执行时,我有使用 curl 的脚本。我试过使用curl -f/--fail参数但问题没有解决。停止脚本的最佳方法是什么?
我已经找到了我的错误。我将curl命令用于另一个命令
echo `curl --fail ... || exit 1`
Run Code Online (Sandbox Code Playgroud)
去掉 echo 命令后,curl 就可以正常工作了。谢谢你的回答,它也很有用。
我正在尝试按照此处的说明使用 Cygwin 安装 SDK https://developers.google.com/cloud/sdk/#Quick_Start
安装 Cygwin 后,我按照指南进行操作,然后尝试使用 进行身份验证gcloud auth login command,但返回以下内容并且不知道如何补救。
> $ gcloud auth login
> -bash: gcloud: command not found
Run Code Online (Sandbox Code Playgroud)
抱歉我不是那么技术,所以很抱歉这是相当基本的,但我已经尝试搜索但找不到解决方案,所以感谢期待任何帮助
我面临的问题正是这个:http : //www.linuxmisc.com/4-linux/d7863c256bccbfb6.htm
我希望能够运行一个接受 stdin 的程序,并在需要时向其中写入数据。我可以使用 fifo 命名管道来做到这一点。例如:
txtplay < named_pipe.fifo
echo "Hello World" > named_pipe.fifo但是,这样做的缺点是第一个命令在第二个命令完成后退出。我想要的是相同的:
txtplay实际上,这样我就可以随时保留我的数据,而不必担心它会看到文件结尾。不幸的是,我不能简单地这样做,因为我希望在程序看到数据之前通过过滤器处理发送给它的数据。
为什么每次我想向它发送数据时都不加载程序?太慢了。
基本上,我想要的是一种将给定命令的输出重定向到 fifo 命名管道的方法,而无需文件结尾。当我在做的时候,这个 EOF 业务是如何运作的?是不是有特殊的“EOF”命令,还是没有收到数据,或者原来输出数据的程序退出了?
有什么解决办法吗?
我在目录中有一个文件列表,我想制作一个 bash 脚本,该脚本使用正则表达式来检查其中的每个文件名是否具有以下语法:
xxxx_xxxx_xx_xx
Run Code Online (Sandbox Code Playgroud)
其中 x 是数字。
编辑:我只需要正则表达式
我正在尝试运行一些使用wc和cat命令的简单 bash 脚本。该脚本失败了:
wc: command not found
Run Code Online (Sandbox Code Playgroud)
或者这个(在我评论了使用 wc 的字符串之后):
cat: command not found
Run Code Online (Sandbox Code Playgroud)
我不知道是怎么回事。包含完全相同的代码片段的类似脚本非常完美。这两个脚本在相同的条件下使用。除了,
machine:~ user$ which wc
/usr/bin/wc
Run Code Online (Sandbox Code Playgroud)
和
machine:~ user$ which cat
/bin/cat
Run Code Online (Sandbox Code Playgroud) 我刚刚安装了 MSYS2,为了让它使用我的 Windows 用户文件夹作为 $HOME,我把它放在 /etc/bash.bashrc 中:
HOME=$USERPROFILE
Run Code Online (Sandbox Code Playgroud)
当我只运行 cd 时,这工作正常,除了当我在那里时提示不再显示 ~ 作为当前路径。另一个问题是
cd ~
Run Code Online (Sandbox Code Playgroud)
带我到我的主目录,但在 ~ 之后按 Tab 不会用我的主目录的内容展开它;相反,我得到了一个以 ~ 为前缀的计算机用户列表,并尝试访问其中之一使其尝试 cd 到 /home/(username)。
我怎样才能让 ~ 与不在 /home 中的主目录一起玩得很好?