Адаптированный от Не Так Часто Задаваемые Вопросы :
#include
#include
#include
std::string data = "Abc";
std::transform(data.begin(), data.end(), data.begin(),
[](unsigned char c){ return std::tolower(c); });
Вы действительно не собираетесь уходить, не выполняя итерации через каждый символ. Нет никакого способа знать, является ли символ нижним регистром или верхним регистром иначе.
, Если Вы действительно ненавидите tolower()
, вот специализированная альтернатива только для ASCII, что я не рекомендую использовать:
char asciitolower(char in) {
if (in <= 'Z' && in >= 'A')
return in - ('Z' - 'z');
return in;
}
std::transform(data.begin(), data.end(), data.begin(), asciitolower);
знать, что tolower()
может только сделать per-single-byte-character замену, которая является неподходящей для многих сценариев, особенно при использовании multi-byte-encoding как UTF-8.
Выполнение export PATH=$PATH:/...
не устанавливает Ваш PATH
в масштабе всей системы. Это - просто переменная оболочки. Запустите новую оболочку и БУМ , он пошел. Очевидно, если Вы добавили, что к ~/.bashrc
(или другая среда загружают файл) необходимо будет вернуться, которые изменяются, но это не походит проблему здесь.
, Если Вы являетесь отчаянными для не запуска новой оболочки, Вы могли бы установить ее путем удаления ее вручную, с:
export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Если Вы хотите, используют его в качестве команды, вот немного сценария:
#!/bin/bash
# This script removes folder from PATH variable
# Folders to remove reading as arguments
if [ $# -lt 1 ]; then
echo "You should give at least one argument"
echo "For example"
echo "[110] /usr/local/bin"
else
FOLDERS_TO_REMOVE=`echo $@ | sed 's/ /|/g'`
echo "You actually PATH variable is:"
echo $PATH
echo "###"
PATH=$( echo ${PATH} | tr -s ":" "\n" | grep -vwE "(${FOLDERS_TO_REMOVE})" | tr -s "\n" ":" | sed "s/:$//" )
echo "Now you need to run"
echo "export PATH=$PATH"
fi
Имя это unexport
, и добавляют его к Вашему ПУТИ.
Использование:
unexport /usr/local/bin /bin /sbin
Этот сценарий не изменяет Ваш на самом деле PATH
. Если Вы хотите, чтобы сценарий сделал это, необходимо изменить последнюю строку. Замена echo "export PATH=$PATH"
к export PATH=$PATH
Если Вы помещаете export
оператор в каком-либо файле инициирования оболочки как ~/.bashrc
, можно использовать следующие команды в терминале,
#remove the export statement from the file.
sed -i 's#export PATH=$PATH:/home/avinash/Desktop/raj##g' ~/.bashrc
#source ~/.bashrc
. ~/.bashrc
Это удалит папку из пути.
при экспорте пути из терминала
папка будет в пути, пока Вы находитесь в той оболочке. Для перезаписи пути, необходимо присвоить новый путь. Как oli уже упомянутый в другом ответе.
можно использовать следующую команду для устанавливания старого пути
export PATH=`echo ${PATH/\:\/home\/avinash\/Desktop\/raj/}`
Или, просто
export PATH=${PATH/':/home/avinash/Desktop/raj'/}
Это - Замена Подстроки,
${string/substring/replacement}
В Вашей текущей оболочке (Ваша текущая сессия терминала гнома) можно сделать это использование:
export PATH=${PATH%:/home/avinash/Desktop/raj}
В целом:
${string%substring}
удаляет самое короткое соответствие $substring
от назад из $string
.
Выезд Обработка строк для большего количества информации