第1部分
应该getent是可执行文件吗?
在我的 zsh 设置中,我可以看到 getent 实际上被定义为一个函数
$ which getent
getent () {
if [[ $2 = <-> ]]
then
grep ":$2:[^:]*$" /etc/$1
else
grep "^$2:" /etc/$1
fi
}
Run Code Online (Sandbox Code Playgroud)
如果我想从 bash shell 执行它,
bash -c "getent passwd user"
Run Code Online (Sandbox Code Playgroud)
我收到一个getent: command not found错误。
第2部分
在 Mac OSX 中,getent无论用户 ID 是否有效,都会失败。事实证明用户 ID 没有保存在/etc/passwd文件中。为什么会这样呢?还有什么替代方案呢?
我有 anaconda python 发行版,~/anaconda/bin/python但是我可以使用什么 shebang 来调用这个版本的 python 而不是服务器上默认的旧版本?
# /opt/python/bin/python2.7是我一直在尝试的
我正在尝试自动化开关命令。这几乎一切都很好,但是当期望脚本从包含我的 switch 命令的文件中读取每一行(逐行列出)时,开关似乎在大约 10 或 15 个命令后停止,我认为缓冲区太小了。
如何在从文件读取的每个命令之间添加睡眠?谢谢!!
set fp [open "/home/room.txt" r]
set data [read $fp]
set timeout -60
spawn telnet 10.91.60.14
match_max 100000
sleep 2
expect *
send -- "^Y"
sleep 2
send -- "password\r"
sleep 2
send -- "^[\[A"
send -- "^[\[A"
send -- "\r"
sleep 1
send -- "enable\r"
send -- "configure terminal\r"
sleep 1
expect *
sleep 2
**send -- "$data"**
sleep 2
interact
Run Code Online (Sandbox Code Playgroud) 我通过init.d如下脚本在 Ubuntu 15.10 上启动我的 TeamCity 代理:
#!/bin/sh
### BEGIN INIT INFO
# Provides: TeamCity Build Agent
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start build agent daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
USER="myuser"
case "$1" in
start)
su - $USER -c "/home/myuser/BuildAgent/bin/agent.sh start"
;;
stop)
su - $USER -c "/home/myuser/BuildAgent/bin/agent.sh stop"
;;
*)
echo "usage …Run Code Online (Sandbox Code Playgroud) 在下面的 bash 循环中,我想将内容重定向到变量文件名中。
for i in {1..22};do echo $i > $i_output.txt; done
Run Code Online (Sandbox Code Playgroud)
不幸的是,这些文件没有创建。我最初想做的是 grep 文件中的染色体并为每个染色体创建一个文件。但这不太可测试:
for i in {1..22}; grep -E "[a-z]+[0-9]+\t$i\t" rawdata.txt > $i_chr.txt;done
Run Code Online (Sandbox Code Playgroud)
我们如何将 for 循环中的输出重定向到变量文件名?
我有一个古老的 bash 脚本,我想改进它。该脚本使用了许多变量,在某些情况下,某些变量被引用但为空或未设置。在这里这通常不是问题,因为脚本从一开始就是这样设计的。
然而,我已经开始使用shellcheck,它经常抱怨缺少引号。因此,我添加了引号,但遇到了一些不便,对此我没有很好的解决方案。
有很多行看起来像这样:
cmd $param1 $param2 $param3 $param4
如果其中一个参数为空或未设置,它仍然有效,并且 cmd 获取的参数数量会减少。但如果我开始添加引号
cmd "$param1" "$param2" "$param3" "$param4"
cmd 总是会得到 4 个参数,无论其中是否有一个为空。
为什么会这样,这是非常清楚的。解决方法也很明确(在使用参数之前检查是否为空),但它很丑陋并且需要大量额外的代码。
所以我正在寻找聪明的解决方案,要么a)省略参数(包括引号!)如果它是空的b)仅添加非空变量的引用
我知道如何读取有关已配置网络接口的统计信息,例如通过cat /proc/net/dev.
有没有办法读取 PCI 或 PCIe 流量的类似字节计数器?
显然,根据https://www.intel.com/content/dam/www/public/us/en/documents/design-guides/xeon-e5-2600-uncore-guide.pdf
应该有一个指标PCIE_DATA_BYTES,可追踪例如通过ucevent: https: //github.com/andikleen/pmu-tools/blob/master/uevent/README.md
如果我跑
ucevent.py -I 2000 CBO.PCIE_DATA_BYTES sleep 10
Run Code Online (Sandbox Code Playgroud)
我得到
未知事件 CBO.PCIE_DATA_BYTES
我在两台服务器上尝试过:
英特尔(R) 至强(R) CPU E5-2630 v4 @ 2.20GHz
英特尔(R) 至强(R) CPU E5-2640 v4 @ 2.40GHz
有什么建议或帮助吗?
也许我不明白语言环境...但是你能解释一下吗:
如果我使用 localectl 设置区域设置:
localectl set-locale LANG=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
我在 localectl 输出中看到:
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: us
Run Code Online (Sandbox Code Playgroud)
系统区域设置现在是 en_US.UTF-8
但在locale输出中我仍然看到这个:
LANG=ru_RU.UTF-8
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
设置用户区域设置只有一种方法 - 将其导出或添加到 .bash_profile 文件中以在重新启动后保存?
我想从本地 git 存储库中清理一个大文件(顺便清理我的存储库以减小大小)。这是我的狂欢:
#!/bin/bash
bigfile="/path_to_mygitproject/bigfile.tar.gz"
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch '"$bigfile"'' --prune-empty --tag-name-filter cat -- --all
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch '"$bigfile"'' HEAD
Run Code Online (Sandbox Code Playgroud)
但现在显示以下警告:
WARNING: git-filter-branch has a glut of gotchas generating mangled history
rewrites. Hit Ctrl-C before proceeding to abort, then use an
alternative filtering tool such as 'git filter-repo'
(https://github.com/newren/git-filter-repo/) instead. See the
filter-branch manual page for more details; to squelch this warning,
set FILTER_BRANCH_SQUELCH_WARNING=1.
Run Code Online (Sandbox Code Playgroud)
我一直用这个bash,从来没有遇到过问题。到目前为止。我猜 git 中发生了一些变化。
我尝试将“git filter-branch”替换为“git …
Alpine默认使用ash作为登录shell,我想将其更改为bash。
到目前为止我做了什么:
sudo apk add bashsudo apk add shadow/bin/bash为chsh/etc/passwd包含/bin/bash我的用户的默认登录 shell但这似乎被忽略了。当我登录(在控制台或 ssh 上)时,我总是会进入 ash shell。