小编Mic*_*ael的帖子

较少从stderr获取键盘输入?

我正在看一下'less'实用程序的代码,特别是它如何获得键盘输入.有趣的是,在ttyin.c的第80行,它将文件描述符设置为:

     /*
      * Try /dev/tty.
      * If that doesn't work, use file descriptor 2,
      * which in Unix is usually attached to the screen,
      * but also usually lets you read from the keyboard.
      */
  #if OS2
      /* The __open() system call translates "/dev/tty" to "con". */
      tty = __open("/dev/tty", OPEN_READ);
  #else
      tty = open("/dev/tty", OPEN_READ);
  #endif
      if (tty < 0)
          tty = 2;
Run Code Online (Sandbox Code Playgroud)

是不是文件描述符2 stderr?如果是这样,WTH ?! 我以为键盘输入是通过stdin发送的.

有趣的是,即使你这样做ls -l * | less,在文件加载完成后,你仍然可以使用键盘上下滚动,但如果你这样做ls -l * | vi …

linux ubuntu gnu-coreutils

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

od(1)的反义词是什么?

假设我有8b1f 0008 0231 49f6 0300 f1f3 75f4 0c72 f775 0850 7676 720c 560d 75f0 02e5 ce00 0861 1302 0000 0000,如何在不复制+粘贴到十六进制编辑器的情况下轻松获取二进制文件?

linux command-line

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

我如何在常见的lisp中格式化alist?

我开始给我写一些Common Lisp,我只是把事情放在一起并格式化它们.

让我们假设我有一个alist,就像这样:

(defvar *map* '((0 . "zero") (1 . "one") (2 . "two")))
Run Code Online (Sandbox Code Playgroud)

我该如何格式化呢?

0: zero
1: one
2: two
Run Code Online (Sandbox Code Playgroud)

我在想类似的东西(format t "~{~{~a: ~a~}~%~}" *map*),但是这会产生一个错误,因为"零"不是一个列表,你不能把它当作汽车.

当然,做(format t "~{~a~%~}" *map*)印刷品

(0 . "zero")
(1 . "one")
(2 . "two")
Run Code Online (Sandbox Code Playgroud)

喜欢它应该,但它不是我想要的.有没有比这更好的方法(dolist (entry *mapping*) (format t "~a: ~a~%" (car entry) (cdr entry)))呢?

lisp format formatting common-lisp string-formatting

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