我正在使用此命令来获取我最后输入的命令:
history | cut -c 8- | tail -n 2 | head -n 1
它在 bash 中工作得很好,删除了行号,但我有一个问题,(呃,烦恼,因为我只想要命令),我将其通过管道传输到xsel
剪贴板管理器:
它还抓取尾随的换行符/回车符......
我知道在某些 shell 中你可以使用:
echo "text \c"
我不确定如何将其纳入bash
其中。
对于最容易即时输入的解决方案加分:)
答案1
您可以使用 bash 内置命令获取历史记录中的最后一个命令!!
,并用于echo -n
打印该命令,末尾不带换行符:
echo -n !!
该!!
参数将扩展为实际的命令字符串,并-n
确保输出不包含换行符。
答案2
如果我正确地阅读了您的问题,您需要删除尾随的换行符。试试这个 perl 位:`perl -ne 'chomp and print'
例子:
[root@talara test]# ls -la
total 20
drwxr-xr-x 3 root root 4096 Jun 7 21:30 .
dr-xr-x---. 28 root root 4096 Jun 8 08:42 ..
-rw-r--r-- 1 root root 0 Jun 7 15:10 FILE1
drwxr-xr-x 3 root root 4096 Jun 7 14:49 ham
-rw-r--r-- 1 root root 36 Jun 7 21:31 t
-rw-r--r-- 1 root root 11 Jun 7 16:21 test
[root@talara test]# ls -la | perl -ne 'chomp and print'
total 20drwxr-xr-x 3 root root 4096 Jun 7 21:30 .dr-xr-x---. 28 root root 4096 Jun 8 08:42 ..-rw-r--r-- 1 root root 0 Jun 7 15:10 FILE1drwxr-xr-x 3 root root 4096 Jun 7 14:49 ham-rw-r--r-- 1 root root 36 Jun 7 21:31 t-rw-r--r-- 1 root root 11 Jun 7 16:21 test
为了方便反复输入,您可以创建一个别名:alias chomp="perl -ne 'chomp and print'"