Как создать несколько файлов с помощью терминала?

Просто загрузите iso-файл, запишите его на любом DVD-диске или USB-носителе. Затем перезагрузите компьютер с определенного носителя. У вас будет возможность установить ubuntu по-другому. Если вы хотите заменить Windows 7 на ubuntu, вам нужно выбрать опцию «стереть все и установить ubuntu». Существует множество других возможностей, которые вы можете изучить. Выбор 64-битного или 32-битного полностью зависит от вас. Для нормального использования они не сильно отличаются. Но поскольку у вас есть 6 ГБ оперативной памяти, я предлагаю использовать 64-битные ОС. 64 бит имеет лучшую скорость, и он может получить доступ к большей системной памяти. У этого есть также некоторые другие преимущества, которые я не знаю полностью. Предоставленная конфигурация, похоже, вы можете легко установить 64-разрядную версию ubuntu в эту систему.

1
задан 5 April 2015 в 14:11

3 ответа

Создать правильно пронумерованный (следующий) файл с комбинацией клавиш быстрого доступа

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

есть сценарий в моей директории кода, какой должен быть «следующий» файл, создать правильно названный файл (включая shebang) и открыть новый файл в моем редакторе (в моем случае Idle).

Все в одном нажатии. Таким образом вы предотвращаете много (все еще) неиспользуемых файлов; Файлы создаются только в случае необходимости.

Упрощенная версия ниже (не выполняется шаг 3). На каждом нажатии клавиши он создаст правильно пронумерованный файл, например:

bspl0001.c, bspl0002.c, bspl0003.c etc
#!/usr/bin/env python3
import os
#--- set your code directory below
dr = "/path/to/your/coding_files"
#--- set the desired (base) name extension and shebang below (leave it ""if you don't want an automatically set shebang)
name_initial = "bspl"
extension = ".c"
shebang = ""
#---

existing = os.listdir(dr)
n = 1
while True:
    file = dr+"/"+name_initial+str(n).zfill(4)+extension
    if os.path.exists(file):
        n = n+1
    else:
        with open(file, "wt") as out:
            out.write(shebang)
        break

Как использовать

иметь сценарий в моей директории кода, что должно быть «следующий» файл, В разделе «Глава» укажите путь к вашему каталогу (и необязательно: измените базовое имя и / или расширение, shebang). создать правильно названный файл (включая shebang) и Запустить сценарий из ярлыка: Системные настройки> Клавиатура> Пользовательские ярлыки. Добавьте команду:
python3 /path/to/create_empty.py
4
ответ дан 23 May 2018 в 21:43

Вы можете использовать следующий код python, вы можете изменить его в соответствии с вашими потребностями. Сохраните следующий код с именем файла filecreator.py

#!/usr/bin/env python
import os
import subprocess
work_path = os.path.abspath(os.path.dirname(__file__))
if not os.path.exists("learning_c"):
    os.mkdir("learning_c")
os.chdir(os.path.expanduser(work_path+"/learning_c"))
n = 10 #put the number as you wish
for i in range(n):
    subprocess.call(['touch', "bsdl"+str(i).zfill(4)+".c"])

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

python filecreator.py
3
ответ дан 23 May 2018 в 21:43

Способ bash хорош, но что делать, если вы работаете с оболочкой, которая не поддерживает расширение фигурной скобки? touch file{1..10}, например, не работает для меня mksh. Вот три альтернативных способа, которые работают независимо от оболочки.

seq

Более нейтральным по отношению к оболочке подходом было бы объединение команды seq для генерации последовательности чисел, отформатированных с помощью printf и передать его команде xargs. Например,

$ ls -l
total 0
$ seq -f "%04.0f" 10 | xargs -I "{}" touch bspl"{}".c                 
$ ls
bspl0002.c  bspl0004.c  bspl0006.c  bspl0008.c  bspl0010.c
bspl0001.c  bspl0003.c  bspl0005.c  bspl0007.c  bspl0009.c

Perl

Конечно, Perl, будучи довольно широко распространенным инструментом * nix, может это сделать. Конкретная команда однострочного интерфейса, которая у нас есть, следующая:

perl -le 'do { $var=sprintf("%s%04d.c",$ARGV[0],$_ ); open(my $fh, ">", $var);close($fh) } for $ARGV[1] .. $ARGV[2]' bslp 1 5 

Эффективно, что происходит здесь, состоит в том, что мы указываем три аргумента командной строки: префикс имени файла, начальный индекс и конечный индекс. Затем мы используем do { } for $ARGV[1] .. $ARGV[2] для итерации для определенного диапазона чисел. Скажем, $ARGV[1] было 5, а $ARGV[2] равно 9, мы будем перебирать 5,6,7,8 и 9.

Что происходит на каждой итерации в фигурных скобках? мы берем каждое число, указанное с помощью $_, и используя функцию sprintf(), создаем строку m, которая соединяет префикс (первый аргумент командной строки, $ARGV[0]) и заданное число, но заполняя число с 4 нулями ( который выполняется с помощью printf -типа форматирования, %04d) и присоединяет суффикс .c. В результате на каждой итерации мы составляем имя типа bspl0001.c.

Эффект open(my $fh, ">", $var);close($fh) действует как команда touch, создавая файл с указанным именем.

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

#!/usr/bin/env perl
use strict;
use warnings;

for my $i ( $ARGV[1] .. $ARGV[2] ) { 
    my $var=sprintf("%s%04d.c",$ARGV[0],$i ); 
    open(my $fh, ">", $var) or die "Couldn't open " . $var ;
    close($fh) or die "Couldn't close " . $var ;
}

Давайте проверим это. Сначала однострочный:

$ ls -l
total 0
$ perl -le 'do { $var=sprintf("%s%04d.c",$ARGV[0],$_ ); open(my $fh, ">", $var);close($fh) } for $ARGV[1] .. $ARGV[2]' bslp 1 5
$ ls -l                                                                                               
total 0
-rw-rw-r-- 1 xieerqi xieerqi 0 2月   5 23:36 bslp0001.c
-rw-rw-r-- 1 xieerqi xieerqi 0 2月   5 23:36 bslp0002.c
-rw-rw-r-- 1 xieerqi xieerqi 0 2月   5 23:36 bslp0003.c
-rw-rw-r-- 1 xieerqi xieerqi 0 2月   5 23:36 bslp0004.c
-rw-rw-r-- 1 xieerqi xieerqi 0 2月   5 23:36 bslp0005.c

И теперь скрипт:

$ ls -l
total 4
-rwxrwxr-x 1 xieerqi xieerqi 244 2月   5 23:57 touch_range.pl*
$ ./touch_range.pl bspl 1 5                                                                           
$ ls -l
total 4
-rw-rw-r-- 1 xieerqi xieerqi   0 2月   5 23:58 bspl0001.c
-rw-rw-r-- 1 xieerqi xieerqi   0 2月   5 23:58 bspl0002.c
-rw-rw-r-- 1 xieerqi xieerqi   0 2月   5 23:58 bspl0003.c
-rw-rw-r-- 1 xieerqi xieerqi   0 2月   5 23:58 bspl0004.c
-rw-rw-r-- 1 xieerqi xieerqi   0 2月   5 23:58 bspl0005.c
-rwxrwxr-x 1 xieerqi xieerqi 244 2月   5 23:57 touch_range.pl*

awk

Другой подход будет с awk, запуском for loop, перенаправление на определенный файл. Этот подход похож на однострочный perl с аргументами командной строки. В то время как awk - это, прежде всего, утилита для обработки текста, она все же может сделать некоторое крутое системное программирование.

$ awk 'BEGIN{for(i=ARGV[2];i<=ARGV[3];i++){fd=sprintf("%s%04d.c",ARGV[1],i); printf "" > fd;close(fd)}}' bslp 1 5
1
ответ дан 23 May 2018 в 21:43

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

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