小编Pet*_*r.O的帖子

我的命令替换中的尾随换行符在哪里?

下面的代码最好地描述了这种情况。为什么最后一行不输出尾随换行符?每行的输出都显示在注释中。我使用的是GNU bash,版本 4.1.5

     echo -n $'a\nb\n'                  | xxd -p  # 610a620a  
           x=$'a\nb\n'   ; echo -n "$x" | xxd -p  # 610a620a
     echo -ne "a\nb\n"                  | xxd -p  # 610a620a
x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p  # 610a62
Run Code Online (Sandbox Code Playgroud)

command-line shell text-processing command-substitution

15
推荐指数
2
解决办法
3379
查看次数

为什么感叹号 `!` 有时会打乱 bash?

我意识到这!在命令行历史上下文中对命令行具有特殊意义,但除此之外,在运行脚本中,感叹号有时会导致解析错误。
我认为它与 an 有关event,但我不知道事件是什么或它做什么。即便如此,相同的命令在不同情况下的行为也会有所不同。
下面的最后一个示例导致错误;但是为什么,当相同的代码在命令替换之外工作时呢?.. 使用 GNU bash 4.1.5

# This works, with or without a space between ! and p
  { echo -e "foo\nbar" | sed -nre '/foo/! p'
    echo -e "foo\nbar" | sed -nre '/foo/!p'; }
# bar
# bar

# This works, works when there is a space between ! and p
  var="$(echo -e "foo\nbar" | sed -nre '/foo/! p')"; echo "$var"
# bar

# This causes an ERROR, with NO …
Run Code Online (Sandbox Code Playgroud)

bash command-history quoting

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

在`while IFS= read..`中,为什么IFS没有效果?

我可能有一些绝对错误的地方,但对我来说看起来很有说服力,将 IFS 设置为pre-do/done 列表中的命令之一绝对没有效果。
外部 IFS(while构造外部)在下面脚本中显示的所有示例中都占优势。

这里发生了什么?我对 IFS 在这种情况下的作用有什么误解吗?我希望数组拆分结果如“预期”列中所示。


#!/bin/bash
xifs() { echo -n "$(echo -n "$IFS" | xxd -p)"; } # allow for null $IFS 
show() { x=($1) 
         echo -ne "  (${#x[@]})\t |"
         for ((j=0;j<${#x[@]};j++)); do 
           echo -n "${x[j]}|"
         done
         echo -ne "\t"
         xifs "$IFS"; echo
}
data="a  b   c"
echo -e "-----   --  -- \t --------\tactual"
echo -e "outside        \t  IFS    \tinside" 
echo -e "loop           \t Field   \tloop" 
echo -e "IFS     NR  NF \t …
Run Code Online (Sandbox Code Playgroud)

shell text-processing environment-variables

14
推荐指数
2
解决办法
7637
查看次数

wc -L 报告制表符的行长度为 8。错误或功能?

-L是 的一个有用功能wc,或者我认为。它打印最长行的长度。出于某种原因,它将单字节 tab-char 扩展到 8 的长度。
有什么方法可以将其设置为不“扩展”选项卡?这种扩张背后的原因可能是什么?

echo -n $'\t' | wc -L
Run Code Online (Sandbox Code Playgroud)

产出 8

wc (GNU coreutils) 7.4
GNU bash,版本 4.1.5

text-processing

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

当我肯定有 4.0 GiB 时,为什么我的系统只显示 3.2 GiB 的 RAM

我安装了 2x2 GiB 内存条。从 grub 启动菜单
运行memtest86确认了这一点.. memtest86 没有报告错误。

然而,我在运行的 Ubuntu 10.04 系统中检查可用内存的每一种方式,它只报告大约 3.2 GiB。

  • cat /proc/meminfo == 3320132 KB
  • System Monitor == 3.2 GiB
  • htop == 3242 MB
  • free -m == 3242 MB

谁有我丢失的内存?

更新信息:我刚刚在同一硬件上启动到另一个版本的 Ubuntu 10.04(我忘记了几个月前我已经安装了它,以防万一):)....它报告 3.9 GiB,通过System Monitor...

我已/var/log/messageshttp://pastebin.ubuntu.com/629246/ 上发布了我的最新信息

linux memory pae x86

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

如何在 emacs 中为文本着色?

我要查看(和/或编辑)在Emacs着色的文字,如输出的ls -l --color=alwaystree...或者别的什么东西。

我引用的文本存在于文件中。当我在 emacs 中打开该文件时,我希望能够看到它被着色,或者切换它以显示 ANSI (SGR) 转义序列。

ansi-color.el 似乎是我需要的,但我无法让它对 ANSi 转义序列进行任何着色,但我确实看到单个控制字节(例如^A^[)的蓝粗体......我不是确定这是否是 的一个特征ansi-color,但我认为是。

根据ansi-color.el 注释,它可以处理字符串和区域,但即使这样似乎也不起作用.. 例如,该函数ansi-color-apply-on-region不被M-x. 它说,“不匹配”

我已经添加(require 'ansi-color)到我的.emacs文件中,甚至(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on). emacs 启动时我没有收到错误或警告,所以我被卡住了。

如何让标准功能工作,以及在打开名称后缀为 的文件时是否可以自动应用.col

colors emacs

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

IFS(内部字段分隔符)可以用作多个连续分隔符的单个分隔符吗?

使用具有非空白空间值的 IFS 解析数组会创建空元素。
即使使用tr -s将多个 delim 缩小为单个 delim 也是不够的。
一个例子可以更清楚地解释这个问题..
有没有办法通过调整 IFS 来实现“正常”结果(是否有相关的设置来改变 IFS 的行为?.... 即与默认空格相同国际金融服务公司。

var=" abc  def   ghi    "
echo "============== IFS=<default>"
arr=($var)
for x in ${!arr[*]} ; do
   echo "# arr[$x] \"${arr[x]}\""
done
#
sfi="$IFS" ; IFS=':'
set -f # Disable file name generation (globbing)
       # (This  data won't "glob", but unless globbing     
       #  is actually needed, turn if off, because   
       #  unusual/unexpected combinations of data can glob!
       #  and they can do it in …
Run Code Online (Sandbox Code Playgroud)

shell scripting bash

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

为什么按名称删除文件既慢又特别快?

失礼:我在下面提到的“快速”方法并不比慢速方法快 60 倍。它快了 30 倍。我会把错误归咎于这个小时(凌晨 3 点不是我一天中清晰思考的最佳时间:)。

更新:我添加了测试时间摘要(如下)。
速度因素似乎涉及两个问题:

  • 所用命令的选择(时间比较如下所示)
  • 目录中大量文件的性质......似乎“大是坏”。随着数字的增加,事情变得不成比例地变慢。

所有的测试都是用 100 万个文件完成的。
(真实时间、用户时间和系统时间在测试脚本中)
测试脚本可以在paste.ubuntu.com找到

#
# 1 million files           
# ===============
#
#  |time   |new dir   |Files added in  ASCENDING order  
#  +----   +-------   +------------------------------------------------- 
#   real    01m 33s    Add files only (ASCENDING order) ...just for ref.
#   real    02m 04s    Add files, and make 'rm' source (ASCENDING order) 
#                      Add files, and make 'rm' source (DESCENDING order) 
#   real    00m 01s    Count of filenames
# …
Run Code Online (Sandbox Code Playgroud)

filesystems bash ext4

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

'nix 可以处理 NTFS ADS 数据流吗?

两三年前,我(在 Windows 中)使用 NTFS ADS 元数据(备用数据流)进行了试验。这似乎是一个有趣的想法,但它肯定不是“可移植的”。

是否有可以读取和/或写入此 ADS 数据的 NTFS-ADS 感知工具?
此外,是否有任何`nix 常用/首选文件系统支持类似的辅助流”?

ntfs

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

有两种方法可以通过命令行设置 awk 变量吗?

我注意到一个 O'Reillyawk示例(1997),它通过在程序文本之后的命令行上设置它来分配一个 awk 变量。它确实有效,但我在man / info awk 中找不到这种语法。我刚刚错过了吗?它被贬低了吗……?我在手册中看到的唯一语法是-v选项。

awk '/home/{print foo, bar}' foo="cat" bar="dog" /proc/$$/cmdline
Run Code Online (Sandbox Code Playgroud)

输出: cat dog

awk

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