拆分问题:这里的另一个是针对 Windows 的。
Linux:从命令行禁用互联网(保持 LAN)的最快方法?
我认为在 Linux 中停用互联网(而不是 LAN)的最简单方法是删除默认网关,因此,假设 LAN 是 10.0.2.0/24 并且网关是 10.0.2.1 :
sudo /sbin/route del default gw 10.0.2.1
Run Code Online (Sandbox Code Playgroud)
要重新激活互联网:
sudo /sbin/route add default gw 10.0.2.1
Run Code Online (Sandbox Code Playgroud)
但是,即使这是一条简单的线路,也需要先发现默认网关 IP:
sudo /sbin/route
Run Code Online (Sandbox Code Playgroud)
我将构建一些需要启用/禁用互联网(但保持 LAN 正常工作)的通用 shell 脚本,所以看来我需要一些(¿ grep,也许?)操作来过滤和检测确切的网关 IP 号(它可能是 10.0.2.1、127.0.0.1、127.0.50.1、192.168.0.1 ...等),除非我找到了一个更简单的命令行。
有什么想法吗?
有没有办法(工具)使用 Linux shell 编辑 XLSX 文件?我需要的是一种从第一个工作表中删除最后三个非空行的方法。
我知道 XLSX 只是一个 zip 文件,其中包含不同的 XML 文件,我可以单独编辑这些文件。但是,如果可能,我想避免自己分析和更改 XML 文件。
我正在尝试编写一个命令,该命令将启动几个终端选项卡,在每个选项卡中执行某些操作,并在命令完成后让每个选项卡保持打开状态,以便我可以查看输出并在每个选项卡中键入更多命令
像这样:
gnome-terminal --tab -e "ls -a" --tab -e "ls"
但问题在于,一旦“ls”命令完成,选项卡就会关闭。有谁知道如何让标签保持打开状态?
我有几个 RAR 档案分布在多个目录中,但都在我基于 Debian 的 NAS 上的特定根文件夹下。有人可以帮我写一个简单的脚本,它会递归地进入每个文件夹,解压缩内容,回到父文件夹并移动到下一个目录吗?所以:
cd Photos/Summer/Italy/
unrar e Italy.rar
wait
cd ../France/
unrar e France.rar
wait
etc...
Run Code Online (Sandbox Code Playgroud)
所以只需将它指向根文件夹“照片”,它就会快速浏览它,在途中解开所有东西......
例如,目录结构:
*Photos:
-Summer
--Italy
---Italy.rar
---Italy.r01
---Italy.r02
--France
---France.rar
---France.r01
---France.r02
-Winter
--Siberia
---Siberia.rar
---Siberia.r01
---Siberia.r02
--Canada
---Snow.rar
---Snow.r01
---Snow.r02
Run Code Online (Sandbox Code Playgroud) 我在 Windows 机器上创建了一个 .sh 脚本文件。我想双击运行它。如果我打开 Cygwin 终端并使用“sh”命令手动启动它,它会毫无问题地运行。
当我将 .sh 文件结尾与 c:\cygwin\bin\sh.exe 关联并双击 script.sh 时,终端会弹出一毫秒,然后消失无效。我认为问题是 sh.exe 需要像这样启动:
C:\cygwin64\bin\sh.exe --login –i
Run Code Online (Sandbox Code Playgroud)
但是我如何告诉 Windows 运行这样的 .sh 文件呢?
键入命令:
% route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 2 0 0 wlan0
link-local * 255.255.0.0 U 1000 0 0 wlan0
(... hang for a while ...)
default 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
Run Code Online (Sandbox Code Playgroud)
在这里,在default打印最后一行规则之前,路由只是挂了一会儿。
路由表不是缓存在某处吗?
我曾经通过 grep 结果route来获取default规则,以获取默认网关。现在,route似乎在某些机器上挂了一段时间。
我有一个 plist 文件,我对使用 shell 脚本从嵌套字典中获取值很感兴趣。这是我的 plist 文件的结构:
<dict>
<key>Countries</key>
<dict>
<key>USA</key>
<dict>
<key>Capital</key>
<string>Washington DC</string>
<key>Continent</key>
<string>North America</string>
</dict>
<key>Italy</key>
<dict>
<key>Capital</key>
<string>Rome</string>
<key>Continent</key>
<string>Europe</string>
</dict>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
如果用户提供国家/地区名称,我有兴趣获取分配给“Capital”键的值。
例如,如果我执行以下命令,我会在“国家/地区”字典下获得完整的数据。
defaults read "/Users/sameerp/Downloads/data" Countries 2>&1
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
{
Italy = {
Capital = Rome;
Continent = Europe;
};
USA = {
Capital = "Washington DC";
Continent = "North America";
};
}
Run Code Online (Sandbox Code Playgroud)
如何修改上面的命令以将“国家”键(例如美国)传递给它并获取“资本”键的值?
起初,我正在寻找which在给它某些程序作为参数后不输出任何内容的原因,例如cd.
从我在这里发现的情况来看,原因可能是cd我的机器上有一个函数,通过运行type cd.
TLDR:但是由于which可以通过$PATH变量定位的普通程序放置在这些$PATH文件夹之一中,函数或脚本cd存储在哪里?
user@linuxmchine:~$ type cd
cd is a function
cd ()
{
__zsh_like_cd cd "$@"
}
Run Code Online (Sandbox Code Playgroud) 我有一个 bash 脚本设置来执行一些 curl 请求
for currency in EUR INR JPY
do
curl -i --data '{"currency": "'$currency'"}' -H "Accept: application/json" -H "Content-Type: application/json" http://0.0.0.0:8080/price && echo
done
Run Code Online (Sandbox Code Playgroud)
如果其中一个 curl 响应以 http 状态 != 200 返回,有没有办法让脚本退出?
我还想保留标准的 curl 输出,例如我不想要一个只打印 http 状态代码的解决方案。
干杯
shell-script ×10
linux ×5
bash ×2
script ×2
shell ×2
command-line ×1
curl ×1
cygwin ×1
dictionary ×1
double-click ×1
gateway ×1
grep ×1
internet ×1
macos ×1
nas ×1
networking ×1
plist ×1
rar ×1
routing ×1
windows ×1