Вставлять каналы в псевдонимы неудобно. Вместо этого создайте функцию оболочки, в которую вы можете передать вещи:
G () {
grep -i "$@"
}
A () {
awk -v col="$1" '{ print $col }'
}
Затем,
ps -ef | G mysql | A 2
Но этот конкретный конвейер в системе Linux будет более или менее таким же, как
pgrep mysql
Вот что происходит при выполнении sed -i
(strace
):
openat(AT_FDCWD, "input", O_RDONLY) = 4
[...]
openat(AT_FDCWD, "./sedMSD2Zj", O_RDWR|O_CREAT|O_EXCL, 0600) = 5
[...]
rename("./sedMSD2Zj", "input") = 0
Разрешения Windows NTFS намного сложнее, чем разрешения Linux. Я не знаком с ними, но кажется, что этому пользователю разрешено создавать файлы, но не переименовывать их.
Вы запускаете этот сценарий для файлов Windows из подсистемы? Если это так, то простым решением, вероятно, будет перемещение файлов в подсистему Ubuntu, а затем перемещение их обратно, когда вы закончите. Я думаю, что это будет соответствовать ответу Хауке, поскольку ваш пользователь WSL, вероятно, не имеет разрешения на выход из подсистемы и изменение файлов Windows.