标签: scripts

通用脚本的 /usr/local/bin 的非 sudo 替代方案

我习惯于将常用脚本放入其中,/usr/local/bin以便我可以使用终端从任何地方执行它们。

例如,我创建了一个名为 的 shell 脚本1,使其可执行chmod +x 1并放入 中/usr/local/bin,然后在脚本中#!/bin/sh的第一行输入,然后输入我的命令。从那以后,它非常方便地使用并且通过键入快速执行

1Enter

在终端上,从任何文件夹内。

我的问题是我目前正在使用一台无法完成的计算机,sudo我也不希望得到它,所以我无法将我的脚本放在/usr/local/bin.

我有哪些选择?是否有另一条具有相同“从任何地方运行”功能的路径,我可以在没有 的情况下访问它sudo,或者以另一种方式实现等效的功能?

这篇文章的公认答案说

对于用户范围的脚本,请在您的主目录中使用 bin/。

我试过了,但bin我的主目录中没有文件夹,当我创建一个文件夹时,我仍然无法从其他任何地方运行脚本。

我在 Ubuntu 12.04 LTS 上运行。

permissions command-line bash scripts

18
推荐指数
1
解决办法
9068
查看次数

有没有一种简单的方法来记录 shell 脚本所做的所有活动?

是否有一种简单的方法可以将 shell 脚本中发生的所有活动记录到文件中?

我有一个脚本。它输出诸如 echo“指令”之类的内容,以及其他程序输出。我知道命令:

command | tee -a "$log_file"
Run Code Online (Sandbox Code Playgroud)

和

command >> logifle.log
Run Code Online (Sandbox Code Playgroud)

我要问的是是否有用于日志记录的 shell 参数,或者我可以使用的 set 命令或类似的东西。如果不需要,我不一定要向文件添加数十个重定向或 tee。我仍然想获得 std 输出 - 我也想记录它。:wq

command-line bash scripts programming

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

如何限制或限制对应用程序的访问?

我儿子去年圣诞节收到了一台新笔记本电脑,主要用于他的新学校......现在他有了自己的笔记本电脑,他很想安装 Steam。

但是妻子要我删除 Steam,因为笔记本电脑主要是供学校使用的……如果我不需要,我宁愿不这样做。

有没有办法限制或以其他方式限制对 Steam 的访问?也许是 Steam 本身的密码,或者设置它可以运行的时间?

理想情况下,它必须是使用起来非常简单的东西,因为我的工作经常让我远离家(和电脑、电信和......)很长一段时间,而我的妻子在电脑周围不像我那么舒服,更容易使用要好得多。

肯定有什么东西可以完成这项任务吗?

permissions command-line scripts steam games

18
推荐指数
1
解决办法
5398
查看次数

如何在bash中的curl命令中设置变量?

我有一个 bash 文件:

#!/bin/bash

# yesnobox.sh - An inputbox demon shell script
OUTPUT="/tmp/input.txt"

# create empty file
>$OUTPUT

# cleanup  - add a trap that will remove $OUTPUT
# if any of the signals - SIGHUP SIGINT SIGTERM it received.
trap "rm $OUTPUT; exit" SIGHUP SIGINT SIGTERM

# show an inputbox
dialog --title "Inputbox" \
--backtitle "Search vacancies" \
--inputbox "Enter your query " 8 60 2>$OUTPUT

# get respose
respose=$?

# get data stored in $OUPUT using input redirection …
Run Code Online (Sandbox Code Playgroud)

command-line scripts curl

18
推荐指数
4
解决办法
8万
查看次数

如何在 Ubuntu 18.04 服务器上启动时以 sudo 身份运行脚本?

如何在启动时以 sudo 身份运行脚本?

我需要运行ethtool --offload <net> rx off以禁用烦人的 jme udp 校验和错误消息。

scripts 18.04

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

如何在 Python 中编写 Nautilus 脚本?

我想用 Python 编写一个 Nautilus 脚本。那可能吗?如果可能,我该怎么做?

python nautilus scripts

17
推荐指数
1
解决办法
4801
查看次数

命令行归档管理器/提取器

我一直忘记每种压缩格式的所有相应提取命令。

所以我正在考虑编写一个脚本,只将文件扩展名映射到适当的提取命令。但我想这样的东西已经存在,我只是找不到它。

我对 file-roller 之类的东西很满意,但 file-roller 是一个 GUI 工具。

command-line archive scripts compression file-roller

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

使应用程序静音的脚本

我的目标是能够静音 Spotify 应用程序,而不是整个系统。使用命令:ps -C spotify -o pid=我能够找到 Spotify 的进程 ID,在这种情况下,ID 是"22981". 使用该进程 ID,我想从此列表中搜索:pacmd list-sink-inputs. 该命令返回如下列表:

eric@eric-desktop:~$ pacmd list-sink-inputs
Welcome to PulseAudio! Use "help" for usage information.
>>> 1 sink input(s) available.
    index: 0
    driver: <protocol-native.c>
    flags: START_CORKED 
    state: RUNNING
    sink: 1 <alsa_output.pci-0000_00_1b.0.analog-stereo>
    volume: 0: 100% 1: 100%
            0: -0.00 dB 1: -0.00 dB
            balance 0.00
    muted: no
    current latency: 1019.80 ms
    requested latency: 371.52 ms
    sample spec: s16le 2ch 44100Hz
    channel map: front-left,front-right
                 Stereo …
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts pulseaudio

17
推荐指数
3
解决办法
8588
查看次数

通过 bash 脚本添加用户帐户的正确方法

这是我现在使用的脚本代码:

getent group $MYGROUP
if [ $? -ne 0 ] ; then
    sudo su -c "groupadd $MYGROUP"
fi
sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"
Run Code Online (Sandbox Code Playgroud)

这种方法在 openSuse 上运行良好。但是它在Ubuntu 上创建的用户帐户存在几个问题,所以我在这里寻求帮助。

  • 未设置终端提示(不echo $PS1返回任何内容)
  • 箭头键和 Tab 键在终端中无法正常工作
  • 密码似乎不起作用(虽然我仍然不清楚这个问题到底是什么)
  • 不尊重为此新用户设置的 /etc/sudoers 权限

相反,如果我使用adduser(而不是 useradd)手动创建用户,我在 Ubuntu 上没有这些问题。但我不能adduser在 openSuse (afaik) 上使用。因此,我需要一个非 Debian 独有的脚本或通过我的 bash 脚本添加用户帐户的方法,该脚本可在 Ubuntu 上运行(并且不会停止在其他发行版上运行)。

最后,我想理解的差异之间adduser和useradd。例如,我想知道使用哪个骨架目录,adduser因为这可能useradd是没有按预期工作的原因(因为我刚刚接受了默认值)。

谢谢

bash scripts users adduser

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

如何在 bash 脚本中使用 awk 处理多行记录?

example.txt 在下面

Restaurant: McDonalds 
City: Miami
State: Florida
Address: 123 Biscayne Blvd
Phone: 911

Restaurant: 5 guys
City: Atlanta
State: Georgia
Address: 123 Peachtree Rd
Phone: 911

Restaurant: KFC
City: NYC
State: NY
Address: 123 Madison Square
Phone: 911
Run Code Online (Sandbox Code Playgroud)

我使用 bash 脚本,假设我想从上面的文件中按名称搜索餐厅。询问用户输入餐厅名称,它应该打印有关该餐厅的信息(5 行)。

awk '/McDonalds/> /KFC/' example.txt
Run Code Online (Sandbox Code Playgroud)

我知道上面的代码行将打印与模式“麦当劳”和“肯德基”匹配的整行,但这只会打印文本文件中的第一行,而不是有关该餐厅的其余信息。我如何告诉它仅从用户输入的餐厅名称中打印所有信息(5 行)?

scripts awk

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