команды конвейера не работают должным образом Мне нужно объяснение

Прежде всего, OpenSuSE 11.2 был EOL'd, таким образом, вы, вероятно, хотите модернизировать.

Однако из страницы справочника можно изменить корневой каталог с -R/path/to/new/root.

Это означает, делаете ли вы следующее:

zypper in foo

И нечто жизни в / мусорное ведро / затем:

zypper -R /usr/local/ in foo

поместит нечто в /usr/local/bin /

0
05.08.2015, 05:11
4 ответа

Разбивка каждого из шагов:

  • touch ~ / scratches / scr6.txt

    Если файл существует, обновляет метку времени до настоящего момента. Если не существует, создает его.

  • cat ~ / scr.txt> ~ / scratches / scr6.txt

    Читает ~ / scr.txt и записывает содержимое в ~ scratches / scr6.txt

  • cat / dev / null> ~ / scr. txt

    Очищает файл ~ / scr.txt

Как упоминалось в комментариях, использование «&&» (И) между командами вместо «|» (ТРУБА) было бы более подходящим.

1
28.01.2020, 02:36

Насколько я понимаю, конвейерные процессы запускаются более или менее одновременно. Как правило, процессы в конвейере будут читать из стандартного ввода или записывать в стандартный вывод (или и то, и другое), и завершение ввода-вывода будет определять, когда процесс завершится.

Для процессов, у которых нет вывода (например, touch ) или какого-либо стандартного ввода (например, cat при работе с файлом), я обычно ожидаю, что их соединения труб будет просто проигнорирован программой.

Таким образом, у вас будет три команды, выполняющиеся параллельно:

touch ~ / scratches / scr6.txt , cat ~ / scr.txt> ~ / scratches / scr6.txt , и cat / dev / null> ~ / scr.txt .

Вероятно, это зависит от ОС, выйдет ли команда 2 с ошибкой, если ~ / scr.txt еще не существует, поскольку она будет в состоянии гонки с командой 3. Команды 1 и 2 также находятся в состоянии гонки , но гонка повлияет только на ctime / mtime / atime файла.

0
28.01.2020, 02:36

Решение

Google для «lenovo g500 touchpad linux» вернула страницу поддержки ноутбуков и нетбуков для Lenovo G500 , установив раскрывающийся список компонентов на мышь и клавиатура дает следующее:

Touchpad Driver (Synaptics, Elan)
Version: 16.4.1.0 /11.4.14 .1 
Date: 5/26/2013

Synaptics - это все, что нам нужно от записи, чтобы определить правильный драйвер. Теперь читатели могут выпускать: sudo apt-get update & & sudo apt-get install xserver-xorg-input-synaptics с последующей перезагрузкой. Если Ubuntu возвращает информацию о том, что данный драйвер уже установлен, ознакомьтесь с документацией сообщества SynaputiveTouchpad Ubuntu , в частности с разделом «Устранение неполадок». Читатели должны убедиться, что сенсорная панель обнаружена.


Проблема

Многие Live CD используют автоматическое обнаружение оборудования для обеспечения работы LiveCD на максимально возможном количестве устройств. Проблема в том, что после обнаружения оборудования результаты не передаются в сценарий или программу установщика дистрибутива. В результате установщик устанавливает только пакеты, которые обеспечивают основные функциональные возможности при перезагрузке. В вашем случае LiveCD правильно обнаружил сенсорную панель Synaptics, но установщик не знал об этом. Самый простой способ хитрости установщика - оставить внешнюю мышь отключенной во время установки, тем самым заставив установщика выбрать трекпад в качестве единственного указательного устройства.

-121--229186-

Возможно, не самый лаконичный, но он кажется надежным и эффективным:

# $(get_host_dns_short "google.com")
#
# Outputs the IPv4 IP Address of a hostname, resolved by DNS. Returns 0 if DNS
# responded successfully; 1 otherwise. Will mask error output.
function get_host_dns_short()
{
    (
        set -o pipefail

        host -4 -W1 -t A "$1" 2>/dev/null | awk '/has address/ { print $NF; exit }'
    ) && return 0 || return 1
}

Это будет выводить один IPv4 IP, а также возвращать 1 в случае сбоя, одновременно маскируя выход stderr.

Вы можете использовать его следующим образом:

GOOGLE_IP="$(get_host_dns_short "google.com")"
if [[ $? -eq 0 ]]; then
    echo "Google's IP is ${GOOGLE_IP}."
else
    echo "Failed to resolve Google's IP."
fi

IP-адрес Google - 216.58.192.46.

Если требуется IPv6 адрес, просто замените -4 на -6 .

-121--1847-

Хорошо, учитывая, что файл scr.txt содержит некоторый текст перед выполнением команды и scr6.txt еще не существует: команда

touch ~/scratches/scr6.txt | cat ~/scr.txt > ~/scratches/scr6.txt | cat /dev/null > ~/scr.txt
  1. Пустой файл scr.txt ( кошка/dev/null> ~/scr.txt)
  2. Отвергает scr6.txt с содержанием scr.txt (ничто) ( кошка ~/scr.txt> ~/scratches/scr6.txt)
  3. ничего Не Делает, потому что scr6.txt уже существует ( ~/scratches/scr6.txt прикосновения)

, Но следующая команда

cat ~/scr.txt > ~/scratches/scr6.txt

Просто пишет scr.txt содержание к scr6.txt

Так вот почему, оба файла пусты в 1-м случае, и все работает как ожидаемый в 2-м случае.

2
28.01.2020, 02:36

Простыми словами:

Команда touch - это способ создания новых, пустых файлов . Он также используется для изменения меток времени (т. Е. Даты и времени последнего доступа и модификации) в существующих файлах и каталогах.

В первой команде создается пустой файл с именем scr6.txt .

Но во второй команде создается файл scr6.txt и записывается все содержимое scr.txt в этот файл.

-1
28.01.2020, 02:36

Теги

Похожие вопросы