Perguntas para iniciantes sobre “”, “” e leitura de arquivos

0
  1. Eu sei que posso fazer tr a b < file , mas como faço isso para ls ? Por exemplo, como alimentar ls -l uma lista de arquivos de um 'arquivo'. Eu tentei o abaixo e não funcionou.

    $ cat>test
    A
    B
    C
    $ ls -l < test
    
  2. Não estou claro sobre o que "< <" ou aqui o documento é usado para.

  3. Um dos exercícios da minha classe é usar o vi para criar um arquivo com “:” na linha 1 e “6/3” na linha 2. Usando a linha 1 como delimitador e a linha 2 como o campo, corte e exibir column2 de um arquivo.

Eu deveria fazer um loop e ler as duas linhas em uma variável? Eu uso sed -n '#p' (file) ? Existe uma solução elegante de 1 linha?

    
por Ben 09.04.2015 / 18:02

3 respostas

2

Uma abordagem simples é:

ls $(< file )

mas tem alguns problemas, por ex. com espaços em nomes de arquivos. Então é melhor usar outra abordagem:

xargs -d$'\n' ls < file
    
por 09.04.2015 / 18:28
1
  1. ls não lê da entrada padrão, portanto, o redirecionamento de entrada não faz nada. O que você quer é a substituição de comandos.

    ls -l 'cat list'
    

    ou

    ls -l $(cat list)
    
  2. Aqui, os documentos são usados para redirecionar a entrada padrão para cadeias fixas fornecidas no script, em vez de um arquivo separado. Você também pode fazer isso a partir da linha de comando, mas isso tem um valor limitado e não é comum.

  3. Isso não faz sentido.

por 09.04.2015 / 18:16
0

Responda a primeira parte:

  1. você pode usar while loop para passar o conteúdo do arquivo para o 'ls' commnad.

    while read line ; do
    ls -l $line 
    done < file
    
  2. maneira suja de fazer isso:

    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
    
por 09.04.2015 / 18:18

Tags