Как создать пустой файл из командной строки

Есть еще одно решение без добавления файла в config.d, просто используя wakealarm в / sys / class / rtc / rtc0. Использовать устаревший код в pm-functions (/ usr / lib / pm-utils) после комментариев #, поскольку ядро ​​не поддерживает напрямую ..., (потому что текущее ядро ​​(после чего-то 3.6) напрямую поддерживает). Верните этот код и добавьте в do_suspend () часть вместо do_suspend_hybrid () и используйте патч для pm-функций (если они не исправит его).

Устаревший код (приостановить, затем спящий режим, когда вызывается suspend_hybrid) :

# since the kernel does not directly support hybrid sleep, we do
# something else -- suspend and schedule an alarm to go into
# hibernate if we have slept long enough.
# Only do this if we do not need to do any special video hackery on resume
# from hibernate, though.
if [ -z "$SUSPEND_HYBRID_MODULE" -a -w "$PM_RTC/wakealarm" ] && \
    check_suspend && check_hibernate && ! is_set $HIBERNATE_RESUME_POST_VIDEO; \
    then
    SUSPEND_HYBRID_MODULE="kernel"
    do_suspend_hybrid() {
    WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
    echo >"$PM_RTC/wakealarm"
    echo $WAKETIME > "$PM_RTC/wakealarm"
    if do_suspend; then
        NOW=$(cat "$PM_RTC/since_epoch")
        if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ]; then
        log "Woken by RTC alarm, hibernating."
        # if hibernate fails for any reason, go back to suspend.
        do_hibernate || do_suspend
        else
        echo > "$PM_RTC/wakealarm"
        fi
    else
        # if we cannot suspend, just try to hibernate.
        do_hibernate
    fi
    }
fi

Рекомендуется. Еще проще использовать uswsusp в то же время максимизировать выгоду s2both, т. Е. S2both при приостановке. Поместите восстановленный код в do_suspend () часть модуля uswsusp (/usr/lib/pm-utils/module.d).

Возвращенный код (suspend_hybrid при вызове suspend):

        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      

С помощью uswsusp мы можем видеть прогресс приостановки / спящего режима и обратный процесс, отображаемый в тексте, даже мы можем прервите его, нажав обратное пространство. Без uswsusp, suspend / hibernate просто появляются - исчезают досадно, особенно когда запускается wakealarm и выполняется спящий режим (s2disk в uswsusp). Установите период сна перед спящим в обычном месте в файле pm-functions.

# variables to handle hibernate after suspend support
PM_HIBERNATE_DELAY=900  # 15 minutes
PM_RTC=/sys/class/rtc/rtc0

Вот мода uswsusp: (помните, этот модуль вызывается из pm-функций, поэтому вставленные переменные одинаковы )

#!/bin/sh

# disable processing of 90chvt and 99video.
# s2ram and s2disk handle all this stuff internally.
uswsusp_hooks()
{
    disablehook 99video "disabled by uswsusp"
}

# Since we disabled 99video, we need to take responsibility for proper
# quirk handling.  s2ram handles all common video quirks internally,
# so all we have to do is translate the HAL standard options to s2ram options.
uswsusp_get_quirks()
{
    OPTS=""
    ACPI_SLEEP=0
    for opt in $PM_CMDLINE; do
        case "${opt##--quirk-}" in # just quirks, please
            dpms-on)       ;; # no-op
            dpms-suspend)      ;; # no-op
            radeon-off)        OPTS="$OPTS --radeontool" ;;
            reset-brightness)  ;; # no-op
            s3-bios)       ACPI_SLEEP=$(($ACPI_SLEEP + 1)) ;;
            s3-mode)       ACPI_SLEEP=$(($ACPI_SLEEP + 2)) ;;
            vbe-post)      OPTS="$OPTS --vbe_post" ;;
            vbemode-restore)   OPTS="$OPTS --vbe_mode" ;;
            vbestate-restore)  OPTS="$OPTS --vbe_save" ;;
            vga-mode-3)        ;; # no-op
            save-pci)          OPTS="$OPTS --pci_save" ;;
            none)          QUIRK_NONE="true" ;;
            *) continue ;;
        esac
    done
    [ $ACPI_SLEEP -ne 0 ] && OPTS="$OPTS --acpi_sleep $ACPI_SLEEP"
    # if we were told to ignore quirks, do so.
    # This is arguably not the best way to do things, but...
    [ "$QUIRK_NONE" = "true" ] && OPTS=""
}

# Since we disabled 99video, we also need to handle displaying
# help info for the quirks we handle.
uswsusp_help()
{
    echo  # first echo makes it look nicer.
    echo "s2ram video quirk handler options:"
    echo
    echo "  --quirk-radeon-off"
    echo "  --quirk-s3-bios"
    echo "  --quirk-s3-mode"
    echo "  --quirk-vbe-post"
    echo "  --quirk-vbemode-restore"
    echo "  --quirk-vbestate-restore"
    echo "  --quirk-save-pci"
    echo "  --quirk-none"
}

# This idiom is used for all sleep methods.  Only declare the actual
# do_ method if:
# 1: some other sleep module has not already done so, and
# 2: this sleep method can actually work on this system.
#
# For suspend, if SUSPEND_MODULE is set then something else has already
# implemented do_suspend.  We could just check to see of do_suspend was
# already declared using command_exists, but using a dedicated environment
# variable makes it easier to debug when we have to know what sleep module
# ended up claiming ownership of a given sleep method.
if [ -z "$SUSPEND_MODULE" ] && command_exists s2ram && \
    ( grep -q mem /sys/power/state || \
        ( [ -c /dev/pmu ] && check_suspend_pmu; ); ); then
    SUSPEND_MODULE="uswsusp"
    do_suspend()
    {
        WAKETIME=$(( $(cat "$PM_RTC/since_epoch") + PM_HIBERNATE_DELAY))
        echo >"$PM_RTC/wakealarm"
        echo $WAKETIME > "$PM_RTC/wakealarm"
        if do_suspend_hybrid; then
            NOW=$(cat "$PM_RTC/since_epoch")
            if [ "$NOW" -ge "$WAKETIME" -a "$NOW" -lt $((WAKETIME + 30)) ];             then
            log "Woken by RTC alarm, hibernating."
            # if hibernate fails for any reason, go back to suspend_hybrid.
            do_hibernate || do_suspend_hybrid
            else
            echo > "$PM_RTC/wakealarm"
            fi
        else
            # when do_suspend is being called, convert to suspend_hybrid.
            do_suspend_hybrid
        fi      
    }
fi

if [ -z "$HIBERNATE_MODULE" ] && \
    [ -f /sys/power/disk ] && \
    grep -q disk /sys/power/state && \
    [ -c /dev/snapshot ] &&
    command_exists s2disk; then
    HIBERNATE_MODULE="uswsusp"
    do_hibernate()
    {
        s2disk
    }
fi

if [ -z "$SUSPEND_HYBRID_MODULE" ] && 
    grep -q mem /sys/power/state && \
    command_exists s2both && \
    check_hibernate; then
    SUSPEND_HYBRID_MODULE="uswsusp"
    do_suspend_hybrid()
    {   
        uswsusp_get_quirks
        s2both --force $OPTS 
    }
    if [ "$METHOD" = "suspend_hybrid" ]; then
        add_before_hooks uswsusp_hooks
        add_module_help uswsusp_help
    fi
fi  
163
задан 15 January 2011 в 02:59

57 ответов

Используйте команду touch:

The touch utility sets the modification and access times of files to the
current time of day. If the file doesn't exist, it is created with
default permissions.

Пример:

touch newfile
186
ответ дан 25 May 2018 в 23:28
  • 1
    Вы также можете использовать touch newfile.txt или другое расширение (если вам нужно указать расширение). – gotqn 26 April 2014 в 13:18
  • 2
    @gotqn для python touch newfile.py и для ruby ​​newfile.rb? – kouty 30 August 2016 в 15:56
  • 3
    Но если newfile уже существует и не пуст, то touch newfile оставит вас с непустым файлом. Возможно, не то, что вы хотели. – Camille Goudeseune 26 September 2017 в 17:47
  • 4
    @CamilleGoudeseune Я думаю, что если newfile уже существует, команда touch будет просто обновлять временную метку файла (для чего именно такая команда) без редактирования содержимого файла. – C0deDaedalus 13 March 2018 в 15:20
  • 5
    Вам не нужно думать об этом; это правда! Но дело не в этом. – Camille Goudeseune 13 March 2018 в 20:21

Используйте команду touch:

The touch utility sets the modification and access times of files to the current time of day. If the file doesn't exist, it is created with default permissions.

Пример:

touch newfile
197
ответ дан 25 July 2018 в 22:37

Используйте команду touch:

The touch utility sets the modification and access times of files to the current time of day. If the file doesn't exist, it is created with default permissions.

Пример:

touch newfile
197
ответ дан 26 July 2018 в 23:06

Используйте команду touch:

The touch utility sets the modification and access times of files to the current time of day. If the file doesn't exist, it is created with default permissions.

Пример:

touch newfile
197
ответ дан 31 July 2018 в 10:25

Используйте команду touch:

The touch utility sets the modification and access times of files to the current time of day. If the file doesn't exist, it is created with default permissions.

Пример:

touch newfile
197
ответ дан 31 July 2018 в 11:28

Используйте команду touch:

The touch utility sets the modification and access times of files to the current time of day. If the file doesn't exist, it is created with default permissions.

Пример:

touch newfile
197
ответ дан 2 August 2018 в 04:03

Используйте команду touch:

The touch utility sets the modification and access times of files to the current time of day. If the file doesn't exist, it is created with default permissions.

Пример:

touch newfile
197
ответ дан 4 August 2018 в 20:07

Используйте команду touch:

The touch utility sets the modification and access times of files to the current time of day. If the file doesn't exist, it is created with default permissions.

Пример:

touch newfile
197
ответ дан 6 August 2018 в 04:08

Используйте команду touch :

  Утилита touch устанавливает время изменения файлов и время доступа к текущему времени суток.  Если файл не существует, он создается с разрешениями по умолчанию.   

Пример:

  touch newfile  
197
ответ дан 7 August 2018 в 22:07

Используйте команду touch :

  Утилита touch устанавливает время изменения файлов и время доступа к текущему времени суток.  Если файл не существует, он создается с разрешениями по умолчанию.   

Пример:

  touch newfile  
197
ответ дан 10 August 2018 в 10:21

Используйте команду touch :

  Утилита touch устанавливает время изменения файлов и время доступа к текущему времени суток.  Если файл не существует, он создается с разрешениями по умолчанию.   

Пример:

  touch newfile  
198
ответ дан 13 August 2018 в 16:46
  • 1
    Вы можете использовать touch newfile.txt или другое расширение, также (если вам нужно указать расширение). – gotqn 26 April 2014 в 13:18
  • 2
    @gotqn для python touch newfile.py и для ruby ​​newfile.rb? – kouty 30 August 2016 в 15:56
  • 3
    Но если newfile уже существует и не пуст, тогда touch newfile оставит вас с непустым файлом. Возможно, не то, что вы хотели. – Camille Goudeseune 26 September 2017 в 17:47
  • 4
    @CamilleGoudeseune Я думаю, что если newfile уже существует, команда touch будет просто обновлять временную метку файла (для чего именно такая команда) без редактирования содержимое файла. – C0deDaedalus 13 March 2018 в 15:20
  • 5
    Вам не нужно думать об этом; это правда! Но дело не в этом. – Camille Goudeseune 13 March 2018 в 20:21
> newfile

Также создаст пустой файл. Если файл уже существует, он будет усечен (опустошен). Чтобы сохранить содержимое файла, используйте >> для добавления:

>> file

Даже если файл существует, содержимое будет не тронуто.

create : Если у вас нет содержимого для ввода, это быстрее:

user@host$ :> newfile
user@host$ :>> new_or_existing_file

Примечание. : - команда здесь. Это не часть приглашения.

73
ответ дан 25 May 2018 в 23:28
  • 1
    Теперь это ново. Является ли это bash-специфическим? – Tshepang 15 January 2011 в 10:40
  • 2
    Я так не думаю. Любая оболочка, которая позволяет перенаправить выходной поток в файл, должна поддерживать это. Это приведет к усечению файла, если он уже существует. touch безопасен для использования, если вы не хотите его пустить. – balki 15 January 2011 в 14:23
  • 3
    Ничего себе теперь я думаю, что это называется обманом системы – banarun 23 June 2014 в 17:00
cat /dev/null > file1.ext 

точный способ есть и другой способ

echo "" > file2.ext 

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

ls -l file*.*
10
ответ дан 25 May 2018 в 23:28
  • 1
    Нет, «эхо» " & GT;» не создает пустой файл, он создает файл, содержащий новую строку. Если вы по какой-то причине хотите использовать эхо для создания пустого файла, вам придется использовать 'echo -n " " & gt; 'или просто' echo -n & gt; ' – andol 15 January 2011 в 12:00

С помощью редактора vim вы также можете создать пустой файл.

vim filename

Затем сохраните

:wq
7
ответ дан 25 May 2018 в 23:28
  • 1
    Ну, в этом случае не текстовый редактор, а vim. – Nephente 4 October 2015 в 15:15

Команда

echo -n > file

создает пустой файл, если ваша версия echo поддерживает ключ -n.

Или вы могли бы использовать printf [!d2 ]

printf '' > file
2
ответ дан 25 May 2018 в 23:28

Однострочный Python:

$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt

В принципе, реализация python для touch.

Мы можем сделать это короче:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt 
0
ответ дан 25 May 2018 в 23:28

Команда

echo -n > file

создает пустой файл, если ваша версия echo поддерживает ключ -n.

Или вы могли бы использовать printf

printf '' > file
2
ответ дан 25 July 2018 в 22:37
> newfile

Также создаст пустой файл. Если файл уже существует, он будет усечен (опустошен). Чтобы сохранить содержимое файла, используйте >> для добавления:

>> file

Даже если файл существует, содержимое будет не тронуто.

create : Если у вас нет содержимого для ввода, это быстрее:

user@host$ :> newfile user@host$ :>> new_or_existing_file

Примечание. : - команда здесь. Это не часть приглашения.

73
ответ дан 25 July 2018 в 22:37
  • 1
    Теперь это ново. Является ли это bash-специфическим? – Tshepang 15 January 2011 в 10:40
  • 2
    Я так не думаю. Любая оболочка, которая позволяет перенаправить выходной поток в файл, должна поддерживать это. Это приведет к усечению файла, если он уже существует. touch безопасен для использования, если вы не хотите его пустить. – balki 15 January 2011 в 14:23
  • 3
    Ничего себе теперь я думаю, что это называется обманом системы – banarun 23 June 2014 в 17:00
cat /dev/null > file1.ext

точный способ есть и другой способ

echo "" > file2.ext

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

ls -l file*.*
10
ответ дан 25 July 2018 в 22:37
  • 1
    Нет, «эхо» & quot; & GT;» не создает пустой файл, он создает файл, содержащий новую строку. Если вы по какой-то причине хотите использовать эхо для создания пустого файла, вам придется использовать 'echo -n & quot; & quot; & gt; 'или просто' echo -n & gt; ' – andol 15 January 2011 в 12:00

Однострочный Python:

$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt

В принципе, реализация python для touch.

Мы можем сделать это короче:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt
0
ответ дан 25 July 2018 в 22:37
  • 1
    Ну, в этом случае не текстовый редактор, а vim. – Nephente 4 October 2015 в 15:15

Команда

echo -n > file

создает пустой файл, если ваша версия echo поддерживает ключ -n.

Или вы могли бы использовать printf

printf '' > file
2
ответ дан 26 July 2018 в 23:06
> newfile

Также создаст пустой файл. Если файл уже существует, он будет усечен (опустошен). Чтобы сохранить содержимое файла, используйте >> для добавления:

>> file

Даже если файл существует, содержимое будет не тронуто.

create : Если у вас нет содержимого для ввода, это быстрее:

user@host$ :> newfile user@host$ :>> new_or_existing_file

Примечание. : - команда здесь. Это не часть приглашения.

73
ответ дан 26 July 2018 в 23:06
  • 1
    Теперь это ново. Является ли это bash-специфическим? – Tshepang 15 January 2011 в 10:40
  • 2
    Я так не думаю. Любая оболочка, которая позволяет перенаправить выходной поток в файл, должна поддерживать это. Это приведет к усечению файла, если он уже существует. touch безопасен для использования, если вы не хотите его пустить. – balki 15 January 2011 в 14:23
  • 3
    Ничего себе теперь я думаю, что это называется обманом системы – banarun 23 June 2014 в 17:00
cat /dev/null > file1.ext

точный способ есть и другой способ

echo "" > file2.ext

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

ls -l file*.*
11
ответ дан 26 July 2018 в 23:06
  • 1
    Нет, «эхо» & quot; & GT;» не создает пустой файл, он создает файл, содержащий новую строку. Если вы по какой-то причине хотите использовать эхо для создания пустого файла, вам придется использовать 'echo -n & quot; & quot; & gt; 'или просто' echo -n & gt; ' – andol 15 January 2011 в 12:00

Однострочный Python:

$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt

В принципе, реализация python для touch.

Мы можем сделать это короче:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt
7
ответ дан 26 July 2018 в 23:06
  • 1
    Ну, в этом случае не текстовый редактор, а vim. – Nephente 4 October 2015 в 15:15

Команда

echo -n > file

создает пустой файл, если ваша версия echo поддерживает ключ -n.

Или вы могли бы использовать printf

printf '' > file
2
ответ дан 31 July 2018 в 10:25
> newfile

Также создаст пустой файл. Если файл уже существует, он будет усечен (опустошен). Чтобы сохранить содержимое файла, используйте >> для добавления:

>> file

Даже если файл существует, содержимое будет не тронуто.

create : Если у вас нет содержимого для ввода, это быстрее:

user@host$ :> newfile user@host$ :>> new_or_existing_file

Примечание. : - команда здесь. Это не часть приглашения.

73
ответ дан 31 July 2018 в 10:25
  • 1
    Теперь это ново. Является ли это bash-специфическим? – Tshepang 15 January 2011 в 10:40
  • 2
    Я так не думаю. Любая оболочка, которая позволяет перенаправить выходной поток в файл, должна поддерживать это. Это приведет к усечению файла, если он уже существует. touch безопасен для использования, если вы не хотите его пустить. – balki 15 January 2011 в 14:23
  • 3
    Ничего себе теперь я думаю, что это называется обманом системы – banarun 23 June 2014 в 17:00
cat /dev/null > file1.ext

точный способ есть и другой способ

echo "" > file2.ext

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

ls -l file*.*
12
ответ дан 31 July 2018 в 10:25
  • 1
    Нет, «эхо» & quot; & GT;» не создает пустой файл, он создает файл, содержащий новую строку. Если вы по какой-то причине хотите использовать эхо для создания пустого файла, вам придется использовать 'echo -n & quot; & quot; & gt; 'или просто' echo -n & gt; ' – andol 15 January 2011 в 12:00

Однострочный Python:

$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt

В принципе, реализация python для touch.

Мы можем сделать это короче:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt
7
ответ дан 31 July 2018 в 10:25
  • 1
    Ну, в этом случае не текстовый редактор, а vim. – Nephente 4 October 2015 в 15:15

Команда

echo -n > file

создает пустой файл, если ваша версия echo поддерживает ключ -n.

Или вы могли бы использовать printf

printf '' > file
2
ответ дан 31 July 2018 в 11:28
> newfile

Также создаст пустой файл. Если файл уже существует, он будет усечен (опустошен). Чтобы сохранить содержимое файла, используйте >> для добавления:

>> file

Даже если файл существует, содержимое будет не тронуто.

create : Если у вас нет содержимого для ввода, это быстрее:

user@host$ :> newfile user@host$ :>> new_or_existing_file

Примечание. : - команда здесь. Это не часть приглашения.

73
ответ дан 31 July 2018 в 11:28
  • 1
    Теперь это ново. Является ли это bash-специфическим? – Tshepang 15 January 2011 в 10:40
  • 2
    Я так не думаю. Любая оболочка, которая позволяет перенаправить выходной поток в файл, должна поддерживать это. Это приведет к усечению файла, если он уже существует. touch безопасен для использования, если вы не хотите его пустить. – balki 15 January 2011 в 14:23
  • 3
    Ничего себе теперь я думаю, что это называется обманом системы – banarun 23 June 2014 в 17:00

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

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