Subbing Дублировать имя пользователя с номером в конце

Вы можете использовать Alt + `(клавиша выше Tab), чтобы переключаться между окнами одного и того же приложения.

Вы можете даже смешать Alt + Tab, чтобы переключаться между приложением и ` +` для переключения между окнами выбранного приложения.

В этом сообщении блога из «Дидье Роше» от Canonical есть изложение обоснования. Это часть серии, посвященной разработке интеграции gnome в Ubuntu 17.10.

1
задан 11 December 2017 в 01:31

2 ответа

Один возможный подход с grep

Из вашего кода я вижу, что вы добавляете к файлу userData, что означает, что имена файлов будут увеличиваться в их числовом суффиксе. Итак, чтобы получить следующий доступный суффикс, мы могли бы просмотреть файл userData с помощью grep и просто подсчитать количество строк, в которых происходит имя пользователя:

$ grep -c 'jsmit' users.txt 2

Конечно, если возвращаемое число равно 0, мы может просто игнорировать это, потому что это новое имя пользователя. Вот небольшой сценарий того, как это работает:

#!/bin/bash read -p "Enter first name: " firstname read -p "Enter lastname: " lastname username=$(printf "%s%s" "${firstname:0:1}" "${lastname:0:4}") num=$( grep -c "$username" userData ) if [ "$num" -gt 0 ]; then username="$username$num" fi echo "$username"

Протестируйте с jsmit и jsmit1 уже в файле:

$ ./indexed_usernames.sh Enter first name: john Enter lastname: smith jsmit2

Однако обратите внимание, что это очень наивный и упрощенный способ и предполагает, что имена пользователей не удаляются или отсутствуют индексы и добавляются линейным образом.

Другие вещи, которые следует учитывать

Как я понимаю, вы строите небольшая пользовательская база данных в сценарии оболочки. Рассмотрим такой случай: что, если бы у нас были jsmit, jsmit1 и jsmit2, но потом мы удалили jsmit1. Это означает, что скрипт должен учитывать, какие числовые индексы действительно доступны, иначе, если мы слепо увеличим числа, что может привести к столкновению. Рассмотрим капиталы и нижестоящие имена пользователей. Если я вхожу в John Smith и john smith, это должно привести к столкновению? Следует ли сначала конвертировать все имена пользователей в нижний регистр, а затем обрабатывать конфликты?
5
ответ дан 18 July 2018 в 01:26

Один возможный подход с grep

Из вашего кода я вижу, что вы добавляете к файлу userData, что означает, что имена файлов будут увеличиваться в их числовом суффиксе. Итак, чтобы получить следующий доступный суффикс, мы могли бы просмотреть файл userData с помощью grep и просто подсчитать количество строк, в которых происходит имя пользователя:

$ grep -c 'jsmit' users.txt 2

Конечно, если возвращаемое число равно 0, мы может просто игнорировать это, потому что это новое имя пользователя. Вот небольшой сценарий того, как это работает:

#!/bin/bash read -p "Enter first name: " firstname read -p "Enter lastname: " lastname username=$(printf "%s%s" "${firstname:0:1}" "${lastname:0:4}") num=$( grep -c "$username" userData ) if [ "$num" -gt 0 ]; then username="$username$num" fi echo "$username"

Протестируйте с jsmit и jsmit1 уже в файле:

$ ./indexed_usernames.sh Enter first name: john Enter lastname: smith jsmit2

Однако обратите внимание, что это очень наивный и упрощенный способ и предполагает, что имена пользователей не удаляются или отсутствуют индексы и добавляются линейным образом.

Другие вещи, которые следует учитывать

Как я понимаю, вы строите небольшая пользовательская база данных в сценарии оболочки. Рассмотрим такой случай: что, если бы у нас были jsmit, jsmit1 и jsmit2, но потом мы удалили jsmit1. Это означает, что скрипт должен учитывать, какие числовые индексы действительно доступны, иначе, если мы слепо увеличим числа, что может привести к столкновению. Рассмотрим капиталы и нижестоящие имена пользователей. Если я вхожу в John Smith и john smith, это должно привести к столкновению? Следует ли сначала конвертировать все имена пользователей в нижний регистр, а затем обрабатывать конфликты?
5
ответ дан 24 July 2018 в 17:23

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

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