标签: bash

如何阻止我的 bash shell 要求安装软件包?

当我输入错误命令时,shell 会尝试找到提供它的包。如何禁用此功能?

例子:

[dave@dave cpp]$ sl
bash: sl: command not found...
Install package 'sl' to provide command 'sl'? [N/y] 
Run Code Online (Sandbox Code Playgroud)

如果没有提示我安装命令,我想。

linux fedora bash shell

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

如何从具有特定文件名长度的目录中删除所有文件?

我有一个 tmp 目录,里面装满了程序创建但没有正确清理的各种文件。这些文件中的每一个都有一个简单的 6 个随机字符的文件名。除此之外,目录中还有几十个合法文件我不想删除。我可以将它们移出然后 rm -rf 整个目录,但我认为会有一种更简单的方法,因为方便的是,没有一个合法文件的文件名长度为 6。

例子:

-rw-------  1 root root    0 Sep  8 08:59 BxP6dX
-rw-------  1 root root    0 Sep  7 03:29 c93Rb2
-rw-------  1 root root    0 Sep  8 12:29 Cq8S3f
-rw-------  1 root root    0 Sep  8 03:59 CV_6kc
-rw-------  1 root root    0 Sep  7 15:29 d5cBqw
drwxr-xr-x  2 root root   40 Sep  6 16:03 legitimateFile
-rw-------  1 root root    0 Sep  7 21:29 qC5XQD
-rw-------  1 root root    0 Sep  9 …
Run Code Online (Sandbox Code Playgroud)

linux bash rm

6
推荐指数
1
解决办法
1200
查看次数

将 rsync(或 bash 脚本)限制到一个目录

由于错误的目标参数导致 rsync 删除错误文件的严重事故后,我想限制 rsync(或运行它的 bash 脚本)只能删除/修改某个目录下的文件。我想到了:

  1. 在仅具有该目录权限的用户下创建并运行 rsync/script。这里的问题是:如何动态使用/创建这样的用户?(这是构建脚本的一部分,应该为其他用户“运行”)。

  2. 验证提供给 rsync 的目标路径是否在某个目录下。方向好像是在使用test命令,但是我想不通怎么正确使用,也不是那么安全,因为path参数的测试还是会与实际运行的path参数不同步,所以我认为(1)更健壮。

bash shell rsync permissions macos

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

如何让我的脚本要求输入密码,比如 sudo?

我正在编写一个脚本,如果以错误的方式运行,它可能会很危险。作为一项安全功能,我希望脚本要求用户首先重新输入他们的密码,就像这样sudo做一样。

那么我该怎么做呢?换句话说,我如何

a) 输入密码而不回显,

b) 验证密码,以及

c)(为了奖励积分)这样做时不会将明文密码留在内存中,以便一些聪明的人从 /proc 或类似的东西中刮出来?

这是在,bash但如果这更容易的话,任何其他标准的 Linux shell 变体都可以。

linux unix bash passwords password-protection

6
推荐指数
1
解决办法
2333
查看次数

使用 systemd 在 multi-user.target 之后但在登录屏幕之前执行交互式(whiptail)脚本

我正在尝试从 Fedora 19 上的 systemd 运行一个小的交互式配置脚本。它必须以 root 身份运行,并在用户登录之前运行。我创建了一个看起来像这样的服务:

[Unit]
Description=blah
Before=graphical.target 

[Service]
Type=oneshot
ExecStart=/path/to/script.sh

[Install]
RequiredBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

为简单起见,脚本如下所示:

#!/bin/sh
whiptail --msgbox "test" 0 78
Run Code Online (Sandbox Code Playgroud)

但是,当我加载此服务并重新启动时,不会显示脚本输出,并且在 /var/log/messages 中它建议应该设置 TERM 变量。但我希望脚本能在第一个虚拟终端上运行。

任何建议或见解将不胜感激。

linux bash systemd

6
推荐指数
1
解决办法
4515
查看次数

如何使用cli删除名称以“-r”开头的文件

我每隔一段时间就创建奇数文件,例如

$ls -rthl
$-rw-r--r--  1 shamil hep  290 Aug 13 11:58 -rf
Run Code Online (Sandbox Code Playgroud)

有趣的是,不可能删除此文件

rm -f -rf
Run Code Online (Sandbox Code Playgroud)

我知道我需要转义像“-”这样的特殊符号,所以问题很清楚。我曾经知道解决方案,但后来忘记了。

如何正确删除它?

我试过这样的事情

rm -f \-rf
Run Code Online (Sandbox Code Playgroud)

但无济于事。

linux bash command-line rm

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

我可以判断我是否在 .bashrc 中的 scp 会话中吗?

在 my 中.bashrc,当我尝试执行scp. 我一直采用的解决方案是手动 ssh 到目标机器,禁用 my .bashrc,进行复制,然后重新启用我的.bashrc. 有没有办法解决这个问题?

unix bash scp bashrc

6
推荐指数
1
解决办法
2576
查看次数

cat 可以用来克隆一个分区吗?

例如,我可以这样做:

cat /dev/sda1 > /dev/sda2
Run Code Online (Sandbox Code Playgroud)

而不是使用 dd,如果没有,为什么这不起作用?

linux bash clone cat dd

6
推荐指数
1
解决办法
4736
查看次数

¬ 键是什么?

与英国键盘斗争,最近搬到这里!很抱歉这个奇怪的问题,但事实证明这个话题很难用谷歌搜索。

在 key number 的左边1,我曾经有反引号`和波浪号~,而是有这个符号 ¬ 我以前从未需要过。它在 bash 中做任何有用的事情吗?它叫什么?为什么在英国键盘映射上出现足够重要?有什么理由不重新映射我的旧 homedir 曲线 ~ 回到那个位置?

keyboard bash

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

Bash 脚本在 if elif 语句上给出“找不到命令”错误

现在,在您将其标记为重复之前,请理解我确实搜索了这个问题,并且我已经尝试了所有解决方案都没有效果。

我的脚本:

#!/bin/bash

echo "Enter the number 3"
read t1
if [$t1 -eq 3]; then
    echo "it is 3"
elif [$t1 > 3]; then
    echo "it is greater than 3"
fi

exit 0
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

./g.sh: line 5: [3: command not found
./g.sh: line 7: [3: command not found
Run Code Online (Sandbox Code Playgroud)

linux bash shell-script

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