标签: shell-script

grep 改变分隔符

我们可以通过什么方式更改使用grep的分隔符?

我认为,默认情况下,grep\n用作分隔符。

linux grep shell-script

13
推荐指数
1
解决办法
3万
查看次数

Linux 命令行:禁用互联网(保持 LAN)的快速方法?

拆分问题:这里的另一个是针对 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 ...等),除非我找到了一个更简单的命令行。
有什么想法吗?

networking linux internet command-line shell-script

13
推荐指数
1
解决办法
2万
查看次数

如何使用 linux shell 编辑 Excel 文件 (xlsx)

有没有办法(工具)使用 Linux shell 编辑 XLSX 文件?我需要的是一种从第一个工作表中删除最后三个非空行的方法。

我知道 XLSX 只是一个 zip 文件,其中包含不同的 XML 文件,我可以单独编辑这些文件。但是,如果可能,我想避免自己分析和更改 XML 文件。

linux shell shell-script microsoft-excel

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

在 gnome-terminal 中以编程方式打开选项卡,执行命令,并使选项卡保持打开状态

我正在尝试编写一个命令,该命令将启动几个终端选项卡,在每个选项卡中执行某些操作,并在命令完成后让每个选项卡保持打开状态,以便我可以查看输出并在每个选项卡中键入更多命令

像这样:

gnome-terminal --tab -e "ls -a" --tab -e "ls"

但问题在于,一旦“ls”命令完成,选项卡就会关闭。有谁知道如何让标签保持打开状态?

linux shell-script gnome-terminal

12
推荐指数
2
解决办法
1万
查看次数

几个文件夹的递归解压缩

我有几个 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)

script nas rar shell-script

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

使用 Cygwin 在 Windows 上双击运行 .sh 文件

我在 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 文件呢?

windows cygwin file-association shell-script double-click

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

为什么在转储路由表之前`route`会挂起一段时间?

键入命令:

% 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似乎在某些机器上挂了一段时间。

routing gateway shell-script

11
推荐指数
1
解决办法
7401
查看次数

从 shell 脚本中的 plist 嵌套字典中读取值

我有一个 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)

如何修改上面的命令以将“国家”键(例如美国)传递给它并获取“资本”键的值?

shell-script dictionary plist macos

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

Linux 上的 shell 函数存储在哪里?

起初,我正在寻找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)

linux bash shell-script

11
推荐指数
3
解决办法
9956
查看次数

当 curl 获得非 200 HTTP 状态时退出 bash 脚本

我有一个 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 状态代码的解决方案。

干杯

script bash shell shell-script curl

11
推荐指数
1
解决办法
8486
查看次数