Unix: команда «ls» показывает файлы с ? после расширения

#java #shell #unix #ls #filewriter

#java #оболочка #unix #ls #filewriter

Вопрос:

Я написал сценарий оболочки (test.sh ) использование Java. Этот сценарий оболочки фактически выполняет задание копирования из одного файла в другой. После выполнения сценария оболочки я открыл каталог с консоли и набрал ls . Он показывает выходной файл с ?после расширения.

пример : foo.csv?

 File execFile = new File(file);
    FileWriter fwFile;
    try {
        fwFile = new FileWriter(execFile);
        execFile.setExecutable(true);
        BufferedWriter bwFile = new BufferedWriter(fwFile);
        bwFile.write(strOutput.substring(0, 2));
        bwFile.write("rn");
        bwFile.write("cd "   strOutput);
        bwFile.write("rn");
        bwFile.write("mkdir "   strOutput);
        bwFile.write("rn");
        bwFile.write(strUnixPath);
        bwFile.write("rn");
        bwFile.write("cd "   strWorkingPath   IPlatinumConstants.FS "lib" IPlatinumConstants.FS "Unx");
        bwFile.write("rn");
        bwFile.write("echo Cut Src Start time %time%");
        bwFile.write("rn");

                bwFile.write("cp "   " ""   strSourceFilePath   ""  ""
                          strOutput   "copy_A"");
                bwFile.write("rn");
  

Я предполагаю, что при создании сценария оболочки с использованием Java о чем-то нужно позаботиться

Комментарии:

1. Некоторые текстовые редакторы могут сохранять резервные копии и временные файлы подобным образом. Какое это имеет отношение к программированию?

2. Рассмотрите возможность публикации кода, который генерирует и выполняет сценарий оболочки, и пример сгенерированного сценария оболочки

3. Вероятно, OP сохранил файл в Windows, и теперь он имеет окончания файлов Windows. Используйте утилиту, такую как dos2unix, для преобразования скрипта.

4. вы почти правы.. это как-то связано с окончаниями файлов Windows.. но я пытаюсь создать файл только в среде unix

5. удалите r из r n, и он должен работать.

Ответ №1:

 bwFile.write("rn");
  

замените эти строки окончаниями строк UNIX

 bwFile.write("n");
  

или установите правильный разделитель строк

 System.setProperty("line.separator", "n");
bwFile.newLine()