Вы перепутываете два различных случая:
foo ; bar
будет выполнять нечто, ожидать его, чтобы закончить и затем управлять баромfoo & bar
запустит нечто, поместит его в фон и запустит панель непосредственно впоследствии.Необходимо решить, или использовать тот или другой. Вы не можете сделать обоих.;)
Для решения Вас проблема можно просто выполнить все задания в фоне и затем использовать job
перечислять pids:
michas@lenny:~$ sleep 10 &
[1] 18007
michas@lenny:~$ sleep 10 &
[2] 18011
michas@lenny:~$ sleep 10 &
[3] 18015
michas@lenny:~$ sleep 10 &
[4] 18019
michas@lenny:~$ sleep 10 &
[5] 18026
michas@lenny:~$ jobs -p
18007
18011
18015
18019
18026
michas@lenny:~$
Вам также не обязательно нужен pids для отправки сигналов уничтожения. Например, kill %1
уничтожит первый фоновый процесс.
Если ваши данные выражены в столбцах фиксированной ширины, вы можете сделать:
Для первого случая:
sed 's/^.\{4\}$/& -9/'
(добавить " -9"
к 4-символьным строкам).
Для второго случая:
sed -e '/.\{11\}/b' -e 's/$/ /;s/\(.\{10\}\).*/\1-9/'
(добавить до 10 пробелов и -9 к строкам менее 11 символов).
Обычно для разбора строк с полями фиксированной ширины см. специальную переменную GNU awk
FIELDWIDTHS
.
С GNU sed
sed ':;s/^.\{0,9\}$/& /;t;s/^.\{10\}$/&-9/' file
Добавляет один пробел, пока количество символов меньше десяти, используя тест т
.
Затем заменяет строки с десятью символами на себя и -9.
При наличии доступа root к компьютеру можно записать процедуру установки. Я сделал несколько предположений, так как доступность apt-get
#script, saved local, executed on ssh server:
#install tools:
apt-get -y install tool1 tool2
#be careful with the -y option, though
#new zsh tools:
#load standard .zshrc file
echo . /home/user/.zshrc > /home/user/.additional_zsh_rc
#add alias
echo alias faster=\'than this long command\' > /home/user/.additional_zsh_rc
#new vimrc
echo "vim settings" > /home/user/.vimrc
#make sure to change ownerships as we are running this script as root
chown user:user /home/user/.additional_zsh_rc
chown user:user /home/user/.vimrc
Теперь, когда мы запустим сценарий как root для установки
ssh root@server "/bin/zsh -s" <install_script
ТОГДА мы можем войти в систему как пользователь (после выполнения сценария вы автоматически выйдете из системы как root). Обратите внимание, что нам придется изменить наш стандартный файл rcfile
на новый с помощью -rcs
(не стесняйтесь изменять источник или весь файл .zshrc
, в моем примере новый файл rcfile также является источником стандартного файла .zshrc
)
ssh user@host "/bin/zsh --rcs /home/user/.additional_zsh_rc"
Теперь можно также поместить обе команды ssh
в сценарий, так что вам не нужно будет выполнять их вручную каждый раз. Для запуска без паролей используйте пароль ssh-login, но помните об опасностях, когда кто-то имеет доступ к удаленным машинам без пароля после кражи компьютера.
Вы можете попробовать установить nix с помощью PRoot . Можно также создать для пользовательского префикса:
NIX_STORE_DIR=/opt/custom/store \
NIX_STATE_DIR=/opt/custom/var/nix \
NIX_DB_DIR=/opt/custom/var/nix/db \
nix-build ...
-121--74050- Можно использовать следующую команду:
perl -ane 'if(!$F[1]){print $F[0]," -9\n"}else{print $_;}'
Эта команда считывает входные данные по строкам и печатает «-9» во втором столбце, если он пуст.
echo "2342 1
6473 2
7463 2
3647
2734 1
9343" | perl -ane 'if(!$F[1]){print $F[0]," -9\n"}else{print $_;}'
2342 1
6473 2
7463 2
3647 -9
2734 1
9343 -9
Вы можете попробовать этот awk
в своем первом примере:
awk 'NF == 1 { $2 = -9; } 1' file
Как упоминалось в других сообщениях с gawk
, вы можете использовать FIELDWIDTHS
, так что вы можете попробовать это со своим вторым:
gawk 'BEGIN { FIELDWIDTHS = "4 1 1 1 2 1 1"} { for (i = 1; i <= NF; i++) { if ($i == "") { if (i == 7) $i = "-9"; else $i = " "; } } printf("%s %s %s %s\n", $1, $3, $5, $7); }' file