Как зайти в папку с пробелом linux

Обновлено: 04.07.2024

В настоящее время я работаю с предоставленным поставщиком программным обеспечением, которое пытается обработать отправку файлов вложений в другой скрипт, который извлечет текст из указанного файла. Сценарий завершается ошибкой, когда мы получаем файлы из внешнего источника, содержащие пробелы, так как программное обеспечение, поставляемое поставщиком, не заключает имя файла в кавычки - это означает, что при запуске сценария извлечения текста оно получает имя файла, которое будет разбито на пространство и вызвать ошибку в сценарии извлечения. Программное обеспечение, предоставленное поставщиком, нами не редактируется.

Весь этот процесс предназначен для автоматической передачи, поэтому проблема заключается в том, чтобы получить такой ключ, который можно было бы случайно включить в механизмы.

То, что мы пытаемся сделать, это обработать разделенное имя в нашем скрипте извлечения текста, так как это часть, над которой мы имеем некоторый контроль. После быстрого Google, кажется, что изменение значения IFS для сценария будет быстрым решением, но, к сожалению, этот сценарий вступит в силу после того, как расширения уже искажают входящие данные.

Используемый мной скрипт принимает значения -e, -i и -o. Эти значения отправляются из предоставленного поставщиком сценария, над которым я не могу контролировать редактирование.

Я допускаю, что в этом могут быть кусочки, которые я не до конца понимаю, и это может быть простое исправление, но моя конечная цель состоит в том, чтобы иметь возможность извлечь -o, -i и -e, которые все содержат 1 значение, независимо от того, пространства в каждом разделе. Я могу обработать цитирование сценария после того, как я могу извлечь значение имени файла

3 ответа

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

Поскольку мы создаем это для предварительно созданного сценария, который передается ему, и мы не будем обновлять этот сценарий в ближайшее время, мы можем с уверенностью признать, что этот сценарий всегда получит флаг -i, -o и -e, и между ними будут пробелы, в результате чего все переданные фрагменты будут храниться в различных переменных в $* .

И мы можем предположить, что текст после флага является ответом на флаг, пока не будет указан другой флаг. Это оставляет нам 3 сценария:

  1. Переменная содержит один из флагов
  2. Переменная содержит первый фрагмент параметра сразу после флага
  3. Переменная содержит часть 2+ параметра, а пробел в имени был интерпретирован как разделение и требует повторной вставки.

Одной из других проблем, с которыми я продолжал сталкиваться, была попытка заставить строковые литералы приравниваться к переменным в моих операторах IF. Чтобы решить эту проблему, я предварительно сохранил все соответствующие данные в переменных массива, чтобы я мог проверить $ variable == $ otherVariable.

Хотя я не ожидаю, что это изменится, мы также рассмотрели, что делать, если три флага отображаются в другом порядке, чем мы ожидаем (мы предполагали, что они перечисляют как i, o, e . но мы не можем видеть точно то, что прошло). Параметры выгружаются в массив в том порядке, в котором они были прочитаны, а параллельный массив отслеживает, относятся ли элементы в слотах 0,1,2 к i, o, e.

В конечном результате все еще есть один недостаток: если в имени файла содержится более одного последовательного пробела, пробел усекается перед обработкой, и я могу учитывать только один пробел. Но, говоря о том, что мы обработали более 4000 файлов перед тем, как встретить один с пробелом, я считаю маловероятным, что с соглашениями об именах мы столкнемся с чем-то большим, чем один пробел.

На этом этапе мы должны были бы вмешаться в редкое вмешательство в любом случае.

Окончательное изменение кода выглядит следующим образом:

Размещенный вами фрагмент скрипта не имеет проблем с пробелами в аргументах.

Следующее, например, не нуждается в кавычках (так как это назначение):

Все остальные варианты использования $inputfile в сценарии должны быть заключены в двойные кавычки .

Важно то, как этот скрипт называется.

Это приведет к ошибке и будет назначать только hello переменной inputfile :

Строка world.txt предложит функции getopts прекратить обработку командной строки, и скрипт продолжит выполнение с shift ( world.txt будет оставлено в $1 впоследствии ) .

Следующее будет правильно назначать строку hello world.txt для inputfile :

Следующий скрипт использует awk для разделения аргументов, включая пробелы в именах файлов. Аргументы могут быть в любом порядке. Он не обрабатывает несколько последовательных пробелов в аргументе, он сворачивает их в один.

При вызове jar возникла проблема, из-за которой Java вызвала исключение MalformedUrlException для имени файла с пробелом.


В Linux не очень часто обрабатывают имя файла с пробелами, но иногда файлы, скопированные или смонтированные из Windows, могут заканчиваться пробелами.

Хотя не рекомендуется иметь имена файлов с пробелами, давайте обсудим, как управлять именем файла с пробелами в системе Linux.

Мы расскажем, как создать, прочитать и скопировать файл с пробелами в имени файла.

1) Создание имени файла с пробелами

Чтобы создать файлы с пробелами в именах, выполните команду, как показано далее:

Например, чтобы создать файл с именем «itisgood docs», используйте следующий синтаксис

Если вы хотите просмотреть такой файл с пробелом в имени файла, используйте тот же принцип включения имен файлов в кавычки.

2) Прочитать файл с пробелами в имени файла

Вы можете использовать команду «cat» или открыть документ, используя текстовый редактор, например, vim, nano или gedit.

Кроме того, вы можете использовать синтаксис ниже:

Для просмотра файла выполните команду ниже:

3) Создание имени каталога с пробелами

Для создания имен каталогов с пробелом между ними используйте синтаксис ниже

Обратите внимание на пробел после обратной косой черты

Например, чтобы создать каталог с именем «itisgood files», запустите

4) Переход в каталог с пробелами в имени

Чтобы перейти к каталогу с пробелами в имени, используйте следующий синтаксис

Чтобы перейти в каталог «itisgood files», выполните команду ниже

5) Копирование каталога с пробелами в имени этого каталога

Чтобы скопировать каталог с пробелами в его имени в другое место, используйте синтаксис ниже

Надеюсь, что эта статья хорошо объяснила, как управлять файлами и каталогами с пробелами в имени.

Спасибо, что нашли время, чтобы прочитать эту статью и, пожалуйста, оставьте свои комментарии. ?

Favorite

Добавить в избранное

Главное меню » Linux » Как указать имя файла с пробелами в Linux

Как указать имя файла с пробелами в Linux

Д ля Linux пользовательский терминал является наиболее важной программой для управления почти всем в операционной системе. Но многие люди не предпочитают командную строку, потому что считают, что это очень техническая программа, и для ее использования требуется особый опыт. Хотя знать, что это довольно удобно.

Различные причины удерживают нового пользователя Linux подальше от командной строки, одна из которых обрабатывает файлы в терминале. Файлы и каталоги в Linux могут иметь разные имена, а в некоторых именах могут быть «пробелы». Так в чем же дело? Проблема в том, что терминал по- разному читает «пробел»; например, если ваш каталог имеет имя «new folder», терминал примет два разных каталога, то есть «new» и «folder». Доступ к таким файлам в терминале может стать очень неприятным. К счастью, существуют различные методы работы с файлами/папками, в именах которых есть пробелы.

В этой статье основное внимание уделяется тому, как ссылаться на имя файла с пробелами в Linux с помощью различных подходов. Итак, начнем:

Как получить доступ к файлам/каталогам в терминале с пробелами в имени:

В этом разделе мы сначала создадим файл с пробелом в его имени; Затем мы узнаем, с какими ошибками мы сталкиваемся при обращении к нему, а затем как правильно получить к нему доступ в терминале:

Как создать файл и каталог с пробелом в имени:

Создать файл в Linux с пробелом в имени очень просто, откройте терминал и выполните команду, указанную ниже:

Файл может быть создан с использованием апострофов или кавычек. Процедура создания каталога очень похожа:

Вы можете проверить это с помощью команды «ls» в терминале.

Как прочитать файл с пробелом в имени:

Теперь посмотрим, что происходит, когда вы пытаетесь что-то записать в файл:

Как видно, приведенная выше команда вместо записи «my file» создает новый файл с именем «my» и сохраняет в него текст. Итак, как получить доступ к такому файлу? Что ж, есть два подхода:

  • Использование escape-символа, например “\<space>”
  • Использование апострофов или кавычек

Итак, прежде всего, давайте вставим текст в созданный выше файл, используя ;“\<space>”:

Чтобы прочитать это, используйте:

Теперь, чтобы прочитать это, используйте:

Как получить доступ к каталогу, в названии которого есть пробел:

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

Вы также можете использовать обратную косую черту «\»:

Как получить доступ к двум или более файлам/каталогам с пробелами в их именах:

Чтобы получить доступ к нескольким файлам/каталогам, вы можете использовать апострофы отдельно для каждого имени файла / каталога или применять апострофы ко всему пути. Давайте разберемся с этим на примере:

В этой команде, мы копируем файл «my file» из каталога «my dir» в папку «files». В первой команде мы использовали апострофы отдельно, а во второй команде я использовал их для всего пути, оба будут выполнять одну и ту же работу, но последнее было бы намного легче запомнить.

Заключение:

Favorite

Добавить в избранное (1 оценок, среднее: 5,00 из 5)

Команда wc в Linux

В Linux и Unix-подобных операционных системах команда wc позволяет подсчитать количество строк, слов и байтов каждого указанного файла или стандартного ввода и распечатать результат.

В этой статье мы покажем вам, как использовать команду wc в Linux, на простых и практичных примерах.

Как использовать команду Wc

Синтаксис команды wc следующий:

В простейшей форме, когда она используется без каких-либо опций, команда wc напечатает четыре столбца, количество строк, слов, количество байтов и имя файла для каждого указанного файла. Если файлы не указаны, (при использовании стандартного ввода) имя файла не отображается.

Следующая команда отобразит информацию о виртуальном файле /proc/cpuinfo:

Вывод будет выглядеть примерно так:

При использовании стандартного ввода имя файла не отображается:

Чтобы отобразить информацию о нескольких файлах, передайте имена файлов в качестве аргументов через пробел:

Команда предоставит вам информацию о каждом файле и строке, включая общую статистику:

Параметры ниже позволяют вам выбрать, какие счетчики будут напечатаны.

При использовании нескольких опций счетчик печатается в следующем порядке: новая строка, слова, символы, байты, максимальная длина строки.

Например, для отображения только того количества слов, которое вы бы использовали:

Вот еще один пример, который напечатает количество строк и длину самой длинной строки.

Вывод покажет количество строк для всех файлов в каталоге /etc, имена которых начинаются с «host»:

Примеры команд wc

Команда wc обычно используется в сочетании с другими командами через |. Вот несколько примеров.

Подсчет файлов в текущем каталоге

Команда find передает список всех файлов в текущем каталоге с каждым именем файла в одной строке команде wc, которая считает количество строк и печатает результат:

Подсчитать количество пользователей

В приведенном ниже примере wc используется для подсчета количества строк в выходных данных команды getent.

Заключение

К настоящему времени вы должны хорошо понимать, как использовать команду wc в Linux.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


Команда cd в Linux

Текущая рабочая директория — это директория, в которой в текущий момент работает пользователь.

Чтобы была возможность перехода в директорию, пользователь должен обладать правами доступа на выполнение (execute) данной директории.

Для вывода текущей рабочей директории используется команда pwd.

Синтаксис

Опции

Переходить по символическим ссылкам. Данное поведение используется по умолчанию. Разыменовывать символические ссылки. В данном случае, если осуществляется переход на символическую ссылку, которая указывает на директорию, то в результате команда cd изменит текущую рабочую директорию на директорию, указанную в качестве параметра (то есть ссылка будет разыменована). Выйти с ошибкой, если директория, в которую осуществляется переход, не найдена.

Примеры использования команды cd

Переход в другую директорию

Перейдем в директорию mydir . В данном случае мы переходим в директорию, которая находится внутри текущей рабочей директории.

Или можно использовать следующую эквивалентную команду:

Перейдем в директорию /etc/apache2 . В данном случае используется абсолютный путь.

Перейдем в директорию, находящуюся в родительской директории (на уровень выше):

Переход в директорию, находящуюся на 2 уровня выше по дереву директорий:

Переход по символической ссылке

Предположим mylink1 это символическая ссылка на директорию mydir1

Если команде cd в качестве аргумента указать ссылку mylink1 , то текущая рабочая директория изменится на mylink1

Команда cd переход по символической ссылке

Переход по символической ссылке с разыменованием

Предположим mylink1 это символическая ссылка на директорию mydir1

Воспользуемся опцией -P , чтобы при изменении директории, символическая ссылка была заменена на реальный путь, на который она указывает.

Команда cd переход по символической ссылке с разыменованием

Переход в домашнюю директорию

Домашняя директория текущего пользователя обозначается значком тильда

. Для перехода в домашнюю директорию используется команда:

Переход в директорию, содержащую пробелы в имени

Если директория содержит пробелы, то ее имя (путь) можно заключить в кавычки:

Читайте также: