Я отправил аналогичный вопрос на StackOverflow (, вероятно, следовало разместить здесь, посвященный Unix и Linux ).
Мое решение состояло в том, чтобы написать функцию bash:
xtrace() {
local eval_cmd
printf -v eval_cmd '%q' "${@}"
{ set -x
eval "${eval_cmd}"
} 2>&1 | grep '^++'
return "${PIPESTATUS[0]}"
}
Итак, xtrace u
выведет что-то вроде:
++ apt-get update
++ apt-get upgrade -y --show-progress
++ apt-get autoremove -y
++ apt-get check
++ apt-get autoclean
Имейте в виду, что это на самом деле выполняет любой псевдоним, который вы ему передаете, поэтому, если вы не хотите выполнять u
, тогда лучше использовать решение @MichaelHomer. Кроме того, из-за вашей цепочки &&
, если какая-либо из команд в вашем псевдониме не возвращает 0, выполнение остановится, и вы увидите только расширенные псевдонимы до этой точки.
Симлинки не имеют концепции разрешений, поэтому при переходе через символическую ссылку нельзя применять другие разрешения, отличные от тех, которые вы получили бы при доступе к конечному файлу. По сути, они просто хранят путь, который ведет к какому-то другому файлу (или нет, поскольку символические ссылки могут болтаться ).
Причина, по которой сами символические ссылки не имеют концепции разрешения, заключается в том, что трудно придумать какой-либо вариант использования для этого :если можно разыменовать символическую ссылку и успешно получить доступ к конечному файлу, они могли бы также использоватьreadlink
(2 )по символической ссылке и просто прочитайте конечный файл с его первоначальными разрешениями. Таким образом, самый простой и разумный ответ — «вы не можете».:-)
Если вы полны решимости сделать это, один из вариантов — использовать eBPF, ptrace или что-то подобное для перехвата вызовов к этому пути к файлу и подделки некоторых разрешений (, хотя вам, возможно, придется притвориться, что это не символическая ссылка на избегайте провоцирования странных состояний в программах, которые по праву никогда не ожидали, что это станет проблемой ). Опять же, если у вас есть символическая ссылка, люди просто будут разрешать ее до конечного пункта назначения, поэтому я не уверен, чего вы надеетесь достичь здесь.