Tiền tố với shellscript kiểm tra
shellscript kiểm tra
, có thể được sử dụng để thêm tiền tố vào bất kỳ dòng lệnh nào có thể trông như thế này,
#!/bin/bash
nếu [ "$1" == "--debug" ]
sau đó
gỡ lỗi = đúng
sự thay đổi
khác
gỡ lỗi = sai
fi
"$@" & pid=$!
ngủ 0,1 # lần (s) cho đến khi giết
giết $pid 2> /dev/null
độ phân giải = "$?"
nếu $ gỡ lỗi
sau đó
nếu [ $res -eq 0 ]
sau đó
echo "bị giết khi hết thời gian chờ: $@"
khác
echo "đã hoàn thành một cách duyên dáng: $@"
fi
fi
ví dụ 1
$ ./check --debug bash -c "while true;do date '+%s.%N';sleep 0.01;done"
1634944386.589977656
1634944386.603126888
1634944386.616089924
1634944386.629058026
1634944386.642334480
1634944386.655644267
1634944386.668289318
1634944386.681058710
bị giết khi hết thời gian chờ: bash -c while true;do date '+%s.%N';sleep 0.01;done
ví dụ 2
$ ./kiểm tra --debug lsblk
TÊN MAJ:KÍCH THƯỚC RM TỐI THIỂU RO LOẠI NÚI
sda 8:0 0 238,5G 0 đĩa
ââsda1 8:1 0 500M 0 phần
ââsda2 8:2 0 139,4G 0 phần
ââsda3 8:3 0 1000M 0 phần
ââsda4 8:4 0 1K 0 phần
ââsda5 8:5 0 89,7G 0 phần /
ââsda6 8:6 0 8G 0 phần [SWAP]
sdb 8:16 0 3,7T 0 đĩa
ââsdb1 8:17 0 510M 0 phần
ââsdb2 8:18 0 30G 0 phần
ââsdb5 8:21 0 1M 0 phần
ââsdb6 8:22 0 100G 0 phần
ââsdb7 8:23 0 3,5T 0 phần /media/multimed-2
ââsdb8 8:24 0 5G 0 phần
sr0 11:0 1 1024M 0 phòng
nvme0n1 259:0 0 232,9G 0 đĩa
âânvme0n1p1 259:1 0 232,9G 0 phần
âânvme0n1p2 259:2 0 1M 0 phần
hoàn thành một cách duyên dáng: lsblk
Vỏ tùy chỉnh nguyên thủy psh
Một giải pháp thay thế khác, shell chế độ nhà nguyên thủy psh
cũng có thể được sử dụng cho mục đích này.
Ưu điểm: Bạn có thể chạy các lệnh trực tiếp mà không cần thêm bất kỳ tiền tố nào.
Nhược điểm: Bạn có thể chỉnh sửa dòng lệnh, nhưng không có lịch sử và bạn không có quyền truy cập vào lịch sử của trình bao tiêu chuẩn chẳng hạn đánh đập
, zsh,
tcsh`). Một số tính năng khác của vỏ tiêu chuẩn cũng bị thiếu.
shellscript bash psh
và tập lệnh python3 ghim
nên được thực thi và sao chép, di chuyển hoặc liên kết vào một thư mục trong CON ĐƯỜNG
, Ví dụ /usr/local/bin
,
Bắt đầu psh
, chạy các lệnh và thoát khỏi nó với lối ra
. Đầu vào được quản lý bởi ghim
, Sử dụng dòng đọc
để có thể chỉnh sửa dòng lệnh (cao cấp hơn dòng lệnh tích hợp sẵn đọc
của đánh đập
).
psh
,
#!/bin/bash
tmpf=$(mktemp)
sữa chua = "$ (pwd)"
cmd=
trong khi đúng
làm
# đọc -p "psh:$curdir> " cmd 2>&1
# tiếng vang "$cmd" > "$tmpf"
ghim "$curdir" "$tmpf"
# con mèo "$tmpf"
cmd=$(mèo "$tmpf")
nếu [ "$cmd" != "thoát" ]
sau đó
nếu [ "${cmd:0:3}" == "cd " ]
sau đó
nguồn "$tmpf"
sữa chua = "$ (pwd)"
khác
nguồn "$tmpf" & pid=$!
ngủ 0,1 # lần (s) cho đến khi giết
giết $pid 2> /dev/null
fi
khác
nghỉ
fi
xong 2> /dev/null
rm "$tmpf"
ghim
,
#!/usr/bin/python3
từ nhập sys argv
nhập rlcompleter
nhập đường đọc
readline.parse_and_bind("tab: hoàn thành")
dấu nhắc = 'psh:{0} > '.format(argv[1])
f = mở(argv[2], 'w')
cmd = đầu vào (dấu nhắc)
f.write('{0}\n'.format(cmd)) # ghi vào đối số đầu tiên
Ví dụ:
sudodus@bionic64 /media/multimed-2/test/test0/temp/PeterElbert $ psh
psh:/media/multimed-2/test/test0/temp/PeterElbert > while true;do date '+.%N';sleep 0.008;done
.753302869
.763750113
.773720876
.783983502
.794652755
.805570413
.816651252
.827621482
.838553391
.849516607
psh:/media/multimed-2/test/test0/temp/PeterElbert > ls -l
tổng cộng 12
-rwxrwxr-x 1 sudodus sudodus 282 okt 23 01:18 kiểm tra
-rwxrwxr-x 1 sudodus sudodus 255 okt 23 07:18 pin
-rwxrwxr-x 1 sudodus sudodus 438 okt 23 07:51 psh
psh:/media/multimed-2/test/test0/temp/PeterElbert > cd ..
psh:/media/multimed-2/test/test0/temp > thoát
sudodus@bionic64 /media/multimed-2/test/test0/temp/PeterElbert $