2016-09-20 3 views
0

Я хочу написать Баш скрипт, который открывает гном-терминала в директории в ~/Documents/ согласно переданному аргументу к нему (например, ./open.sh notes открывает терминал в ~/Documents/notes/)Bash скрипт, чтобы открыть терминал и компакт-диск с переменной каталог

Как бы я это сделал? Я знаю, что gnome-terminal --working-directory=[directory] делает что-то подобное, но он не принимает строки, поэтому я не знаю, можно ли его использовать в этом случае.

+1

Если он не принимает строки, то что * делает * он принимает? Леденцы? –

ответ

1

вы можете попробовать это;

#!/bin/bash 
workDir="/home/user/Documents/$1" 
if [ ! -d "$workDir" ]; then 
    echo "directory not found, check your path" 
else 
    gnome-terminal --working-directory="$workDir" 
fi 

пример;

./open.sh notes 

этот открытый новый терминал в ~/Документы/примечания

+3

Вы * должны * процитировать расширение параметра в случае, если данный каталог содержит символы, которые производят расширение пути или разбиение слов. Я исправил его дважды, и вы каждый раз возвращали изменения. – chepner

0

Ваш скрипт или функция, может быть просто:

open() { 
    gnome-terminal --working-directory="Documents/$1" 
} 

Это выглядит как рабочий каталог может быть определен по отношению к домашний каталог пользователя.

Используйте его как open notes, чтобы открыть новый терминал в ~/Documents/notes.

+0

Извините, я не уверен, что вы имеете в виду - не могли бы вы объяснить? –

+1

@Inian 'basename' и' dirname' разделяют путь на две части; вы не можете использовать их для восстановления абсолютного пути из относительного пути. – chepner

+0

Я догадываюсь, что больше не смог передать свою фактическую точку :) Как эта логическая работа для папки скажет '/ home/foobar/Downloads/My_movies'? Ответ на этот вопрос сделает мой запрос понятным. Благодаря! – Inian