小编cha*_*aos的帖子

为您的终端和 shell 环境着色?

我大部分时间都在 Unix 环境中工作并使用终端模拟器。我尝试在命令行上使用颜色,因为颜色使输出更加有用和直观。

有哪些选项可以为我的终端环境添加颜色?你用什么技巧?你遇到过哪些陷阱?

不幸的是,对颜色的支持因终端类型、操作系统、TERM 设置、实用程序、错误实现等而异。

经过大量实验,以下是我的设置中的一些提示:

  1. 我倾向于设置TERM=xterm-color,大多数主机(但不是全部)都支持。
  2. 我在许多不同的主机、不同的操作系统版本等上工作。我使用 macOS?X、Ubuntu Linux、RHEL/CentOS/Scientific Linux 和 FreeBSD 中的所有内容。如果可能的话,我试图让事情保持简单和通用。
  3. 我使用 GNU 做了很多工作screen,这增加了另一层乐趣。
  4. 许多操作系统dircolors默认设置类似和,我不想在一百个不同的主机上修改它。所以我尝试坚持使用默认值。相反,我调整了终端的颜色配置。
  5. 对某些Unix 命令ls, grep, less, vim)和Bash 提示符使用颜色。这些命令似乎使用标准的“ ANSI 转义序列”。例如:

    alias less='less --RAW-CONTROL-CHARS'
    export LS_OPTS='--color=auto'
    alias ls='ls ${LS_OPTS}'
    
    Run Code Online (Sandbox Code Playgroud)

我会发布我的.bashrc并回答我自己的问题 Jeopardy Style。

shell colors bash prompt

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

如何从cat输出中读取第一行和最后一行?

我有文本文件。任务 - 之后从文件中获取第一行和最后一行

$ cat file | grep -E "1|2|3|4" | commandtoprint

$ cat file
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

在没有 cat 输出的情况下需要这个(只有 1 和 5)。

~$ cat file | tee >(head -n 1) >(wc -l)
1
2
3
4
5
5
1
Run Code Online (Sandbox Code Playgroud)

也许存在 awk 和更短的解决方案......

shell grep bash sed awk

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

清除 apt-get 列表

我正在为基于 Debian 的嵌入式 Linux 构建映像。我apt-get update之前确实在我想用作该图像基础的设备上使用过,因此下面的列表/var/lib/apt/lists非常大(大小接近 100 MB)。

我想保留apt-get功能(所以我不想删除 apt 存储库)但我想释放这些列表中使用的空间(列表几乎是图像大小的两倍)。

有谁知道这是怎么做到的吗?我可以删除下面的文件/var/lib/apt/lists吗?

debian apt package-management

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

什么是“子收割者”过程?

一些答案中使用了“subreaper”这个词。搜索谷歌也会出现“刚刚使用”这个词的条目。

我如何理解什么是“子收割者”?

process process-management linux-kernel

46
推荐指数
1
解决办法
8974
查看次数

反向搜索

比方说,我有一个非常大的文本文件(大约 10.000.000 行)。我需要grep从头开始并将结果保存到文件中。完成任务的最有效方法是什么?

command-line grep sed awk efficiency

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

大于 1 GB 且超过 6 个月的文件

我想在整个服务器中查找大于 1 GB 且超过 6 个月的文件。如何为此编写命令?

command-line find shell-script files

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

如何在RAM中创建临时文件?

我有一个脚本可以将其输出通过管道传输到|tee scriptnameYYMMDD.txt. 在生成输出的 for 循环的每个循环之后,我将反转文件内容,tac scriptnameYYYYMMDD.txt > /var/www/html/logs/scriptname.txt以便日志输出在浏览器窗口中可见,最新的行位于顶部。

我将有几个脚本并行执行此操作。我正在尝试最小化磁盘活动,因此|tee scriptnameYYYYMMDD.txt最好从RAMdisk输出。mktemp/tmp文件夹中创建一个文件,但它似乎不在磁盘上。

filesystems scripting shell-script tmp files

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

是否有支持 unicode 的 sed 替代方案?

例如:

sed 's/\u0091//g' file1
Run Code Online (Sandbox Code Playgroud)

现在,我必须做得到hexdump十六进制数并输入sed如下:

$ echo -ne '\u9991' | hexdump -C
00000000  e9 a6 91                                          |...|
00000003
Run Code Online (Sandbox Code Playgroud)

进而:

$ sed 's/\xe9\xa6\x91//g' file1
Run Code Online (Sandbox Code Playgroud)

sed unicode hexdump

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

如果不在 $PATH 中,则将路径添加到 $PATH

我需要在bash脚本中添加一个路径,但它可能会被执行多次:

export PATH=${OPENSHIFT_HOMEDIR}/app-root/runtime/bin/:${PATH}
Run Code Online (Sandbox Code Playgroud)

我不想一遍又一遍地添加该路径。如果还没有,我如何添加它$PATH

scripting bash path shell-script

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

我有什么理由不将 /usr/local/sbin、/usr/sbin、/sbin 添加到我在 Debian 上的路径中吗?

比较 Debian(左)和 Ubuntu(右):

$ ifconfig                                 $ ifconfig
bash: ifconfig: command not found          eth0     Link encap ...
$ which ifconfig                           $ which ifconfig
$                                          /sbin/ifconfig
Run Code Online (Sandbox Code Playgroud)

然后作为超级用户:

# ifconfig                                 # ifconfig
eth0      Link encap ...                   eth0     Link encap ...
# which ifconfig                           # which ifconfig
/sbin/ifconfig                             /sbin/ifconfig
Run Code Online (Sandbox Code Playgroud)

此外:

# ls -l /sbin/ifconfig                     # ls -l /sbin/ifconfig
-rwxr-xr-x 1 root root 68360 ...           -rwxr-xr-x 1 root root 68040 ...
Run Code Online (Sandbox Code Playgroud)

在我看来,ifconfig没有超能力就无法在 Debian 上运行的唯一原因是它不在我的道路上。当我使用/sbin/ifconfig它时确实有效。

有什么理由应该添加/usr/local/sbin:/usr/sbin:/sbin到我在 Debian 上的路径中吗?这是一台个人电脑,我是唯一的人类用户。 …

fhs ubuntu debian

28
推荐指数
1
解决办法
9828
查看次数