man bluetoothctl
、info bluetoothctl
そしてコマンド履歴については何もありませんbluetoothctl --help
。
答え1
短い答え
bluetoothctl
コマンド履歴を~/.cache/.bluetoothctl_history
。
長い答え
免責事項:長い答えには、プログラミング言語Cの知識が必要です。
bluetoothctl
以下に付属のコマンドラインツールです。BlueZ – Linux用Bluetoothスタック。 BlueZのソースコードを見てみましょう。
私たちはすぐに次のようにbluetoothctl
気付くでしょう。GNU Readlineライブラリ対話型シェルです。すべてReadlineのドキュメント、関数をwrite_history
使用してファイルに履歴を書き込むことができます。 BlueZソースコードをgrepして関数名を見つけると、次のようになります。
$ grep write_history -r
src/shared/shell.c: write_history(data.history);
コマンド履歴は、名前が保存されているbluetoothctl
ファイルに書き込まれます。その後、フィールドを簡単に検索して初期化された場所を見つけることができます。.history
struct data
static void rl_init_history(void)
{
const char *name;
char *dir;
memset(data.history, 0, sizeof(data.history));
name = strrchr(data.name, '/');
if (!name)
name = data.name;
else
name++;
dir = getenv("XDG_CACHE_HOME");
if (dir) {
snprintf(data.history, sizeof(data.history), "%s/.%s_history",
dir, name);
goto done;
}
dir = getenv("HOME");
if (dir) {
snprintf(data.history, sizeof(data.history),
"%s/.cache/.%s_history", dir, name);
goto done;
}
dir = getenv("PWD");
if (dir) {
snprintf(data.history, sizeof(data.history), "%s/.%s_history",
dir, name);
goto done;
}
return;
done:
read_history(data.history);
using_history();
bt_shell_set_env("HISTORY", data.history);
}
ここXDG_CACHE_HOME
からfreedesktop.orgの仕様。他の環境変数はデフォルトで$HOME
あり、$PWD
.fieldsdata.name
は他の場所に設定されます。
void bt_shell_init(int argc, char **argv, const struct bt_shell_opt *opt)
{
...
data.name = strrchr(argv[0], '/');
if (!data.name)
data.name = strdup(argv[0]);
else
data.name = strdup(++data.name);
...
}
したがって、char *name
関数の変数にはrl_init_history
実行可能ファイルの名前文字列が含まれます。bluetoothctl
バラよりargv
Cでの説明。
したがって、freedesktop.org仕様に準拠するほとんどのデスクトップ環境では、コマンドラインツールはコマンド履歴をファイルに保存しbluetoothctl
ます~/.cache/.bluetoothctl_history
。環境変数が定義されると、XDG_CACHE_HOME
コマンド履歴がに保存されます$XDG_CACHE_HOME/.bluetoothctl_history
。