Как использовать пробелы в & ldquo; для & rdquo; функция [dубликат]

Использовать другое приложение

Для работы с экранным записывающим устройством:

Это было сделано с пакетом под названием [!d3 ]

После создания вашего .gif файла вы можете отредактировать его, чтобы преобразовать один кадр в файл изображения .png или .jpg.

3
задан 7 March 2018 в 12:22

6 ответов

Не разбирайте ls! Вместо этого используйте glob:

for name in ./*; do

Есть и другие способы улучшить скрипт.

В цикле снова не разбирайте ls. Вместо этого используйте stat, чтобы получить разрешения напрямую.1 Используйте синтаксис замены новой команды $(...) вместо устаревших обратных ссылок `...` Определите переменную $perms, чтобы сделать строку печати немного более чистой и удобной для чтения.

Итак:

for name in ./*; do
    perms="$(stat -c "%A" "$name")"
    echo "The file $name has the following permissions: $perms"
done

Сноски:

В цикле снова не разбирайте ls. Вместо этого используйте stat, чтобы получить разрешения напрямую.1
8
ответ дан 22 May 2018 в 12:43

Не разбирайте ls! Вместо этого используйте glob:

for name in ./*; do

Есть и другие способы улучшить скрипт.

В цикле снова не разбирайте ls. Вместо этого используйте stat, чтобы получить разрешения напрямую.1 Используйте синтаксис замены новой команды $(...) вместо устаревших обратных ссылок `...` Определите переменную $perms, чтобы сделать строку печати немного более чистой и удобной для чтения.

Итак:

for name in ./*; do perms="$(stat -c "%A" "$name")" echo "The file $name has the following permissions: $perms" done

Сноски:

В цикле снова не разбирайте ls. Вместо этого используйте stat, чтобы получить разрешения напрямую.1
8
ответ дан 17 July 2018 в 19:22

Не разбирайте ls! Вместо этого используйте glob:

for name in ./*; do

Есть и другие способы улучшить скрипт.

В цикле снова не разбирайте ls. Вместо этого используйте stat, чтобы получить разрешения напрямую.1 Используйте синтаксис замены новой команды $(...) вместо устаревших обратных ссылок `...` Определите переменную $perms, чтобы сделать строку печати немного более чистой и удобной для чтения.

Итак:

for name in ./*; do perms="$(stat -c "%A" "$name")" echo "The file $name has the following permissions: $perms" done

Сноски:

В цикле снова не разбирайте ls. Вместо этого используйте stat, чтобы получить разрешения напрямую.1
8
ответ дан 23 July 2018 в 20:07

Это не очень хороший план для написания таких вещей, как

for stuff in `ls`; ...

Анализ вывода ls - очень плохая идея, потому что вывод ls - это просто текст и является ненадежным представление фактических имен ваших файлов.

Вместо этого в файлах вместо этого используются оболочки globs.

for stuff in *; ...

Вместо * вы можете использовать ./*, что означает одно и то же, но безопаснее, потому что все пути начинаются с ./ (текущего каталога), а не с любого подозрительного символа, с которого начинаются ваши имена файлов, что может привести к тому, что оболочка будет выполнять расширение (например, ~) (хотя вам обязательно нужно указывать переменные для предотвращения таких нежелательных расширений оболочки) или тот, который команда, которую вы пытаетесь использовать, может попытаться интерпретировать специально (например, -). Вы также можете использовать *, а не ./*, но добавьте -- после всех параметров команд, которые вы запускаете в цикле, чтобы запретить имена файлов, начинающиеся с -, интерпретироваться как параметры. Это дает чистый путь, но если вы хотите использовать ./*, вы можете иногда очищать путь, используя "$(basename $var)" в командах или другие трюки. Имейте в виду, что не все команды поддерживают --, чтобы указать конец опций.

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

stat -c "%n %A" file

должен дать вам то, что вы хотите. Если вы хотите отобразить сообщение, вы можете просто написать его в:)

Вот как я сделал бы это:

for file in *; do stat -c 'The permissions of %n are: %A' -- "$file"; done
8
ответ дан 22 May 2018 в 12:43
  • 1
    Мне это слишком нравится, чтобы не добавить путь GNU parallel здесь: parallel stat -c\"The permissions of %n are: %A\" {} ::: * Это делает то же самое, что и цикл for выше, но использует многопроцессорную обработку и поэтому может быть более эффективным в случае обрабатывать много файлов . – dessert 7 March 2018 в 13:27

Это не очень хороший план для написания таких вещей, как

for stuff in `ls`; ...

Анализ вывода ls - очень плохая идея, потому что вывод ls - это просто текст и является ненадежным представление фактических имен ваших файлов.

Вместо этого в файлах вместо этого используются оболочки globs.

for stuff in *; ...

Вместо * вы можете использовать ./*, что означает одно и то же, но безопаснее, потому что все пути начинаются с ./ (текущего каталога), а не с любого подозрительного символа, с которого начинаются ваши имена файлов, что может привести к тому, что оболочка будет выполнять расширение (например, ~) (хотя вам обязательно нужно указывать переменные для предотвращения таких нежелательных расширений оболочки) или тот, который команда, которую вы пытаетесь использовать, может попытаться интерпретировать специально (например, -). Вы также можете использовать *, а не ./*, но добавьте -- после всех параметров команд, которые вы запускаете в цикле, чтобы запретить имена файлов, начинающиеся с -, интерпретироваться как параметры. Это дает чистый путь, но если вы хотите использовать ./*, вы можете иногда очищать путь, используя "$(basename $var)" в командах или другие трюки. Имейте в виду, что не все команды поддерживают --, чтобы указать конец опций.

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

stat -c "%n %A" file

должен дать вам то, что вы хотите. Если вы хотите отобразить сообщение, вы можете просто написать его в:)

Вот как я сделал бы это:

for file in *; do stat -c 'The permissions of %n are: %A' -- "$file"; done
8
ответ дан 17 July 2018 в 19:22

Это не очень хороший план для написания таких вещей, как

for stuff in `ls`; ...

Анализ вывода ls - очень плохая идея, потому что вывод ls - это просто текст и является ненадежным представление фактических имен ваших файлов.

Вместо этого в файлах вместо этого используются оболочки globs.

for stuff in *; ...

Вместо * вы можете использовать ./*, что означает одно и то же, но безопаснее, потому что все пути начинаются с ./ (текущего каталога), а не с любого подозрительного символа, с которого начинаются ваши имена файлов, что может привести к тому, что оболочка будет выполнять расширение (например, ~) (хотя вам обязательно нужно указывать переменные для предотвращения таких нежелательных расширений оболочки) или тот, который команда, которую вы пытаетесь использовать, может попытаться интерпретировать специально (например, -). Вы также можете использовать *, а не ./*, но добавьте -- после всех параметров команд, которые вы запускаете в цикле, чтобы запретить имена файлов, начинающиеся с -, интерпретироваться как параметры. Это дает чистый путь, но если вы хотите использовать ./*, вы можете иногда очищать путь, используя "$(basename $var)" в командах или другие трюки. Имейте в виду, что не все команды поддерживают --, чтобы указать конец опций.

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

stat -c "%n %A" file

должен дать вам то, что вы хотите. Если вы хотите отобразить сообщение, вы можете просто написать его в:)

Вот как я сделал бы это:

for file in *; do stat -c 'The permissions of %n are: %A' -- "$file"; done
8
ответ дан 23 July 2018 в 20:07
  • 1
    Мне это слишком нравится, чтобы не добавить путь GNU parallel здесь: parallel stat -c\"The permissions of %n are: %A\" {} ::: * Это делает то же самое, что и цикл for выше, но использует многопроцессорную обработку и поэтому может быть более эффективным в случае обрабатывать много файлов . – dessert 7 March 2018 в 13:27

Другие вопросы по тегам:

Похожие вопросы: