Начальные вопросы относительно «<», «<<» и чтения файлов

  1. Я знаю, что могу сделать tr ab < file , но как это сделать для ls ? Так, например, как подать ls -l список файлов из «файла». Я попробовал ниже, и он не работал.

     $ cat>test A B C $ ls -l < test 
  2. Я не понимаю, для чего используется «<<» или здесь используется документ.

  3. Одним из моих упражнений класса является использование vi для создания файла с «:» в строке 1 и «6/3» в строке 2. Используя строку 1 в качестве разделителя и строку 2 в качестве поля, вырезайте и отобразите столбец2 из файла ,

Должен ли я зацикливаться и читать 2 строки в переменную? Использую ли я sed -n '#p' (file) ? Есть ли элегантное 1-строчное решение?

  • Вырезать одну строку на две
  • отрезать команду, заказ не сохранился?
  • Можете ли вы указать корпус для вырезания?
  • Имеет ли параметр разделителя команды cut, всегда ожидает, что он находится между строкой?
  • cut: опция требует аргумента - 'f'
  • Разрезает ли вырезать любые поля, если разделитель не существует
  • выбирая поле, когда вы не можете рассчитывать с начала
  • Могу ли я с помощью одной команды вырезать два выходных файла для двух полей моего входного файла?
  • 3 Solutions collect form web for “Начальные вопросы относительно «<», «<<» и чтения файлов”

    Простой подход:

     ls $(< file ) 

    но у него есть некоторые проблемы, например, с пробелами в именах файлов. Поэтому лучше использовать другой подход:

     xargs -d$'\n' ls < file 
    1. ls не читается со стандартного ввода, поэтому перенаправление ввода ничего не делает. Вы хотите заменить команду.

       ls -l `cat list` 

      или

       ls -l $(cat list) 
    2. Здесь документы используются для перенаправления стандартного ввода на фиксированные строки, предоставленные в скрипте вместо отдельного файла. Вы также можете сделать это из командной строки, но это имеет ограниченное значение и не является общим.

    3. Это не имеет смысла.

    Ответ первой части:

    1. вы можете использовать цикл while для передачи содержимого файла в «ls» commnad.

       while read line ; do ls -l $line done < file 
    2. грязный способ сделать это:

       counter=1 while read line ; do if [ $counter -eq 1 ] ; then delimiter=$line counter=$((counter+1)) elif [ $counter -eq 2 ] ; then field=$line counter=$((counter+1)) else echo File ended. fi done < inputfile 
    Interesting Posts

    Используйте `ln` для создания отсутствующего каталога

    Перенаправить трафик через vpn по мере необходимости

    / etc / network / interfaces автоматически запускает pppoe на беспроводном LAN (wlan0) при загрузке, а также делает его постоянным

    В чем разница между `Commit hash`,` Parent Hash` и `Tree hash` в git?

    Переименуйте файлы с не-utf8-символами, используя детоксификацию

    Проблема с доступом к серверу с VNC

    Повторение аргумента командной строки

    Как я могу воздействовать на результаты команды «locate»?

    SELinux: позволяет процессу создавать любой файл в определенном каталоге

    Как остановить emacs от окраски текста файла, который я редактирую?

    Каковы недостатки uClibc?

    «найти» для нечувствительных к регистру слов?

    Как использовать новую таблицу fdisk без перезагрузки (kpartx)?

    kali linux dual boot wifi не работает или сканирует сети

    Есть ли способ предоставить разные разрешения для разных процессов, вызываемых от одного и того же пользователя?

    Linux и Unix - лучшая ОС в мире.