考虑一个文本文件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东西放在一起,做成一个丑陋的单线。当然必须有更清洁的方法吗?
有没有办法重载或包装ls命令,以便它突出显示/下划线/否则使最后三个修改过的文件变得明显?
我知道我可以简单ls -rtl地按反向修改时间排序,但我通常确实需要一个按字母顺序排列的文件列表,尽管我想快速识别我自己或另一个开发人员修改的最后一个文件。
在阅读手册页时,fdisk我遇到了这段有趣的文字:
有几个 *fdisk 程序。每个人都有自己的问题和优势。按 cfdisk、fdisk、sfdisk 的顺序尝试它们。(确实,cfdisk 是一个漂亮的程序,它对它接受的分区表有严格的要求,并生成高质量的分区表。如果可以,请使用它。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) 如何在运行时获取~/.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) 有没有什么理智的方法可以突出显示文件大小右侧的第 4、5 和 6 列ls -l?我的目的是让读取文件大小变得容易,无论是字节、KiB 还是 MiB。我确实了解-h标志,但我发现必须解释末尾的字母比仅查看数字的长度(大小)更麻烦。这与赛车使用模拟表盘而不是数字表盘的原因相同。
我的目标 shell 是 Bash。谢谢。
编辑:我希望突出显示大小列的千位、万位和十万位。像这样:123 456 789
有什么方法可以CapsLock在Esc按下时禁用。是的,我使用 VIM!我实际上有一个替代的全大写键盘布局,Ctrl-6但我发现它很麻烦,并且更愿意让操作系统在Esc按下时禁用 CapsLock 。另外,我经常通过 SSH 连接到其他服务器几个小时,所以我在那里使用库存 VIM。
请注意,我碰巧已经交换了CapsLock和Esc键。但是,当Esc按下该键时(碰巧CapsLock在键盘上标记并在 旁边A),我需要它同时执行Escape和Disable-CapsLock-If-It-Is-Enabled。
这是在 Kubuntu 12.10 上。谢谢。
如何配置 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实际上会完成。如何在 …
我知道在 ~/.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并没有提到这个问题,如果我需要为每个案例上网搜索,我将永远无法到达任何地方。是否有任何约定或简单的方法来检查?可以看出,有多个人编辑了这个文件(=符号的不同约定),我既不能强迫他们都不使用空格,也不能疯狂检查可能已配置的所有内容,可能正确也可能不正确。
编辑:我的目的是确保当前配置的文件正确完成。在自己配置文件时,我遵循包维护者在那里放置的任何约定。
在我运行 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) 我最近在使用无线网卡时遇到了一些麻烦,一个在线论坛建议dmesg使用grep firmware. 这有帮助,我能够立即找到问题!但是,前一个小时都在看,dmesg由于信息量太大,我无法确定任何相关内容!
如何知道在 dmesg 中要搜索什么?
当然,这是一个硬件问题,但我自己从没想过要 grep 字符串“固件”。对于不熟悉 输出的人dmesg,我如何对 grep 的内容做出一些有根据的猜测?