Ini ialah arahan makepp_builtins yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS
JADUAL:
NAMA
makepp_builtins -- Arahan terbina dalam makepp
DESCRIPTION
A: awk, C: &kucing,
chgrp,
&chmod,
chown,
&cp,
cpp,
&potong, D: tarikh, E: &gema,
&expr, F: palsu,
fmt, G: &grep, H: kepala, I: &pasang, L: &ln, M: m4,
&mkdir,
&mv, P: &perl,
&praproses,
&printf, R: &rm,
ialah rm, S: &sed,
&isih, T: ekor,
&template,
&sentuh,
tr, U: &Nyahpasang,
&uniq, Y: &ya
Terdapat kemungkinan khas seperti Shell untuk memanggil arahan terbina dalam dalam peraturan. Satu-satunya
metacharacter yang diiktiraf ialah tanda ulasan, garis miring ke belakang, petikan tunggal dan berganda. Sahaja
satu arahan boleh diberikan setiap baris, dan pengalihan I/O tidak tersedia (lihat "-i" dan "-o"
di bawah sebaliknya).
Perintah ini bermula dengan "&", yang merupakan watak fungsi dalam Perl dan bukan sah
watak pertama dalam Shell. Jika tiada arahan terbina dalam nama itu boleh ditemui, ini juga
sintaks untuk memanggil skrip luaran dalam contoh Perl yang melaksanakan peraturan.
Lihat "lari".
Perintah ini, serta arahan yang ditentukan sendiri dan skrip Perl juga boleh dipanggil sebagai a
buat fungsi, mengembalikan output standard. Ini memerlukan perl dibina untuk PerlIO.
Baris baharu ditukar kepada ruang, kecuali apabila dinilai dalam pernyataan "tentukan".
PERKATAAN PERTAMA ;= $(&cut -d' ' -f0 $(FAIL))
Apabila arahan ini tidak diinden sebagai tindakan peraturan, arahan tersebut akan dilaksanakan semasa membaca
makefile. Anda juga boleh mengakses arahan ini secara bersendirian, contohnya jika anda memerlukan beberapa ciri
tidak tersedia dalam rakan sejawat Unix, melalui arahan makeppbuiltin.
Perintah ini kebanyakannya berdasarkan varian GNU. Tetapi banyak pilihan (seperti --backup,
--interactive atau --recursive) tidak benar-benar masuk akal dalam makefile. Jadi, walaupun
ia mudah dilaksanakan dalam Perl, ia telah ditinggalkan. Juga banyak arahan Unix
menawarkan pelbagai pilihan yang meliputi kes-kes yang agak rumit (cth medan isihan
spesifikasi) sementara masih terhad secara semula jadi. Membenarkan akses kepada Perl, iaitu
hadir pula, memberikan lebih banyak kuasa di sini.
Senarai nama fail mungkin kosong, menjadikannya selamat untuk memanggil arahan ini tanpa tanda
senarai. Pilihan dalam bentuk pendeknya boleh dilekatkan bersama seperti dalam "-ab" dan bukannya "-a -b".
Dalam bentuk panjang hujah boleh diberikan sama ada dilekatkan dengan tanda "=" atau secara berasingan.
Dalam bentuk pendek mereka boleh diberikan sama ada dilekatkan secara langsung atau berasingan.
Standard pilihan
Beberapa pilihan adalah biasa kepada beberapa binaan, walaupun bentuk pendek kadangkala disembunyikan oleh
pilihan arahan sendiri (seperti dalam "&cut -f"):
-A nama fail
--args-file=nama fail
--arguments-file=nama fail
Baca fail dan huraikannya seperti yang mungkin dipetik ruang putih dan/atau dipisahkan baris baharu
pilihan.
-f
- kekuatan
Paksa penciptaan fail yang dimaksudkan oleh parameter, walaupun jenis yang berbeza
fail atau direktori kosong nama itu sudah wujud. Ini mesti mendahului "-o,
--output=filename" pilihan jika ia mempunyai sebarang kesan ke atasnya.
-i perintah shell
--inpipe=perintah shell
Mulakan arahan Shell dan paipkan output ke dalam builtin. Mungkin ada secara pilihan
jadilah "|" di belakang watak, untuk menunjukkan ini adalah paip. Dengan pilihan ini no
nama fail perlu diberikan. Tetapi jika anda ingin melaksanakan builtin pada kedua-dua fail dan
output paip, anda mesti menggunakan "-" sebagai nama fail untuk output paip. Paip adalah
dikosongkan, tetapi, melainkan anda juga memberikan "--infail", arahan itu tidak menunggu, jadi ia
boleh tamat secara selari. Pilihan ini perlu kerana tiada ubah hala
Sintaks.
-I
--tidak berjaya
Jika arahan Shell "--inpipe" gagal, itu juga menyebabkan binaan semasa gagal.
Ini tidak berfungsi pada Strawberry dan Win ActiveState pada masa ini, kerana
setengah hati mereka mencontohi Unix fork/exec. Cygwin faham.
-o nama fail
--output=nama fail
Tulis output ke fail ini, bukannya stdout. Nama fail mungkin mempunyai mana-mana ini
borang:
nama fail
>nama fail
Cukup tulis ke fail.
>>nama fail
Tambahkan pada (tidak semestinya) fail sedia ada.
+<nama fail
Juga buka fail untuk input, membenarkan pengeditan di tempat. Dengan varian pilihan ini
tiada nama fail input perlu diberikan. Tetapi jika anda ingin melaksanakan builtin on
lebih banyak fail, anda mesti menggunakan "-" sebagai nama fail input untuk yang ini. Malahan
output akan ditulis ke fail sementara yang akan dipindahkan ke nama fail pada akhirnya.
|perintah shell
Paipkan output terbina kepada arahan Shell.
Pilihan ini diperlukan kerana tiada sintaks ubah hala.
-O
--gagal
Jika arahan Shell "--output" gagal, itu juga menyebabkan terbina semasa gagal.
-r nombor
--rekod-saiz=nombor
Tetapkan $/ secara tempatan untuk binaan semasa. Ini membahagikan input kepada rekod panjang
nombor bukannya baris demi baris. Jika nombor adalah sifar, setiap fail input secara keseluruhan adalah satu
rekod.
-s rentetan
--pemisah=rentetan
Tetapkan $/ secara tempatan untuk binaan semasa. Ini membahagikan input pada rentetan bukannya garisan
mengikut baris.
-S
--synclines
Hasilkan "#line""TIDAK"" """FAIL"""" dan "#line ""TIDAK" baris, difahami oleh ramai orang seperti C
bahasa.
-v
--verbose
Dokumentasikan perubahan pada sistem fail. Ini mesti mendahului pilihan lain jika perlu
mendokumenkan kesannya. Jika anda lulus pilihan ini kepada makepp itu sendiri, ia seolah-olah anda telah
diberikan untuk setiap arahan terbina dalam.
terbina arahan
Terdapat dua motivasi untuk mempunyai arahan terbina dalam makepp. Yang pertama ialah menawarkan a
set utiliti, yang, tidak seperti arahan Shell, dijamin berfungsi sama
di mana-mana, seperti "&echo -n" atau "&mkdir -p", dan menjimatkan kerumitan anda mencari laluan
untuk &memasang dan memikirkan pilihannya yang sangat berbeza-beza. Dalam persekitaran kompilasi,
adalah berguna untuk mempunyai pilihan "--synclines", yang biasanya hanya disediakan oleh "m4", pada semua
penapis.
Yang lain ialah soal kecekapan. Secara amnya garpu/eksekusi yang mahal harus dielakkan
mana yang munasabah mungkin. Pada emulasi Unix seperti Cygwin atau BS2000/Posix, ini menjadi a
kemenangan yang ketara. Tetapi, walaupun pada Linux, apabila suite ujian makepp ditukar daripada
arahan luaran kepada binaan, terdapat penjimatan keseluruhan sebanyak 3% penggunaan CPU pengguna dan 15%
penggunaan CPU sistem. (Ujian sudah tentu berat pada tindakan primitif dan hampir tidak memanggil
penyusun.)
Konsistensi juga menjadi isu, walaupun kami tidak akan memperbaharui Unix. Biasanya arahan
mempunyai pelbagai nuansa ungkapan biasa. Dan ramai yang mencipta jenis bahasa, masing-masing
berbeza sudah tentu, untuk melakukan sesuatu (cth "expr", "sed" ...), atau pilihan kompleks untuk
menyatakan medan, pembatas, lajur (cth "potong", "isih" ...).
Di sini sebaliknya, apa-apa yang mewah hanya dikendalikan oleh Perl, memberikan kedua-dua konsistensi
semua arahan, dan kuasa yang jauh lebih besar daripada sekumpulan pilihan. Lebih baik lagi, mana-mana Perlcode
arahan ini dijalankan untuk anda, dijalankan dalam pakej Makefile. Jadi, bukannya
masukkan kod Perl ke dalam tindakan peraturan, anda boleh menentukan fungsi dan pembolehubah dan menggunakannya
dalam perintah:
sub my_filter {
# Kembalikan benar jika $_ adalah wajar
}
%.keluar: %.dalam Makeppfile
&grep &my_filter $(input) -o $(output)
Jika anda menggunakan fungsi atau pembolehubah Perl dalam arahan anda, makepp tidak mengenali ini sebagai
suatu pergantungan. Secara umumnya lebih selamat untuk memberitahu makepp segala-galanya, jadi peraturan yang menggunakan Perl
elemen harus bergantung pada makefile atau modul yang menyediakan elemen tersebut, seperti yang ditunjukkan dalam
contoh di atas.
Sebaliknya kejahilan mungkin wajar jika anda mempunyai program yang mencampurkan program
dan aspek konfigurasi dalam satu fail. Contohnya ialah fail WSDL yang mengandungi kedua-dua a
definisi antara muka perkhidmatan web dan alamat IP. Anda boleh praproses fail ini dengan
perintah &template untuk menampal dalam konfigurasi, tetapi jangan biarkan makepp perasan.
&kucing [pilihan ...] nama fail ...
Menggabungkan semua fail menjadi satu.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -S,
--synclines, -v, --verbose"
&chmod [pilihan ...] mod nama fail ...
Set mod untuk semua fail yang diberikan. Mod mestilah rentetan oktal.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -v, --verbose"
&cp [pilihan ...] fail sumber destfile
&cp [pilihan ...] fail sumber
&cp [pilihan ...] fail sumber ... destdir
Salinan fail sumber kepada destfile, satu fail sumber ke direktori semasa atau berbilang
fail sumbers destdir dengan nama yang sama.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -v,
--verbose"
-l
--pautan
Cuba pautkan fail. Jika gagal, cuba pautan simbolik, jika itu juga
diminta, jika tidak salin.
-s
--simbolik
--pautan-simbolik
--symlink
Cuba pautkan fail secara simbolik. Jika gagal, salin.
Lihat nota di bawah &ln.
&potong [pilihan ...] nama fail ...
Cetak bahagian baris yang dipilih daripada setiap fail atau baris yang dipilih, mengira semua
fail. Output dipisahkan oleh pembatas yang lalai kepada TAB untuk medan dan
rentetan kosong untuk aksara.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -r,
--record-size=nombor, --separator=string, -S, --synclines, -v, --verbose"
-c senarai
--watak=senarai
Cetak semua aksara yang ditentukan oleh senarai. senarai mungkin sebarang ungkapan Perl
mengembalikan senarai integer. Integer boleh sama ada positif, bermula pada
sifar untuk mengira dari awal, atau negatif untuk mengira dari akhir. Tidak seperti Unix
"potong", perintah yang anda minta dihormati.
Tidak seperti dalam operator slice Perl di mana julat ".." mestilah sama ada positif atau
negatif, &cut membenarkan bermula dengan positif dan berakhir dengan negatif. Tetapi
ini hanya tersedia jika ungkapan anda hanya terdiri daripada nombor, koma dan
"..". Cth "1..-2" bermaksud segala-galanya kecuali yang pertama (0) dan yang terakhir (-1).
Ungkapan senarai boleh melihat keseluruhan baris dalam $_. Perubahan kepada itu akan berlaku
diabaikan, bagaimanapun, kerana apabila ungkapan ini dinilai baris itu telah pun
telah dipecahkan kepada pembolehubah autosplit Perl @::F. Nombor yang anda pulangkan adalah sebenarnya
indeks kepada senarai itu.
-d rentetan
--pembatas=rentetan
Tetapkan pembatas baharu untuk medan input dan output. Tidak seperti "potong" Unix, ini mungkin ada
sebarang panjang.
-E
--noescape
Anggap "\" sebagai literal biasa untuk "-p, --printf=format".
-f senarai
--fields=senarai
Cetak semua kumpulan yang ditentukan oleh senarai. senarai adalah seperti yang diterangkan di bawah "-c,
--characters=list". Ambil perhatian bahawa ini menyembunyikan pilihan standard "-f" yang mesti ada
diberikan sebagai "--force".
-l senarai
--garisan=senarai
Cetak semua baris yang ditentukan oleh senarai. senarai adalah seperti yang diterangkan di bawah "-c,
--characters=list" dengan satu perbezaan utama: Baris pertama mempunyai nombor 1, di sana
tiada baris 0. Ini pastinya tidak cekap untuk fail besar, jika anda mempunyai campuran
julat positif kepada negatif dalam senarai anda, kerana ia membaca segala-galanya ke ingatan.
Jika tidak Perl boleh mengoptimumkan ini, tetapi saya tidak tahu sama ada ia berlaku.
-m
--padanan
Cetak hanya baris yang sepadan, iaitu yang mempunyai aksara atau medan yang mencukupi. ini
membayangkan "--hanya-terhad", itulah sebabnya anda akan terlepas baris medan tunggal dengan
"--fields=0".
-p format
--printf=format
Gunakan format (dengan \escapes) pada semua medan atau aksara.
-s
--hanya-terhad
Cetak hanya baris yang mengandungi pembatas.
&cut -c 10-20,-5,25- $(input)
&cut -c 'grep $$_ % 3, 0..99' $(input) # 1 lajur pertama bukan berbilang daripada 100
&cut -d: --fields 0,4 --printf='%10s ialah %s\n' / etc / passwd
&gema [pilihan ...] rentetan ...
&printf [pilihan ...] format hujah ...
&ya [pilihan ...] rentetan ...
Menulis semua rentetan ke stdout atau fail luar yang diberikan. Kedua-dua &echo dan &ya menambah baris baharu
pada penghujungnya. Rentetan, atau untuk &printf format, mungkin mengandungi "\" melarikan diri, kerana ia
dikenali daripada C atau Unix moden atau Shell "echo". Mereka bagaimanapun seperti dalam Perl berganda-
petikan, yang bermaksud beberapa perbezaan, seperti itu satu trailing "\" tidak dibenarkan.
Perl mempunyai beberapa lagi pelarian yang menarik, tetapi yang anda mungkin jangkakan untuk melakukan sesuatu
berbeza ialah:
\cA Merupakan watak kawalan ^A.
\u Menggandakan huruf berikut.
\U Menaikkan huruf selebihnya, atau sehingga "\E" atau "\L" seterusnya jika ditemui.
\xHH, \x{HHHH}
Merupakan nilai aksara bagi kod Hex yang diberikan. Ambil perhatian bahawa kod angka tidak
mudah alih ke platform EBCDIC!
Tidak seperti Unix "ya", &yes sama seperti &echo, kecuali ia mengulangi output untuk
selagi boleh, biasanya sehingga "--output '| perintah'" tamat. Dan, jika &ya
tidak mempunyai hujah, ia lalai kepada "y".
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -o,
--output=nama fail, -O, --outfail, -v, --verbose"
-E
--noescape
Anggap "\" sebagai literal biasa.
-n
--bukan talian
Jangan tambah baris baharu selepas rentetan terakhir. (Tidak difahami oleh &printf.)
&expr [pilihan ...] perlcode ...
Cetak nilai skalar perlcode, yang boleh ditulis sebagai satu atau beberapa argumen.
Ambil perhatian bahawa arahan terbina dalam tidak dihuraikan oleh Shell, jadi "*", "(" atau ">" tidak
istimewa. Tetapi petikan rentetan dihuraikan oleh makepp, jadi rentetan Perl mesti dipetik
dua kali, melainkan anda mahu menggunakan kata-kata kosong. Jika nilainya palsu, ini gagal. Catatan
itu -- tidak seperti dalam Unix "expr" -- fungsi indeks Perl bermula pada 0 (salah) dan kembali
-1 (benar) untuk kegagalan.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -o,
--output=nama fail, -O, --outfail, -v, --verbose"
-n
--bukan talian
Jangan tambah baris baharu selepas keluaran.
&expr ($(VAR) - 3) * 2 < 1 && -1 || 1
&expr "$(VAR) - 3 * 2 < 1 ? 'gembira' : 'kesedihan'" -o $(output)
-&expr $(VAR) - 3 * 2 -o >>$(output)
&grep [pilihan ...] perlcode nama fail ...
&perl [pilihan ...] perlcode nama fail ...
&sed [pilihan ...] perlcode nama fail ...
Semua fail dibaca baris demi baris (melainkan anda memberikan pilihan "--separator"), dan
perlcode akan dinilai untuk setiap baris, sebelum ia dicetak. &sed adalah serupa dengan
"perl -pe", manakala &grep hanya mengeluarkan baris yang mana perlcode mengembalikan yang benar
nilai. &perl adalah serupa dengan "perl -ne", hanya mengeluarkan apa sahaja yang anda cetak secara eksplisit
dalam perlcode. Kandungan baris tersedia dalam $_, yang boleh diubah suai.
Daripada ketiga-tiga ini, hanya &grep akan gagal jika ia tidak menghasilkan apa-apa. Perhatikan bahawa tidak ada
pilihan abaikan-kes, kerana anda akan melakukannya dengan "/regexp/i".
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -r,
--record-size=nombor, -s, --separator=string, -S, --synclines, --verbose"
Pilihan "--synclines" hanya masuk akal dengan &perl jika anda menggunakan &Mpp::Cmds::print to
keluaran $_. Hanya &grep mempunyai pilihan tambahan:
-c
--kira
Menindas keluaran biasa; sebaliknya cetak kiraan baris yang sepadan. Dengan "-v,
--invert-match" (lihat di bawah), kira garisan tidak sepadan.
-l
--senarai
--fail-dengan-perlawanan
Keluarkan hanya nama fail tersebut dengan padanan. Apabila ini digabungkan dengan "-v,
--invert-match", keluarkan nama fail dengan baris yang tidak sepadan (sedikit
tidak masuk akal tetapi serasi dengan Unix -vl). Apabila ini digabungkan dengan dua kali ganda
"-vv", keluarkan nama fail tanpa padanan.
-v
--sebaliknya
--revert-match
--padanan songsang
Terbalikkan pengertian padanan, untuk memilih garis yang tidak sepadan. Perhatikan bahawa ini bersembunyi
pilihan standard "-v" yang mesti diberikan sebagai "--verbose".
-w nama fail
--fail-buang=nama fail
Bakul sisa pilihan untuk mengumpul garisan yang ditolak. Ini bukan sahaja untuk
menyahpepijat kod pilihan anda, tetapi juga untuk membahagikan input anda kepada dua. Seperti dengan
output biasa, anda boleh mengubah suai $_ sebelum mengembalikan palsu.
&sed s/foo/bar/ f1 f2 f3 -o outfile # seperti sed s/foo/bar/ f1 f2 f3 >outfile
&sed '$$_ = uc' f1 f2 f3 -o outfile # seperti tr '[:lower:]' '[:atas:]' f1 f2 f3
&grep '$$. % 3' f1 f2 f3 -o outfile # hapuskan setiap baris ke-3
&grep -c /match/i f1 f2 f3 # hitung baris yang sepadan dengan 'padanan' dengan STDOUT
Tanpa mendorong anda untuk menjana aksesori secara besar-besaran, berikut ialah cara anda boleh melakukannya dengan mudah
meletakkan ulasan RO atau RW antara setiap jenis dan nama pembolehubah yang dikehendaki, semuanya pada satu
barisan. Kaedah getter yang dijana dan kaedah penetap secara pilihan pergi ke yang dijumpai seterusnya
bahagian awam atau dilindungi:
# Cipta get dan mungkin tetapkan kaedah daripada "type /* R[OW] */ member;".
sub cxx_accessors {
$acc ||= ''; # Calon negeri 5.10.0
jika( m!^\s*(.+?)\s*/\*\s*R([OW])\s*\*/\s*(.+?)\s*;! ) {
$acc .= "#line $.\n"; # Beritahu C++ dari mana asalnya
$acc .= "set batal\u$3( const $1 &__tmp ) { $3 = __tmp; }"
jika $2 eq 'W';
$acc .= "const $1 &get\u$3() const { return $3; }\n";
} elsif( /^\s*(?:public|protected)\s*:/ ) {
$_ .= $acc;
$acc = '';
}
}
%.cc: %.cc.in # Gunakan &sed untuk pengendalian I/O
&sed --sync-lines &cxx_accessors $(input) -o $(output)
&pasang [pilihan ...] fail sumber destfile
&pasang [pilihan ...] fail sumber ... destdir
&pasang --direktori [pilihan ...] direktori ...
Pindahkan atau namakan semula fail sumber kepada destfile, atau berbilang fail sumbers destdir dengan
nama yang sama. Ini adalah cara pilihan untuk memindahkan hasil binaan ke akhir mereka
lokasi pemasangan.
Setiap pengubahsuaian sistem fail yang dilakukan oleh &pasang akan dilog ke penghujung
fail ditunjuk oleh pembolehubah persekitaran $INSTALL_LOG, atau, jika itu tidak ditetapkan tetapi
kami berada di bawah direktori dengan a RootMakeppfile(.mk), ke fail daripada .log_pasang dalam itu
direktori, atau sebaliknya ke fail itu dalam direktori semasa. Anda mungkin mahu memadamkan
fail log sebelum siri &pasang invokasi.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -v, --verbose"
-c
--salinan
Salin fail daripada mengalihkannya. Ini adalah lebih baik, kerana ia tidak memaksa
makepp untuk membina semula fail lain kali. Tetapi ia bukan lalai, kerana
keserasian dengan program pemasangan lain.
-d
--direktori
Dalam bentuk ketiga arahan ini buat semua direktori yang diberikan dan mana-mana
direktori induk yang diperlukan.
-g kumpulan
--kumpulan=kumpulan
Tukar pemilikan kumpulan fail destinasi. Kumpulan itu boleh diberikan oleh
nama atau angka.
-l
--pautan
Cuba pautkan fail. Jika gagal, salin.
--log=nama fail
--logfile=nama fail
Penggunaan nama fail bukannya fail log biasa.
-m mod
--mod=mod
Set mod untuk semua fail atau direktori destinasi. Mod mestilah rentetan oktal.
-o pemilik
--pemilik=pemilik
Tukar pemilikan fail destinasi. Pemilik boleh diberi nama atau
secara berangka.
-r
--selesaikan
--menyelesaikan-simbolik
--resolve-symbolic-link
--resolve-symlink
-S
--simbolik
--pautan-simbolik
--symlink
Mencipta pautan simbolik dan bukannya bergerak. Pilihan ini dihantar ke &ln dan adalah
diterangkan di sana.
-s
--jalur
Memanggil utiliti "jalur", yang mesti berada dalam $PATH, pada fail destinasi.
&ln [pilihan ...] fail sumber destfile
&ln [pilihan ...] fail sumber
&ln [pilihan ...] fail sumber ... destdir
pautan fail sumber kepada destfile, satu fail sumber ke direktori semasa atau berbilang
fail sumbers destdir dengan nama yang sama.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -v,
--verbose"
-r
--selesaikan
--menyelesaikan-simbolik
--resolve-symbolic-link
--resolve-symlink
Inilah yang anda selalu mahu "ln -s" lakukan. Buat simbolik dan bukannya sukar
pautan, bukan kepada rentetan yang ditentukan, tetapi benar-benar kepada fail yang diberikan.
-s
--simbolik
--pautan-simbolik
--symlink
Cipta pautan simbolik dan bukannya keras.
Catatan: Pada pelbagai fail atau sistem pengendalian, operasi ini tidak disokong. Atau ia
ialah, cth oleh Cygwin, tetapi tidak difahami oleh penyusun Windows asli, jika anda menggunakannya.
Untuk fail make anda tidak boleh menukar, untuk mendapatkan sekurang-kurangnya beberapa jenis hasil, &ln dan "&cp -l
-s" boleh menyalin fail untuk anda sebaliknya (bukan direktori sekalipun). Untuk mencapai ini, anda
perlu mengeksport pembolehubah berikut sebelum memanggil makepp:
eksport MAKEPP_LN_CP=1
&ln --resolve atau --symbolic akan menyalin fail dan bukannya mencipta simbolik
link.
eksport MAKEPP_LN_CP=2
&ln akan menyalin fail dan bukannya membuat pautan keras.
eksport MAKEPP_LN_CP=3
Semua permohonan &ln akan menyalin fail dan bukannya mencipta mana-mana jenis
link.
&mkdir [pilihan ...] direktori ...
Buat direktori.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -v,
--verbose"
-m mod
--mod=mod
Set mod untuk semua direktori yang dibuat, tanpa mengira umask. Mod mestilah a
rentetan oktal.
-p
--ibu bapa
Juga buat sebarang direktori induk yang diperlukan. Abaikan kegagalan penciptaan direktori
disebabkan direktori sudah sedia ada (walaupun ia dicipta serentak oleh
proses lain).
&mv [pilihan ...] fail sumber destfile
&mv [pilihan ...] fail sumber
&mv [pilihan ...] fail sumber ... destdir
Pindahkan atau namakan semula fail sumber kepada destfile, satu fail sumber ke direktori semasa atau berbilang
fail sumbers destdir dengan nama yang sama.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -v,
--verbose"
&praproses [pilihan ...] pembolehubah=takrifan ... nama fail ...
Ini mempraproses fail sama seperti makepp lakukan untuk makefiles. Ini adalah
lebih berkuasa daripada &templat tetapi secara sintaksis tidak sesuai untuk fail dengan banyak fail
"$"-tanda, seperti Makefiles atau skrip.
Pernyataan bersyarat, serta pernyataan "include"/"_include" (yang di sini
tidak membina fail mahupun mencari ke atas), "perl"/"makeperl"/"perl_begin" atau
"sub"/"makesub", atau sebarang pernyataan yang anda tentukan dalam fail, diproses. kosong
dan baris komen dihapuskan.
Tetapi, bukannya mempelajari peraturan binaan, ia akan mengeluarkan semua baris yang tinggal selepas itu
"$(...)" pengembangan ungkapan. Untuk mengelakkan kenyataan daripada diiktiraf seperti itu,
anda boleh mendahuluinya dengan ungkapan kosong "$()". Perkara yang sama berlaku untuk baris anda
mahu kekal kosong atau yang akan mengekalkan tanda ulasan utama. Begitu juga, jika a
trailing backslash bukan untuk menyertai baris dengan yang seterusnya, letakkan "$()" selepasnya.
Garis biasa mendapat output sebagaimana adanya.
Baris dengan $(MAKEEXPRESSIONS) akan dikembangkan dan dikeluarkan.
ifdef MAHU INI # tidak mendapat output sama ada ditakrifkan atau tidak
mungkin tidak mendapat output
ENDIF
sertakan beberapa fail
_include beberapa fail yang mungkin tidak wujud # atau -include
$()include ekspresi kosong menghalang kata kunci daripada dikenali.
# Baris komen dan baris kosong ditelan.
$()# Melainkan mereka ditutup dengan ungkapan kosong.
$()
Ungkapan kosong menghalang \$()
kesinambungan garis miring terbalik daripada diiktiraf.
mungkin memberi:
Garis biasa mendapat output sebagaimana adanya.
Barisan dengan apa sahaja yang diperluaskan dan dikeluarkan.
banyak kandungan yang terserap di sini...
sertakan ungkapan kosong menghalang kata kunci daripada dikenali.
# Melainkan mereka bertopeng dengan ekspresi kosong.
Ungkapan kosong menghalang \
kesinambungan garis miring terbalik daripada diiktiraf.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -o,
--output=nama fail, -O, --outfail, -S, --synclines, -v, --verbose"
-a
--tugasan
Juga perlakukan tugasan dalam fail seperti yang akan dilakukan oleh makepp. Malangnya, garis sedemikian tidak boleh
bertopeng dengan "$()" kosong, kerana adalah sah untuk membina nama pembolehubah dengan
ungkapan. Ini juga mengiktiraf pernyataan "define",
"eksport"/"unexport" dan "override" (ini boleh ditutup dengan "$()").
-h \\%hash
--hashref=\\%hash
Ini membolehkan praperuntukan nilai pembolehubah, termasuk yang panjang tidak mudah
diluluskan dalam perintah. Ungkapan yang diluluskan mungkin mana-mana kod Perl yang mengembalikan a
rujukan hash. Ini digabungkan dengan mana-mana pembolehubah lain yang dihantar kepada arahan,
termasuk daripada pilihan "--hashref" yang lain.
&rm [pilihan ...] nama fail ...
Padam fail jika anda mempunyai kebenaran menulis direktori. Inilah yang Unix "rm -f" lakukan
padam, kerana ia mempunyai perlindungan khas untuk kegunaan interaktif yang tidak diperlukan dalam a
Makefile.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -v, --verbose"
-f
- kekuatan
Ini menghalang aduan tentang fail yang tidak wujud. Itu adalah kesan sampingan ini
pilihan ada dalam Unix, dan satu-satunya yang masuk akal di sini.
-m
--metainfo
Sebagai tambahan kepada fail yang diberikan, ini juga memadamkan maklumat meta makepp
menyimpan tentang mereka dalam direktori .makepp. Oleh itu makepp melupakan semua yang pernah diketahuinya
tentang fail yang diberikan. Jika direktori .makepp menjadi kosong selepas ini, ia juga
dipadamkan.
Ini juga akan memadamkan direktori yang diberikan, tetapi hanya jika ia kosong. Untuk memudahkan
ini, ia akan memadamkan direktori terakhir, mengikut urutan kedalaman menurun. Jadi anda boleh
gunakan ungkapan "**" untuk memadam keseluruhan hierarki. Berikut ialah contoh yang boleh didapati dalam
banyak peringkat atasan membuat fail. Ambil perhatian bahawa terdapat utiliti "makeppclean" yang boleh dilakukan
ini dengan lebih cekap.
$(cleanold palsu):
&rm -fm $(hanya-lapuk **/*)
$(palsu bersih): cleanold
&rm -f $(wildcard **/*.[ao])
$(phony distclean): bersih
&rm -fm $(sasaran sahaja **/*)
&isih [pilihan ...] nama fail ...
Isih semua fail bersama-sama dalam susunan leksikografi. Ini tidak cekap untuk agak besar
fail, kerana ia berlaku sepenuhnya dalam ingatan. Ia akan gagal jika saiz gabungan
semua fail melebihi memori yang anda berhak.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail,
--record-size=nombor, -s, --separator=string, -v, --verbose"
-c perlcode
--bandingkan=perlcode
perlcode mewakili blok isihan Perl, dengan dua calon pengisihan dalam $a dan
$b.
-n
--numerik
--isihan-numeric
Ini disusun mengikut berangka pada permulaan rekod. Ruang putih terkemuka ialah
dilangkau. Anda boleh menggunakan "--transform" dan "--detransform" jika nombor tidak berada di
permulaan.
-r
--terbalik
Keluarkan keputusan dalam susunan terbalik. Ambil perhatian bahawa ini menyembunyikan pilihan standard
"-r" yang mesti diberikan sebagai "--record-size".
-t perlcode
--transform=perlcode
-d perlcode
--detransform=perlcode
Jika anda mempunyai kod yang kompleks, pengisihan menjadi lebih mahal berbanding dengan
bilangan rekod n, kerana kod itu dipanggil O(n log(n)) kali. Untuk mengelakkan
itu, anda boleh membenarkan Perl menumpukan perhatian pada pengisihan, dengan terlebih dahulu mengubah suai
rentetan, supaya pengekstrakan kriteria carian rumit berlaku sekali setiap rekod,
dan mengubah suainya kembali, setelah diisih.
Jika pilihan ini diberikan, "--transform" perlcode akan dipetakan ke rekod
dalam $_ satu demi satu, dan boleh mengubah suainya. Selepas mengisih, "--detransform"
perlcode akan dipetakan ke rekod yang diubah suai dalam $_ satu demi satu, dan boleh
ubah suai mereka kembali. Anda biasanya tidak akan menggunakan kedua-dua pilihan ini, melainkan
anda mahu mengeluarkan baris yang diubah suai.
Mengubah rentetan menjadi struktur kriteria isihan yang diekstrak, yang anda
"--bandingkan" perlcode can pick up dikenali sebagai Schwartzian Transform (ST).
Membungkus semuanya ke dalam rentetan itu sendiri, supaya tiada "--compare" perlcode is
diperlukan, membenarkan keseluruhan pengisihan berlaku tanpa melakukan Perl yang mahal
kod, dikenali sebagai Guttmann-Rosler Transform (GRT). Anda boleh mendapatkan petua dengan
mencari nama tersebut di web.
# Isih ungkapan berangka secara mahal mengikut nilai ($$ melindungi $ daripada pengembangan makepp)
&sort --compare 'eval( $$a ) <=> eval( $$b )' $(input) -o >>$(output)
# ST untuk pengisihan tidak sensitif huruf besar-besaran
&isih -t '[lc, $$_]' -c '$$a->[0] cmp $$b->[0]' -d '$$_->[1]' $(input) - o >>$(output)
# GRT menggunakan fungsi pengubahsuaian yang ditakrifkan di tempat lain dalam Makeppfile
&sort -t &transform -d &detransform $(input) -o >>$(output)
-u
--uniq
--unik
Selepas mengisih, hapuskan pendua. Ini sama ada garisan yang sama, atau jika
Pilihan "--compare" diberikan, yang mana itu perlcode laporan sebagai setara.
&templat [pilihan ...] makro=takrifan ... nama fail ...
Ini ialah prapemproses makro, tidak sekuat prapemproses C atau "m4".
Lihat &praproses untuk mendapatkan alternatif yang lebih berkuasa. Ia diilhamkan oleh makro automake
penggantian di Makefile.am and Makefile.in. Tetapi ia melampaui itu. Sebarang teks biasa
melalui tidak berubah. Binaan khas secara lalai dihadkan dengan "@". mereka
mesti muat pada satu baris melainkan anda melepasi salah satu daripada "-r, --record-size" atau "--separator".
@# komen @
Ambil perhatian bahawa walaupun meminjam daripada sintaks komen akhir baris "#", yang ini adalah
ulasan sebaris.
@MAKRO@
Konstruk ini digantikan dengan nilai MAKRO. Nama makro mesti bermula dengan
huruf atau garis bawah, diikuti dengan sebarang bilangan huruf, garis bawah, tolak atau
titik. Tidak seperti dalam nama makepp, garis bawah dan tolak tidak bersamaan.
@MAKRO(arg1, arg2...)@
Seperti yang pertama, tetapi diparameterkan. Args menggantikan $1 hingga $9 atau
"${nombor}" dalam nilai. Atau, jika nilainya ialah fungsi Perl, ia diluluskan sebagai
parameter biasa. Hasilnya kemudian menggantikan keseluruhan binaan. Satu tahap
sarang makro adalah mungkin kerana args dalam kurungan mungkin mengandungi biasa
Seruan "@MACRO@", seperti dalam "@f(@x@)@", di mana "@x@" dikembangkan sebelum menjadi
digantikan ke dalam badan "f".
@termasuk(nama fail)@
Ini adalah satu-satunya makro yang dipratentukan. Ia digantikan dengan &template-diproses
kandungan fail bernama. Seperti semua makro ini boleh berlaku di tengah-tengah a
barisan. Malangnya, kerana itu, "-S, --synclines" mengabaikan kemasukan fail, membuat
segala-galanya nampaknya datang dari fail termasuk.
@MAKRO=definisi@
@MAKRO?=definisi@
Ini mentakrifkan makro dalam fail. Ini digantikan dengan apa-apa. Yang kedua
borang hanya berkuat kuasa jika makro tidak ditakrifkan, mungkin atas arahan
line.
@MAKRO { Perlcode }@
Ini juga mentakrifkan makro, yang kandungannya ialah sub Perl. Hujah-hujah, jika
ada apa-apa, lulus sebagai @_.
@{ Perlcode }@
Ini menjalankan Perlcode serta-merta dan digantikan dengan nilai pulangan.
Setakat ini kami hanya melihat satu sintaks untuk membenamkan perkara istimewa. Ada lagi
sintaks berbilang baris, dan kedua-duanya membenarkan variasi untuk menyekat baris baharu. Ini adalah
sintaks terbina (yang boleh dikonfigurasikan oleh pilihan di bawah). Di sini KHAS bermaksud
mana-mana binaan yang ditunjukkan di atas:
@KHAS@
@KHAS@\
Ini boleh muncul berganda di mana-mana sahaja pada baris. Varian segera diikuti oleh
"\" hanya berfungsi di hujung baris. Ia juga menggantikan pemisah baris berikut.
@@KHAS@@ normal teks @@
@@KHAS@@ normal teks @@\
Ini seperti yang sebelumnya. Walau bagaimanapun, teks biasa, yang juga diganti,
boleh menjangkau berbilang baris. Anda boleh meletakkan bahagian khas pada baris komen di sekeliling
kod sumber yang hanya diperlukan dalam skrip yang dinyahpasang, untuk dihapuskan atau
diganti semasa proses pemasangan:
# @@# 2 baris seterusnya akan hilang @@
echo Anda sedang menjalankan versi skrip ini yang dinyahpasang
# @@
# @@REPLAMCENT@@
echo Sesuatu yang lain akan berada di sini
# @@
Contoh tidak bermakna yang menunjukkan pelbagai kemungkinan:
@m1=beberapa definisi@\
@m2=foo $1 bar@\
@middle_of_arg=iddl@\
@m1@ @m2(m@middle_of_arg@e)@
@@m2(banyak baris)@@
...
@@ teks biasa 1 + 2 = @{ 1 + 2 }@
menjadi
beberapa definisi foo bar tengah
foo many baris bar teks biasa 1 + 2 = 3
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -r,
--record-size=nombor, --separator=string, -S, --synclines, -v, --verbose"
-d
--ditakrifkan
Gantikan hanya contoh makro yang sebenarnya ditakrifkan. Tanpa pilihan ini
yang tidak ditentukan semuanya akan digantikan dengan apa-apa.
-h \\%hash
--hashref=\\%hash
Ini membolehkan praperuntukan nilai makro, termasuk yang panjang tidak mudah
diluluskan dalam perintah. Ungkapan yang diluluskan mungkin mana-mana kod Perl yang mengembalikan a
rujukan hash. Ini digabungkan dengan mana-mana makro lain yang dihantar kepada arahan,
termasuk daripada pilihan "--hashref" yang lain. Nilai cincang mungkin juga kod
rujukan, dalam kes itu fungsi dipanggil, seperti "@macro { Perlcode }@"
takrifan.
-s /awalan/akhiran/
--simple=/awalan/akhiran/
Penggunaan awalan and akhiran sebelum dan selepas KHAS masing-masing bukannya "@". The
watak pertama ialah pemisah dan tidak perlu menjadi garis miring. Nilai ini ialah Perl
regexps. Anda tidak boleh memperkenalkan kumpulan seperti "(...)", tetapi "(?:...)" ok.
-m /awalan/akhiran/akhiran/[aftersuffix/]
--berbilang baris=/awalan/akhiran/akhiran/[aftersuffix/]
Penggunaan awalan, akhiran and awalan selepas sebelum dan selepas KHAS dan pada akhir
blok masing-masing bukannya "@@". Jika akhiran juga diberikan, nama makro
mesti berulang sebelum itu. Watak pertama ialah pemisah dan tidak semestinya
garis miring. Cth XML-ish, yang mana anda mesti menambah "--defined" jika anda mahu
kekalkan teg lain, tidak ditentukan oleh anda:
--defined --simple=|<|/>| --multiline=|<|>| |
Atau, lebih baik, gunakan arahan pemprosesan " ", bertujuan untuk tujuan sedemikian:
--defined --simple='|<\?|\?>|'
Atau, jika anda ingin menggabungkan ini dengan "&entity;" sintaks untuk makro mudah
penggantian (memelihara entiti angka "☺" yang bukan ulasan):
--defined --simple='_(?:&(?!#)|<\?)_(?:;|\?>)_'
&sentuh [pilihan ...] nama fail ...
Mengemas kini pengubahsuaian dan cap masa capaian setiap fail hingga sekarang. Jika fail
tidak wujud, ia tercipta.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -v, --verbose"
&Nyahpasang [pilihan ...] [nama fail ...]
Nyahpasang fail yang dipasang sebelum ini oleh &pasang. The nama fails ialah fail log yang ditulis
dengan &pasang. Jika tiada yang diberikan, mahupun pilihan "--inpipe", membaca fail log lalai
daripada &pasang.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -i,
--inpipe=shellcommand, -I, --infail, -v, --verbose"
&uniq [pilihan ...] nama fail ...
Buang semua kecuali satu baris yang sama berturut-turut.
"Pilihan standard": "-A, --args-file, --arguments-file=nama fail, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=filename, -O, --outfail, -r,
--record-size=nombor, -s, --separator=string, -S, --synclines, -v, --verbose"
-c perlcode
--bandingkan=perlcode
ini Perlcode mendapat baris sebelumnya dan semasa dalam $a dan $b dan akan kembali
benar jika ia menganggap dua baris sama.
&uniq --compare='lc( $$a ) eq lc $$b' $(input) -o $(output)
Boleh dicontohi arahan
Pelbagai perkara tidak dibina, tetapi boleh dicapai dengan arahan lain:
awk Gunakan &sed.
chgrp
chown
Arahan ini kebanyakannya tidak mudah alih! Mereka sama ada diam-diam tidak melakukan apa-apa atau gagal,
bergantung kepada sistem. Secara amnya hanya root boleh melakukan operasi ini, iaitu
mengapa ia hanya tersedia melalui arahan &install.
cpp Gunakan &praproses atau &templat.
tarikh
Salah satu daripada ini sebahagiannya melakukan perkara yang sama:
&expr waktu tempatan
&expr gmtime
palsu
Gunakan &expr tanpa hujah atau 0.
kepala
ekor
Anda boleh mencapai hasil yang sama dengan &grep atau "&cut --lines":
&grep 1..10 fail # sepuluh baris pertama
&grep 10..eof fail # semua baris dari kesepuluh dan seterusnya
&potong --lines -10..-1 fail # sepuluh baris terakhir
Ambil perhatian bahawa 1..10 dalam &grep ialah operator flip-flop nombor talian Perl, yang menjengkelkan
bermula pada 1. Jangan bermula pada 0, atau flip-flop tidak akan menjadi benar.
fmt Ini disebut di sini kerana Perl menyediakan fungsi yang berkaitan. Walau bagaimanapun saya telah
masalah menggunakan pengisytiharan "format" dalam makefile. Apa itu kerja ialah
fungsi "garis bentuk" yang mendasari. Cth untuk mengubah fail csv yang terdiri daripada nama dan
harga kepada format jadual:
sub csv2txt {
baris borang "\@<<<<<<<<<<<<<< ^############.##\n", belah ',';
$_ = $^A;
$^A = '';
}
%.txt: %.csv
&sed &csv2txt $(input) -o $(output)
m4 Gunakan &praproses atau &templat.
ialah rm
Gunakan &rm.
tr Gunakan &sed.
Gunakan makepp_builtins dalam talian menggunakan perkhidmatan onworks.net