Uczę się programować z naprawdę fajną książką wprowadzającą do C i zapisuję każdy przykład i zadanie, aby nauczyć się składni na pamięć. Do tej pory robiłem każdy plik ręcznie, ale klikanie, nazywanie i zapisywanie wyczerpuje się.
Potrzebuję sposób, aby utworzyć wiele plików, takich jak bspl0001.c
, bspl0002.c
, bspl0003.c
itp i zapisywanie ich w katalogu „learning_c” czy coś.
Jestem noob z Ubuntu / Linux i szczerze mówiąc, uruchamiam go tylko przez VirtualBox, ponieważ IDE Geany było łatwe do skonfigurowania. Dlatego tak naprawdę nie wiem, jak działa terminal.
edytuj Właśnie znalazłem się na moim starym koncie i kręcę głową, dlaczego kiedykolwiek chciałbym nauczyć się składni kodu na pamięć. Co zabawne, prawie skończyłem studia CS / Math BSc. Wielkie dzięki za pomoc z perspektywy czasu!
źródło
Odpowiedzi:
Możesz to zrobić za pomocą następujących poleceń:
Wyjaśnienie:
mkdir learning_c
learning_c
w bieżącym folderze~
cd
polecenia (tj.cd Desktop
)cd learning_c
touch bspl{0001..0003}.c
touch
jest narzędziem do tworzenia pustych plików i modyfikowania znaczników czasu; tworzymy puste pliki.touch myfile
utworzy pusty plik o nazwiemyfile
.Brzydki kod następujący po (
bspl{0001..0003}.c
) nazywa się rozszerzeniem nawiasu klamrowego . Jest to świetna funkcjabash
powłoki, która pozwala tworzyć długie listy dowolnych kombinacji ciągów. Możesz dowiedzieć się więcej na ten temat na Wiki Bash Hackers . W takim przypadku utworzysz długą listę parametrów, które zostaną przekazanetouch
. Możesz także użyć jego długiego odpowiednika:Możesz zmienić liczbę plików: jeśli chcesz 12 plików, możesz uruchomić
bspl{0001..0012}.c
.0012
zamiast12
) upewnij się, że w danych wyjściowych używane są 4 cyfry uzupełnione zerami .źródło
touch bspl000{1..3}.c
touch {test,tes2,tes3}.js
touch tes{t,2,3}.js
Utwórz poprawnie ponumerowany (następny) plik za pomocą kombinacji klawiszy skrótu
Po co tworzyć wszystkie pliki jednocześnie? Wadą jest to, że będziesz mieć dużo pustych i nieużywanych plików. Z czego faktycznie korzystam: naciśnij kombinację klawiszy, aby:
Wszystko za jednym naciśnięciem klawisza. W ten sposób zapobiegniesz wielu (wciąż) nieużywanym plikom; Pliki są tworzone tylko wtedy, gdy ich potrzebujesz.
Uproszczona wersja poniżej (nie działa krok 3). Przy każdym naciśnięciu klawisza utworzy poprawnie numerowany plik, taki jak:
Jak używać
Uruchom skrypt ze skrótu: Ustawienia systemu> Klawiatura> Skróty niestandardowe. Dodaj polecenie:
źródło
Możesz użyć następującego kodu python, możesz go zmodyfikować zgodnie z własnymi potrzebami.
Zapisz następujący kod z nazwą pliku
filecreator.py
A następnie uruchom go za pomocą tego polecenia:
źródło
bash
Droga jest dobra, ale co, jeśli pracujesz z powłoki, która nie obsługuje kręcone rozwijanie nawiasów?touch file{1..10}
namksh
przykład nie działa dla mnie . Oto trzy alternatywne sposoby działania niezależnie od powłoki.seq
Bardziej neutralne dla powłoki podejście byłoby połączenie
seq
polecenia w celu wygenerowania sekwencji liczb sformatowanych za pomocąprintf
opcji i przekazania jej doxargs
polecenia. Na przykład,Perl
Oczywiście Perl, który jest dość rozpowszechnionym narzędziem * nix, może to zrobić. Konkretne polecenie jednowierszowe, które tutaj mamy, jest następujące:
W efekcie podajemy 3 argumenty wiersza polecenia: przedrostek nazwy pliku, indeks początkowy i indeks końcowy. Następnie używamy
do { } for $ARGV[1] .. $ARGV[2]
iteracji dla określonego zakresu liczb. Powiedzmy, że$ARGV[1]
było 5 i$ARGV[2]
było 9, będziemy powtarzać ponad 5,6,7,8 i 9.Co dzieje się podczas każdej iteracji w nawiasach klamrowych? bierzemy każdą liczbę określoną za
$_
pomocą i za pomocąsprintf()
funkcji tworzymy ciąg m, który dzieli przedrostek (pierwszy argument wiersza poleceń$ARGV[0]
) i podaną liczbę, ale wypełniając liczbę 4 zerami (co odbywa się poprzezprintf
styl formatowania,%04d
część) i dołącz.c
sufiks. W wyniku każdej iteracji tworzymy nazwę jakbspl0001.c
.open(my $fh, ">", $var);close($fh)
Skutecznie działa jakotouch
polecenia, tworząc plik o określonej nazwie.Choć jest nieco długi, działa całkiem dobrze, podobnie jak skrypt Pythona Jacoba Vlijma. W razie potrzeby można go również przekonwertować na skrypt, aby był czytelny:
Sprawdźmy to. Najpierw jedna linijka:
A teraz skrypt:
awk
Inne podejście polegałoby na
awk
uruchomieniu pętli for i przekierowaniu do określonego pliku. Podejście jest podobne do jednowierszowego perla z argumentami wiersza poleceń. Chociażawk
jest to przede wszystkim narzędzie do przetwarzania tekstu, nadal może robić fajne programowanie systemowe.źródło