Prefix cu shellscript Verifica
shellscript-ul Verifica
, care poate fi folosit pentru a prefix orice linie de comandă poate arăta astfel,
#!/bin/bash
if [ "$1" == "--debug" ]
atunci
depanare=adevărat
schimb
altfel
depanare=false
fi
„$@” și pid=$!
dormi 0,1 # timp (e) până la ucidere
kill $pid 2> /dev/null
res="$?"
dacă $debug
atunci
dacă [ $res -eq 0 ]
atunci
echo "ucis la expirarea timpului: $@"
altfel
echo „terminat cu grație: $@”
fi
fi
Exemplul 1
$ ./check --debug bash -c „în timp ce este adevărat; face data „+%s.%N”;sleep 0,01;terminat”
1634944386.589977656
1634944386.603126888
1634944386.616089924
1634944386.629058026
1634944386.642334480
1634944386.655644267
1634944386.668289318
1634944386.681058710
ucis la expirarea timpului: bash -c în timp ce este adevărat;dată „+%s.%N”;sleep 0,01;terminat
Exemplul 2
$ ./check --debug lsblk
NUME MAJ:MIN RM DIMENSIUNE RO TIP PUNCT DE MONTARE
sda 8:0 0 238,5G 0 disc
ââsda1 8:1 0 500M 0 parte
ââsda2 8:2 0 139,4G 0 parte
ââsda3 8:3 0 1000M 0 parte
ââsda4 8:4 0 1K 0 parte
ââsda5 8:5 0 89,7G 0 parte /
ââsda6 8:6 0 8G 0 parte [SWAP]
sdb 8:16 0 3,7T 0 disc
ââsdb1 8:17 0 510M 0 parte
ââsdb2 8:18 0 30G 0 parte
ââsdb5 8:21 0 1M 0 parte
ââsdb6 8:22 0 100G 0 parte
ââsdb7 8:23 0 3,5T 0 part /media/multimed-2
ââsdb8 8:24 0 5G 0 parte
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 232,9G 0 disc
âânvme0n1p1 259:1 0 232,9G 0 parte
âânvme0n1p2 259:2 0 1M 0 parte
terminat cu grație: lsblk
Shell personalizat primitiv psh
O altă alternativă, un shell primitiv în modul acasă psh
poate fi folosit și în acest scop.
Avantaj: Puteți rula comenzile direct fără niciun prefix suplimentar.
Dezavantaje: Puteți edita linia de comandă, dar nu există istoric și nu aveți acces la istoricul unui shell standard, de exemplu bash
, zsh,
tcsh`). Lipsesc și alte câteva caracteristici ale carcasei standard.
Scriptul shell bash psh
și scriptul python3 pin
ar trebui să fie executabil și copiat, mutat sau legat într-un director în CALE
, de exemplu /usr/local/bin
,
start psh
, rulați comenzi și ieșiți din el cu Ieșire
. Intrarea este gestionată de pin
, care folosește Citeste linia
pentru a face posibilă editarea liniei de comandă (mai avansată decât comanda încorporată citit
de bash
).
psh
,
#!/bin/bash
tmpf=$(mktemp)
curdir="$(pwd)"
cmd=
în timp ce adevărat
do
# citește -p "psh:$curdir> " cmd 2>&1
# echo „$cmd” > „$tmpf”
PIN „$curdir” „$tmpf”
# pisică „$tmpf”
cmd=$(cat „$tmpf”)
if [ "$cmd" != "ieșire" ]
atunci
dacă [ "${cmd:0:3}" == "cd " ]
atunci
sursa „$tmpf”
curdir="$(pwd)"
altfel
sursa "$tmpf" & pid=$!
dormi 0,1 # timp (e) până la ucidere
kill $pid 2> /dev/null
fi
altfel
pauză
fi
terminat 2> /dev/null
rm "$tmpf"
pin
,
#!/usr/bin/python3
din sys import argv
import rlcompleter
import readline
readline.parse_and_bind("fila: complet")
prompt = 'psh:{0} > '.format(argv[1])
f = deschis(argv[2], 'w')
cmd = intrare (prompt)
f.write('{0}\n'.format(cmd)) # scrie la primul argument
Exemplu:
sudodus@bionic64 /media/multimed-2/test/test0/temp/PeterElbert $ psh
psh:/media/multimed-2/test/test0/temp/PeterElbert > în timp ce este adevărat;do data „+.%N”;sleep 0,008;terminat
.753302869
.763750113
.773720876
.783983502
.794652755
.805570413
.816651252
.827621482
.838553391
.849516607
psh:/media/multimed-2/test/test0/temp/PeterElbert > ls -l
total 12
-rwxrwxr-x 1 sudodus sudodus 282 oct 23 01:18 verifica
-rwxrwxr-x 1 sudodus sudodus 255 oct 23 07:18 pin
-rwxrwxr-x 1 sudodus sudodus 438 oct 23 07:51 psh
psh:/media/multimed-2/test/test0/temp/PeterElbert > cd ..
psh:/media/multimed-2/test/test0/temp > ieșire
sudodus@bionic64 /media/multimed-2/test/test0/temp/PeterElbert $