Это потому, что эти программы являются частью чашек , разработанных Apple.
То, что программа ( номер люкс) является открытым исходным кодом, не означает, что разработчик или компания (частично), оплачивающая разработку, не могут претендовать на авторские права на свои усилия.
-121--154438-
Функция current-message
возвращает сообщение, которое в данный момент отображается в области эха , если имеется. Вставить его можно с помощью (вставить (текущее сообщение))
. Однако все, что заставляет что-либо другое занимать эхо-область, приведет к тому, что current-message
возвратит nil
.
Сообщения от Emacs архивируются в буфере * Messages *
. Было бы полезнее захватить оттуда последнюю строчку. Это не совсем надежно, так как возможно иметь многострочное сообщение, но это редко: функция message
предназначена для коротких сообщений, которые помещаются в одну строку.
Следующая функция вставляет последнее сообщение (точнее, последнюю строку из буфера * Messages *
. При использовании аргумента префикса он возвращает более старые сообщения: 1 для последнего сообщения, 2 для следующего сообщения и т.д. Аргумент 0 вставляет (текущее сообщение)
, если имеется.
(defun last-message (&optional num)
(or num (setq num 1))
(if (= num 0)
(current-message)
(save-excursion
(set-buffer "*Messages*")
(save-excursion
(forward-line (- 1 num))
(backward-char)
(let ((end (point)))
(forward-line 0)
(buffer-substring-no-properties (point) end))))))
(defun insert-last-message (&optional num)
(interactive "*p")
(insert (last-message num)))
Свяжите его с ключом обычным способом. Например, если вы хотите, чтобы команда всегда была доступна на C-c m
:
(global-set-key "\C-cm" 'insert-last-message)
Возможно, проще, чем вызвать две пользовательские команды для вставки имени файла, см. Emacs wiki .
Чтобы вставить выходные данные вычисления фрагмента Lisp с помощью C-x C-e
, передайте аргумент префикса C-u C-x C-e
.
-121--62600-
«Ошибка ввода/вывода» указывает на проблему низкого уровня, которая, вероятно, имеет мало общего с файловой системой.
Он должен появиться в dmesg
, и выходные данные smartctl -x/dev/sdX
также могут дать подсказки.
Можно также попробовать strace -f -s200 ntfs-3g [args] 2 > & 1 | less
, чтобы увидеть, какой syscall попадет в ошибку ввода/вывода.
Основной причиной, вероятно, является одна из следующих причин:
Если вы опубликуете выходные данные вышеперечисленных команд, можно будет сказать, какие.
Попробуйте использовать опцию --stdout
:
$ SELECTION=$( dialog --stdout \
--backtitle "Make a choice" \
--menu "Take a pick" \
10 40 3 \
choice1 "First choice" \
choice2 "Second choice" \
)
-121--100661- Используйте обратные кнопки для вычисления результата команды внутри, это то же самое, что и для других оболочек. Итак, вместо
"echo ${1} | cut -d'.' -f2"
, которая является последовательностью, которая наверняка не равна последовательности «zip», используйте
`echo ${1} | cut -d'.' -f2`
, которая вычисляет команду внутри и возвращает результат.
Для анализа имени файла используйте переключатель
.
switch ($1)
case *.zip:
echo "$1 is a zip file"
breaksw
default:
echo "${1}: not supported"
endsw
Для анализа типа файла разберите вывод ls
: первый символ - тип файла.
switch ("`ls -logd "$1"`")
case d*:
echo "$1 is a directory"
breaksw
# ...
endsw
Скорее всего, вы ищете команду file
, которая анализирует содержимое файла, чтобы определить, какой формат данных в нем содержится (и сообщает тип файла для нерегулярных файлов).
file -- "$1"