小编dot*_*hen的帖子

注释从最后注释行到'foo'行的所有行

考虑一个文本文件users.txt

#alice
#bob
charlie
dotan
eric
Run Code Online (Sandbox Code Playgroud)

我需要评论从 (exclusive) 最后一条评论行到 (inclusive) 的所有内容dotan。这是结果:

#alice
#bob
#charlie
#dotan
eric
Run Code Online (Sandbox Code Playgroud)

有没有一个不错的sedoneliner可以做到这一点?我会对任何工具感到满意,而不仅仅是sed,真的。

目前我正在获取最后评论行的行号,如下所示:

$ cat -n users.txt | grep '#' | tail -n1
  2 #bob
Run Code Online (Sandbox Code Playgroud)

然后我添加一个并评论sed

$ sed -i'' '3,/dotan/ s/^/#/' users.txt
Run Code Online (Sandbox Code Playgroud)

我知道我可以很聪明,把这一切和一些bc东西放在一起,做成一个丑陋的单线。当然必须有更清洁的方法吗?

sed text-processing

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

在 ls 输出中突出显示最后更新的三个文件

有没有办法重载或包装ls命令,以便它突出显示/下划线/否则使最后三个修改过的文件变得明显?

我知道我可以简单ls -rtl地按反向修改时间排序,但我通常确实需要一个按字母顺序排列的文件列表,尽管我想快速识别我自己或另一个开发人员修改的最后一个文件。

linux command-line ls bash

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

cfdisk 还是 fdisk?

在阅读手册页时,fdisk我遇到了这段有趣的文字:

有几个 *fdisk 程序。每个人都有自己的问题和优势。按 cfdisk、fdisk、sfdisk 的顺序尝试它们。(确实,cfdi​​sk 是一个漂亮的程序,它对它接受的分区表有严格的要求,并生成高质量的分区表。如果可以,请使用它。fdisk 是一个有缺陷的程序,它会做一些模糊的事情——通常它会产生合理的分区表)结果。它的唯一优点是它对 BSD 磁盘标签和其他非 DOS 分区表有一定的支持。如果可以,请避免使用它。sfdisk 仅供黑客使用 -- 用户界面很糟糕,但它比 fdisk 更正确,并且比 fdisk 和 cfdisk 都更强大。而且,它可以非交互地使用。)

我注意到两个应用程序的选项格式不同:

 - melancholy():/$ sudo fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00036f1b

   Device Boot      Start         End      Blocks   Id  System …
Run Code Online (Sandbox Code Playgroud)

linux command-line fdisk cfdisk

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

bashrc 懒惰替换

如何在运行时获取~/.bashrc别名来评估$()替换,而不是在执行 ~/.bashrc 时(打开终端时)?

我经常运行这个命令,我想为它添加一个别名:

svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff
Run Code Online (Sandbox Code Playgroud)

但是,当我将它添加~/.bashrc为别名时,我看到评估被硬编码为我打开终端时的值:

$ alias
alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff'
Run Code Online (Sandbox Code Playgroud)

如果我在其中打开终端,~则会收到错误消息:

svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not …
Run Code Online (Sandbox Code Playgroud)

shell bash alias quoting bashrc

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

`ls -l` 中 KiB 范围的不同颜色

有没有什么理智的方法可以突出显示文件大小右侧的第 4、5 和 6 列ls -l?我的目的是让读取文件大小变得容易,无论是字节、KiB 还是 MiB。我确实了解-h标志,但我发现必须解释末尾的字母比仅查看数字的长度(大小)更麻烦。这与赛车使用模拟表盘而不是数字表盘的原因相同。

我的目标 shell 是 Bash。谢谢。

编辑:我希望突出显示大小列的千位、万位和十万位。像这样:123 456 789

ls bash

10
推荐指数
1
解决办法
423
查看次数

按下 Escape 时关闭大写锁定

有什么方法可以CapsLockEsc按下时禁用。是的,我使用 VIM!我实际上有一个替代的全大写键盘布局,Ctrl-6但我发现它很麻烦,并且更愿意让操作系统在Esc按下时禁用 CapsLock 。另外,我经常通过 SSH 连接到其他服务器几个小时,所以我在那里使用库存 VIM。

请注意,我碰巧已经交换了CapsLockEsc键。但是,当Esc按下该键时(碰巧CapsLock在键盘上标记并在 旁边A),我需要它同时执行EscapeDisable-CapsLock-If-It-Is-Enabled

这是在 Kubuntu 12.10 上。谢谢。

keyboard xkb kubuntu

10
推荐指数
2
解决办法
1971
查看次数

像 VIM 一样在屏幕上完成单词(Bash 或 Tmux)

如何配置 Bash、Zsh 或 Tmux 以完成屏幕上最后一个匹配的标识符?考虑这个常见的场景:

$ git fetch
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 9 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (9/9), done.
From /opt/git/thunder
 * [new branch]      issue540   -> origin/issue547314
   e9204cf..4d42c3f  v2.1       -> origin/v2.1
Run Code Online (Sandbox Code Playgroud)

如何让 Bash/Zsh/Tmuxissue547在 CLI 上轻松完成?当我Tab$ git checkout isGit 帮助完成 to后按下时issue,但我必须自己完成数字,因为所有前面的数字实际上都匹配现有的 Git 分支

在 VIM 中,按Ctrl+ Pfor omnicomplete 将作为前一个匹配完成,因此在这种情况下issue547314实际上会完成。如何在 …

bash zsh tmux autocomplete oh-my-zsh

10
推荐指数
1
解决办法
1293
查看次数

= 符号周围什么时候禁止使用空格?

我知道在 ~/.bashrc 中不能=在赋值的符号周围放置空格:

$ tail -n2 ~/.bashrc 
alias a="echo 'You hit a!'"
alias b = "echo 'You hit b!'"

$ a
You hit a!

$ b
b: command not found
Run Code Online (Sandbox Code Playgroud)

我正在查看 MySQL 配置文件/etc/my.cnf,我发现了这个:

tmpdir=/mnt/ramdisk
key_buffer_size = 1024M
innodb_buffer_pool_size = 512M
query_cache_size=16M
Run Code Online (Sandbox Code Playgroud)

我如何验证=标志周围的空间没有问题?

请注意,此问题并非特定于/etc/my.cnf文件,而是针对一般的 *NIX 配置文件。我的第一个倾向是 RTFM,但实际上man mysql并没有提到这个问题,如果我需要为每个案例上网搜索,我将永远无法到达任何地方。是否有任何约定或简单的方法来检查?可以看出,有多个人编辑了这个文件(=符号的不同约定),我既不能强迫他们都不使用空格,也不能疯狂检查可能已配置的所有内容,可能正确也可能不正确。

编辑:我的目的是确保当前配置的文件正确完成。在自己配置文件时,我遵循包维护者在那里放置的任何约定。

configuration file-format

10
推荐指数
2
解决办法
3349
查看次数

尝试打开分区时的短读

在我运行 Kubuntu Linux 13.04 的个人家用计算机上,我无法安装一个我非常珍视的分区。我的备份策略是每月执行一次备份,所以我从 8 月开始备份 :)。有没有办法恢复这个驱动器上的个人文件?

该驱动器是一个 1.5 年历史的 1000 GiB 西部数据绿色驱动器,home 安装在/dev/sdc2,文件系统根在/dev/sdc6,媒体文件在/dev/sdc3. 因此,当然sdc2会是一个去!据我所知,在驱动器的使用寿命期间没有停电或其他此类事件。我通过运行 Kubuntu LiveCD 设法获得了这些信息:

kubuntu@kubuntu:~$ sudo fdisk -l

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes                                                                                                                                                                                                       Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00008044

  Device Boot      Start         End      Blocks …
Run Code Online (Sandbox Code Playgroud)

partition ext4 fsck corruption

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

如何知道在 dmesg 中要搜索什么?

我最近在使用无线网卡时遇到了一些麻烦,一个在线论坛建议dmesg使用grep firmware. 这有帮助,我能够立即找到问题!但是,前一个小时都在看,dmesg由于信息量太大,我无法确定任何相关内容!

如何知道在 dmesg 中要搜索什么?

当然,这是一个硬件问题,但我自己从没想过要 grep 字符串“固件”。对于熟悉 输出的人dmesg,我如何对 grep 的内容做出一些有根据的猜测?

linux logs dmesg

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