mkdir $(seq --format 's%.0f' 1 50)
или если бы Вы хотите дополненные нулем числа (который был бы лучше для сортировки):
mkdir $(seq --format 's%02.0f' 1 50)
или:
mkdir s$(seq -s ' s' -w 1 50)
- отметьте строку' незадолго до $()
, без него первый созданный каталог будет всего '01', а не 's01'
и, наконец: mkdir $(printf "s%02i " $(seq 1 50))
seq
от GNU Coreutils
странно, seq's --format
или -f
опция только позволяет двойные типы printf с плавающей точкой (как f и g. также странный шестнадцатеричный формат с плавающей точкой, что я никогда не находил использования для). Я понятия не имею почему. Было бы хорошо, если бы это также поддерживало другой printf(3)
числовые типы как целое число (d, i), восьмеричный (o, U) или шестнадцатеричное число (x, X).
Так или иначе, двойной формат с 0 десятичной точностью как %.0f
или %02.0f
достаточно близко к целому числу с этой целью.
$ seq --help Usage: seq [OPTION]... LAST or: seq [OPTION]... FIRST LAST or: seq [OPTION]... FIRST INCREMENT LAST Print numbers from FIRST to LAST, in steps of INCREMENT. -f, --format=FORMAT use printf style floating-point FORMAT -s, --separator=STRING use STRING to separate numbers (default: \n) -w, --equal-width equalize width by padding with leading zeroes --help display this help and exit --version output version information and exit If FIRST or INCREMENT is omitted, it defaults to 1. That is, an omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST. FIRST, INCREMENT, and LAST are interpreted as floating point values. INCREMENT is usually positive if FIRST is smaller than LAST, and INCREMENT is usually negative if FIRST is greater than LAST. FORMAT must be suitable for printing one argument of type `double'; it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point decimal numbers with maximum precision PREC, and to %g otherwise.
См. также: http://www.gnu.org/software/coreutils/manual/html_node/seq-invocation.html
Тильда ~
интерпретируется Вашей оболочкой. Ваша оболочка интерпретирует ~
как краткая форма $HOME
.
Попробовать (echo ~; HOME=foo; echo ~)
. Это должно сначала распечатать Ваш реальный корневой каталог и впоследствии "нечто", поскольку Вы устанавливаете $HOME
к этому.
Значение по умолчанию $HOME
прибывает от Вас конфигурация системы. Использовать getent passwd
перечислять всех известных пользователей и их корневые каталоги. В зависимости от Вашей конфигурации системы те записи могли бы прибыть из /etc/passwd
или любая удаленная служба каталогов.
Если Вы только хотите временно переопределить свой корневой каталог, просто установите другого $HOME
.
Если Вы постоянно хотите изменить его, необходимо изменить passwd запись, например, путем ручного редактирования /etc/passwd
.
Значение, которое используется для ~
определяется от значения, которое Вы получаете от административной базы данных (getent passwd
), обычно в /etc/passwd
файл, для корневого каталога каждого пользователя это определяется там.
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
sam:x:500:500:Sam Mingolelli:/home/sam:/bin/bash
tracy:x:501:501::/home/tracy:/bin/bash
6-й столбец в этом файле - то, где значение использовало, когда кто-то вводит cd ~
прибывает из.
Вы видите то, что система использовала бы для корневого каталога пользователя с помощью команды getent passwd
:
$ getent passwd
root:x:0:0:root:/root:/bin/bash
sam:x:500:500:Sam Mingolelli:/home/sam:/bin/bash
tracy:x:501:501::/home/tracy:/bin/bash
"Базой данных", которая обеспечивает их, управляют через Ваш системный сопоставитель, определенный в /etc/nsswitch.conf
.
$ grep passwd /etc/nsswitch.conf
#passwd: db files nisplus nis
passwd: files
Файлы выше средств /etc/passwd
, но "база данных" могла прибыть из LDAP, NIS или других местоположений по сети, например.
Выполнить эту операцию немного хитро после того, как учетные записи были созданы. При создании учетных записей с нуля затем, это тривиально для переопределения местоположения пользователя их корневого каталога. При выполнении useradd
команда можно указать местоположение, которое будет использоваться для корневого каталога пользователя.
$ useradd -d /ext1/acheong ...
выборка из страницы справочника
-d, --home HOME_DIR
The new user will be created using HOME_DIR as the value for the user’s
login directory. The default is to append the LOGIN name to BASE_DIR and
use that as the login directory name. The directory HOME_DIR does not
have to exist but will not be created if it is missing.
Это становится большим количеством хирургической операции с тех пор часто времена, путь корневого каталога пользователя включен статически в конфигурационных файлах, делая ее более хитрой.
$ grep home /home/sam/.*
/home/sam/.gtkrc-1.2-gnome2:include "/home/sam/.gtkrc.mine"
Они должны будут или быть зафиксированы, или необходимо будет предоставить ссылку от /home/sam
к новому местоположению, /ext1/sam
.
/etc/passwd
Если система получит корневые каталоги от LDAP, NIS, то и т.д. затем необходимо будет выполнить перемещение в тех системах и скоординировать с перемещением файлов от /home/sam
кому: /ext1/sam
.
Если необходимо распределить пользователей по нескольким файловым системам, можно также использовать automounter
. И даже позволит вам иметь разные "базовые" каталоги для ваших пользователей.
csh
следующая переменная$home
(нижний регистр), и Вы не можетеsetenv HOME /ext1/acheong
— Вы можете толькоset home=/ext1/acheong
, и это работало на меня.) – Andrew Cheong 04.12.2013, 16:50usermod -d
– user606723 04.12.2013, 17:02vipw
(или безотносительно GUI Ваша ОС обеспечивает) вместо редактирования/etc/passwd
непосредственно. Прямое редактирование рискует повреждать файл, с которого может быть трудно восстановить. – Keith Thompson 04.12.2013, 22:45