Чтобы найти каталоги, доступные для записи во всем мире, вы можете использовать
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
Для файлов измените тип на f
Для типа символических ссылок на l
Чтобы установить липкий бит:
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print0| xargs -0 chmod +t
Я обычно использую маленькую утилиту beep
, установленную на многих системах.
Эта команда попробует различные подходы для создания системного звука.
Есть 3 способа создания звука из beep
manpage:
Традиционный метод создания звукового сигнала в сценарии оболочки заключается в записи ASCII BEL
(\007
) символа на стандартный вывод, с помощью команды оболочки, такой как
echo -ne '\007'
Это работает только в том случае, если стандартный вывод вызывающей оболочки в данный момент направлен на какое-либо терминальное устройство; если это не так, звуковой сигнал не будет звучать и даже может вызвать нежелательные повреждения в файле, на который направлен вывод.
Существуют и другие способы вызвать звуковой сигнал. Несколько более надежный метод - открыть /dev/tty
и послать туда символ BEL. Этот способ устойчив к перенаправлению ввода-вывода, но все же не срабатывает в случае, когда сценарий оболочки, желающий вызвать звуковой сигнал, не имеет управляющего терминала, например, потому что он запускается из оконного менеджера X.
Третий подход заключается в том, чтобы подключиться к X-дисплею и послать ему команду звонка. Это не зависит от терминального устройства Unix, но (конечно) требует наличия X-дисплея.
beep
просто попробует эти 3 метода.
Простое эхо \a
или \07
работает для меня.
$ echo -e "\a"
Для этого, вероятно, потребуется загрузить модуль ядра pcspkr
. Я тестировал это только на RHEL, так что YMMV.
Как отметил Уоррен в комментариях, это может не работать при удаленном входе через SSH. Быстрым обходным решением будет перенаправление вывода на любое из TTY-устройств (в идеале неиспользуемое). Например:
$ echo -en "\a" > /dev/tty5
ПРИМЕЧАНИЕ. Это решение издает звуковые сигналы из динамиков , а не из материнской платы .
ALSA поставляется с динамиком-тестом , генератором тестового сигнала динамика из командной строки, который можно использовать для генерации звукового сигнала:
$ speaker-test -t sine -f 1000 -l 1
См. эту ветку форума Arch Linux .
Однако продолжительность звукового сигнала будет произвольной, но ее можно контролировать следующим образом:
$ ( speaker-test -t sine -f 1000 )& pid=$! ; sleep 0.1s ; kill -9 $pid
Мы можем сделать еще один шаг и выдать звуковой сигнал с помощью этой функции:
_alarm() {
( \speaker-test --frequency $1 --test sine )&
pid=$!
\sleep 0.${2}s
\kill -9 $pid
}
, которая вызывается с аргументами частоты и продолжительности:
$ _alarm 400 200
Имея это в виду, можно создавать простую музыку с помощью Speaker-test
. См. этот сценарий оболочки .
tput bel
потому что terminfo определяет bel
как
Variable Cap- TCap Description
String name Code
bell bel bl audible signal
(bell) (P)
В некоторых дистрибутивах для этого есть утилиты командной строки. Может быть, вы могли бы сообщить нам, в каком дистрибутиве вы находитесь, или выполнить поиск (например, emerge -s beep
в gentoo).
Выходя за рамки «доступных» утилит, вы также можете создать сценарий Perl, который издает звуковой сигнал, все, что вам нужно сделать, это включить:
<SomeCodeBefore>
print "\007";
<SomeCodeAfter>
Если вы все-таки получите «звуковой сигнал», попробуйте следующее:
#! /bin/sh
beep -f 500 -l 700
beep -f 480 -l 400
beep -f 470 -l 250
beep -f 530 -l 300 -D 100
beep -f 500 -l 300 -D 100
beep -f 500 -l 300
beep -f 400 -l 600
beep -f 300 -l 500
beep -f 350 -l 700
beep -f 250 -l 600
Попробуйте
echo -n Ctrl+V Ctrl+G
Обратной стороной является то, что это будет работать только тогда, когда устройство вывода является терминалом, поэтому оно может не работать, например, внутри задания cron. (Но если вы root, вы можете перенаправить на / dev / console
для немедленного звукового сигнала.)
В Linux такие инструменты, как beep
, могут использовать ioctl на консольном устройстве для выдачи заданного звука. Чтобы быть более конкретным, beep
будет использовать ioctl KIOCSOUND
ioctl, но есть также ioctl KDMKTONE
ioctl, который можно использовать для генерации звука.
Насколько я понимаю, первый запускает звук, который длится до тех пор, пока он не будет явно отменен, а второй будет издавать звуковой сигнал заранее определенной продолжительности. См. справочную страницу console_ioctl
(4) для получения дополнительной информации.
Итак, если вас не устраивает то, что делает beep
, вы можете написать несколько строк кода для прямого доступа к этим ioctl. Предположим, у вас есть полный доступ к / dev / console
, для чего вполне могут потребоваться привилегии root.
Для использования звуковой карты, если sox
установлен, и динамика ПК, если нет:
$ play -q -n synth 0.1 sin 880 || echo -e "\a"
sox
доступен для большинства дистрибутивов.
" El pitido solo puede funcionar si su PC tiene un "altavoz" tradicional de estilo antiguo , y probablemente la mayoría, si no todas, las computadoras portátiles y los dispositivos pequeños no tienen uno.
Sin embargo, lo que suelen tener en su lugar es un chip de sonido y uno o más altavoces (s )que se pueden usar para producir cualquier sonido que desee.
Por lo tanto, el consejo obsoleto de instalar el comando beep
y/o el módulo del kernel pcspkr
nunca funcionará silenciosamente cuando no tenga el hardware de altavoz de estilo antiguo.
EN LUGAR:Intenta reproducir un sonido como este cuando quieras un pitido:
paplay /usr/share/sounds/sound-icons/capital
Tenga en cuenta que esto usa el comandopaplay
(P ulse A audio Play)que se mezcla mejor con otros sonidos de nivel de usuario (aplicación de usuario )en su sistema, y no el antiguo comandoaplay
(A LSA Play)que generalmente solo puede reproducir un sonido al mismo tiempo. Pero tenga en cuenta, sin embargo, que PulseAudio llama a ALSA para reproducir el sonido.
Mi sugerencia anterior de usar play
aún podría funcionar, pero ejecutar SoX de donde proviene el juego es excesivo.
Funciona para mí cuando todo lo demás falla. Gracias a:tredegar & hk _centos y otros.
Единственное решение, которое сработало для меня на монетном дворе (благодаря @alexander выше)
alias beep='play -q -n synth 0.1 sin 880 >& /dev/null'