コマンドとその出力に加えて、bashプロンプトとコマンドを出力に印刷します。

コマンドとその出力に加えて、bashプロンプトとコマンドを出力に印刷します。

勉強中に、文書化目的で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

おすすめ記事