scp myname@login1.imbig.cc.mycoll.zz:myfirst.txt .
Здесь вы используете scp с двумя аргументами. Первый - это источник, удаленный файл: myname@login1.imbig.cc.mycoll.zz:myfirst.txt. Последним аргументом является назначение. В вашем случае: .. . - текущий каталог, поэтому файл будет в вашем текущем каталоге.
Если вы хотите, чтобы он переместился в другое место, укажите другой каталог, например
scp myname@login1.imbig.cc.mycoll.zz:myfirst.txt /tmp
[d2 ] Это скопирует его в / tmp Вы также можете указать новое имя для него. Например,
scp myname@login1.imbig.cc.mycoll.zz:myfirst.txt /tmp/info.txt
На основании этой ссылки и этой ссылки ... я тестировал и WORKS FINE ubuntu 14.04
вы должны создать правило в /etc/udev/rules.d/100-hdmi_sound.rules
с этим контентом
SUBSYSTEM=="drm", ACTION=="change", RUN+="/lib/udev/hdmi_sound_toggle.sh"
затем создайте
sudo -H gedit /lib/udev/hdmi_sound_toggle.sh
с вашим контентом
#!/bin/bash
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
INPUTS=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
if [ $HDMI_STATUS = "connected" ]
then
pactl set-card-profile 0 output:hdmi-stereo
pactl set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.hdmi-stereo &> /dev/null; done
else
pactl set-card-profile 0 output:analog-stereo
pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.analog-stereo &> /dev/null; done
fi
Надеюсь, что может помочь .. для моего английского, я говорил по-испански
После этого у меня были проблемы. Я скопировал исходный скрипт и изменил его, как было предложено, и теперь он работает.
Я включаю его здесь, чтобы облегчить кому-то использование.
#!/bin/bash
## From: https://askubuntu.com/questions/458194/switching-to-hdmi-audio-when-hdmi-is-plugged-into-a-laptop-14-04
## Script needs to be triggered by a udev rule
## Works manually now
##source ${HOME}/bin/bash_trace
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
INPUTS=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
if [ $HDMI_STATUS = "connected" ]
then
pactl set-card-profile 0 output:hdmi-stereo
pactl set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.hdmi-stereo &> /dev/null; done
else
pactl set-card-profile 0 output:analog-stereo
pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
for i in ${INPUTS[*]}; do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.analog-stereo &> /dev/null; done
fi
Теперь я 'просто хотел бы запустить его с udev, но я не знаю, как это сделать.
Ну, все предоставленные скрипты не работали для меня (Ubuntu 16.04), но я нашел индикатор этого приложения, который позволяет вам изменять звуковой вывод всего одним щелчком мыши:
(обратите внимание: вам нужно сначала установить пакет appindicator: sudo apt-get install python-appindicator)
Просто подумал, что оставлю это здесь для других, которые могут быть в том же как я, хотя это альтернативное решение ... но это делает его довольно простым и дискретным; -)
Представленные сценарии не работали для меня с udev из коробки на Ubuntu 14.04, мне пришлось добавить:
export DISPLAY=:0
в начале, преобразовать две команды pacmd в pactl и, наконец, запустите скрипт, используя sudo -s -u (пользователь) из правила udev.
#!/bin/bash
## From: https://askubuntu.com/questions/458194/switching-to-hdmi-audio-when-hdmi-is-plugged-into-a-laptop-14-04
## Script needs to be triggered by a udev rule
## Works manually now
export DISPLAY=:0
##source ${HOME}/bin/bash_trace
HDMI_STATUS=`cat /sys/class/drm/card0/*HDMI*/status`
INPUTS=($(pactl list sink-inputs | grep Input | awk '{print $3}' | sed -r 's/^.{1}//')
if [ $HDMI_STATUS = "connected" ]
then
pactl set-card-profile 0 output:hdmi-stereo
pactl set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
for i in ${INPUTS[*]}; do pactl move-sink-input $i alsa_output.pci-0000_00_1b.0.hdmi-stereo &> /dev/null; done
else
pactl set-card-profile 0 output:analog-stereo
pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
for i in ${INPUTS[*]}; do pactl move-sink-input $i alsa_output.pci-0000_00_1b.0.analog-stereo &> /dev/null; done
fi
Опять другое решение (проверено в 16.04) на основе предыдущего, но с некоторыми улучшениями, которые работают с использованием правильного pactl, указывающего на правильный сервер (его можно улучшить, чтобы автоматически получать имена карт и профилей, см. или pactl info на данный момент).
#!/bin/bash
USER_NAME=$(who | grep tty$(sudo fgconsole) | cut -f1 -d' ')
USER_ID=$(id -u "$USER_NAME")
HDMI_STATUS=$(</sys/class/drm/card0/*HDMI*/status)
HDMI_CARD="pci-0000_00_03.0"
HDMI_PROFILE="hdmi-stereo-extra1"
INTERNAL_CARD="pci-0000_00_1b.0"
INTERNAL_PROFILE="analog-stereo"
export LANG=C
export PULSE_SERVER="unix:/run/user/$USER_ID/pulse/native"
function pactl_cmd() {
sudo -u $USER_NAME pactl --server $PULSE_SERVER $*
}
if [ "$HDMI_STATUS" = "connected" ]; then
CARD=$HDMI_CARD
OUTPUT=$HDMI_PROFILE
else
CARD=$INTERNAL_CARD
OUTPUT=$INTERNAL_PROFILE
fi
pactl_cmd set-default-sink alsa_output.$CARD.$OUTPUT
pactl_cmd set-card-profile alsa_card.$CARD output:$OUTPUT
INPUTS=($(pactl_cmd list sink-inputs | grep "^Sink Input #"|cut -d# -f2))
for i in ${INPUTS[*]}; do
pactl_cmd move-sink-input $i alsa_output.$CARD.$OUTPUT
done
Связанный объект здесь.
Скрипты Udev выполняются с правами администратора, но вы также должны знать, какой менеджер отображения вы используете.
Найти DM, который вы используете:
pgrep -a Xorg
См. Параметр -auth, он покажет вам, что вы используете. диспетчер дисплея. Это может быть sddm ou lightdm в последних версиях Ubuntu.
Эта строка должна быть экспортирована как переменная XAUTHORITY, например:
ls /car/run/sddm*
, например, это может быть допустимый вывод :
/var/lib/mdm/:0.Xauth (Это будет использоваться скриптом)
Вот как выглядит ваш скрипт:
Это позволит вашему диспетчеру дисплея изменить выход HDMI. Следуйте за вкладками, чтобы создать файлы правил udev и сделать исполняемый файл сценария.