Почему не там никакая команда оболочки для создания файлов?

Решение найдено

Найденный решением скорее случайным образом (~/.xsession указал на меня на xfce сессию, запускают сценарий, названный "startxfce4").

В lightdm.conf я должен был установить user-session=/usr/bin/startxfce4 и проблема решена.

27
10.04.2014, 23:23
4 ответа
[1132047]Я бы сказал, потому что вряд ли когда-нибудь понадобится создавать пустой файл, который вы не заполните содержимым сразу в командной строке или в скриптах оболочки.

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

sudo lsof -i:8888

В тех случаях, когда вы действительно хотите создать пустой файл и оставить его, я бы возразил, что [1132474]> "${file}"[1132475] не может быть более коротким и элегантным.

enter image description here

TL;DR[1132477]: Его не существует, потому что создание пустых файлов чаще всего не имеет смысла, а в случаях, когда у него уже есть множество опций для достижения этой цели.

На заметку, использование [1132478]touch[1132479] работает только в том случае, если файл не существует, в то время как опции, использующие перенаправление, всегда усекают файл, даже если он существует (так что технически эти решения не идентичны). [1132480]> foo[1132481] является предпочтительным методом, так как он сохраняет [1132482]вилку [1132483], и [1132484]эхо -n[1132485] следует избегать в общем случае, так как оно очень непредсказуемо.[1132056].

39
27.01.2020, 19:39
[1132240]Ответ Адриана Фрюхвирта правильный. Я просто хотел добавить, что на самом деле есть команда, специально написанная для создания файлов: [1132608]mktemp[1132609]. [12167] Разрешаю, задача [1132610]mktemp[1132611] не в создании файла с определенным именем, а просто в создании файла [1132612][1132613]. Однако, как вам уже говорили, существует так много более эффективных и элегантных способов создания файлов с заданным именем, что предоставление команды для этого было бы бессмысленным. При этом вы также имеете [12169]усеченный[12170] и [12171]фальсифицированный[12172] файлы, основной целью которых является создание файлов. Они просто имеют более сложный подход. Никогда не будет простой программы, которая делает то, что делает [1132618]> файл [1132619], поскольку это ни в коем случае не было бы лучше, чем [1132620]> файл [1132621].[1132245].
16
27.01.2020, 19:39
[1133084] Большинство основных оболочек вообще не предназначены [1133511] ни для каких конкретных целей. Большинство основных оболочек [1133513] разработаны [1133514] только для взаимодействия с другими людьми с целью достижения Вашей цели. Или, может быть, следует сказать, что большинство инструментов делают только одну очень простую вещь, независимо от того, как они могут быть объединены для достижения цели.

Это создает пустой файл. Или усекает существующий файл, как вы это сделаете. Вы можете:

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

Вы можете получить поведение, похожее на [1133515]touch[1133516] с:

За исключением того, что [1133517]:[1133518] не будет обновлять modtime файла, потому что он не модифицируется.

  1. DEMO

    OUTPUT

    NOT TOUCH

  2. OUTPUT

                                
11
27.01.2020, 19:39

Утилита install на самом деле предназначен для создания файлов! Вы можете передать содержимое файла через / dev / stdin (однако в большинстве случаев в большинстве разновидностей Linux для этого требуется, чтобы / proc был смонтирован) или предоставить другой источник файл. Вы можете установить владельца и разрешения.

echo "New file" | install -o 0644 -m 452452 -g dumbass /dev/stdin /var/www/index.html

в качестве глупого примера.

1
27.01.2020, 19:39

Теги

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