Qual é a diferença entre ls >e ls >>? Preciso entender isso para minha computação GCSE, mas não sei qual é a diferença.
man bash).
Qual é a diferença entre ls >e ls >>? Preciso entender isso para minha computação GCSE, mas não sei qual é a diferença.
man bash).
Respostas:
>& >>são operadores de redirecionamento; eles transferem a saída de algo, neste caso ls, para outro lugar. Se essa saída for para um arquivo, o arquivo >será truncado - ou seja, excluirá qualquer conteúdo anterior, enquanto >>acrescentará novos dados ao final do arquivo, mantendo o conteúdo anterior. Isso funcionará com qualquer entrada, então echo& cat, por exemplo, também pode ser usado dessa maneira.
Também é interessante o |operador, que passa os dados para outro aplicativo - ls | cat -nfornecendo uma listagem numerada de linhas!
Tubos é o termo relevante.
stracesaída para bash -c 'echo a > blah': open("blah, O_WRONLY|O_CREAT|O_TRUNC, 0666), então truncar seria o termo certo.
>>to write to a file (ex: a log) também tem o lado legal efeito para não ter caracteres "Nul" aparecer no início do arquivo saif se o arquivo estiver truncado enquanto o processo ainda estiver gravado nele! (ex: durante a rotação do arquivo de log). Como "foo> file" não procura, ele não percebe a mudança de tamanho e ainda aponta para além do início, e o SO preenche Nul. foo >>fileprocura e, portanto, aponta para a nova posição (o começo).
Os símbolos >e >>são usados para redirecionar a saída para um arquivo.
Ambos criarão o arquivo se o arquivo não existir. Se o arquivo já existir, >substituirá o arquivo em que como >>anexará os dados ao arquivo.
Então ls > myfile, criará um documento nomeado myfilese ele não existir. Se myfilejá estiver presente e contiver alguns dados, eles serão substituídos pelos novos dados que você passar.
Considerando que ls >> myfileirá criar um arquivo se não existir e gravar dados para ele. Se o arquivo existir com alguns dados, novos dados serão adicionados ao final.
Se você usar um único>, ele substituirá o arquivo se ele já existir. Tenha muito cuidado ao usar este.
Se você usar dois >>, ele será anexado (em outras palavras, comece a escrever na parte inferior do arquivo) se ele já existir. Caso contrário, ele cria um novo arquivo, se não existir.