小编Cyr*_*rus的帖子

将新目录添加到 PATH 与 PATH 中已有目录的符号链接

在设置它以便我可以从 bash 执行 Sublime Text 时,我通过不同的教程发现了两种方法:

方法 1) 从/usr/local/bin/sublSublime 的 bin 目录创建一个符号链接:

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl

这利用/usr/local/bin了我的 PATH 变量中已经存在的优势。

...或者...

方法 2) 更新您的 PATH 以包含 Sublime 的 bin 文件夹的路径:

export PATH="/Applications/Sublime Text.app/Contents/SharedSupport/bin/":$PATH

两者都有效,但我想知道一种方法是否比另一种更好,或者它们是否同样好?

我可能会看到的唯一优势是方法 1,如果在 PATH 目录中使用较少的目录是否有益(寻找可执行文件的速度/性能?)。

shell bash path symlink

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

如何再次恢复默认的 .bashrc 文件?

我不小心更改了文件的所有内容.bashrc,而且我还没有编写脚本,所以现在没有问题。我向其中添加了一些小脚本(只有几个alias),这样我就可以一一重新编写它们。

如何使用默认设置恢复 .bashrc 文件?

我使用 Linux Mint。

bash linux-mint files deleted-files

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

我可以更改选择选项的显示方式吗?

我正在 bash 中使用 select 和 case。我目前有九个选项,它们构成了一个漂亮、整洁的 3x3 选项网格,但它显示如下:

    1) show all elements  4) write to file      7) clear elements
    2) add elements       5) generate lines     8) choose file
    3) load file          6) clear file         9) exit
Run Code Online (Sandbox Code Playgroud)

我更喜欢它在列之前的行中显示:

1) show all elements  2) add elements    3) load file
4) write to file      5) generate lines  6) clear file  
7) clear elements     8) choose file     9) exit
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这一点吗?最好在脚本中易于设置和取消设置,例如 shell 选项。如果重要,选项存储在一个数组中,并通过数组的索引在 case 块中引用。

OPTIONS=("show all elements" "add elements" "load file" "write to file" …
Run Code Online (Sandbox Code Playgroud)

bash shell-script select

9
推荐指数
1
解决办法
5107
查看次数

如何在 lsof 中显示“人类可读”的大小 | grep /var*

我目前正在尝试查看所有使用 /var mount 的文件。

随着lsof | grep /var*当它以字节为单位显示大小。如何以 MB 为单位显示文件大小。

谢谢你。

command-line bash terminal shell-script lsof

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

更改输入文本的颜色,而不是输出

我需要捕获终端的屏幕截图,其中键入的命令在视觉上“脱颖而出”。现在我正在使用它来使我输入的命令变为“红色”:

PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[0;31m\]'
Run Code Online (Sandbox Code Playgroud)

问题是:提示后的一切都是红色的,不仅仅是我输入的文字

红色 linux 输出

我怎样才能解决这个问题?

我正在使用 bash (CentOS 7)。

colors bash terminal centos

8
推荐指数
1
解决办法
4846
查看次数

比较关于文件名(以及大小和日期)的目录树

我想检查从备份还原的结果。这是因为 MacOS 上的 TimeMachine 给了我一些奇怪的错误和警告,我想确保在恢复后一切都恢复原状。虽然我不相信 TimeMachine 会放回每个文件,但我相信它会将它恢复的每个文件都放回正确的内容。

我想过 diff -r,但经历大约 300 GiB 可能需要永远。我可以至少比较文件的存在,但在同一次运行中比较大小和日期更好。

我知道像这样的解决方案

diff <(ls -R $PATH1) <(ls -R $PATH2)
Run Code Online (Sandbox Code Playgroud)

但输出难以阅读。我宁愿每个文件只在一侧找到一行。此外,我必须依靠 ls 以相同的顺序在双方的树中进行。这可能不同,因为文件系统可能不同。

我最想得到一个懒惰的工具,它采用两条路径,输出差异达到任何所需的检查水平,也许是 macports 之外的东西。但我不害怕大量的抨击。

osx bash backup diff

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

grep 第一列 uniq 值

两列 A 和 B:A 列具有重复的 id,B 列对于每个对应的重复值具有不同的值。我想读取 A 列中的每个 uniq 值,仅读取 B 列中的第一个命中

文件_B.txt

1
A2
乙 3
乙 2
乙 4
1
C 5
4
3
2

输出:

1
乙 3
1
4
2

grep awk

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

使用 Shell 从 KML 中提取海平面压力

我目前正在做一个小项目;在一个名为weatherdata.kml的kml文件中,我想提取每个<Placemark>元素的海平面压力。我正在尝试解析有关海平面压力的信息并将其放入名为report.csv;的文件中。并每次在新行上打印海平面压力。

我认为这会起作用awk,到目前为止我已经尝试过:

 awk -F '[>,]' '/minSeaLevelPres/ {print $2}' report.csv
Run Code Online (Sandbox Code Playgroud)

但是当我在 shell 中运行此命令时,我得到以下信息:

1002</minSeaLevelPres
1002</minSeaLevelPres
1002</minSeaLevelPres
1001</minSeaLevelPres
1001</minSeaLevelPres
1001</minSeaLevelPres
1001</minSeaLevelPres
1001</minSeaLevelPres
1001</minSeaLevelPres
1001</minSeaLevelPres
1001</minSeaLevelPres
1002</minSeaLevelPres
1002</minSeaLevelPres
1003</minSeaLevelPres
Run Code Online (Sandbox Code Playgroud)

当我想得到这个时:

1002
1002
1002
1001
1001
1001
1001
1001
1001
1001
1001
1002
1002
1003
Run Code Online (Sandbox Code Playgroud)

我不知道如何摆脱</minSeaLevelPres。有人可以帮忙吗?

下面是地标元素的一部分的示例weatherdata.kml

 <Placemark>
        <styleUrl>#ex</styleUrl>
        <lat>19.2</lat>
        <lon>-24.1</lon>
        <stormName>NINE</stormName>
    <stormNum>10</stormNum>
    <basin>AL</basin>
        <stormType>LO</stormType>
        <intensity>20</intensity>
           <intensityMPH>23</intensityMPH>
           <intensityKPH>37</intensityKPH>
           <minSeaLevelPres>1002</minSeaLevelPres>
           <atcfdtg>2020082350</atcfdtg>
        <dtg>0000 UTC JAN 07</dtg>
       </Placemark>
Run Code Online (Sandbox Code Playgroud)

xml awk geolocation

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

grep - 打印 grep 当前正在搜索的文件的文件名

我在获取grep找到匹配项的文件名时没有问题,但是,我正在搜索的文件层次结构中的某些内容需要永远(数小时)来搜索(它是 2000 个文件中的 1.4 GB 数据) SSD 所以它不应该花那么长时间),我想知道什么。因此,我想要某种详细的输出,其中 grep 在处理它们时列出每个文件。

如何才能做到这一点?

在 Mac 上使用 BSD grep。

grep macos

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

Bash 中这两种关联数组声明有什么区别?

我在 Bash 中玩了一下关联数组,在使用和不使用 声明完全相同的关联数组时发现了以下差异declare。代码如下:

#!/usr/bin/env bash

echo -e "\n\nASSOCIATIVE ARRAY\n"
declare -A MY_MAP=( 
    [Madrid]="Spanish" 
    [London]="English" 
    [Paris]="French" 
    [1]=2
    [3]=3.14 
)
echo "First element: $MY_MAP"
echo "Whole content as single string: ${MY_MAP[*]}"
echo "Whole content quoted separately: ${MY_MAP[@]}"
echo "List of indices: ${!MY_MAP[@]}"
echo "Array length: ${#MY_MAP[*]}"
echo "Array length: ${#MY_MAP[@]}"
echo "Second element: ${MY_MAP[London]}"
echo "Last 2 elements: ${MY_MAP[@]:1:3}"

echo -e "\n\nASSOCIATIVE ARRAY - 2\n"
MY_MAP2=( 
    [Madrid]="Spanish" 
    [London]="English" 
    [Paris]="French" 
    [1]=2
    [3]=3.14 
)
echo "First element: $MY_MAP2"
echo "Whole content …
Run Code Online (Sandbox Code Playgroud)

shell bash array shell-script associative-array

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

我可以在 bash 中为别名创建别名吗?

在某些情况下,我需要为一组命令创建一个正式的别名,它的作用与原始软件相同。喜欢:

alias ipython3="source /Users/zen1/miniconda2/bin/activate py3k; ipython; source /Users/zen1/miniconda2/bin/deactivate;"
Run Code Online (Sandbox Code Playgroud)

但是因为我很懒,所以我想为 alias 使用另一个别名ipython3,顺其自然ipy3,我可以通过复制ipython3的内容来做到这一点。但这太笨拙了。

是否有一些 magic_func 以便alias ipy3=magic_func("ipython3")可以获得ipython3使用时的别名内容ipy3


PS: ipython3应该保留是因为它是官方的触发命令ipython for python 3,在我的电脑上无法正常安装。

command-line bash alias

0
推荐指数
1
解决办法
757
查看次数