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
.fields data.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
.