Подстановка процессов здесь вам в помощь:
$ comm -23 <(find /dir -name 'something') <(cut -c43- list)
Формат <(command)
применяет дескриптор временного файла к command
, и весь <( )
используется в качестве файлового ввода дляcomm
(или любой другой команды ).
Подробнее о подстановке процессов см. здесь . Также проверьтеman bash
:
Process Substitution
Process substitution allows a process's input or output to be referred to using a filename. It takes the form of <(list) or >(list). The process list is run asynchronously, and its input or output appears as a filename. This filename is passed as an argument to the current command as the result of the expansion. If the >(list) form is used, writing to the file will provide input for list. If the <(list) form is used, the file passed as an argument should be read to obtain the output of list. Process substitution is supported on systems that support named pipes (FIFOs) or the /dev/fd method of naming open files.
Поскольку вы все еще можете запустить dpkg
, по крайней мере часть пакета dpkg
все еще присутствует. Чтобы восстановить dpkg-deb
, попробуйте повторно -установитьdpkg
:
загрузите соответствующий файл пакета(Mint 18.3 основан на Ubuntu 16.04, поэтому ищите Xenial на этой странице , чтобы получить соответствующие ссылки; ссылка для скачивания, которую я здесь даю, предполагает, что вы используетеamd64
)
wget https://launchpad.net/ubuntu/+archive/primary/+files/dpkg_1.18.4ubuntu1.6_amd64.deb
установить
sudo dpkg -i dpkg_1.18.4ubuntu1.6_amd64.deb
Если это не поможет, вам придется прибегнуть к более ручному подходу, как предложено в ответе arved:
ar x dpkg_1.18.4ubuntu1.6_amd64.deb data.tar.gz
tar xf data.tar.gz./usr/bin/dpkg-deb
sudo install usr/bin/dpkg-deb /usr/bin
Затем установите пакет с помощью dpkg
, чтобы убедиться, что все настроено правильно.
Добавьте эти каталоги (/usr/local/sbin
, /usr/sbin
и/sbin
)в PATH вашего пользователя.
В этом нет ничего плохого, и часто бывает полезно -многие «корневые» команды могут предоставить полезную информацию о вещах, у вас есть доступ для чтения , даже если они не могут ничего изменить, потому что вы не -] пользователь root не имеет прав на запись .
Либо запустите apt
с sudo -i apt.....
вместо sudo apt.....
. Это гарантирует, что команда apt
будет запущена в корневой логин оболочке (, поэтому будет выполнен профиль root.profile или.bash _с соответствующей настройкой PATH ).
См. man sudo
и найдите -i
, также известное как --login
, чтобы узнать, что делает -i
.