Bash
除了命令及其輸出之外,還將 bash 提示符和命令列印到輸出中
我正在尋找一種將 bash 提示符、命令及其輸出列印到圖像中的方法,如下所示,以便在學習時進行文件記錄,我編寫了一個快速命令來執行此操作,但我需要自動列印 bash 提示符而不是我當使用者或路徑更改時更改命令的這一部分
[$USER@
hostname~]#
,不要忘記主目錄的波浪號和 #/$ 取決於使用者是否是 root 以便我需要更改的是cmd="ls -l";
,我也不想使用$PWD 因為我得到了完整的路徑,而不是我需要確切的 bash 提示符:cmd="ls -l"; convert -font DejaVu-Sans-Mono-Book -pointsize 16 label:"$(echo "[$USER@`hostname` ~]# $cmd\n";$cmd)" /home/myuser/Desktop/result.png
以上結果在此圖像中,請注意
[\u@\h \W]\$
謝謝
我最終寫了一個腳本,因為網上似乎沒有解決方案:
#!/bin/bash CMD=$1 #DIR=$(readlink -ve "/proc/$PPID/cwd") DIR=`pwd` PRIVILEGE='$' #echo $DIR [ $# -eq 0 -o $# -gt 1 ] && { echo -e "Usage:\n\t $0 command\n\t Command should be enclosed in quotations"; exit 1; } if [ $UID -ne 0 ]; then echo "Please run this script with sudo:"; echo "sudo $0 $*"; exit 1; fi mkdir -p /result #echo $DIR PATTERN="^\/home\/\w+$" if [[ $DIR =~ $PATTERN || $DIR == '/root' ]]; then DIR='~'; else DIR=`basename $PWD`; fi echo $DIR if [ $UID -eq 0 ]; then PRIVILEGE='#'; fi #echo $PRIVILEGE NUM=`ls -vr /result/ | head -1 | sed -e 's/\..*$//'` if [ ! -n "$NUM" ]; then NUM=1; else ((NUM++)); fi convert -font DejaVu-Sans-Mono-Book -pointsize 16 label:"$(echo "[`id -u -n`@`hostname` $DIR]$PRIVILEGE $CMD";$CMD)" /result/$NUM.png echo $NUM.png