GoGPT Best VPN GoSearch

favorit OnWorks

mkplan9 - Online di Cloud

Jalankan mkplan9 di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows, atau emulator online MAC OS

Ini adalah perintah mkplan9 yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


mk - memelihara (membuat) file terkait

RINGKASAN


mk [ -f mkfile ] ... [ Option ... ] [ target ... ]

DESKRIPSI


Mk menggunakan aturan ketergantungan yang ditentukan dalam mkfile untuk mengontrol pembaruan (biasanya dengan
kompilasi) dari target (biasanya file) dari file sumber tempat mereka bergantung. NS
mkfile (default berisi memerintah untuk setiap target yang mengidentifikasi file dan lainnya
target di mana ia bergantung dan sh(1) naskah, a resep, untuk memperbarui target. NS
skrip dijalankan jika target tidak ada atau jika lebih tua dari file mana pun
tergantung pada. mkfile mungkin juga mengandung meta-aturan yang menentukan tindakan untuk memperbarui implisit
target. Jika tidak target ditentukan, target aturan pertama (bukan aturan meta) di
mkfile diperbarui.

Variabel lingkungan $NPROC menentukan berapa banyak target yang dapat diperbarui secara bersamaan;
Beberapa sistem operasi, misalnya, Paket 9, atur $NPROC secara otomatis ke jumlah CPU yang aktif
mesin saat ini.

Pilihannya adalah:

-a Asumsikan semua target sudah ketinggalan zaman. Dengan demikian, semuanya diperbarui.
-d[misalnya] Menghasilkan keluaran debug (p adalah untuk menguraikan, g untuk pembuatan grafik, e untuk
eksekusi).
-e Jelaskan mengapa setiap target dibuat.
-i Paksa target perantara yang hilang untuk dibuat.
-k Lakukan pekerjaan sebanyak mungkin dalam menghadapi kesalahan.
-n Cetak, tetapi jangan jalankan, perintah yang diperlukan untuk memperbarui target.
-s Buat argumen baris perintah secara berurutan daripada paralel.
-t Sentuh (perbarui tanggal modifikasi) target file, tanpa menjalankan resep apa pun.
-wtarget1,sasaran2,...
Berpura-pura waktu modifikasi untuk masing-masing target adalah waktu saat ini; berguna bersama
dengan -n untuk mempelajari pembaruan apa yang akan dipicu dengan memodifikasi target.

The mkfile
A mkfile terdiri dari tugas (dijelaskan di bawah `Lingkungan') dan aturan. Sebuah aturan
mengandung target dan ekor. Target adalah string literal dan biasanya berupa nama file.
Ekor berisi nol atau lebih prasyarat dan opsional resep, yang merupakan tempurung
naskah. Setiap baris resep harus dimulai dengan spasi. Sebuah aturan mengambil bentuk

target: prasyarat1 prasyarat2
resep menggunakan prasyarat1, prapersyaratan2 untuk membangun target

Saat resep dijalankan, karakter pertama pada setiap baris dihilangkan.

Setelah titik dua pada garis target, aturan dapat menentukan atribut, dijelaskan di bawah ini.

A meta-aturan memiliki target berupa A%B dimana A dan B adalah string (mungkin kosong). A
meta-rule bertindak sebagai aturan untuk target potensial yang namanya cocok A%B dengan % diganti
oleh string arbitrer, yang disebut batang. Dalam menafsirkan meta-aturan, batangnya adalah
disubstitusi untuk semua kejadian dari % dalam nama prasyarat. Dalam resep meta-
aturan, variabel lingkungan $batang berisi string yang cocok dengan %. Misalnya, a
meta-rule untuk mengkompilasi program C menggunakan 9c(1) mungkin:

%: %.C
9c -c $batang.c
9l -o $batang $batang.o

Meta-rules mungkin berisi ampersand & daripada tanda persen %. Sebuah % cocok maksimal
string panjang karakter apa pun; NS & cocok dengan string panjang maksimal dari karakter apa pun
kecuali titik atau garis miring.

Teks dari mkfile diproses sebagai berikut. Garis yang dimulai dengan < diikuti oleh file
nama diganti dengan isi file bernama. Garis yang dimulai dengan <| diikuti oleh
nama file diganti dengan output dari eksekusi file bernama. Garis kosong
dan komentar, yang dijalankan dari tanda kutip # karakter ke baris baru berikut, dihapus.
Urutan karakter garis miring terbalik-baris baru dihapus, jadi garis panjang masuk mkfile mungkin
dilipat. Baris non-resep diproses dengan mengganti `{Command} keluaran dari
Command saat dijalankan sh. Referensi ke variabel diganti dengan nilai variabel.
Karakter khusus dapat dikutip menggunakan tanda kutip tunggal '' seperti dalam sh(1).

Tugas dan aturan dibedakan oleh kemunculan pertama yang tidak dikutip dari : (aturan) atau =
(penugasan).

Aturan selanjutnya dapat mengubah atau menimpa aturan yang ada dalam kondisi berikut:

- Jika target aturan sama persis dan satu aturan hanya berisi prasyarat
klausa dan tidak ada resep, klausa ditambahkan ke prasyarat aturan lain.
Jika salah satu atau kedua target adalah virtual, resep selalu dieksekusi.

- Jika target aturan sama persis dan prasyaratnya tidak cocok dan
kedua aturan berisi resep, mk melaporkan kesalahan ``resep ambigu''.

- Jika target dan prasyarat kedua aturan sama persis, aturan kedua
menimpa yang pertama.

Lingkungan Hidup
Aturan dapat menggunakan variabel lingkungan shell. Sebuah referensi hukum dari formulir $OBJ or
${nama} diperluas seperti pada sh(1). Referensi formulir ${nama:A%B=CD}, Di mana A, B, C,
D adalah string (mungkin kosong), memiliki nilai yang dibentuk dengan memperluas $nama dan menggantikan C
untuk A dan D untuk B di setiap kata di $nama yang cocok dengan pola A%B.

Variabel dapat diatur dengan penugasan formulir
var=[attr=]nilai
Kosong di nilai memecahnya menjadi kata-kata. Variabel semacam itu diekspor ke lingkungan
resep saat dieksekusi, kecuali U, satu-satunya atribut hukum attr, hadir. NS
nilai awal variabel diambil dari (dalam urutan prioritas yang meningkat) default
nilai di bawah, mk's lingkungan, mkfiles, dan penetapan baris perintah apa pun sebagai
argumen untuk mk. Argumen penugasan variabel menimpa yang pertama (tetapi tidak ada
selanjutnya) penugasan ke variabel itu.

Variabel MKFLAGS berisi semua argumen opsi (argumen dimulai dengan or
mengandung dan MKARG berisi semua target dalam panggilan ke mk.

Variabel MKSHELL berisi baris perintah shell mk digunakan untuk menjalankan resep. Jika yang pertama
kata perintah berakhiran rc or rcsh, mk kegunaan rc(1) aturan mengutip; jika tidak, ia menggunakan
sh(1) ini. NS MKSHELL variabel dikonsultasikan saat mkfile dibaca, bukan saat
dieksekusi, sehingga shell yang berbeda dapat digunakan dalam satu mkfile:

MKSHELL=$PLAN9/bin/rc
gunakan-rc:V:
for(i in abc) echo $i

MKSHELL=sh
gunakan-sh:V:
untuk saya di abc; lakukan echo $i; selesai

Mkfiles disertakan melalui < or <| (qv) lihat salinan pribadi mereka sendiri dari MKSHELL, yang selalu
mulai diatur ke sh .

Informasi dinamis dapat dimasukkan dalam mkfile dengan menggunakan baris formulir

<|Command args

Ini menjalankan perintah Command dengan argumen yang diberikan args dan menyalurkan output standarnya
untuk mk untuk dimasukkan sebagai bagian dari mkfile. Misalnya, kernel Inferno menggunakan ini
teknik untuk menjalankan perintah shell dengan skrip awk dan file konfigurasi sebagai argumen
agar Wow skrip untuk memproses file dan menghasilkan satu set variabel dan mereka
nilai-nilai.

Execution
Selama eksekusi, mk menentukan target mana yang harus diperbarui, dan dalam urutan apa, untuk membangun
itu nama ditentukan pada baris perintah. Kemudian menjalankan resep terkait.

Suatu target dianggap mutakhir jika tidak memiliki prasyarat atau jika semua prasyaratnya
up to date dan lebih baru dari semua prasyaratnya. Sekali resep untuk target
telah dieksekusi, target dianggap up to date.

Stempel tanggal yang digunakan untuk menentukan apakah target sudah diperbarui dihitung secara berbeda untuk
berbagai jenis target. Jika targetnya adalah maya (target aturan dengan V
atribut), cap tanggal awalnya nol; ketika target diperbarui, cap tanggalnya adalah
diatur ke cap tanggal terbaru dari prasyaratnya. Jika tidak, jika target tidak
ada sebagai file, cap tanggalnya diatur ke cap tanggal terbaru dari prasyaratnya,
atau nol jika tidak memiliki prasyarat. Jika tidak, targetnya adalah nama file dan
cap tanggal target selalu merupakan tanggal modifikasi file itu. Cap tanggal dihitung
ketika target dibutuhkan dalam pelaksanaan suatu aturan; itu bukan nilai statis.

Target yang tidak ada yang memiliki prasyarat dan itu sendiri merupakan prasyarat diperlakukan
khususnya. Target seperti itu t diberi cap tanggal prasyarat terbarunya dan jika
ini menyebabkan semua target yang memiliki t sebagai prasyarat untuk up to date, t is
dianggap mutakhir. Sebaliknya, t dibuat dengan cara biasa. NS -i penggantian bendera
perlakuan khusus ini.

File dapat dibuat dalam urutan apa pun yang menghormati batasan sebelumnya.

Resep dijalankan dengan memberikan resep sebagai input standar ke perintah / Bin / sh.
(Perhatikan bahwa tidak seperti membuat, mk memberi makan seluruh resep ke shell daripada menjalankan masing-masing
baris resep secara terpisah.) Lingkungan ditambah dengan variabel berikut:

$semuatarget semua target aturan ini.

$persyaratan baru prasyarat yang menyebabkan aturan ini dijalankan.

$anggota baru prasyarat yang merupakan anggota agregat yang menyebabkan aturan ini untuk
menjalankan. Ketika prasyarat suatu aturan adalah anggota dari suatu agregat,
$persyaratan baru berisi nama agregat dan anggota yang ketinggalan zaman, sedangkan
$anggota baru hanya berisi nama anggota.

$nproc slot proses untuk resep ini. Ini memenuhi 0≤$nproc<$NPROC.

$pid id proses untuk mk mengeksekusi resep.

$persyaratan semua prasyarat untuk aturan ini.

$batang jika ini adalah meta-aturan, $batang adalah string yang cocok % or &. Jika tidak,
ini kosong. Untuk aturan meta ekspresi reguler (lihat di bawah), variabel
diatur ke subekspresi yang sesuai.

$target target untuk aturan ini yang perlu dibuat ulang.

Variabel-variabel ini hanya tersedia selama eksekusi resep, bukan saat mengevaluasi
itu mkfile.

Kecuali aturan memiliki Q atribut, resep dicetak sebelum dieksekusi dengan
variabel lingkungan yang dapat dikenali diperluas. Perintah mengembalikan penyebab status kesalahan mk untuk
mengakhiri.

Resep dan backquoted rc perintah di tempat-tempat seperti tugas dijalankan dalam salinan mk's
lingkungan; perubahan yang mereka buat pada variabel lingkungan tidak terlihat dari mk.

Substitusi variabel dalam sebuah aturan dilakukan ketika aturan tersebut dibaca; substitusi variabel dalam
resep dilakukan saat resep dijalankan. Sebagai contoh:

bar=ac
foo: $bar
$CC -o foo $bar
batang = bc

akan dikompilasi bc ke foo, Jika ac lebih baru dari foo.

Agregat
Nama-nama formulir a(b) merujuk ke anggota b dari agregat a. Saat ini, satu-satunya
agregat yang didukung adalah: 9ar (Lihat 9c(1)) arsip.

atribut
Titik dua yang memisahkan target dari prasyarat dapat segera diikuti oleh
atribut dan usus besar lainnya. Atributnya adalah:

D Jika resep keluar dengan status non-null, target akan dihapus.

E Lanjutkan eksekusi jika resep menghasilkan kesalahan.

N Jika tidak ada resep, target akan diperbarui waktunya.

n Aturannya adalah aturan meta yang tidak bisa menjadi target aturan virtual. Hanya file
cocok dengan pola di target.

P Karakter setelah P sampai terminasi : diambil sebagai nama program. Dia
akan dipanggil sebagai sh -c prog 'arg1' 'arg2' dan harus mengembalikan status keluar nol jika
dan hanya jika arg1 adalah yang terbaru sehubungan dengan arg2. Stempel tanggal masih ada
disebarkan dengan cara biasa.

Q Resep tidak dicetak sebelum dieksekusi.

R Aturannya adalah aturan meta menggunakan ekspresi reguler. Dalam aturan, % tidak memiliki spesial
arti. Target ditafsirkan sebagai ekspresi reguler seperti yang didefinisikan dalam
regexp(7). Prasyarat mungkin berisi referensi ke subekspresi dalam bentuk \n,
seperti pada perintah pengganti sed(1).

U Target dianggap telah diperbarui meskipun resep tidak melakukannya.

V Target aturan ini ditandai sebagai virtual. Mereka berbeda dari file
nama yang sama.

CONTOH


Sebuah mkfile sederhana untuk mengkompilasi program:

</$objtype/mkfile

program: a.$O b.$O c.$O
$LD $LDFLAGS -o $target $prereq

%.$O: %.c
$CC $CFLAGS $batang.c

Ganti pengaturan bendera di mkfile:

% target mk 'CFLAGS=-S -w'

Menjaga perpustakaan:

libc.a(%.$O):N: %.$O
libc.a: libc.a(abs.$O) libc.a(akses.$O) libc.a(alarm.$O) ...
ar r libc.a $anggota baru

Variabel ekspresi string untuk mendapatkan nama dari daftar master:

NAMES=alloc arc bquote builtins memperluas pertandingan utama mk var word
OBJ=${NAMA:%=%.$O}

Aturan meta ekspresi reguler:

([^/]*)/(.*)\.$O:R: \1/\2.c
cd $batang1; $CC $CFLAGS $stem2.c

Cara yang benar untuk menghadapi yacc(1) tata bahasa. Berkas lex.c termasuk filenya x.tab.h
daripada y.tab.h untuk mencerminkan perubahan konten, bukan hanya waktu modifikasi.

lex.$O: x.tab.h
x.tab.h: y.tab.h
cmp -s x.tab.h y.tab.h || cp y.tab.h x.tab.h
y.tab.c y.tab.h: gram.y
$YACC -d gram.y

Contoh di atas juga bisa menggunakan P atribut untuk x.tab.h aturan:

x.tab.h:Pcmp -s:y.tab.h
cp y.tab.h x.tab.h

SOURCE


/src/cmd/mk

Gunakan mkplan9 online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

Perintah Linux

Ad




×
iklan
❤️Berbelanja, pesan, atau beli di sini — tanpa biaya, membantu menjaga layanan tetap gratis.