Я пытаюсь сделать код, который ищет в google с терминала, вставив ссылку в ссылку. Кто-нибудь знает, как заменить пробелы плюсами, чтобы я мог вставить это в ссылку вместо исходного условия поиска. Я думаю об использовании команд, например sed, хотя я не понимаю форматирование sed.
В настоящее время я использую следующее:
search() {
read F1
a=$F1
b=https://www.google.com/#q=
c=$b$a
echo OPENING:
echo $c
open $c
}
Проблема в том, что это требует плюсов вместо пробелов. Мне нужен способ заменить пробелы с плюсами в переменной.
Я понял, как это сделать, и он работает на моем компьютере. Просто используйте этот код в своем .bash_profile.
search() {
clear
echo Type in your search term:
read F1
F=`echo "$F1" | sed "s/ /+/g"`
echo Opening: https://www.google.com/#q="$F"
open https://www.google.com/#q="$F"
}
Я понял, как это сделать, и он работает на моем компьютере. Просто используйте этот код в своем .bash_profile.
search() {
clear
echo Type in your search term:
read F1
F=`echo "$F1" | sed "s/ /+/g"`
echo Opening: https://www.google.com/#q="$F"
open https://www.google.com/#q="$F"
}
Я понял, как это сделать, и он работает на моем компьютере. Просто используйте этот код в своем .bash_profile.
search() {
clear
echo Type in your search term:
read F1
F=`echo "$F1" | sed "s/ /+/g"`
echo Opening: https://www.google.com/#q="$F"
open https://www.google.com/#q="$F"
}
Я понял, как это сделать, и он работает на моем компьютере. Просто используйте этот код в своем .bash_profile.
search() {
clear
echo Type in your search term:
read F1
F=`echo "$F1" | sed "s/ /+/g"`
echo Opening: https://www.google.com/#q="$F"
open https://www.google.com/#q="$F"
}
Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра
Пример. заменить каждое пространство символом плюса
$ var='some string with spaces'
$ echo "${var// /+}"
some+string++++with+spaces
или заменить последовательности пробелов одним плюсом (при условии, что вы включили расширенное подглаживание в оболочке)
$ echo "${var//+( )/+}"
some+string+with+spaces
Вы может назначить новую переменную newvar="${var//+( )/+}" или переназначить, чтобы изменить значение переменной напрямую, т.е.
$ var='some string with spaces'
$ echo "$var"
some string with spaces
$
$ var="${var//+( )/+}"
$ echo "$var"
some+string+with+spaces
Вот иллюстрация ее использования в контексте, описанном в обновленном вопрос:
Построить минимальный ~/.bash_profile
if [ -r $HOME/.profile ]; then
. $HOME/.profile
fi
search() {
read -p 'Please enter a search term: ' searchterm
c="https://www.google.com/#q=${searchterm//+( )/+}"
echo "OPENING: $c"
}
Затем запустите новую оболочку входа и протестируйте ее
$ bash -l
$ search
Please enter a search term: ask ubuntu
OPENING: https://www.google.com/#q=ask+ubuntu
$
Вы можете использовать эту команду:
sed -i 's/ /+/g' filename
Вы можете использовать эту команду:
sed -i 's/ /+/g' filename
Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра
Пример. заменить каждое пространство символом плюса
$ var='some string with spaces'
$ echo "${var// /+}"
some+string++++with+spaces
или заменить последовательности пробелов одним плюсом (при условии, что вы включили расширенное подглаживание в оболочке)
$ echo "${var//+( )/+}"
some+string+with+spaces
Вы может назначить новую переменную newvar="${var//+( )/+}" или переназначить, чтобы изменить значение переменной напрямую, т.е.
$ var='some string with spaces'
$ echo "$var"
some string with spaces
$
$ var="${var//+( )/+}"
$ echo "$var"
some+string+with+spaces
Вот иллюстрация ее использования в контексте, описанном в обновленном вопрос:
Построить минимальный ~/.bash_profile
if [ -r $HOME/.profile ]; then
. $HOME/.profile
fi
search() {
read -p 'Please enter a search term: ' searchterm
c="https://www.google.com/#q=${searchterm//+( )/+}"
echo "OPENING: $c"
}
Затем запустите новую оболочку входа и протестируйте ее
$ bash -l
$ search
Please enter a search term: ask ubuntu
OPENING: https://www.google.com/#q=ask+ubuntu
$
Вы можете использовать эту команду:
sed -i 's/ /+/g' filename
Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра
Пример. заменить каждое пространство символом плюса
$ var='some string with spaces'
$ echo "${var// /+}"
some+string++++with+spaces
или заменить последовательности пробелов одним плюсом (при условии, что вы включили расширенное подглаживание в оболочке)
$ echo "${var//+( )/+}"
some+string+with+spaces
Вы может назначить новую переменную newvar="${var//+( )/+}" или переназначить, чтобы изменить значение переменной напрямую, т.е.
$ var='some string with spaces'
$ echo "$var"
some string with spaces
$
$ var="${var//+( )/+}"
$ echo "$var"
some+string+with+spaces
Вот иллюстрация ее использования в контексте, описанном в обновленном вопрос:
Построить минимальный ~/.bash_profile
if [ -r $HOME/.profile ]; then
. $HOME/.profile
fi
search() {
read -p 'Please enter a search term: ' searchterm
c="https://www.google.com/#q=${searchterm//+( )/+}"
echo "OPENING: $c"
}
Затем запустите новую оболочку входа и протестируйте ее
$ bash -l
$ search
Please enter a search term: ask ubuntu
OPENING: https://www.google.com/#q=ask+ubuntu
$
Вы можете использовать эту команду:
sed -i 's/ /+/g' filename
Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра
Пример. заменить каждое пространство символом плюса
$ var='some string with spaces'
$ echo "${var// /+}"
some+string++++with+spaces
или заменить последовательности пробелов одним плюсом (при условии, что вы включили расширенное подглаживание в оболочке)
$ echo "${var//+( )/+}"
some+string+with+spaces
Вы может назначить новую переменную newvar="${var//+( )/+}" или переназначить, чтобы изменить значение переменной напрямую, т.е.
$ var='some string with spaces'
$ echo "$var"
some string with spaces
$
$ var="${var//+( )/+}"
$ echo "$var"
some+string+with+spaces
Вот иллюстрация ее использования в контексте, описанном в обновленном вопрос:
Построить минимальный ~/.bash_profile
if [ -r $HOME/.profile ]; then
. $HOME/.profile
fi
search() {
read -p 'Please enter a search term: ' searchterm
c="https://www.google.com/#q=${searchterm//+( )/+}"
echo "OPENING: $c"
}
Затем запустите новую оболочку входа и протестируйте ее
$ bash -l
$ search
Please enter a search term: ask ubuntu
OPENING: https://www.google.com/#q=ask+ubuntu
$
Вы можете использовать эту команду:
sed -i 's/ /+/g' filename
Чтобы заменить символы в переменной в оболочке bash, вы можете использовать расширение параметра
Пример. заменить каждое пространство символом плюса
$ var='some string with spaces'
$ echo "${var// /+}"
some+string++++with+spaces
или заменить последовательности пробелов на один плюс (при условии, что вы включили расширенное подглаживание в оболочке)
$ echo "${var//+( )/+}"
some+string+with+spaces
Вы может назначить новую переменную newvar="${var//+( )/+}"
или переназначить, чтобы изменить значение переменной напрямую, т.е.
$ var='some string with spaces'
$ echo "$var"
some string with spaces
$
$ var="${var//+( )/+}"
$ echo "$var"
some+string+with+spaces
. Вот иллюстрация ее использования в контексте, описанном в вашем обновленном вопросе:
Построить минимальный ~/.bash_profile
if [ -r $HOME/.profile ]; then
. $HOME/.profile
fi
search() {
read -p 'Please enter a search term: ' searchterm
c="https://www.google.com/#q=${searchterm//+( )/+}"
echo "OPENING: $c"
}
Затем запустите новую оболочку входа и протестируйте ее
$ bash -l
$ search
Please enter a search term: ask ubuntu
OPENING: https://www.google.com/#q=ask+ubuntu
$