勉強中に、文書化目的でbashプロンプト、コマンド、およびその出力(下の表示)を画像として印刷する方法を探しています。これを行うためのクイックコマンドを作成しましたが、代わりにbashプロンプトを自動的に印刷する必要があります。ユーザーまたはパスが変更されたときのコマンドの一部です[$USER@`hostname` ~]#
。ホームディレクトリのチルダと#/$は、ユーザーがrootかどうかによって異なりますので、変更する必要があるのはcmd="ls -l";
$を使用したくないということです。必要な正確なbashプロンプトの代わりにフルパスを取得したので、PWD:
cmd="ls -l"; convert -font DejaVu-Sans-Mono-Book -pointsize 16 label:"$(echo "[$USER@`hostname` ~]# $cmd\n";$cmd)" /home/myuser/Desktop/result.png
上記の結果はこの図にあります。 [root@centos7〜]も図に含まれています。
私はこれで変数$ PS1を試しました。回答この回答、しかし私は次を得ます:
[\u@\h \W]\$
ありがとう
ベストアンサー1
オンラインには解決策がないようで、最終的にスクリプトを作成しました。
#!/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