我有一个紧急情况,Linux 和 Bash 初学者在这里尝试编写脚本来重命名一些文件时搞砸了。循环不小心走上了路径(在桌面的文件夹中运行脚本)并重命名/bin为/D_bin(D_是我添加的前缀)所以现在系统无法使用/bin内容,所以不bash,不mv重命名,不sudo......文件in/D_bin没问题,没有重命名,可以复制粘贴它们,但不能在/bin没有 bash 的情况下再次创建文件夹。系统看起来很稳定,但很少有东西可以工作并且无法访问桌面中的文件。
其他的/like文件夹/lib /sbin /etc好像也没问题,图形桌面还在。我害怕重启,因为我不知道它是否能够启动。
root 中是否有 shell 或重命名/D_bin回的方法/bin?需要帮助,非常重要的工作受到影响
我的自杀脚本 :$ :
#!/bin/bash
files=~/Desktop/folder_1/*
for j in $files
do
cd $j
for i in 10n* #file names starting by 10n
do
find * -maxdepth 0 ! -path . -exec mv {} D_{} \;
done
cd ..
done
Run Code Online (Sandbox Code Playgroud)
:( 谢谢!!!!
我在 gnome 终端上使用这个脚本:
#!/bin/sh
gnome-terminal --tab --title="1" --command="ssh 1" \
--tab --title="2" --command="ssh 2" \
--tab --title="3" --command="ssh 3" \
--tab --title="4" --command="ssh 4"
exit 0
Run Code Online (Sandbox Code Playgroud)
我如何通过脚本但在 Guake 终端上做同样的事情?
我正在编写一个巨大的脚本工厂脚本,为我的服务器生成大量维护脚本。
直到现在我写了一些需要写在一行中的行,echo -ne例如
echo -n "if (( " | sudo tee -a /usr/local/bin/upgradeAllServers &> /dev/null
# Generate exitCode check for each Server
IFS=" "
COUNT=0
while read -r name ipAddr
do
if(($COUNT != 0))
then
echo -n " || " | sudo tee -a /usr/local/bin/upgradeAllServers &> /dev/null
fi
echo -n "(\$"$name"_E != 0 && \$"$name"_E != 1)" | sudo tee -a /usr/local/bin/upgradeAllServers &> /dev/null
COUNT=$((COUNT+1))
JOBSDONE=$((JOBSDONE+1))
updateProgress $JOBCOUNT $JOBSDONE
done <<< "$(sudo cat /root/.virtualMachines)"
echo " ))" | …Run Code Online (Sandbox Code Playgroud) 我正在编写重新启动各种服务器的脚本。重新启动后,我想“等待”直到所有服务器重新联机。(为了简单起见,我在网上为我定义了=可ping通)
所以对于我做的每台服务器
ServerXY_W=1
echo -n "waiting for ServerXY ..."
while (($ServerXY_W == 1))
do
if ping -c 1 -w 0.2 192.168.123.123 &> /dev/null
then
echo "ServerXY is back online!"
ServerXY_W=0
else
echo -n "."
fi
done
Run Code Online (Sandbox Code Playgroud)
我期望(和喜欢)将是一个输出,例如
waiting for ServerXY .................
ServerXY is back online!
Run Code Online (Sandbox Code Playgroud)
点.... 会一一出现的地方。
但实际发生的是首先只有
waiting for ServerXY ...
Run Code Online (Sandbox Code Playgroud)
有一段时间,当服务器回来时,我得到最后一个点和最后一行
waiting for ServerXY ....
ServerXY is back online!
Run Code Online (Sandbox Code Playgroud)
为什么while循环只执行两次,一次ping失败,一次ping成功?我必须更改什么才能在 while 循环中添加更多点?
我也用不存在的 IP 进行了测试。但它卡住了
waiting for NonExistentServer...
Run Code Online (Sandbox Code Playgroud)
当然永远不会终止。但同样的问题为什么不........添加?
在 Ubuntu 14.04 上,我有一个长时间运行的 bash 脚本,其中有一个简单的 udev 规则,它的工作原理如下:
ACTION=="change", SUBSYSTEM=="block", RUN+="/opt/script.sh"
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 16.04 上,事情进展得并不顺利。脚本开始运行,但在它完成之前就被杀死了。然后我尝试更改我的 udev 规则以调用一个可以分离脚本的 warapper 脚本。我试过:
ACTION=="change", SUBSYSTEM=="block", RUN+="/opt/script.sh"
Run Code Online (Sandbox Code Playgroud)
然后我尝试:
#!/bin/sh
nohup /opt/script.sh &
Run Code Online (Sandbox Code Playgroud)
无济于事。
然后我尝试创建一个 systemd 服务...
ACTION=="change", SUBSYSTEM=="block", ENV{SYSTEMD_WANTS}=="justrunthescript.service"
Run Code Online (Sandbox Code Playgroud)
/etc/systemd/system/justrunthescript.service
[Unit]
Description=Just run the script
[Service]
ExecStart=/opt/script.sh
Run Code Online (Sandbox Code Playgroud)
我必须在某个时候运行脚本,但我的脚本依赖于 udev 参数,如 $ID_FS_TYPE 不会以这种方式传递。
我想我想要的很简单,只需插入一张光盘并从 udev 规则运行我的脚本,不要杀死脚本。解决这个问题的最佳方法是什么?
我在客户的目录上使用它来重命名文件,每个单词的第一个字母根据他们的要求大写:
rename 's/\b(\w)/\u$1/g' *
这工作正常,但它也将扩展名的第一个字母大写,所以我用它来解决这个问题:
rename 's/\.Txt$/.txt/' *.Txt
Run Code Online (Sandbox Code Playgroud)
如果文件夹中的大多数文件具有相同的扩展名(通常是正确的),则可以正常工作,但如果它们非常混合,则很痛苦。
为了解决这个问题,我创建了一个看起来像这样的小脚本(不要笑!):
rename 's/\.Txt$/.txt/' *.Txt
Run Code Online (Sandbox Code Playgroud)
我忽略了“无法重命名 *.Txt *.txt:没有这样的文件或目录”错误,如果我发现缺少扩展名,我只需将该行添加到我的脚本中。
我认为这无关紧要,但文件位于 Windows 服务器文件共享上,但我使用 Ubuntu 16.04LTS 访问它。如果确实重要,那么我可以先将它们复制到我的本地驱动器,在 Ubuntu 中运行命令,然后根据需要将文件移回。
有没有办法修改第一个重命名命令以忽略扩展名并将它们保留为小写?我可以在更高级别的目录中运行新命令,并让它在所有子目录中递归吗?
我想在启动时运行脚本 temp-throttle ( https://github.com/Sepero/temp-throttle )并显示自定义 Plank icon。
如果像这样运行,脚本会将 CPU 频率限制在 79 摄氏度
sudo ./temp_throttle.sh 79
Run Code Online (Sandbox Code Playgroud)
因为它需要在cd脚本路径之后如上指定温度,所以需要第二个脚本。
sudo ./temp_throttle.sh 79
Run Code Online (Sandbox Code Playgroud)
我已经叫那个temp-throttle,把它放在$HOME/bin,指示在这里。
为了获得有关情况的一些信息,我已将该命令集成到终端命令中,并添加-p hold了设置终端配置文件以保持终端窗口打开的功能。
如果我将该脚本添加到启动应用程序列表中,Plank 中使用的图标就是终端的图标。
我希望它在启动时运行并在 Plank 中显示我的自定义“temp.png”图标
为此,我~/.local/share/applications/temp-throttle.desktop使用以下几行创建了文件:
[Desktop Entry]
Type=Application
Name=temp-throttle
Icon=temp
Categories=System;Monitor;
Exec=temp-throtle
Run Code Online (Sandbox Code Playgroud)
直接执行(双击)它会在 Plank 中显示终端图标。
我可以让码头使用自定义的“临时”图标,通过执行.desktop从应用程序文件搜索和启动工具(如弹弓)或命令gtk-launch temp-throttle(如建议在这里)。
之后,自定义 Plank 图标当然可以固定到 Dock(右键单击,“Keep in Dock”)。这将创建/home/cipeos/.config/plank/dock1/launchers/temp-throttle.dockitem带有行的文件
[PlankDockItemPreferences]
Launcher=file:///home/cipeos/.local/share/applications/temp-throttle.desktop
Run Code Online (Sandbox Code Playgroud)
正如pauljohn32的回答中所建议的那样。他似乎还在评论中暗示,这里重要的是对所有涉及的文件使用完全相同的名称:我的所有文件都被称为temp-throttle …
背景
操作系统:在 VirtualBox 上运行的 Ubuntu 16.04 x64
我是一名 Ubuntu/Linux 知识最少的开发人员,并已被分配到一个项目,该项目的目标是在与某些端点通信时利用tcpcrypt。
tcpcrypt 带有一个 shell 脚本,它在 iptables 中设置所需的条目,以将数据包路由到 tcpcrypt 以进行加密/解密。执行此脚本后 iptables 看起来像:
筛选
Chain INPUT (policy ACCEPT 4 packets, 552 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- lo any anywhere anywhere tcp dpt:65530 tos match0x22/0xff
0 0 NFQUEUE tcp -- any any !localhost anywhere tcp dpt:65530 flags:FIN,SYN,RST,PSH,ACK,URG/SYN NFQUEUE num 666
0 0 NFQUEUE tcp -- any any anywhere anywhere multiport sports !ssh,261,https,nntps,614,ldaps,684,695,ftps-data,ftps,telnets:pop3s …Run Code Online (Sandbox Code Playgroud) 我想提出一个更进一步的问题,具体取决于您选择的答案。
我的脚本中的问题是:
zenity --question --text="Would you like to participate in a little form?"
Run Code Online (Sandbox Code Playgroud)
_
完整脚本
zenity --question --text="Would you like to participate in a little form?"
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我是这个平台的新手。我有关于rc.local 的问题。我创建了一个脚本来自动运行roscore和roslaunch rosbridge_server rosbridge_websocket.launch。此脚本名称为auto,脚本内容为:
#!/bin/sh
cd $home
xterm -hold -e "roscore" &
xterm -hold -e "roslaunch rosbridge_server rosbridge_websocket.launch"
exit 0
Run Code Online (Sandbox Code Playgroud)
我必须在 rc.local 中运行这个脚本。创建的 rc.local 文件是:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just …Run Code Online (Sandbox Code Playgroud)