当我输入错误命令时,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)
如果没有提示我安装命令,我想。
我有一个 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) 由于错误的目标参数导致 rsync 删除错误文件的严重事故后,我想限制 rsync(或运行它的 bash 脚本)只能删除/修改某个目录下的文件。我想到了:
在仅具有该目录权限的用户下创建并运行 rsync/script。这里的问题是:如何动态使用/创建这样的用户?(这是构建脚本的一部分,应该为其他用户“运行”)。
验证提供给 rsync 的目标路径是否在某个目录下。方向好像是在使用test命令,但是我想不通怎么正确使用,也不是那么安全,因为path参数的测试还是会与实际运行的path参数不同步,所以我认为(1)更健壮。
我正在编写一个脚本,如果以错误的方式运行,它可能会很危险。作为一项安全功能,我希望脚本要求用户首先重新输入他们的密码,就像这样sudo做一样。
那么我该怎么做呢?换句话说,我如何
a) 输入密码而不回显,
b) 验证密码,以及
c)(为了奖励积分)这样做时不会将明文密码留在内存中,以便一些聪明的人从 /proc 或类似的东西中刮出来?
这是在,bash但如果这更容易的话,任何其他标准的 Linux shell 变体都可以。
我正在尝试从 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 变量。但我希望脚本能在第一个虚拟终端上运行。
任何建议或见解将不胜感激。
我每隔一段时间就创建奇数文件,例如
$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)
但无济于事。
在 my 中.bashrc,当我尝试执行scp. 我一直采用的解决方案是手动 ssh 到目标机器,禁用 my .bashrc,进行复制,然后重新启用我的.bashrc. 有没有办法解决这个问题?
例如,我可以这样做:
cat /dev/sda1 > /dev/sda2
Run Code Online (Sandbox Code Playgroud)
而不是使用 dd,如果没有,为什么这不起作用?
与英国键盘斗争,最近搬到这里!很抱歉这个奇怪的问题,但事实证明这个话题很难用谷歌搜索。
在 key number 的左边1,我曾经有反引号`和波浪号~,而是有这个符号 ¬ 我以前从未需要过。它在 bash 中做任何有用的事情吗?它叫什么?为什么在英国键盘映射上出现足够重要?有什么理由不重新映射我的旧 homedir 曲线 ~ 回到那个位置?
现在,在您将其标记为重复之前,请理解我确实搜索了这个问题,并且我已经尝试了所有解决方案都没有效果。
我的脚本:
#!/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)