标签: bash

在 Linux 中设置一个全局环境变量,在进入 root 时保持不变

当我通过 SSH 连接到 Linux 机器时,我想让/etc/profile文件将whoami命令的结果保存到全局环境变量中。

如果我要使用命令进入 root sudo su -,我不希望该命令在进入 root 时再次运行。我希望它whoami在我进入 root 之前使用我的常规用户名的结果,并且需要以 root 用户身份访问该变量,即使它会/etc/profile在我进入 root 时再次运行该文件。

我该怎么做才能在命令中只运行一次该/etc/profile命令?

linux bash

2
推荐指数
1
解决办法
1579
查看次数

如何编写对文件中的数字求和的脚本?

我想总结一个纯文本文件中的数字。有什么办法可以用命令或 bash 脚本来做到这一点吗?

假设我想以如下所示的模式提取数字:

… text text …
Removed 50 items out of 50 items.
… text text …
Removed 34 items out of 50 items.
… text text …
Run Code Online (Sandbox Code Playgroud)

所以在上面的例子中,我想提取它们弹出的行中的第一个数字并将其相加。在示例中,结果应该是 84。我知道如何 grep 它,但这就是我对 *nix 命令的了解程度。

bash grep sed

2
推荐指数
1
解决办法
3975
查看次数

Linux exec 错误,“未找到”

运行 Debian/Crunchbang,当我尝试运行脚本时遇到一个奇怪的错误。例如

exec: 392: ./firefox-bin: not found
Run Code Online (Sandbox Code Playgroud)

我以前从未遇到过这种情况,我找不到任何关于此的好信息,有没有人愿意解释它的含义以及它发生的原因?

显然“未找到”的文件确实存在于该路径中,并且归我所有且可执行。我也尝试从不同的位置执行它,但没有运气。

linux debian bash command-line

2
推荐指数
1
解决办法
1万
查看次数

如何 cd 到新创建的目录?

cd "$(mkdir -v "$(date -R)"|sed s+.`(.*)'.*)"
Run Code Online (Sandbox Code Playgroud)

这是为了创建一个名为$(date -R). 我可以简单地 cd $(date -R),但罪魁祸首是自上一个命令运行以来日期可能会更改 ( mkdir)。

所以我想解析它的输出以确定创建的目录的名称。如何更正代码?目前它显示>提示,表明缺少引用。

更改'\'不会改变结果。如果您有更好的方法来做到这一点,请说出来。

cd bash date dir

2
推荐指数
1
解决办法
372
查看次数

Shell:查找和替换单词

我的 shell 脚本中有一个字符串,它采用固定格式:'[STATUS REPORT] PROJECT'. 当用户执行我的 shell 脚本时,他会被要求提供'PROJECT'.

我想'PROJECT'用用户提供的价值替换这个词。例如,如果'ABCD'是用户输入:

'[状态报告] ABCD'

我有两个问题: 1:如何处理项目名称中的“&”等特殊字符?例如:

echo "[STATUS REPORT] PROJECT" |  awk '{ gsub(/PROJECT/, "A&A"); print }' 
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

[状态报告] APROJECTA

2:我的实际 shell 语句如下所示:

echo "[STATUS REPORT] PROJECT" |  awk '{ gsub(/PROJECT/, $ProjectName); print }'
Run Code Online (Sandbox Code Playgroud)

其中 $ProjectName 存储用户提供的项目名称。但这似乎不起作用

我怎样才能让它正常工作?

bash awk shell-script string-manipulation

2
推荐指数
1
解决办法
1万
查看次数

为什么我的 bash 脚本不起作用?

我对 Mac OSX 中的终端越来越熟悉,我想我会涉足 bash 脚本。不想在我坐下之前爬行,我想写一个非常简单的“你好,世界!” 脚本所以我这样做了:

~/Desktop touch hello.sh
~/Desktop vim hello.sh
Run Code Online (Sandbox Code Playgroud)

然后我将它添加到 hello.sh

#!/bin/bash
echo "Hello, world!"
Run Code Online (Sandbox Code Playgroud)

然后我这样做了:

~/Desktop chmod -x hello.sh
~/Desktop hello
Run Code Online (Sandbox Code Playgroud)

此时什么都没有发生。

我从某个地方下载了一个同样简单的 bash 脚本:

#!/bin/bash
echo "The current date and time."
date
Run Code Online (Sandbox Code Playgroud)

当我这样做的时候

~/Desktop date
Run Code Online (Sandbox Code Playgroud)

它做了它应该做的。

然后我用 ls -l 检查了文件权限,我得到了这个:

-rw-r--r--    1 Mike  staff       33  5 Sep 21:13 hello.sh
-rw-r--r--@   1 Mike  staff       50  5 Sep 21:00 date.sh
Run Code Online (Sandbox Code Playgroud)

很明显@ 正在发挥作用,或者我是这么认为的。我没有使用 vim,而是在 TextEdit 中创建了相同的文件,在经历了与之前相同的动作之后,我最终遇到了相同的情况,即我的脚本除了现在权限在它们末尾显示一个 @ 之外什么也没做。

所以我的问题是为什么这不起作用,我做错了什么?权限末尾的@ 是什么?

mac unix terminal bash shell-script

2
推荐指数
1
解决办法
5007
查看次数

Bash:如何在一行中删除两个文件扩展名?

我如何将这两行合并为一行?

chown abc:abc *.sh

chown abc:abc *.txt
Run Code Online (Sandbox Code Playgroud)

将两个文件扩展名的所有权更改为一个行。

bash shell

2
推荐指数
1
解决办法
467
查看次数

用 awk 或 sed 连接两行

如果我有:

foo  
bar
Run Code Online (Sandbox Code Playgroud)

..我想awk/sed这个:

foo-bar
Run Code Online (Sandbox Code Playgroud)

..什么是语法?

我正在尝试在 OS X 10.6.x 上使用 System Profiler:

system_profiler SPMemoryDataType | awk '/Type/ {print $2} /Speed/ {print $2}'
Run Code Online (Sandbox Code Playgroud)

输出类型速度(即DDR-1067)。还没有想出如何使用printprintf尚未弄清楚如何做到这一点,可能会尝试grep改为..

bash awk sed macos

2
推荐指数
1
解决办法
3864
查看次数

bash 中可自动完成的别名(或类似的)?

我的本地网络中有一台 CentOS 主机,我每天都使用它来打开与 Internet 和本地网络中许多(超过 40 个)其他主机的 SSH 连接。我已经设置了 RSA 密钥对来跳过交互式身份验证和一些像这样的 bash 脚本:

[root@beta ~]# cat ~/connections/mywebsite.sh
ssh mywebsitefi@virtualserver123.hostingprovider.fi
Run Code Online (Sandbox Code Playgroud)

当我需要打开与它们的连接时,这很好用,但当我需要将scp文件发送到同一主机时就不行了。

是否可以创建等效于别名的东西来替换这样的 username@host 部分?

[root@beta ~]# scp myfile MYWEBSITE:/var/www
Run Code Online (Sandbox Code Playgroud)

使用 Tab 键自动完成别名的可能性也很棒。

我知道 bash 别名只能用作命令的第一个单词,但是还有其他方法可以实现吗?如果不在 bash 中,也许是另一个 shell?

ssh bash bash-alias

2
推荐指数
1
解决办法
448
查看次数

echo $BASH_VERSION 和 echo ${BASH_VERSION} 有什么区别?

${VARIABLE}在脚本中看到了很多类型语法。大括号的重点是什么?

bash syntax

2
推荐指数
2
解决办法
642
查看次数

标签 统计

bash ×10

awk ×2

linux ×2

sed ×2

shell-script ×2

bash-alias ×1

cd ×1

command-line ×1

date ×1

debian ×1

dir ×1

grep ×1

mac ×1

macos ×1

shell ×1

ssh ×1

string-manipulation ×1

syntax ×1

terminal ×1

unix ×1