Вам необходимо отредактировать файл / etc / passwd
, чтобы изменить домашний каталог пользователей, которые в данный момент вошли в систему.
Измените / etc / passwd
на sudo vipw
и измените домашний каталог пользователя.
vipw
настоятельно рекомендуется, кроме vim
или других редакторов, поскольку vipw
установит блокировку для предотвращения любого повреждения данных.
Другой вариант :создать скрипт ed
!
Это начинается с предварительного -подсчета количества необходимых соединений; затем он генерирует это количество ed
команд поиска и объединения и направляет их вместе с сохранением и выходом в конце вed
:
#!/bin/bash
n=$(grep -c '^module *$' input)
{
for((i=1; i <= n; i++))
do
printf '/^module *$/\n.,+1j\n'
done
echo w
echo q
} | ed -s input >/dev/null
Вам нужно соединить строки module
со следующей строкой.
Использованиеsed
:
$ sed '/^module/N;s/\n//' file
module x(a,b,c)
module y(d,e,f,
g,h,i)
module z(j,k,l)
Данные копируются и вставляются как есть, с пробелами в конце каждой строки.
Команда sed
будет печатать каждую строку по мере ее чтения, но когда она встречает строку, начинающуюся со строки module
, она добавляет следующую строку со встроенным символом новой строки в -между (это то, что N
делает ). Мы удаляем этот символ новой строки с заменой до того, как результат будет напечатан.
Если в ваших данных нет пробелов в конце строк, используйте
$ sed '/^module/N;s/\n/ /' file
module x(a,b,c)
module y(d,e,f,
g,h,i)
module z(j,k,l)
На тот случай, если вам понадобится (без пробелов в конце строк ввода):
$ sed -e '/^module/bpp' -e 'H;$bpp' -e 'd' \
-e ':pp' -e 'x;/^$/d;s/\n/ /g' file
module x(a,b,c)
module y(d,e,f, g,h,i)
module z(j,k,l)
Аннотированный sed
сценарий:
/^module/ b print_previous; # print previous record
H; # append this line to hold space
$ b print_previous; # print previous (last) record
d; # end processing this line
:print_previous; # prints a record accumulated in the hold space
x; # swap in the hold space
/^$/ d; # if line is empty, delete it
s/\n/ /g; # replace embedded newlines by spaces
# (implicit print)
Использование awk:
~ awk '/^module/ {l = $0; getline; printf "%s", l} 1' input-file
module x(a,b,c)
module y(d,e,f,
g,h,i)
module z(j,k,l)
Для каждой строки, начинающейся с module
, сохраните строку в l
, перейдите к следующей строке(getline
)и напечатайте сохраненную строку без новой строки. Затем распечатайте каждую строку.