震惊!原来cmd命令行还可以这么玩?!

发布于:2024-05-15 ⋅ 阅读:(68) ⋅ 点赞:(0)

不论是在程序开发,还是遇到一些系统问题,我们很多时候会用到cmd命令行来处理问题,而当我们在执行cmd命令的时候,经常遇到下面这样的问题:
①. 控制台内容复制出来换行了
这种场景在我们安装nodejs插件的时候,经常遇到,输出一大堆,复制出来分析,强制换行,导致体验感非常差,进而可能影响心情。
②. 控制台内容显示超过最大容量了
有一些命令执行出来后,控制台输出的信息太多了,已经超出了默认显示的最大容量,那么信息就会被截断,导致的结果可能是一些关键的信息被截断,影响我们对于问题的定位。

在Windows的命令提示符(cmd)中,您可以使用重定向操作符 > 来将命令的输出保存到一个文件中。这样做不会影响命令的正常执行,同时还能保留输出结果以供后续查看和分析。以下是具体操作方法:

  1. 基本重定向: 使用 > 符号可以将命令的输出结果保存到指定的文件中。例如,如果您运行 pip install pandas > log.txt,那么 pip install pandas 的控制台输出将被写入到 log.txt 文件中,下面就用这个命令举个例子:
    ⑴.当正常运行命令pip install pandas,结果如下
    在这里插入图片描述
    ⑵.当正常运行命令pip install pandas > log.txt,结果如下
    在这里插入图片描述
    log.txt内容如下
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pandas in d:\soft\python\python38\lib\site-packages (2.0.3)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\soft\python\python38\lib\site-packages (from pandas) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in d:\soft\python\python38\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: tzdata>=2022.1 in d:\soft\python\python38\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: numpy>=1.20.3 in d:\soft\python\python38\lib\site-packages (from pandas) (1.24.4)
Requirement already satisfied: six>=1.5 in d:\soft\python\python38\lib\site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)

细心的话会在这里发现2个细节:

第1个细节:写到log.txt 文件中的内容,并没有输出到控制台

第2个细节:有2句WARNING并没有写到log.txt 文件中

这两个细节下面马上会说到。

  1. 屏幕和文件同时输出: 如果您希望命令的输出既显示在屏幕上又保存到文件中,可以使用 | 符号配合 type 命令。例如: pip install pandas > log.txt & type log.txt

原理是:先重定向标准输出和标准错误到文件,然后使用 type 命令将文件内容显示在控制台。例如,运行命令后,立即执行 type logfile.txt。

运行pip install pandas > log.txt & type log.txt命令后,结果如下
在这里插入图片描述
log.txt内容如下:

Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pandas in d:\soft\python\python38\lib\site-packages (2.0.3)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\soft\python\python38\lib\site-packages (from pandas) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in d:\soft\python\python38\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: tzdata>=2022.1 in d:\soft\python\python38\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: numpy>=1.20.3 in d:\soft\python\python38\lib\site-packages (from pandas) (1.24.4)
Requirement already satisfied: six>=1.5 in d:\soft\python\python38\lib\site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)
  1. 错误信息也保存: 如果想要将标准错误(STDERR)的信息也一起重定向到文件,可以使用 2>&1。例如:pip install pandas > log.txt 2>&1,这样无论是正常输出还是错误信息,都会被记录到 log.txt 文件中,运行结果如下:
    在这里插入图片描述
    log.txt内容如下
WARNING: Ignoring invalid distribution -ip (d:\soft\python\python38\lib\site-packages)
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pandas in d:\soft\python\python38\lib\site-packages (2.0.3)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\soft\python\python38\lib\site-packages (from pandas) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in d:\soft\python\python38\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: tzdata>=2022.1 in d:\soft\python\python38\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: numpy>=1.20.3 in d:\soft\python\python38\lib\site-packages (from pandas) (1.24.4)
Requirement already satisfied: six>=1.5 in d:\soft\python\python38\lib\site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)
WARNING: Ignoring invalid distribution -ip (d:\soft\python\python38\lib\site-packages)

需要注意的是,如果目标文件已经存在,使用重定向操作符会覆盖原有内容。如果需要追加内容而不是覆盖,可以使用双大于号 >> 来将新内容追加到现有文件的末尾。例如:pip install pandas >> log.txt
原始log.txt

Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting wxPython

运行命令pip install pandas >> log.txt之后

Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting wxPython
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pandas in d:\soft\python\python38\lib\site-packages (2.0.3)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\soft\python\python38\lib\site-packages (from pandas) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in d:\soft\python\python38\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: tzdata>=2022.1 in d:\soft\python\python38\lib\site-packages (from pandas) (2024.1)
Requirement already satisfied: numpy>=1.20.3 in d:\soft\python\python38\lib\site-packages (from pandas) (1.24.4)
Requirement already satisfied: six>=1.5 in d:\soft\python\python38\lib\site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)

通过以上方法,您就可以轻松地将命令行工具的输出内容保存到文件中,以便于后续的查看和分析。这对于日志记录、结果保存等场景非常有用。