rm -i
читает его ответ из стандартного входа, который он наследовал от while
цикл. Так строка текста от list.txt
используется в качестве ответа на, "действительно удаляют?" вопрос. Для фиксации необходимо будет разделить два источника входа. Самый легкий путь состоит в том, чтобы иметь read
возьмите его вход от отдельного дескриптора файла:
while IFS= read <&3 -r i; do
rm -i -- "$i" # Quote the file name, not just to be safe,
# but because it's the right syntax.
done 3< list.txt
Вы больше не перенаправляете стандартный вход (fd 0) для цикла с условием продолжения, таким образом, rm
будет читать из терминала, как желаемый.
С другой стороны, Вы, возможно, сделали:
IFS=$'\n' # set field separator to newline
set -f # disable globbing upon command substitution
rm -i -- $(cat list.txt)
Или, с GNU xargs:
xargs -rd '\n' --arg-file=list.txt rm -i --
Общее представление, но Вы могли достигнуть того, что Вы хотите путем создания нескольких использований команд xdotool
. Затем Вы могли выполнить их соответственно, когда у Вас есть 1 или 2 подключенные монитора.
Существует довольно хороший пример того, как Вы могли сделать это в обвиненном названный: Xubuntu – движущиеся окна между мониторами.
выборка от раздела: Перемещение активного окна к другому монитору (наконец!)
Вот то, что мы должны сделать:
Вот сценарий, который делает это:
wid=`xdotool getactivewindow`
max_state=`xprop -id $wid _NET_WM_STATE`
wmctrl -ir $wid -b remove,maximized_vert,maximized_horz
eval `xdotool getwindowgeometry --shell $wid`
new_x=1600
if [[ "$X" -ge "$new_x" ]]; then
new_x=0
fi
xdotool windowmove $wid $new_x $Y
if [ -z "${max_state/*_NET_WM_STATE_MAXIMIZED_*/}" ]; then
wmctrl -ir $wid -b add,maximized_vert,maximized_horz
fi
xdotool windowraise $wid
Я также нашел другой подход, который также использовал xdotool
но перенесенный это в сценарий оболочки, который Вы могли затем связать с сочетанием клавиш. Используя этот метод Вы могли выбрать окно так, чтобы он был повышен и сфокусировался и путем удара комбинации сочетания клавиш, пошлет заявление в другое окно. Статья названа: Переместите Windows Between Monitors.
Метод предоставляет следующий сценарий, windowmove.sh
:
#!/bin/bash
if [ $1 -eq 2 ]
then
POS1=`xrandr --current | head -2 | tail -1 | cut -d 'x' -f1 | cut -d ' ' -f3`
POS2=0
else
POS1=0
POS2=0
fi
/usr/bin/xdotool windowmove `/usr/bin/xdotool getwindowfocus` $POS1 $POS2
exit 0
POS1 вычисляет ширину Вашего основного экрана при помощи вывода xrandr. Если Вы находите, что сценарий не может переместить право окон, но это может переместить их оставленный, затем попытаться заменить ту строку POS1=1920 и заменить 1920 шириной в пикселях Вашего основного монитора.
Затем выполните апплет Клавиатурных привязок:
$ gnome-keybinding-properties
Примечание: Это выполнимо от различных мест на различных дистрибутивах через GUI.
Создайте 2 привязки клавиш с помощью этих 2 запусков приложения:
./Scripts/windowmove.sh 1
./Scripts/windowmove.sh 2
Нет необходимости в xdotool
. Вы можете записать расположение всех окон, а затем восстановить их с помощью всего лишьwmctrl
:
Запись:wmctrl -lG > ${rcfile}
Место:
while read row; do
IFS=" " read id g x y w h _ <<< ${row}
wmctrl -ir ${id} -e 0,${x},${y},${w},${h}
done < ${rcfile}