标签: shell

如何在Unix控制台或Mac终端上运行shell脚本?

我知道了,忘了它并重新学习它.是时候把它写下来了.

unix linux macos bash shell

496
推荐指数
5
解决办法
84万
查看次数

Bash变量赋值中未找到命令错误

我有一个名为test.sh的脚本:

#!/bin/bash
STR = "Hello World"
echo $STR
Run Code Online (Sandbox Code Playgroud)

我跑的时候sh test.sh得到这个:

test.sh: line 2: STR: command not found
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我在网上看一下非常基础/初学者的bash脚本教程,这就是他们说声明变量的方式......所以我不确定我做错了什么.

我在Ubuntu Server 9.10上.是的,bash位于/bin/bash.

syntax bash shell sh variable-assignment

493
推荐指数
5
解决办法
32万
查看次数

Colorized grep - 使用突出显示的匹配查看整个文件

我发现它grep--color=always旗帜非常有用.但是,grep只打印带匹配的行(除非您要求上下文行).鉴于它打印的每一行都有一个匹配,突出显示不会增加尽可能多的能力.

我真的很喜欢cat一个文件,看到整个文件突出显示模式匹配.

有什么方法我可以告诉grep打印每一行被读取而不管是否有匹配?我知道我可以编写一个脚本来在文件的每一行上运行grep,但我很好奇这是否可以用标准grep.

bash shell grep colors

486
推荐指数
12
解决办法
19万
查看次数

在shell脚本中没有换行符的'echo'

echo我的脚本中有问题:

echo -n "Some string..."
Run Code Online (Sandbox Code Playgroud)

版画

-n Some string...
Run Code Online (Sandbox Code Playgroud)

并移动到下一行.在控制台中,它正确地工作而没有换行:

Some string...
Run Code Online (Sandbox Code Playgroud)

shell command-line sh

486
推荐指数
4
解决办法
51万
查看次数

检查环境变量是否在Unix shell脚本中设置的简洁方法是什么?

我有一些Unix shell脚本,我需要在开始做之前检查某些环境变量是否已设置,所以我做了这样的事情:

if [ -z "$STATE" ]; then
    echo "Need to set STATE"
    exit 1
fi  

if [ -z "$DEST" ]; then
    echo "Need to set DEST"
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

这是很多打字.是否有更优雅的习惯用于检查是否设置了一组环境变量?

编辑:我应该提到这些变量没有有意义的默认值 - 如果有任何未设置,脚本应该出错.

unix bash shell

484
推荐指数
9
解决办法
37万
查看次数

如何清除Mac OS X中终端的先前输出?

我知道clear'清除'当前屏幕的命令,但它只是通过打印许多换行来实现这一点 - 清除的内容只是向上滚动.

有没有办法彻底擦除终端的所有先前输出,以便即使向上滚动也无法到达它?

macos shell buffer clear

484
推荐指数
11
解决办法
22万
查看次数

OS X终端颜色

我是OS X的新手,在使用Ubuntu Linux一段时间后刚刚获得了Mac.在我想弄清楚的很多事情中,我的终端窗口中没有颜色 - 就像在运行时显示的那些(在Linux上)ls -lagit status......

我只是无法弄清楚如何在我的shell中激活颜色.

macos shell terminal colors

477
推荐指数
5
解决办法
40万
查看次数

如何将命令的输出直接复制到剪贴板中?

如何在使用终端时将命令的输出传输到剪贴板并将其粘贴回来?例如:

cat file | clipboard
Run Code Online (Sandbox Code Playgroud)

unix linux shell terminal clipboard

477
推荐指数
14
解决办法
28万
查看次数

OS X:相当于Linux的wget

如何从库存OS X系统上的Un*x shell脚本执行HTTP GET?(安装第三方软件不是一种选择,因为这必须在我无法控制的许多不同系统上运行).

例如,如果我在本地启动Mercurial服务器执行hg服务:

... $ hg serve 
Run Code Online (Sandbox Code Playgroud)

然后,从具有wget命令的Linux 我做一个wget:

... $  wget http://127.0.0.1:8000
--2010-12-31 22:18:25--  http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... 200 Script output follows
Length: unspecified [text/html]
Saving to: `index.html
Run Code Online (Sandbox Code Playgroud)

在我发起"hg serve"命令的终端上,我确实可以看到HTTP GET成功了:

127.0.0.1 - - [30/Dec/2010 22:18:17] "GET / HTTP/1.0" 200 -
Run Code Online (Sandbox Code Playgroud)

所以在Linux上,从shell脚本执行HTTP GET的一种方法是使用wget(如果当然安装了该命令).

有什么其他方法可以做相当于一个wget?特别是我正在寻找可以在OS X安装上运行的东西.

unix macos shell http-get

473
推荐指数
8
解决办法
51万
查看次数

如何确定给定的Linux是32位还是64位?

当我输入时uname -a,它给出以下输出.

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我怎么知道给定的操作系统是32位还是64位?

这在编写configure脚本时很有用,例如:我要构建什么样的架构?

linux shell processor 32bit-64bit

466
推荐指数
12
解决办法
51万
查看次数