我正在尝试使用jqper here加载 JSON 文件。它非常简单,并且有效:
$ cat ~/Downloads/json.txt | jq '.name'
"web"
Run Code Online (Sandbox Code Playgroud)
但是,我需要将此变量的输出分配给命令。我试图这样做,这有效:
$ my_json=`cat ~/Downloads/json.txt | jq '.name'`
$ myfile=~/Downloads/$my_json.txt
$ echo $myfile
/home/qut/Downloads/"web".txt
Run Code Online (Sandbox Code Playgroud)
但我想要/home/qut/Downloads/web.txt。
如何删除引号,即更改"web"为web?
我在 bash 变量中有一个 Windows 路径作为字符串:
file='C:\Users\abcd\Downloads\testingFile.log'
Run Code Online (Sandbox Code Playgroud)
我正在尝试将此路径转换为以/c/Users....
我的尝试
以下工作:
file=${file/C://c}
file=${file//\\//}
echo $file
> /c/Users/abcd/Downloads/testingFile.log
Run Code Online (Sandbox Code Playgroud)
问题
在这里,我为包含文件路径的字符串执行了此操作。我问这个问题的原因是我必须在 Ubuntu 16.04 的 bash 脚本中转换 20 个这样的字符串,每次我这样做时,我必须为每次转换写 2 行 - 它占用了大量空间!
题
有没有办法组合这两个命令
file=${file/C://c}
file=${file//\\//}
Run Code Online (Sandbox Code Playgroud)
成一个命令?
我正在寻找一个文本文件,其中包含一些可用软件包及其最新版本的列表。我需要在同一行中包含包名称及其最新版本。
试图
目前,我可以获得单个包的版本号:
示例 1:
apt-cache show python-numpy | grep Version
Run Code Online (Sandbox Code Playgroud)
这给了我 1 行输出:
Version: 1:1.8.2-2
Run Code Online (Sandbox Code Playgroud)
例子2:
apt-cache show mysql-server | grep Version
Run Code Online (Sandbox Code Playgroud)
这给了我 1 行输出:
Version: 5.5.44-0+deb8ul
Run Code Online (Sandbox Code Playgroud)
问题:
我感兴趣的包不止一个。
要求
我正在寻找的是包名称和版本 - 我想要这种格式:
python-numpy 1.8.2-2
mysql-server 5.5.44-0
python-six 1.8.0-1
python-wheel 0.24.0-1
apache2 2.4.10-10
python-urllib3 1.9.1-3
python-setuptools 5.5.1-1
Run Code Online (Sandbox Code Playgroud)
如果可能,我希望将这 6 行写入“Output.txt”。如果不可能在同一个文件中获得所有这些行,那么我只想python-numpy 1.8.2-2在输出文件中获得上面的第一行。
题:
目前,我可以单独获取每个包的名称和版本。但是,有没有办法自动执行此过程并一次性完成所有操作?
编辑:
我正在寻找的唯一包是:
python-wheel
python-numpy
mysql-server
python-setuptools
python-six
apache2
python-urllib3
Run Code Online (Sandbox Code Playgroud) 我必须编辑一些文件以取消注释一行、更改该行上的值或取消注释一行。我正在尝试通过 bash 脚本来做到这一点。
我正在尝试编辑/etc/ssh/sshd_config和更改
IgnoreRhosts yes
#RhostsRSAAuthentication no
Run Code Online (Sandbox Code Playgroud)
到
IgnoreRhosts no
RhostsRSAAuthentication no
Run Code Online (Sandbox Code Playgroud)
和改变
#PermitRootLogin yes
Run Code Online (Sandbox Code Playgroud)
到
PermitRootLogin no
AllowUsers mroberts
Run Code Online (Sandbox Code Playgroud)
并且还编辑/etc/pam.d/system-auth文件以便从
password sufficient pam_unix.so try_first_pass use_authtok nullok md5
Run Code Online (Sandbox Code Playgroud)
到
password sufficient pam_unix.so try_first_pass use_authtok nullok md5 shadow
Run Code Online (Sandbox Code Playgroud)
我还需要将此行添加到/etc/pam.d/system-auth文件中:
/etc/pam.d/system-auth file password required pam_unix.so remember=10
Run Code Online (Sandbox Code Playgroud)
我一直在使用手动完成所有这些操作,vi并且可以通过该编辑器进行更改。但是,我必须在许多主机上执行此过程,而且我无法一次在一台主机上重复该过程。我在一个忘记添加的地方犯了一个错误,AllowUsers mroberts并且被主机锁定了将近 36 个小时。
我不确定如何搜索一行并更改其中的一部分而不是整行。
有没有办法从终端或通过 bash 脚本进行此类更改?