Запуск сценария, установка и привязка в зависимости от наличия дисков?

Что такое код для запуска сценария при запуске, который связывает домашние папки с другими папками в зависимости от наличия диска?

Поскольку большинство моих файлов хранятся в отдельных дисках и местах, / home / John / Folder, я использую код терминала, чтобы привязывать папки Home для разных мест. Например, я связываю папку / Documents с / Dropbox / Documents, поэтому она постоянно резервируется. Я узнал, как это сделать через терминал, и где-то читал, что вы можете поместить код в сценарий /etc/rc.local и запустить этот сценарий (rc.local) при запуске. Я поместил код в этот скрипт, но я не уверен, как это сделать при запуске. Сейчас мне нужно подождать, пока компьютер запустится, а затем запустите код в терминале. Полный код в том скрипте, который я установил, находится ниже.

sudo mount -o bind /media/Storage/Music ~/Music && sudo mount -o bind /media/storage/downloads ~/Downloads && sudo mount -o bind /media/2TB/Videos ~/Videos && sudo mount -o bind /home/john/dropbox/documents ~/Documents && sudo mount -o bind /home/john/dropbox/Photos ~/Pictures && exit 0

Для запуска сценария необходим выход 0 в соответствии с комментарием в скрипте.

Поскольку это на ноутбуке, и я держу свои видеофайлы на внешнем диске, так или иначе, чтобы добавить простое «Если присутствует, а также привязать ~ / Видео к / медиа // Видео», и если это не так, пропустите его? Или поместите этот код в конец, чтобы он не повлиял на выполнение выше?

1
задан 3 February 2011 в 20:32

21 ответ

Есть несколько проблем с вашим скриптом:

Вы цепочки (& amp; & amp;) несвязанные команды, сбой на одном пропустит остальное. Вы используете «~» в имени пути, скрипт вызывается с помощью root, что означает, что он будет переведен в / root, вы должны использовать полное имя пути. Вам не нужно использовать sudo, потому что он работает с root.

Следующий скрипт выполнит то, что вы запросили:

[[ -d /media/Storage/Music ]] &&  mount -o bind /media/Storage/Music /home/your_user/Music 
[[ -d /media/storage/downloads ]] && mount -o bind /media/storage/downloads /home/your_user/Downloads
[[ -d /media/2TB/Videos ]] && mount -o bind /media/2TB/Videos /home/your_user/Videos 
mount -o bind /home/john/dropbox/documents /home/your_user/Documents 
mount -o bind /home/john/dropbox/Photos /home/your_user/Pictures
exit 0
2
ответ дан 25 May 2018 в 23:09

Есть несколько проблем с вашим скриптом:

Вы цепочки (& amp; & amp;) несвязанные команды, сбой на одном пропустит остальное. Вы используете «~» в имени пути, скрипт вызывается с помощью root, что означает, что он будет переведен в / root, вы должны использовать полное имя пути. Вам не нужно использовать sudo, потому что он работает с root.

Следующий скрипт выполнит то, что вы запросили:

[[ -d /media/Storage/Music ]] && mount -o bind /media/Storage/Music /home/your_user/Music [[ -d /media/storage/downloads ]] && mount -o bind /media/storage/downloads /home/your_user/Downloads [[ -d /media/2TB/Videos ]] && mount -o bind /media/2TB/Videos /home/your_user/Videos mount -o bind /home/john/dropbox/documents /home/your_user/Documents mount -o bind /home/john/dropbox/Photos /home/your_user/Pictures exit 0
2
ответ дан 25 July 2018 в 22:32

Есть несколько проблем с вашим скриптом:

Вы цепочки (& amp; & amp;) несвязанные команды, сбой на одном пропустит остальное. Вы используете «~» в имени пути, скрипт вызывается с помощью root, что означает, что он будет переведен в / root, вы должны использовать полное имя пути. Вам не нужно использовать sudo, потому что он работает с root.

Следующий скрипт выполнит то, что вы запросили:

[[ -d /media/Storage/Music ]] && mount -o bind /media/Storage/Music /home/your_user/Music [[ -d /media/storage/downloads ]] && mount -o bind /media/storage/downloads /home/your_user/Downloads [[ -d /media/2TB/Videos ]] && mount -o bind /media/2TB/Videos /home/your_user/Videos mount -o bind /home/john/dropbox/documents /home/your_user/Documents mount -o bind /home/john/dropbox/Photos /home/your_user/Pictures exit 0
2
ответ дан 2 August 2018 в 03:58

есть несколько вопросов, с вашего скрипта:

Вы не сцепления (&&) несвязанных команд, сбой на одном будет пропускать все остальное. Вы используете "~" в имени пути, скрипт вызывается с корня, который означает, что она будет переведена на /root, вы должны использовать полное имя пути вам не придется использовать sudo, потому что он работает с корневой.

последующие скрипт будет делать то, что вы просили:

[[ -d /media/Storage/Music ]] && mount -o bind /media/Storage/Music /home/your_user/Music [[ -d /media/storage/downloads ]] && mount -o bind /media/storage/downloads /home/your_user/Downloads [[ -d /media/2TB/Videos ]] && mount -o bind /media/2TB/Videos /home/your_user/Videos mount -o bind /home/john/dropbox/documents /home/your_user/Documents mount -o bind /home/john/dropbox/Photos /home/your_user/Pictures exit 0
2
ответ дан 4 August 2018 в 20:01

Есть несколько проблем с вашим скриптом:

Вы цепочки (& amp; & amp;) несвязанные команды, сбой на одном пропустит остальное. Вы используете «~» в имени пути, скрипт вызывается с помощью root, что означает, что он будет переведен в / root, вы должны использовать полное имя пути. Вам не нужно использовать sudo, потому что он работает с root.

Следующий скрипт выполнит то, что вы запросили:

[[ -d /media/Storage/Music ]] && mount -o bind /media/Storage/Music /home/your_user/Music [[ -d /media/storage/downloads ]] && mount -o bind /media/storage/downloads /home/your_user/Downloads [[ -d /media/2TB/Videos ]] && mount -o bind /media/2TB/Videos /home/your_user/Videos mount -o bind /home/john/dropbox/documents /home/your_user/Documents mount -o bind /home/john/dropbox/Photos /home/your_user/Pictures exit 0
2
ответ дан 6 August 2018 в 04:03

Есть несколько проблем с вашим скриптом:

Вы цепочки (& amp; & amp;) несвязанные команды, сбой на одном пропустит остальное. Вы используете «~» в имени пути, скрипт вызывается с помощью root, что означает, что он будет переведен в / root, вы должны использовать полное имя пути. Вам не нужно использовать sudo, потому что он работает с root.

Следующий скрипт выполнит то, что вы запросили:

[[ -d /media/Storage/Music ]] && mount -o bind /media/Storage/Music /home/your_user/Music [[ -d /media/storage/downloads ]] && mount -o bind /media/storage/downloads /home/your_user/Downloads [[ -d /media/2TB/Videos ]] && mount -o bind /media/2TB/Videos /home/your_user/Videos mount -o bind /home/john/dropbox/documents /home/your_user/Documents mount -o bind /home/john/dropbox/Photos /home/your_user/Pictures exit 0
2
ответ дан 7 August 2018 в 22:02

В вашем скрипте есть несколько проблем:

  1. Вы связываете несвязанные команды (& amp; & amp;), сбой на одном пропустит остальные.
  2. Вы используют «~» в имени пути, скрипт вызывается с помощью root, что означает, что он будет переведен в / root, вы должны использовать полное имя пути
  3. Вам не нужно использовать sudo, потому что он работает с root.

Следующий скрипт выполнит то, что вы запросили:

  [[-d / media / Storage / Music]] & amp;  & амп;  mount -o bind / media / Storage / Music / home / your_user / Music [[-d / media / storage / downloads]] & amp; & amp; & amp; & amp; & amp;  mount -o bind / media / storage / downloads / home / your_user / Downloads [[-d / media / 2TB / Videos]] & amp; & amp; & amp; & amp; & amp; & amp; & amp;  mount -o bind / media / 2TB / Videos / home / your_user / Видео mount -o bind / home / john / dropbox / documents / home / your_user / Documents mount -o bind / home / john / dropbox / Фото / home / your_user  / Выход снимков 0  
2
ответ дан 10 August 2018 в 10:16

В вашем скрипте есть несколько проблем:

  1. Вы связываете несвязанные команды (& amp; & amp;), сбой на одном пропустит остальные.
  2. Вы используют «~» в имени пути, скрипт вызывается с помощью root, что означает, что он будет переведен в / root, вы должны использовать полное имя пути
  3. Вам не нужно использовать sudo, потому что он работает с root.

Следующий скрипт выполнит то, что вы запросили:

  [[-d / media / Storage / Music]] & amp;  & амп;  mount -o bind / media / Storage / Music / home / your_user / Music [[-d / media / storage / downloads]] & amp; & amp; & amp; & amp; & amp;  mount -o bind / media / storage / downloads / home / your_user / Downloads [[-d / media / 2TB / Videos]] & amp; & amp; & amp; & amp; & amp; & amp; & amp;  mount -o bind / media / 2TB / Videos / home / your_user / Видео mount -o bind / home / john / dropbox / documents / home / your_user / Documents mount -o bind / home / john / dropbox / Фото / home / your_user  / Выход снимков 0  
2
ответ дан 13 August 2018 в 16:39

В сценарии BASH ...

#check for existence of a directory
if [ ! -d /media/Videos ]; then
    // do nothing or echo "not available"
else
    // action
fi

#check for existence of a file
if [ ! -f /media/Videos/i_am_mounted ]; then
    // do nothing or echo "not available"
else
    // action
fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 25 May 2018 в 23:09
  • 1
    В вашем скрипте есть ошибка, если только я не ошибаюсь, идея заключается в выполнении действий, когда каталог или файл доступны, что означает, что вы хотите использовать, если [-d, без отрицания (!). – João Pinto 3 February 2011 в 22:56
  • 2
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

В сценарии BASH ...

#check for existence of a directory
if [ ! -d /media/Videos ]; then
    // do nothing or echo "not available"
else
    // action
fi

#check for existence of a file
if [ ! -f /media/Videos/i_am_mounted ]; then
    // do nothing or echo "not available"
else
    // action
fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 25 May 2018 в 23:09
  • 1
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

В сценарии BASH ...

#check for existence of a directory
if [ ! -d /media/Videos ]; then
    // do nothing or echo "not available"
else
    // action
fi

#check for existence of a file
if [ ! -f /media/Videos/i_am_mounted ]; then
    // do nothing or echo "not available"
else
    // action
fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 25 May 2018 в 23:09
  • 1
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

В сценарии BASH ...

#check for existence of a directory
if [ ! -d /media/Videos ]; then
    // do nothing or echo "not available"
else
    // action
fi

#check for existence of a file
if [ ! -f /media/Videos/i_am_mounted ]; then
    // do nothing or echo "not available"
else
    // action
fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 25 May 2018 в 23:09
  • 1
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

В сценарии BASH ...

#check for existence of a directory
if [ ! -d /media/Videos ]; then
    // do nothing or echo "not available"
else
    // action
fi

#check for existence of a file
if [ ! -f /media/Videos/i_am_mounted ]; then
    // do nothing or echo "not available"
else
    // action
fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 25 May 2018 в 23:09
  • 1
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

В сценарии BASH ...

#check for existence of a directory
if [ ! -d /media/Videos ]; then
    // do nothing or echo "not available"
else
    // action
fi

#check for existence of a file
if [ ! -f /media/Videos/i_am_mounted ]; then
    // do nothing or echo "not available"
else
    // action
fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 25 May 2018 в 23:09
  • 1
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

В сценарии BASH ...

#check for existence of a directory if [ ! -d /media/Videos ]; then // do nothing or echo "not available" else // action fi #check for existence of a file if [ ! -f /media/Videos/i_am_mounted ]; then // do nothing or echo "not available" else // action fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 25 July 2018 в 22:32
  • 1
    В вашем скрипте есть ошибка, если только я не ошибаюсь, идея заключается в выполнении действий, когда каталог или файл доступны, что означает, что вы хотите использовать, если [-d, без отрицания (!). – João Pinto 3 February 2011 в 22:56
  • 2
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

в bash-скрипт...

#check for existence of a directory if [ ! -d /media/Videos ]; then // do nothing or echo "not available" else // action fi #check for existence of a file if [ ! -f /media/Videos/i_am_mounted ]; then // do nothing or echo "not available" else // action fi

Вы можете также остановить с помощью && таким образом. (Если у вас есть command1 && command2, команда2 выполняется, если и только если команда1 завершился с кодом выхода 0 (успех).) И у вас есть некоторые местные, некоторые сетевые. Сетевой части может принадлежать в сценарии, размещенные в /etc/сети/если-вверх.D и /etc/сети/если-вниз.д. Локальная часть может принадлежать в /etc/RC автомобиль.местные - прекратить использование команды sudo.

0
ответ дан 2 August 2018 в 03:58
  • 1
    В вашем скрипте есть ошибка, если только я не ошибаюсь, идея заключается в выполнении действий, когда каталог или файл доступны, что означает, что вы хотите использовать, если [-d, без отрицания (!). – João Pinto 3 February 2011 в 22:56
  • 2
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

В сценарии BASH ...

#check for existence of a directory if [ ! -d /media/Videos ]; then // do nothing or echo "not available" else // action fi #check for existence of a file if [ ! -f /media/Videos/i_am_mounted ]; then // do nothing or echo "not available" else // action fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 4 August 2018 в 20:01
  • 1
    В вашем скрипте есть ошибка, если только я не ошибаюсь, идея заключается в выполнении действий, когда каталог или файл доступны, что означает, что вы хотите использовать, если [-d, без отрицания (!). – João Pinto 3 February 2011 в 22:56
  • 2
    - Ну, нет конкретного ответа. Заменить 'Интернет' с 'другом', а затем выполнить описанные там действия. – user 3 February 2011 в 23:05

в bash-скрипт...

#check for existence of a directory if [ ! -d /media/Videos ]; then // do nothing or echo "not available" else // action fi #check for existence of a file if [ ! -f /media/Videos/i_am_mounted ]; then // do nothing or echo "not available" else // action fi

Вы можете также остановить с помощью && таким образом. (Если у вас есть command1 && command2, команда2 выполняется, если и только если команда1 завершился с кодом выхода 0 (успех).) И у вас есть некоторые местные, некоторые сетевые. Сетевой части может принадлежать в сценарии, размещенные в /etc/сети/если-вверх.D и /etc/сети/если-вниз.д. Локальная часть может принадлежать в /etc/RC автомобиль.местные - прекратить использование команды sudo.

0
ответ дан 6 August 2018 в 04:03
  • 1
    В вашем скрипте есть ошибка, если только я не ошибаюсь, идея заключается в выполнении действий, когда каталог или файл доступны, что означает, что вы хотите использовать, если [-d, без отрицания (!). – João Pinto 3 February 2011 в 22:56
  • 2
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

В сценарии BASH ...

#check for existence of a directory if [ ! -d /media/Videos ]; then // do nothing or echo "not available" else // action fi #check for existence of a file if [ ! -f /media/Videos/i_am_mounted ]; then // do nothing or echo "not available" else // action fi

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 && command2, команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 7 August 2018 в 22:02
  • 1
    В вашем скрипте есть ошибка, если только я не ошибаюсь, идея заключается в выполнении действий, когда каталог или файл доступны, что означает, что вы хотите использовать, если [-d, без отрицания (!). – João Pinto 3 February 2011 в 22:56
  • 2
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

В сценарии BASH ...

  #check для существования каталога, если [!  -d / media / Videos];  то // ничего не делать или эхо «не доступно» else // action fi #check для существования файла, если [!  -f / media / Videos / i_am_mounted];  то // ничего не делать или эхо «не доступно» else // action fi  

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 & amp; & amp; command2 , команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 10 August 2018 в 10:16

В сценарии BASH ...

  #check для существования каталога, если [!  -d / media / Videos];  то // ничего не делать или эхо «не доступно» else // action fi #check для существования файла, если [!  -f / media / Videos / i_am_mounted];  то // ничего не делать или эхо «не доступно» else // action fi  

Вы также можете прекратить использование & amp; & amp; сюда. (Если у вас есть command1 & amp; & amp; command2 , команда2 выполняется тогда и только тогда, когда команда 1 вышла с кодом выхода 0 (успех).) И у вас есть локальная сеть. Сетевая часть может принадлежать сценариям, размещенным в /etc/network/if-up.d и /etc/network/if-down.d. Локальная часть может принадлежать /etc/rc.local - для остановки использования команды sudo.

0
ответ дан 13 August 2018 в 16:39
  • 1
    В вашем скрипте есть ошибка, если только я не ошибаюсь, идея заключается в выполнении действий, когда каталог или файл доступны, что означает, что вы хотите использовать, если [-d, без отрицания (!). – João Pinto 3 February 2011 в 22:56
  • 2
    Э ... ну, нет конкретного ответа. Замените 'fi' на 'else', а затем выполните действия там. – user 3 February 2011 в 23:05

Другие вопросы по тегам:

Похожие вопросы: