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

  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-строчное решение?

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 
Linux и Unix - лучшая ОС в мире.