Linux vmi284606.contaboserver.net 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Apache/2.4.57 (Ubuntu)
: 167.86.127.34 | : 216.73.217.1
Cant Read [ /etc/named.conf ]
7.2.24-0ubuntu0.18.04.17
root
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
X11
[ DIR ]
drwxr-xr-x
7z
39
B
-rwxr-xr-x
7za
40
B
-rwxr-xr-x
7zr
40
B
-rwxr-xr-x
GET
15.84
KB
-rwxr-xr-x
HEAD
15.84
KB
-rwxr-xr-x
POST
15.84
KB
-rwxr-xr-x
[
50.18
KB
-rwxr-xr-x
aa-enabled
22.16
KB
-rwxr-xr-x
aa-exec
22.16
KB
-rwxr-xr-x
ab
58.18
KB
-rwxr-xr-x
acpi_listen
14.27
KB
-rwxr-xr-x
add-apt-repository
7.24
KB
-rwxr-xr-x
addpart
22.08
KB
-rwxr-xr-x
appres
9.99
KB
-rwxr-xr-x
apropos
46.98
KB
-rwxr-xr-x
apt
14.09
KB
-rwxr-xr-x
apt-add-repository
7.24
KB
-rwxr-xr-x
apt-cache
78.16
KB
-rwxr-xr-x
apt-cdrom
22.16
KB
-rwxr-xr-x
apt-config
22.09
KB
-rwxr-xr-x
apt-extracttemplates
22.16
KB
-rwxr-xr-x
apt-ftparchive
234.16
KB
-rwxr-xr-x
apt-get
42.16
KB
-rwxr-xr-x
apt-key
26.75
KB
-rwxr-xr-x
apt-mark
42.16
KB
-rwxr-xr-x
apt-sortpkgs
42.09
KB
-rwxr-xr-x
arch
34.21
KB
-rwxr-xr-x
arj
437.04
KB
-rwxr-xr-x
arj-register
14.87
KB
-rwxr-xr-x
arjdisp
15.05
KB
-rwxr-xr-x
aspell
150.34
KB
-rwxr-xr-x
aspell-import
2
KB
-rwxr-xr-x
autoexpect
7.53
KB
-rwxr-xr-x
autopasswd
378
B
-rwxr-xr-x
awk
122.48
KB
-rwxr-xr-x
b2sum
54.21
KB
-rwxr-xr-x
base32
38.18
KB
-rwxr-xr-x
base64
38.18
KB
-rwxr-xr-x
basename
34.18
KB
-rwxr-xr-x
bashbug
6.95
KB
-rwxr-xr-x
bootctl
34.13
KB
-rwxr-xr-x
broadwayd
114.08
KB
-rwxr-xr-x
bsd-from
9.99
KB
-rwxr-xr-x
bsd-write
13.99
KB
-rwxr-sr-x
busctl
66.09
KB
-rwxr-xr-x
c_rehash
6.65
KB
-rwxr-xr-x
cabextract
26.51
KB
-rwxr-xr-x
cal
28.79
KB
-rwxr-xr-x
calendar
30.48
KB
-rwxr-xr-x
captoinfo
82.11
KB
-rwxr-xr-x
catchsegv
3.25
KB
-rwxr-xr-x
catman
38.46
KB
-rwxr-xr-x
cautious-launcher
853
B
-rwxr-xr-x
certbot
385
B
-rwxr-xr-x
chage
70.13
KB
-rwxr-sr-x
chardet3
389
B
-rwxr-xr-x
chardetect3
389
B
-rwxr-xr-x
chattr
14
KB
-rwxr-xr-x
chcon
62.18
KB
-rwxr-xr-x
check-language-support
2.71
KB
-rwxr-xr-x
checkgid
5.99
KB
-rwxr-xr-x
chfn
74.7
KB
-rwsr-xr-x
chrt
30.08
KB
-rwxr-xr-x
chsh
43.48
KB
-rwsr-xr-x
ckbcomp
146.33
KB
-rwxr-xr-x
cksum
34.18
KB
-rwxr-xr-x
clear
10
KB
-rwxr-xr-x
clear_console
10.07
KB
-rwxr-xr-x
cmp
46.09
KB
-rwxr-xr-x
codepage
13.99
KB
-rwxr-xr-x
col
9.99
KB
-rwxr-xr-x
colcrt
10
KB
-rwxr-xr-x
colrm
9.99
KB
-rwxr-xr-x
column
14.01
KB
-rwxr-xr-x
comm
38.21
KB
-rwxr-xr-x
compose
17.74
KB
-rwxr-xr-x
composer
1.54
KB
-rwxr-xr-x
corelist
12.53
KB
-rwxr-xr-x
cpan
7.96
KB
-rwxr-xr-x
cpan5.26-x86_64-linux-gnu
7.99
KB
-rwxr-xr-x
cpp
1022.94
KB
-rwxr-xr-x
cpp-7
1022.94
KB
-rwxr-xr-x
crontab
38.43
KB
-rwxr-sr-x
cryptdir
1.44
KB
-rwxr-xr-x
csplit
50.21
KB
-rwxr-xr-x
ctstat
22.35
KB
-rwxr-xr-x
curl
218.07
KB
-rwxr-xr-x
cut
42.21
KB
-rwxr-xr-x
dbus-cleanup-sockets
9.98
KB
-rwxr-xr-x
dbus-daemon
231.04
KB
-rwxr-xr-x
dbus-monitor
21.99
KB
-rwxr-xr-x
dbus-run-session
9.98
KB
-rwxr-xr-x
dbus-send
25.98
KB
-rwxr-xr-x
dbus-update-activation-environ...
13.98
KB
-rwxr-xr-x
dbus-uuidgen
9.98
KB
-rwxr-xr-x
deallocvt
10.07
KB
-rwxr-xr-x
deb-systemd-helper
19.67
KB
-rwxr-xr-x
deb-systemd-invoke
4.33
KB
-rwxr-xr-x
debconf
2.79
KB
-rwxr-xr-x
debconf-apt-progress
11.27
KB
-rwxr-xr-x
debconf-communicate
608
B
-rwxr-xr-x
debconf-copydb
1.68
KB
-rwxr-xr-x
debconf-escape
647
B
-rwxr-xr-x
debconf-set-selections
2.87
KB
-rwxr-xr-x
debconf-show
1.78
KB
-rwxr-xr-x
debian-distro-info
18.59
KB
-rwxr-xr-x
decryptdir
1.44
KB
-rwxr-xr-x
delpart
22.08
KB
-rwxr-xr-x
delv
40.86
KB
-rwxr-xr-x
desktop-file-edit
88.03
KB
-rwxr-xr-x
desktop-file-install
88.03
KB
-rwxr-xr-x
desktop-file-validate
76.26
KB
-rwxr-xr-x
dh_bash-completion
2.49
KB
-rwxr-xr-x
dh_perl_openssl
1.36
KB
-rwxr-xr-x
diff
142.34
KB
-rwxr-xr-x
diff3
62.21
KB
-rwxr-xr-x
dig
146.51
KB
-rwxr-xr-x
dircolors
46.19
KB
-rwxr-xr-x
dirmngr
533.55
KB
-rwxr-xr-x
dirmngr-client
106.76
KB
-rwxr-xr-x
dirname
30.18
KB
-rwxr-xr-x
dislocate
7.75
KB
-rwxr-xr-x
distro-info
18.59
KB
-rwxr-xr-x
do-release-upgrade
9.39
KB
-rwxr-xr-x
dpkg
290.5
KB
-rwxr-xr-x
dpkg-deb
150.34
KB
-rwxr-xr-x
dpkg-divert
138.41
KB
-rwxr-xr-x
dpkg-maintscript-helper
18.58
KB
-rwxr-xr-x
dpkg-query
146.4
KB
-rwxr-xr-x
dpkg-split
118.34
KB
-rwxr-xr-x
dpkg-statoverride
70.25
KB
-rwxr-xr-x
dpkg-trigger
66.26
KB
-rwxr-xr-x
du
98.21
KB
-rwxr-xr-x
dumpkeys
166.52
KB
-rwxr-xr-x
edit
17.74
KB
-rwxr-xr-x
editor
240.11
KB
-rwxr-xr-x
editres
68.4
KB
-rwxr-xr-x
eject
30.69
KB
-rwxr-xr-x
enc2xs
41.17
KB
-rwxr-xr-x
encguess
2.99
KB
-rwxr-xr-x
enchant
18.07
KB
-rwxr-xr-x
enchant-lsmod
9.99
KB
-rwxr-xr-x
env
34.18
KB
-rwxr-xr-x
envsubst
34.08
KB
-rwxr-xr-x
eqn
193.19
KB
-rwxr-xr-x
ex
2.55
MB
-rwxr-xr-x
expand
38.21
KB
-rwxr-xr-x
expect
10
KB
-rwxr-xr-x
expect_autoexpect
7.53
KB
-rwxr-xr-x
expect_autopasswd
378
B
-rwxr-xr-x
expect_cryptdir
1.44
KB
-rwxr-xr-x
expect_decryptdir
1.44
KB
-rwxr-xr-x
expect_dislocate
7.75
KB
-rwxr-xr-x
expect_ftp-rfc
686
B
-rwxr-xr-x
expect_kibitz
10.63
KB
-rwxr-xr-x
expect_lpunlock
2.56
KB
-rwxr-xr-x
expect_mkpasswd
5.26
KB
-rwxr-xr-x
expect_multixterm
29.78
KB
-rwxr-xr-x
expect_passmass
4.45
KB
-rwxr-xr-x
expect_rftp
8.68
KB
-rwxr-xr-x
expect_rlogin-cwd
504
B
-rwxr-xr-x
expect_timed-read
306
B
-rwxr-xr-x
expect_timed-run
280
B
-rwxr-xr-x
expect_tknewsbiff
11.12
KB
-rwxr-xr-x
expect_tkpasswd
16.18
KB
-rwxr-xr-x
expect_unbuffer
643
B
-rwxr-xr-x
expect_weather
2.03
KB
-rwxr-xr-x
expect_xkibitz
4.75
KB
-rwxr-xr-x
expect_xpstat
6.45
KB
-rwxr-xr-x
expiry
22.27
KB
-rwxr-sr-x
expr
46.18
KB
-rwxr-xr-x
factor
74.21
KB
-rwxr-xr-x
faillog
18.29
KB
-rwxr-xr-x
fallocate
26.08
KB
-rwxr-xr-x
fc-cache
14.07
KB
-rwxr-xr-x
fc-cat
14.07
KB
-rwxr-xr-x
fc-list
10.07
KB
-rwxr-xr-x
fc-match
10.07
KB
-rwxr-xr-x
fc-pattern
10.07
KB
-rwxr-xr-x
fc-query
10.07
KB
-rwxr-xr-x
fc-scan
10.07
KB
-rwxr-xr-x
fc-validate
10.07
KB
-rwxr-xr-x
fcgistarter
9.99
KB
-rwxr-xr-x
file
22.26
KB
-rwxr-xr-x
file-roller
505.57
KB
-rwxr-xr-x
find
232.5
KB
-rwxr-xr-x
flock
30.16
KB
-rwxr-xr-x
fmt
42.18
KB
-rwxr-xr-x
fold
34.18
KB
-rwxr-xr-x
free
18.08
KB
-rwxr-xr-x
from
9.99
KB
-rwxr-xr-x
ftp
98.7
KB
-rwxr-xr-x
ftp-rfc
686
B
-rwxr-xr-x
funzip
21.99
KB
-rwxr-xr-x
futurize
384
B
-rwxr-xr-x
gdk-pixbuf-thumbnailer
14.08
KB
-rwxr-xr-x
gen-preseed
2.51
KB
-rwxr-xr-x
geqn
193.19
KB
-rwxr-xr-x
getconf
30.13
KB
-rwxr-xr-x
getent
30.49
KB
-rwxr-xr-x
getkeycodes
10.07
KB
-rwxr-xr-x
getopt
14.07
KB
-rwxr-xr-x
gettext
34.08
KB
-rwxr-xr-x
gettext.sh
4.52
KB
-rwxr-xr-x
ginstall-info
43.09
KB
-rwxr-xr-x
git
2.27
MB
-rwxr-xr-x
git-receive-pack
2.27
MB
-rwxr-xr-x
git-shell
1.26
MB
-rwxr-xr-x
git-upload-archive
2.27
MB
-rwxr-xr-x
git-upload-pack
1.27
MB
-rwxr-xr-x
gnome-help
54.07
KB
-rwxr-xr-x
google-drive-ocamlfuse
6.68
MB
-rwxr-xr-x
gpasswd
74.05
KB
-rwsr-xr-x
gpg
997.6
KB
-rwxr-xr-x
gpg-agent
392.7
KB
-rwxr-xr-x
gpg-connect-agent
154.85
KB
-rwxr-xr-x
gpg-wks-server
187.02
KB
-rwxr-xr-x
gpg-zip
3.36
KB
-rwxr-xr-x
gpgconf
166.32
KB
-rwxr-xr-x
gpgparsemail
26.07
KB
-rwxr-xr-x
gpgsm
491.09
KB
-rwxr-xr-x
gpgsplit
78.45
KB
-rwxr-xr-x
gpgv
427.02
KB
-rwxr-xr-x
gpic
204.03
KB
-rwxr-xr-x
groff
105.31
KB
-rwxr-xr-x
grog
2.71
KB
-rwxr-xr-x
grops
165.72
KB
-rwxr-xr-x
grotty
121.34
KB
-rwxr-xr-x
groups
34.18
KB
-rwxr-xr-x
grub-editenv
239.93
KB
-rwxr-xr-x
grub-file
659.79
KB
-rwxr-xr-x
grub-fstest
789.65
KB
-rwxr-xr-x
grub-glue-efi
235.77
KB
-rwxr-xr-x
grub-kbdcomp
1.64
KB
-rwxr-xr-x
grub-menulst2cfg
216.04
KB
-rwxr-xr-x
grub-mkfont
264.34
KB
-rwxr-xr-x
grub-mkimage
328.84
KB
-rwxr-xr-x
grub-mklayout
240.09
KB
-rwxr-xr-x
grub-mknetdir
373.41
KB
-rwxr-xr-x
grub-mkpasswd-pbkdf2
244.12
KB
-rwxr-xr-x
grub-mkrelpath
235.49
KB
-rwxr-xr-x
grub-mkrescue
822.23
KB
-rwxr-xr-x
grub-mkstandalone
449.74
KB
-rwxr-xr-x
grub-mount
608.21
KB
-rwxr-xr-x
grub-ntldr-img
38.16
KB
-rwxr-xr-x
grub-render-label
676.16
KB
-rwxr-xr-x
grub-script-check
259.62
KB
-rwxr-xr-x
grub-syslinux2cfg
624.68
KB
-rwxr-xr-x
gtbl
126.2
KB
-rwxr-xr-x
gtk-builder-tool
26.42
KB
-rwxr-xr-x
gtk-launch
14.15
KB
-rwxr-xr-x
gtk-query-settings
9.99
KB
-rwxr-xr-x
gtk-update-icon-cache
30.47
KB
-rwxr-xr-x
h2ph
28.54
KB
-rwxr-xr-x
h2xs
59.44
KB
-rwxr-xr-x
hd
26.1
KB
-rwxr-xr-x
head
42.21
KB
-rwxr-xr-x
helpztags
2.46
KB
-rwxr-xr-x
hexdump
26.1
KB
-rwxr-xr-x
host
126.66
KB
-rwxr-xr-x
hostid
30.18
KB
-rwxr-xr-x
hostnamectl
18.07
KB
-rwxr-xr-x
htcacheclean
30
KB
-rwxr-xr-x
htdbm
21.99
KB
-rwxr-xr-x
htdigest
13.99
KB
-rwxr-xr-x
htpasswd
17.99
KB
-rwxr-xr-x
hwe-support-status
10.58
KB
-rwxr-xr-x
i386
18.34
KB
-rwxr-xr-x
iconv
62.25
KB
-rwxr-xr-x
id
42.21
KB
-rwxr-xr-x
info
245.72
KB
-rwxr-xr-x
infobrowser
245.72
KB
-rwxr-xr-x
infocmp
58.07
KB
-rwxr-xr-x
infotocap
82.11
KB
-rwxr-xr-x
innochecksum
3.52
MB
-rwxr-xr-x
install
142.25
KB
-rwxr-xr-x
install-info
43.09
KB
-rwxr-xr-x
instmodsh
4.27
KB
-rwxr-xr-x
ionice
26.08
KB
-rwxr-xr-x
ipcmk
26.14
KB
-rwxr-xr-x
ipcrm
26.08
KB
-rwxr-xr-x
ipcs
50.08
KB
-rwxr-xr-x
iptables-xml
92.74
KB
-rwxr-xr-x
ischroot
10.04
KB
-rwxr-xr-x
ispell-wrapper
7.05
KB
-rwxr-xr-x
join
46.21
KB
-rwxr-xr-x
json_pp
3.87
KB
-rwxr-xr-x
jsonlint-php
2.61
KB
-rwxr-xr-x
kbdinfo
14.07
KB
-rwxr-xr-x
kbxutil
158.69
KB
-rwxr-xr-x
kernel-install
4.4
KB
-rwxr-xr-x
kibitz
10.63
KB
-rwxr-xr-x
killall
27.12
KB
-rwxr-xr-x
laptop-detect
3.73
KB
-rwxr-xr-x
last
42.08
KB
-rwxr-xr-x
lastb
42.08
KB
-rwxr-xr-x
lastlog
18.07
KB
-rwxr-xr-x
lcf
7.6
KB
-rwxr-xr-x
ldd
5.29
KB
-rwxr-xr-x
less
166.76
KB
-rwxr-xr-x
lessecho
10.02
KB
-rwxr-xr-x
lessfile
8.36
KB
-rwxr-xr-x
lesskey
19.39
KB
-rwxr-xr-x
lesspipe
8.36
KB
-rwxr-xr-x
letsencrypt
385
B
-rwxr-xr-x
lexgrog
90.57
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
link
30.18
KB
-rwxr-xr-x
linux-boot-prober
1.54
KB
-rwxr-xr-x
linux-check-removal
3.99
KB
-rwxr-xr-x
linux-update-symlinks
6.17
KB
-rwxr-xr-x
linux-version
2.63
KB
-rwxr-xr-x
linux32
18.34
KB
-rwxr-xr-x
linux64
18.34
KB
-rwxr-xr-x
listres
10.41
KB
-rwxr-xr-x
lnstat
22.35
KB
-rwxr-xr-x
loadkeys
206.57
KB
-rwxr-xr-x
loadunimap
26.13
KB
-rwxr-xr-x
locale
49.41
KB
-rwxr-xr-x
locale-check
10
KB
-rwxr-xr-x
localectl
22.07
KB
-rwxr-xr-x
localedef
330.8
KB
-rwxr-xr-x
locate
42.08
KB
-rwxr-sr-x
logger
46.67
KB
-rwxr-xr-x
logname
30.18
KB
-rwxr-xr-x
logresolve
10
KB
-rwxr-xr-x
look
10.23
KB
-rwxr-xr-x
lorder
2.82
KB
-rwxr-xr-x
lpunlock
2.56
KB
-rwxr-xr-x
lsattr
10
KB
-rwxr-xr-x
lsb_release
3.55
KB
-rwxr-xr-x
lscpu
70.08
KB
-rwxr-xr-x
lshw
682.95
KB
-rwxr-xr-x
lsinitramfs
625
B
-rwxr-xr-x
lsipc
70.08
KB
-rwxr-xr-x
lslocks
34.41
KB
-rwxr-xr-x
lslogins
62.08
KB
-rwxr-xr-x
lsmem
42.08
KB
-rwxr-xr-x
lsns
38.08
KB
-rwxr-xr-x
lsof
159.4
KB
-rwxr-xr-x
lspci
79.67
KB
-rwxr-xr-x
lspgpot
1.06
KB
-rwxr-xr-x
lsusb
114.43
KB
-rwxr-xr-x
ltrace
325.21
KB
-rwxr-xr-x
luit
48.12
KB
-rwxr-xr-x
lwp-download
10.05
KB
-rwxr-xr-x
lwp-dump
2.65
KB
-rwxr-xr-x
lwp-mirror
2.36
KB
-rwxr-xr-x
lwp-request
15.84
KB
-rwxr-xr-x
lzcat
74.36
KB
-rwxr-xr-x
lzcmp
6.48
KB
-rwxr-xr-x
lzdiff
6.48
KB
-rwxr-xr-x
lzegrep
5.76
KB
-rwxr-xr-x
lzfgrep
5.76
KB
-rwxr-xr-x
lzgrep
5.76
KB
-rwxr-xr-x
lzless
1.76
KB
-rwxr-xr-x
lzma
74.36
KB
-rwxr-xr-x
lzmainfo
10.07
KB
-rwxr-xr-x
lzmore
2.11
KB
-rwxr-xr-x
man
104.5
KB
-rwxr-xr-x
mandb
126.72
KB
-rwxr-xr-x
manpath
30.47
KB
-rwxr-xr-x
mapscrn
22.13
KB
-rwxr-xr-x
mawk
122.48
KB
-rwxr-xr-x
mcookie
30.14
KB
-rwxr-xr-x
md5sum
42.21
KB
-rwxr-xr-x
md5sum.textutils
42.21
KB
-rwxr-xr-x
mdig
42.13
KB
-rwxr-xr-x
mesg
10.07
KB
-rwxr-xr-x
migrate-pubring-from-classic-g...
2.14
KB
-rwxr-xr-x
mk_modmap
15.78
KB
-rwxr-xr-x
mkfifo
62.18
KB
-rwxr-xr-x
mlocate
42.08
KB
-rwxr-sr-x
mlock
9.99
KB
-rwxr-sr-x
mpack
26.04
KB
-rwxr-xr-x
mtr
71.94
KB
-rwxr-xr-x
mtr-packet
25.99
KB
-rwxr-xr-x
multixterm
29.78
KB
-rwxr-xr-x
munpack
45.95
KB
-rwxr-xr-x
my_print_defaults
3.45
MB
-rwxr-xr-x
myisam_ftdump
3.75
MB
-rwxr-xr-x
myisamchk
3.85
MB
-rwxr-xr-x
myisamlog
3.73
MB
-rwxr-xr-x
myisampack
3.78
MB
-rwxr-xr-x
mysql
3.81
MB
-rwxr-xr-x
mysql_config_editor
3.46
MB
-rwxr-xr-x
mysql_embedded
21.17
MB
-rwxr-xr-x
mysql_install_db
5.01
MB
-rwxr-xr-x
mysql_plugin
3.45
MB
-rwxr-xr-x
mysql_secure_installation
3.69
MB
-rwxr-xr-x
mysql_ssl_rsa_setup
3.49
MB
-rwxr-xr-x
mysql_tzinfo_to_sql
3.4
MB
-rwxr-xr-x
mysql_upgrade
4.32
MB
-rwxr-xr-x
mysqladmin
3.71
MB
-rwxr-xr-x
mysqlanalyze
3.73
MB
-rwxr-xr-x
mysqlbinlog
3.96
MB
-rwxr-xr-x
mysqlcheck
3.73
MB
-rwxr-xr-x
mysqld_multi
26.3
KB
-rwxr-xr-x
mysqld_safe
27.16
KB
-rwxr-xr-x
mysqldump
3.78
MB
-rwxr-xr-x
mysqldumpslow
7.66
KB
-rwxr-xr-x
mysqlimport
3.7
MB
-rwxr-xr-x
mysqloptimize
3.73
MB
-rwxr-xr-x
mysqlpump
4.17
MB
-rwxr-xr-x
mysqlrepair
3.73
MB
-rwxr-xr-x
mysqlreport
38.1
KB
-rwxr-xr-x
mysqlshow
3.7
MB
-rwxr-xr-x
mysqlslap
3.71
MB
-rwxr-xr-x
namei
26.08
KB
-rwxr-xr-x
nawk
122.48
KB
-rwxr-xr-x
ncal
28.79
KB
-rwxr-xr-x
neqn
908
B
-rwxr-xr-x
netkit-ftp
98.7
KB
-rwxr-xr-x
networkd-dispatcher
19.53
KB
-rwxr-xr-x
newgrp
39.4
KB
-rwsr-xr-x
ngettext
34.08
KB
-rwxr-xr-x
nice
34.18
KB
-rwxr-xr-x
nl
42.27
KB
-rwxr-xr-x
nohup
34.18
KB
-rwxr-xr-x
nproc
34.18
KB
-rwxr-xr-x
nroff
3.25
KB
-rwxr-xr-x
nsenter
30.28
KB
-rwxr-xr-x
nslookup
130.51
KB
-rwxr-xr-x
nstat
26.07
KB
-rwxr-xr-x
nsupdate
66.02
KB
-rwxr-xr-x
ntfsdecrypt
46.12
KB
-rwxr-xr-x
numfmt
62.24
KB
-rwxr-xr-x
od
66.21
KB
-rwxr-xr-x
on_ac_power
2.16
KB
-rwxr-xr-x
openssl
706.98
KB
-rwxr-xr-x
os-prober
4.44
KB
-rwxr-xr-x
p7zip
4.64
KB
-rwxr-xr-x
pager
166.76
KB
-rwxr-xr-x
partx
86.08
KB
-rwxr-xr-x
passmass
4.45
KB
-rwxr-xr-x
passwd
58.24
KB
-rwsr-xr-x
paste
34.21
KB
-rwxr-xr-x
pasteurize
388
B
-rwxr-xr-x
patch
178.37
KB
-rwxr-xr-x
pathchk
34.18
KB
-rwxr-xr-x
pbr
152
B
-rwxr-xr-x
pcimodules
14.13
KB
-rwxr-xr-x
pdb3
59.87
KB
-rwxr-xr-x
pdb3.6
59.87
KB
-rwxr-xr-x
pear
793
B
-rwxr-xr-x
peardev
814
B
-rwxr-xr-x
pecl
727
B
-rwxr-xr-x
peekfd
13.99
KB
-rwxr-xr-x
perl
2
MB
-rwxr-xr-x
perl5.26-x86_64-linux-gnu
9.98
KB
-rwxr-xr-x
perl5.26.1
2
MB
-rwxr-xr-x
perlbug
44.78
KB
-rwxr-xr-x
perldoc
125
B
-rwxr-xr-x
perlivp
10.61
KB
-rwxr-xr-x
perlthanks
44.78
KB
-rwxr-xr-x
perror
3.58
MB
-rwxr-xr-x
pftp
98.7
KB
-rwxr-xr-x
pgrep
26.09
KB
-rwxr-xr-x
phar
14.47
KB
-rwxr-xr-x
phar.phar
14.47
KB
-rwxr-xr-x
phar.phar7.2
14.47
KB
-rwxr-xr-x
phar7.2
14.47
KB
-rwxr-xr-x
php
4.68
MB
-rwxr-xr-x
php7.2
4.68
MB
-rwxr-xr-x
pic
204.03
KB
-rwxr-xr-x
pico
240.11
KB
-rwxr-xr-x
piconv
8.16
KB
-rwxr-xr-x
pinentry
62.49
KB
-rwxr-xr-x
pinentry-curses
62.49
KB
-rwxr-xr-x
pinky
38.21
KB
-rwxr-xr-x
pkaction
13.99
KB
-rwxr-xr-x
pkcheck
18.07
KB
-rwxr-xr-x
pkexec
21.99
KB
-rwsr-xr-x
pkill
26.09
KB
-rwxr-xr-x
pkttyagent
13.99
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
14.22
KB
-rwxr-xr-x
pmap
30.09
KB
-rwxr-xr-x
pod2html
4.04
KB
-rwxr-xr-x
pod2man
14.73
KB
-rwxr-xr-x
pod2text
10.72
KB
-rwxr-xr-x
pod2usage
3.86
KB
-rwxr-xr-x
podchecker
3.57
KB
-rwxr-xr-x
podselect
2.47
KB
-rwxr-xr-x
pr
70.27
KB
-rwxr-xr-x
precat
5.52
KB
-rwxr-xr-x
preconv
46.2
KB
-rwxr-xr-x
preunzip
5.52
KB
-rwxr-xr-x
prezip
5.52
KB
-rwxr-xr-x
prezip-bin
9.99
KB
-rwxr-xr-x
print
17.74
KB
-rwxr-xr-x
printenv
30.18
KB
-rwxr-xr-x
printerbanner
22
KB
-rwxr-xr-x
printf
50.18
KB
-rwxr-xr-x
prlimit
34.59
KB
-rwxr-xr-x
pro
442
B
-rwxr-xr-x
prove
13.27
KB
-rwxr-xr-x
prtstat
18.07
KB
-rwxr-xr-x
psfaddtable
17.99
KB
-rwxr-xr-x
psfgettable
17.99
KB
-rwxr-xr-x
psfstriptable
17.99
KB
-rwxr-xr-x
psfxtable
17.99
KB
-rwxr-xr-x
pslog
9.99
KB
-rwxr-xr-x
pstree
26.95
KB
-rwxr-xr-x
pstree.x11
26.95
KB
-rwxr-xr-x
ptar
3.47
KB
-rwxr-xr-x
ptardiff
2.57
KB
-rwxr-xr-x
ptargrep
4.29
KB
-rwxr-xr-x
ptx
70.24
KB
-rwxr-xr-x
pwdx
10.07
KB
-rwxr-xr-x
py3clean
7.63
KB
-rwxr-xr-x
py3compile
11.83
KB
-rwxr-xr-x
py3versions
11.44
KB
-rwxr-xr-x
pydoc3
79
B
-rwxr-xr-x
pydoc3.6
79
B
-rwxr-xr-x
pygettext3
21.04
KB
-rwxr-xr-x
pygettext3.6
21.04
KB
-rwxr-xr-x
python3
4.32
MB
-rwxr-xr-x
python3-futurize
384
B
-rwxr-xr-x
python3-pasteurize
388
B
-rwxr-xr-x
python3-pbr
152
B
-rwxr-xr-x
python3.6
4.32
MB
-rwxr-xr-x
python3.6m
4.32
MB
-rwxr-xr-x
python3m
4.32
MB
-rwxr-xr-x
rar
528.8
KB
-rwxr-xr-x
rcp
98.14
KB
-rwxr-xr-x
rdma
26.07
KB
-rwxr-xr-x
realpath
46.21
KB
-rwxr-xr-x
rearj
77.17
KB
-rwxr-xr-x
rename.ul
14.07
KB
-rwxr-xr-x
renice
14.07
KB
-rwxr-xr-x
replace
3.42
MB
-rwxr-xr-x
report-hw
2.05
KB
-rwxr-xr-x
reset
22
KB
-rwxr-xr-x
resizecons
18.13
KB
-rwxr-xr-x
resizepart
38.08
KB
-rwxr-xr-x
resolveip
3.44
MB
-rwxr-xr-x
rev
10.07
KB
-rwxr-xr-x
rgrep
30
B
-rwxr-xr-x
rlogin
710.79
KB
-rwxr-xr-x
rlogin-cwd
504
B
-rwxr-xr-x
rotatelogs
18.07
KB
-rwxr-xr-x
routef
208
B
-rwxr-xr-x
routel
1.62
KB
-rwxr-xr-x
rsh
710.79
KB
-rwxr-xr-x
rsync
496.43
KB
-rwxr-xr-x
rtstat
22.35
KB
-rwxr-xr-x
run-mailcap
17.74
KB
-rwxr-xr-x
run-with-aspell
57
B
-rwxr-xr-x
runcon
34.18
KB
-rwxr-xr-x
rview
2.55
MB
-rwxr-xr-x
rvim
2.55
MB
-rwxr-xr-x
savelog
10.22
KB
-rwxr-xr-x
scp
98.14
KB
-rwxr-xr-x
screendump
9.99
KB
-rwxr-xr-x
script
30.07
KB
-rwxr-xr-x
scriptreplay
26.08
KB
-rwxr-xr-x
sdiff
50.09
KB
-rwxr-xr-x
see
17.74
KB
-rwxr-xr-x
select-default-iwrap
474
B
-rwxr-xr-x
select-editor
2.38
KB
-rwxr-xr-x
sensible-browser
1.18
KB
-rwxr-xr-x
sensible-editor
1.08
KB
-rwxr-xr-x
sensible-pager
433
B
-rwxr-xr-x
seq
46.18
KB
-rwxr-xr-x
setarch
18.34
KB
-rwxr-xr-x
setkeycodes
10.07
KB
-rwxr-xr-x
setleds
14.05
KB
-rwxr-xr-x
setlogcons
10.07
KB
-rwxr-xr-x
setmetamode
10.1
KB
-rwxr-xr-x
setpci
26.08
KB
-rwxr-xr-x
setsid
10.07
KB
-rwxr-xr-x
setterm
42.08
KB
-rwxr-xr-x
sftp
150.35
KB
-rwxr-xr-x
sg
39.4
KB
-rwsr-xr-x
sha1sum
46.21
KB
-rwxr-xr-x
sha224sum
54.21
KB
-rwxr-xr-x
sha256sum
54.21
KB
-rwxr-xr-x
sha384sum
58.21
KB
-rwxr-xr-x
sha512sum
58.21
KB
-rwxr-xr-x
shar
170.03
KB
-rwxr-xr-x
shasum
9.15
KB
-rwxr-xr-x
showconsolefont
18.07
KB
-rwxr-xr-x
showkey
14.07
KB
-rwxr-xr-x
shred
58.21
KB
-rwxr-xr-x
shuf
54.18
KB
-rwxr-xr-x
skill
26.08
KB
-rwxr-xr-x
slabtop
18.08
KB
-rwxr-xr-x
slogin
710.79
KB
-rwxr-xr-x
snice
26.08
KB
-rwxr-xr-x
soelim
30.2
KB
-rwxr-xr-x
sort
110.47
KB
-rwxr-xr-x
splain
18.7
KB
-rwxr-xr-x
split
54.63
KB
-rwxr-xr-x
splitfont
9.99
KB
-rwxr-xr-x
ssh
710.79
KB
-rwxr-xr-x
ssh-add
338.13
KB
-rwxr-xr-x
ssh-agent
354.14
KB
-rwxr-sr-x
ssh-argv0
1.42
KB
-rwxr-xr-x
ssh-copy-id
10.41
KB
-rwxr-xr-x
ssh-import-id
1.73
KB
-rwxr-xr-x
ssh-import-id-gh
782
B
-rwxr-xr-x
ssh-import-id-lp
782
B
-rwxr-xr-x
ssh-keygen
410.16
KB
-rwxr-xr-x
ssh-keyscan
410.16
KB
-rwxr-xr-x
stat
78.21
KB
-rwxr-xr-x
stdbuf
46.18
KB
-rwxr-xr-x
strace
1.31
MB
-rwxr-xr-x
strace-log-merge
2.58
KB
-rwxr-xr-x
sudo
145.59
KB
-rwsr-xr-x
sudoedit
145.59
KB
-rwsr-xr-x
sudoreplay
54.81
KB
-rwxr-xr-x
sum
38.19
KB
-rwxr-xr-x
symcryptrun
110.73
KB
-rwxr-xr-x
systemd-analyze
1.49
MB
-rwxr-xr-x
systemd-cat
10.07
KB
-rwxr-xr-x
systemd-cgls
14.07
KB
-rwxr-xr-x
systemd-cgtop
30.09
KB
-rwxr-xr-x
systemd-delta
22.07
KB
-rwxr-xr-x
systemd-detect-virt
10.06
KB
-rwxr-xr-x
systemd-mount
42.09
KB
-rwxr-xr-x
systemd-path
10.06
KB
-rwxr-xr-x
systemd-resolve
86.07
KB
-rwxr-xr-x
systemd-run
42.07
KB
-rwxr-xr-x
systemd-socket-activate
18.07
KB
-rwxr-xr-x
systemd-stdio-bridge
14.07
KB
-rwxr-xr-x
systemd-umount
42.09
KB
-rwxr-xr-x
tabs
13.99
KB
-rwxr-xr-x
tac
38.18
KB
-rwxr-xr-x
tail
66.24
KB
-rwxr-xr-x
tasksel
18.47
KB
-rwxr-xr-x
taskset
30.08
KB
-rwxr-xr-x
tbl
126.2
KB
-rwxr-xr-x
tclsh8.6
5.99
KB
-rwxr-xr-x
tee
34.21
KB
-rwxr-xr-x
telnet
108.42
KB
-rwxr-xr-x
telnet.netkit
108.42
KB
-rwxr-xr-x
test
46.18
KB
-rwxr-xr-x
tic
82.11
KB
-rwxr-xr-x
time
14.38
KB
-rwxr-xr-x
timed-read
306
B
-rwxr-xr-x
timed-run
280
B
-rwxr-xr-x
timedatectl
22.07
KB
-rwxr-xr-x
timeout
38.63
KB
-rwxr-xr-x
tknewsbiff
11.12
KB
-rwxr-xr-x
tkpasswd
16.18
KB
-rwxr-xr-x
tload
14.09
KB
-rwxr-xr-x
toe
13.99
KB
-rwxr-xr-x
top
105.77
KB
-rwxr-xr-x
touch
86.21
KB
-rwxr-xr-x
tput
18.02
KB
-rwxr-xr-x
tr
46.18
KB
-rwxr-xr-x
tracepath
14.01
KB
-rwxr-xr-x
traceroute6
18.02
KB
-rwsr-xr-x
traceroute6.iputils
18.02
KB
-rwsr-xr-x
troff
719.34
KB
-rwxr-xr-x
truncate
38.18
KB
-rwxr-xr-x
tset
22
KB
-rwxr-xr-x
tsort
34.18
KB
-rwxr-xr-x
tty
30.18
KB
-rwxr-xr-x
tzselect
15.04
KB
-rwxr-xr-x
ua
442
B
-rwxr-xr-x
ubuntu-advantage
442
B
-rwxr-xr-x
ubuntu-distro-info
18.59
KB
-rwxr-xr-x
ubuntu-support-status
7.84
KB
-rwxr-xr-x
ucf
39.73
KB
-rwxr-xr-x
ucfq
18.91
KB
-rwxr-xr-x
ucfr
10.47
KB
-rwxr-xr-x
udisksctl
54.07
KB
-rwxr-xr-x
ul
14.01
KB
-rwxr-xr-x
unace
30.02
KB
-rwxr-xr-x
unattended-upgrade
82.55
KB
-rwxr-xr-x
unattended-upgrades
82.55
KB
-rwxr-xr-x
unbuffer
643
B
-rwxr-xr-x
unexpand
38.21
KB
-rwxr-xr-x
unicode_stop
530
B
-rwxr-xr-x
uniq
42.21
KB
-rwxr-xr-x
unlink
30.18
KB
-rwxr-xr-x
unlzma
74.36
KB
-rwxr-xr-x
unmkinitramfs
2.94
KB
-rwxr-xr-x
unrar
295.09
KB
-rwxr-xr-x
unrar-nonfree
295.09
KB
-rwxr-xr-x
unshar
113.41
KB
-rwxr-xr-x
unshare
18.27
KB
-rwxr-xr-x
unxz
74.36
KB
-rwxr-xr-x
unzip
174.13
KB
-rwxr-xr-x
unzipsfx
78.12
KB
-rwxr-xr-x
update-alternatives
46.01
KB
-rwxr-xr-x
update-desktop-database
22.07
KB
-rwxr-xr-x
update-mime-database
50.19
KB
-rwxr-xr-x
updatedb
46.08
KB
-rwxr-xr-x
updatedb.mlocate
46.08
KB
-rwxr-xr-x
uptime
10.07
KB
-rwxr-xr-x
usb-devices
4.12
KB
-rwxr-xr-x
usbhid-dump
22.08
KB
-rwxr-xr-x
users
34.18
KB
-rwxr-xr-x
utmpdump
22.07
KB
-rwxr-xr-x
uudecode
117
KB
-rwxr-xr-x
uudeview
30.14
KB
-rwxr-xr-x
uuencode
113
KB
-rwxr-xr-x
uuenview
26.02
KB
-rwxr-xr-x
uuidgen
14.07
KB
-rwxr-xr-x
uuidparse
34.08
KB
-rwxr-xr-x
validate-json
6.63
KB
-rwxr-xr-x
vi
2.55
MB
-rwxr-xr-x
view
2.55
MB
-rwxr-xr-x
viewres
26.96
KB
-rwxr-xr-x
vim
2.55
MB
-rwxr-xr-x
vim.basic
2.55
MB
-rwxr-xr-x
vim.tiny
1.06
MB
-rwxr-xr-x
vimdiff
2.55
MB
-rwxr-xr-x
vimtutor
2.05
KB
-rwxr-xr-x
vmstat
34.09
KB
-rwxr-xr-x
volname
9.99
KB
-rwxr-xr-x
w
18.07
KB
-rwxr-xr-x
w.procps
18.07
KB
-rwxr-xr-x
wall
30.08
KB
-rwxr-sr-x
watch
22.41
KB
-rwxr-xr-x
watchgnupg
13.99
KB
-rwxr-xr-x
wc
42.19
KB
-rwxr-xr-x
webmin
14.57
KB
-rwxr-xr-x
wget
487.56
KB
-rwxr-xr-x
whatis
46.98
KB
-rwxr-xr-x
whereis
26.51
KB
-rwxr-xr-x
which
946
B
-rwxr-xr-x
who
50.21
KB
-rwxr-xr-x
whoami
30.18
KB
-rwxr-xr-x
word-list-compress
9.99
KB
-rwxr-xr-x
write
13.99
KB
-rwxr-sr-x
x86_64
18.34
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp
1022.94
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp-7
1022.94
KB
-rwxr-xr-x
xargs
70.21
KB
-rwxr-xr-x
xauth
50.81
KB
-rwxr-xr-x
xdg-user-dir
234
B
-rwxr-xr-x
xdg-user-dirs-update
18.07
KB
-rwxr-xr-x
xdpyinfo
34.76
KB
-rwxr-xr-x
xdriinfo
9.99
KB
-rwxr-xr-x
xev
30.48
KB
-rwxr-xr-x
xfd
35.76
KB
-rwxr-xr-x
xfontsel
43.6
KB
-rwxr-xr-x
xkibitz
4.75
KB
-rwxr-xr-x
xkill
13.99
KB
-rwxr-xr-x
xlsatoms
9.99
KB
-rwxr-xr-x
xlsclients
14
KB
-rwxr-xr-x
xlsfonts
18.09
KB
-rwxr-xr-x
xmessage
22.88
KB
-rwxr-xr-x
xprop
40.29
KB
-rwxr-xr-x
xpstat
6.45
KB
-rwxr-xr-x
xsubpp
5.04
KB
-rwxr-xr-x
xvinfo
13.99
KB
-rwxr-xr-x
xwininfo
46.08
KB
-rwxr-xr-x
xxd
18.12
KB
-rwxr-xr-x
xz
74.36
KB
-rwxr-xr-x
xzcat
74.36
KB
-rwxr-xr-x
xzcmp
6.48
KB
-rwxr-xr-x
xzdiff
6.48
KB
-rwxr-xr-x
xzegrep
5.76
KB
-rwxr-xr-x
xzfgrep
5.76
KB
-rwxr-xr-x
xzgrep
5.76
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yelp
54.07
KB
-rwxr-xr-x
yes
30.18
KB
-rwxr-xr-x
zdump
18.05
KB
-rwxr-xr-x
zip
211.19
KB
-rwxr-xr-x
zipcloak
91.62
KB
-rwxr-xr-x
zipdetails
47.36
KB
-rwxr-xr-x
zipgrep
2.88
KB
-rwxr-xr-x
zipinfo
174.13
KB
-rwxr-xr-x
zipnote
87.39
KB
-rwxr-xr-x
zipsplit
91.39
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : expect_multixterm
#!/bin/sh # -*- tcl -*- # The next line is executed by /bin/sh, but not tcl \ exec tclsh8.6 "$0" ${1+"$@"} package require Expect # # NAME # multixterm - drive multiple xterms separately or together # # SYNOPSIS # multixterm [-xa "xterm args"] # [-xc "command"] # [-xd "directory"] # [-xf "file"] # [-xn "xterm names"] # [-xv] (enable verbose mode) # [-xh] or [-x?] (help) # [xterm names or user-defined args...] # # DESCRIPTION # Multixterm creates multiple xterms that can be driven together # or separately. # # In its simplest form, multixterm is run with no arguments and # commands are interactively entered in the first entry field. # Press return (or click the "new xterm" button) to create a new # xterm running that command. # # Keystrokes in the "stdin window" are redirected to all xterms # started by multixterm. xterms may be driven separately simply # by focusing on them. # # The stdin window must have the focus for keystrokes to be sent # to the xterms. When it has the focus, the color changes to # aquamarine. As characters are entered, the color changes to # green for a second. This provides feedback since characters # are not echoed in the stdin window. # # Typing in the stdin window while holding down the alt or meta # keys sends an escape character before the typed characters. # This provides support for programs such as emacs. # # ARGUMENTS # The optional -xa argument indicates arguments to pass to # xterm. # # The optional -xc argument indicates a command to be run in # each named xterm (see -xn). With no -xc argument, the command # is the current shell. # # The optional -xd argument indicates a directory to search for # files that will appear in the Files menu. By default, the # directory is: ~/lib/multixterm # # The optional -xf argument indicates a file to be read at # startup. See FILES below for more info. # # The optional -xn argument indicates a name for each xterm. # This name will also be substituted for any %n in the command # argument (see -xc). # # The optional -xv flag puts multixterm into a verbose mode # where it will describe some of the things it is doing # internally. The verbose output is not intended to be # understandable to anyone but the author. # # Less common options may be changed by the startup file (see # FILES below). # # All the usual X and wish flags are supported (i.e., -display, # -name). There are so many of them that to avoid colliding and # make them easy to remember, all the multixterm flags begin # with -x. # # If any arguments do not match the flags above, the remainder # of the command line is made available for user processing. By # default, the remainder is used as a list of xterm names in the # style of -xn. The default behavior may be changed using the # .multixtermrc file (see DOT FILE below). # # EXAMPLE COMMAND LINE ARGUMENTS # The following command line starts up two xterms using ssh to # the hosts bud and dexter. # # multixterm -xc "ssh %n" bud dexter # # FILES # Command files may be used to drive or initialize multixterm. # The File menu may be used to invoke other files. If files # exist in the command file directory (see -xd above), they will # appear in the File menu. Files may also be loaded by using # File->Open. Any filename is acceptable but the File->Open # browser defaults to files with a .mxt suffix. # # Files are written in Tcl and may change any variables or # invoke any procedures. The primary variables of interest are # 'xtermCmd' which identifies the command (see -xc) and # 'xtermNames' which is a list of names (see -xn). The # procedure xtermStartAll, starts xterms for each name in the # list. Other variables and procedures may be discovered by # examining multixterm itself. # # EXAMPLE FILE # The following file does the same thing as the earlier example # command line: # # # start two xterms connected to bud and dexter # set xtermCmd "ssh %n" # set xtermNames {bud dexter} # xtermStartAll # # DOT FILE # At startup, multixterm reads ~/.multixtermrc if present. This # is similar to the command files (see FILES above) except that # .multixtermrc may not call xtermStartAll. Instead it is # called implicitly, similar to the way that it is implicit in # the command line use of -xn. # # The following example .multixtermrc file makes every xterm run # ssh to the hosts named on the command line. # # set xtermCmd "ssh %n" # # Then multixterm could be called simply: # # multixterm bud dexter # # If any command-line argument does not match a multixterm flag, # the remainder of the command line is made available to # .multixtermrc in the argv variable. If argv is non-empty when # .multixtermrc returns, it is assigned to xtermNames unless # xtermNames is non-empty in which case, the content of argv is # ignored. # # Commands from .multixtermrc are evaluated early in the # initialization of multixterm. Anything that must be done late # in the initialization (such as adding additional bindings to # the user interface) may be done by putting the commands inside # a procedure called "initLate". # # MENUS # Except as otherwise noted, the menus are self-explanatory. # Some of the menus have dashed lines as the first entry. # Clicking on the dashed lines will "tear off" the menus. # # USAGE SUGGESTION - ALIASES AND COMMAND FILES # Aliases may be used to store lengthy command-line invocations. # Command files can be also be used to store such invocations # as well as providing a convenient way to share configurations. # # Tcl is a general-purpose language. Thus multixterm command # files can be extremely flexible, such as loading hostnames # from other programs or files that may change from day-to-day. # In addition, command files can be used for other purposes. # For example, command files may be used to prepared common # canned interaction sequences. For example, the command to # send the same string to all xterms is: # # xtermSend "a particularly long string" # # The File menu (torn-off) makes canned sequences particularly # convenient. Interactions could also be bound to a mouse # button, keystroke, or added to a menu via the .multixtermrc # file. # # USAGE SUGGESTION - HANDLING MANY XTERMS BY TILING # The following .multixtermrc causes tiny xterms to tile across # and down the screen. (You may have to adjust the parameters # for your screen.) This can be very helpful when dealing with # large numbers of xterms. # # set yPos 0 # set xPos 0 # # trace variable xtermArgs r traceArgs # # proc traceArgs {args} { # global xPos yPos # set ::xtermArgs "-geometry 80x12+$xPos+$yPos -font 6x10" # if {$xPos} { # set xPos 0 # incr yPos 145 # if {$yPos > 800} {set yPos 0} # } else { # set xPos 500 # } # } # # The xtermArgs variable in the code above is the variable # corresponding to the -xa argument. # # xterms can be also be created directly. The following command # file creates three xterms overlapped horizontally: # # set xPos 0 # # foreach name {bud dexter hotdog} { # set ::xtermArgs "-geometry 80x12+$xPos+0 -font 6x10" # set ::xtermNames $name # xtermStartAll # incr xPos 300 # } # # USAGE SUGGESTION - SELECTING HOSTS BY NICKNAME # The following .multixtermrc shows an example of changing the # default handling of the arguments from hostnames to a filename # containing hostnames: # # set xtermNames [exec cat $argv] # # The following is a variation, retrieving the host names from # the yp database: # # set xtermNames [exec ypcat $argv] # # The following hardcodes two sets of hosts, so that you can # call multixterm with either "cluster1" or "cluster2": # # switch $argv { # cluster1 { # set xtermNames "bud dexter" # } # cluster2 { # set xtermNames "frank hotdog weiner" # } # } # # COMPARE/CONTRAST # It is worth comparing multixterm to xkibitz. Multixterm # connects a separate process to each xterm. xkibitz connects # the same process to each xterm. # # LIMITATIONS # Multixterm provides no way to remotely control scrollbars, # resize, and most other window system related functions. # # Multixterm can only control new xterms that multixterm itself # has started. # # As a convenience, the File menu shows a limited number of # files. To show all the files, use File->Open. # # FILES # $DOTDIR/.multixtermrc initial command file # ~/.multixtermrc fallback command file # ~/lib/multixterm/ default command file directory # # BUGS # If multixterm is killed using an uncatchable kill, the xterms # are not killed. This appears to be a bug in xterm itself. # # Send/expect sequences can be done in multixterm command files. # However, due to the richness of the possibilities, to document # it properly would take more time than the author has at present. # # REQUIREMENTS # Requires Expect 5.36.0 or later. # Requires Tk 8.3.3 or later. # # VERSION #! $::versionString # The latest version of multixterm is available from # http://expect.nist.gov/example/multixterm . If your version of Expect # and Tk are too old (see REQUIREMENTS above), download a new version of # Expect from http://expect.nist.gov # # DATE #! $::versionDate # # AUTHOR # Don Libes <don@libes.com> # # LICENSE # Multixterm is in the public domain; however the author would # appreciate acknowledgement if multixterm or parts of it or ideas from # it are used. ###################################################################### # user-settable things - override them in the ~/.multixtermrc file # or via command-line options ###################################################################### set palette #d8d8ff ;# lavender set colorTyping green set colorFocusIn aquamarine set xtermNames {} set xtermCmd $env(SHELL) set xtermArgs "" set cmdDir ~/lib/multixterm set inputLabel "stdin window" set fileMenuMax 30 ;# max number of files shown in File menu set tearoffMenuMin 2 ;# min number of files needed to enable the File ;# menu to be torn off proc initLate {} {} ;# anything that must be done late in initialization ;# such as adding/modifying bindings, may be done by ;# redefining this ###################################################################### # end of user-settable things ###################################################################### ###################################################################### # sanity checking ###################################################################### set versionString 1.8 set versionDate "2004/06/29" package require Tcl catch {package require Tk} ;# early versions of Tk had no package package require Expect proc exit1 {msg} { puts "multixterm: $msg" exit 1 } exp_version -exit 5.36 proc tkBad {} { exit1 "requires Tk 8.3.3 or later but you are using Tk $::tk_patchLevel." } if {$tk_version < 8.3} { tkBad } elseif {$tk_version == 8.3} { if {[lindex [split $tk_patchLevel .] 2] < 3} tkBad } ###################################################################### # process args - has to be done first to get things like -xv working ASAP ###################################################################### # set up verbose mechanism early set verbose 0 proc verbose {msg} { if {$::verbose} { if {[info level] > 1} { set proc [lindex [info level -1] 0] } else { set proc main } puts "$proc: $msg" } } # read a single argument from the command line proc arg_read1 {var args} { if {0 == [llength $args]} { set argname -$var } else { set argname $args } upvar argv argv upvar $var v verbose "$argname" if {[llength $argv] < 2} { exit1 "$argname requires an argument" } set v [lindex $argv 1] verbose "set $var $v" set argv [lrange $argv 2 end] } proc xtermUsage {{msg {}}} { if {![string equal $msg ""]} { puts "multixtermrc: $msg" } puts {usage: multixterm [flags] ... where flags are: [-xa "xterm args"] [-xc "command"] [-xd "directory"] [-xf "file"] [-xn "xterm names"] [-xv] (enable verbose mode) [-xh] or [-x?] (help) [xterm names or user-defined args...]} exit } while {[llength $argv]} { set flag [lindex $argv 0] switch -- $flag -x? - -xh { xtermUsage } -xc { arg_read1 xtermCmd -xc } -xn { arg_read1 xtermNames -xn } -xa { arg_read1 xtermArgs -xa } -xf { arg_read1 cmdFile -xf if {![file exists $cmdFile]} { exit1 "can't read $cmdFile" } } -xd { arg_read1 cmdDir -xd if {![file exists $cmdDir]} { exit1 "can't read $cmdDir" } } -xv { set argv [lrange $argv 1 end] set verbose 1 puts "main: verbose on" } default { verbose "remaining args: $argv" break ;# let user handle remaining args later } } ###################################################################### # determine and load rc file - has to be done now so that widgets # can be affected ###################################################################### # if user has no $DOTDIR, fall back to home directory if {![info exists env(DOTDIR)]} { set env(DOTDIR) ~ } # catch bogus DOTDIR, otherwise glob will lose the bogus directory # and it won't appear in the error msg if {[catch {glob $env(DOTDIR)} dotdir]} { exit1 "$env(DOTDIR)/.multixtermrc can't be found because $env(DOTDIR) doesn't exist or can't be read" } set rcFile $dotdir/.multixtermrc set fileTypes { {{Multixterm Files} *.mxt} {{All Files} *} } proc openFile {{fn {}}} { verbose "opening $fn" if {[string equal $fn ""]} { set fn [tk_getOpenFile \ -initialdir $::cmdDir \ -filetypes $::fileTypes \ -title "multixterm file"] if {[string match $fn ""]} return } uplevel #0 source [list $fn] verbose "xtermNames = \"$::xtermNames\"" verbose "xtermCmd = $::xtermCmd" } if {[file exists $rcFile]} { openFile $rcFile } else { verbose "$rcFile: not found" } if {![string equal "" $argv]} { if {[string equal $xtermNames ""]} { set xtermNames $argv } } ###################################################################### # Describe and initialize some important globals ###################################################################### # ::activeList and ::activeArray both track which xterms to send # (common) keystrokes to. Each element in activeArray is connected to # the active menu. The list version is just a convenience making the # send function easier/faster. set activeList {} # ::names is an array of xterm names indexed by process spawn ids. set names(x) "" unset names(x) # ::xtermSid is an array of xterm spawn ids indexed by process spawn ids. # ::xtermPid is an array of xterm pids indexed by process spawn id. ###################################################################### # create an xterm and establish connections ###################################################################### proc xtermStart {cmd name} { verbose "starting new xterm running $cmd with name $name" ###################################################################### # create pty for xterm ###################################################################### set pid [spawn -noecho -pty] verbose "spawn -pty: pid = $pid, spawn_id = $spawn_id" set sidXterm $spawn_id stty raw -echo < $spawn_out(slave,name) regexp ".*(.)(.)" $spawn_out(slave,name) dummy c1 c2 if {[string compare $c1 "/"] == 0} { set c1 0 } ###################################################################### # prepare to start xterm by making sure xterm name is unique # X doesn't care but active menu won't make sense unless names are unique ###################################################################### set unique 1 foreach oldName [array names ::names] { if {[string match "$name" $::names($oldName)]} { set unique 0 } } verbose "uniqueness of $name: $unique" set safe [safe $name] # if not unique, look at the numerical suffixes of all matching # names, find the biggest and increment it if {!$unique} { set suffix 2 foreach oldName [array names ::names] { verbose "regexp ^[set safe](\[0-9]+)$ $::names($oldName) X num" if {[regexp "^[set safe](\[0-9]+)$" $::names($oldName) X num]} { verbose "matched, checking suffix" if {$num >= $suffix} { set suffix [expr $num+1] verbose "new suffix: $suffix" } } } append name $suffix verbose "new name: $name" } ###################################################################### # start new xterm ###################################################################### set xtermpid [eval exec xterm -name [list $name] -S$c1$c2$spawn_out(slave,fd) $::xtermArgs &] verbose "xterm: pid = $xtermpid" close -slave # xterm first sends back window id, save in environment so it can be # passed on to the new process log_user 0 expect { eof {wait;return} -re (.*)\n { # convert hex to decimal # note quotes must be used here to avoid diagnostic from expr set ::env(WINDOWID) [expr "0x$expect_out(1,string)"] } } ###################################################################### # start new process ###################################################################### set pid [eval spawn -noecho $cmd] verbose "$cmd: pid = $pid, spawn_id = $spawn_id" set sidCmd $spawn_id lappend ::activeList $sidCmd set ::activeArray($sidCmd) 1 ###################################################################### # link everything back to spawn id of new process ###################################################################### set ::xtermSid($sidCmd) $sidXterm set ::names($sidCmd) $name set ::xtermPid($sidCmd) $xtermpid ###################################################################### # connect proc output to xterm output # connect xterm input to proc input ###################################################################### expect_background { -i $sidCmd -re ".+" [list sendTo $sidXterm] eof [list xtermKill $sidCmd] -i $sidXterm -re ".+" [list sendTo $sidCmd] eof [list xtermKill $sidCmd] } .m.e entryconfig Active -state normal .m.e.active add checkbutton -label $name -variable activeArray($sidCmd) \ -command [list xtermActiveUpdate $sidCmd] set ::activeArray($sidCmd) 1 } proc xtermActiveUpdate {sid} { if {$::activeArray($sid)} { verbose "activating $sid" } else { verbose "deactivating $sid" } activeListUpdate } proc activeListUpdate {} { set ::activeList {} foreach n [array names ::activeArray] { if {$::activeArray($n)} { lappend ::activeList $n } } } # make a string safe to go through regexp proc safe {s} { string map {{[} {\[} {*} {\*} {+} {\+} {^} {\^} {$} {\\$}} $s } # utility to map xterm name to spawn id # multixterm doesn't use this but a user might want to proc xtermGet {name} { foreach sid [array names ::names] { if {[string equal $name $::names($sid)]} { return $sid } } error "no such term with name: $name" } # utility to activate an xterm # multixterm doesn't use this but a user might want to proc xtermActivate {sid} { set ::activeArray($sid) 1 xtermActiveUpdate $sid } # utility to deactivate an xterm # multixterm doesn't use this but a user might want to proc xtermDeactivate {sid} { set ::activeArray($sid) 0 xtermActiveUpdate $sid } # utility to do an explicit Expect # multixterm doesn't use this but a user might want to proc xtermExpect {args} { # check if explicit spawn_id in args for {set i 0} {$i < [llength $args]} {incr i} { switch -- [lindex $args $i] "-i" { set sidCmd [lindex $args [incr i]] break } } if {![info exists sidCmd]} { # nothing explicit, so get it from the environment upvar spawn_id spawn_id # mimic expect's normal behavior in obtaining spawn_id if {[info exists spawn_id]} { set sidCmd $spawn_id } else { set sidCmd $::spawn_id } } # turn off bg expect, do fg expect, then re-enable bg expect expect_background -i $sidCmd ;# disable bg expect eval expect $args ;# fg expect ;# reenable bg expect expect_background { -i $sidCmd -re ".+" [list sendTo $::xtermSid($sidCmd)] eof [list xtermKill $sidCmd] } } ###################################################################### # connect main window keystrokes to all xterms ###################################################################### proc xtermSend {A} { if {[info exists ::afterId]} { after cancel $::afterId } .input config -bg $::colorTyping set ::afterId [after 1000 {.input config -bg $colorCurrent}] exp_send -raw -i $::activeList -- $A } proc sendTo {to} { exp_send -raw -i $to -- $::expect_out(buffer) } # catch the case where there's no selection proc xtermPaste {} {catch {xtermSend [selection get]}} ###################################################################### # clean up an individual process death or xterm death ###################################################################### proc xtermKill {s} { verbose "killing xterm $s" if {![info exists ::xtermPid($s)]} { verbose "too late, already dead" return } catch {exec /bin/kill -9 $::xtermPid($s)} unset ::xtermPid($s) # remove sid from activeList verbose "removing $s from active array" catch {unset ::activeArray($s)} activeListUpdate verbose "removing from background handler $s" catch {expect_background -i $s} verbose "removing from background handler $::xtermSid($s)" catch {expect_background -i $::xtermSid($s)} verbose "closing proc" catch {close -i $s} verbose "closing xterm" catch {close -i $::xtermSid($s)} verbose "waiting on proc" wait -i $s wait -i $::xtermSid($s) verbose "done waiting" unset ::xtermSid($s) # remove from active menu verbose "deleting active menu entry $::names($s)" # figure out which it is # avoid using name as an index since we haven't gone to any pains to # make it safely interpreted by index-pattern code. instead step # through, doing the comparison ourselves set last [.m.e.active index last] # skip over tearoff for {set i 1} {$i <= $last} {incr i} { if {![catch {.m.e.active entrycget $i -label} label]} { if {[string equal $label $::names($s)]} break } } .m.e.active delete $i unset ::names($s) # if none left, disable menu # this leaves tearoff clone but that seems reasonable if {0 == [llength [array names ::xtermSid]]} { .m.e entryconfig Active -state disable } } ###################################################################### # create windows ###################################################################### tk_setPalette $palette menu .m -tearoff 0 .m add cascade -menu .m.f -label "File" -underline 0 .m add cascade -menu .m.e -label "Edit" -underline 0 .m add cascade -menu .m.help -label "Help" -underline 0 set files [glob -nocomplain $cmdDir/*] set filesLength [llength $files] if {$filesLength >= $tearoffMenuMin} { set filesTearoff 1 } else { set filesTearoff 0 } menu .m.f -tearoff $filesTearoff -title "multixterm files" menu .m.e -tearoff 0 menu .m.help -tearoff 0 .m.f add command -label Open -command openFile -underline 0 if {$filesLength} { .m.f add separator set files [lsort $files] set files [lrange $files 0 $fileMenuMax] foreach f $files { .m.f add command -label $f -command [list openFile $f] } .m.f add separator } .m.f add command -label "Exit" -command exit -underline 0 .m.e add command -label "Paste" -command xtermPaste -underline 0 .m.e add cascade -label "Active" -menu .m.e.active -underline 0 .m.help add command -label "About" -command about -underline 0 .m.help add command -label "Man Page" -command help -underline 0 . config -m .m menu .m.e.active -tearoff 1 -title "multixterm active" .m.e entryconfig Active -state disabled # disable the Active menu simply because it looks goofy seeing an empty menu # for consistency, though, it should be enabled entry .input -textvar inputLabel -justify center -state disabled entry .cmd -textvar xtermCmd button .exec -text "new xterm" -command {xtermStart $xtermCmd $xtermCmd} grid .input -sticky ewns grid .cmd -sticky ew grid .exec -sticky ew -ipadx 3 -ipady 3 grid columnconfigure . 0 -weight 1 grid rowconfigure . 0 -weight 1 ;# let input window only expand bind .cmd <Return> {xtermStart $xtermCmd $xtermCmd} # send all keypresses to xterm bind .input <KeyPress> {xtermSend %A ; break} bind .input <Alt-KeyPress> {xtermSend \033%A; break} bind .input <Meta-KeyPress> {xtermSend \033%A; break} bind .input <<Paste>> {xtermPaste ; break} bind .input <<PasteSelection>> {xtermPaste ; break} # arrow keys - note that if they've been rebound through .Xdefaults # you'll have to change these definitions. bind .input <Up> {xtermSend \033OA; break} bind .input <Down> {xtermSend \033OB; break} bind .input <Right> {xtermSend \033OC; break} bind .input <Left> {xtermSend \033OD; break} # Strange: od -c reports these as \033[A et al but when keypad mode # is initialized, they send \033OA et al. Presuming most people # want keypad mode, I'll go with the O versions. Perhaps the other # version is just a Sun-ism anyway. set colorCurrent [.input cget -bg] set colorFocusOut $colorCurrent # change color to show focus bind .input <FocusOut> colorFocusOut bind .input <FocusIn> colorFocusIn proc colorFocusIn {} {.input config -bg [set ::colorCurrent $::colorFocusIn]} proc colorFocusOut {} {.input config -bg [set ::colorCurrent $::colorFocusOut]} # convert normal mouse events to focusIn bind .input <1> {focus .input; break} bind .input <Shift-1> {focus .input; break} # ignore all other mouse events that might make selection visible bind .input <Double-1> break bind .input <Triple-1> break bind .input <B1-Motion> break bind .input <B2-Motion> break set scriptName [info script] ;# must get while it's active proc about {} { set w .about if {[winfo exists $w]} { wm deiconify $w raise $w return } toplevel $w wm title $w "about multixterm" wm iconname $w "about multixterm" wm resizable $w 0 0 button $w.b -text Dismiss -command [list wm withdraw $w] label $w.title -text "multixterm" -font "Times 16" -borderwidth 10 -fg red label $w.version -text "Version $::versionString, Released $::versionDate" label $w.author -text "Written by Don Libes <don@libes.com>" label $w.using -text "Using Expect [exp_version],\ Tcl $::tcl_patchLevel,\ Tk $::tk_patchLevel" grid $w.title grid $w.version grid $w.author grid $w.using grid $w.b -sticky ew } proc help {} { if {[winfo exists .help]} { wm deiconify .help raise .help return } toplevel .help wm title .help "multixterm help" wm iconname .help "multixterm help" scrollbar .help.sb -command {.help.text yview} text .help.text -width 74 -height 30 -yscroll {.help.sb set} -wrap word button .help.ok -text Dismiss -command {destroy .help} -relief raised bind .help <Return> {destroy .help;break} grid .help.sb -row 0 -column 0 -sticky ns grid .help.text -row 0 -column 1 -sticky nsew grid .help.ok -row 1 -columnspan 2 -sticky ew -ipadx 3 -ipady 3 # let text box only expand grid rowconfigure .help 0 -weight 1 grid columnconfigure .help 1 -weight 1 set script [auto_execok $::scriptName] if {[llength $script] == 0} { set script /depot/tcl/bin/multixterm ;# fallback } if {[catch {open $script} fid]} { .help.text insert end "Could not open help file: $script" } else { # skip to the beginning of the actual help (starts with "NAME") while {-1 != [gets $fid buf]} { if {1 == [regexp "NAME" $buf]} { .help.text insert end "\n NAME\n" break } } while {-1 != [gets $fid buf]} { if {0 == [regexp "^#(.?)(.*)" $buf X key buf]} break if {$key == "!"} { set buf [subst -nocommands $buf] set key " " } .help.text insert end $key$buf\n } } # support scrolling beyond Tk's built-in Next/Previous foreach w {"" .sb .text .ok} { set W .help$w bind $W <space> {scrollPage 1} ;#more bind $W <Delete> {scrollPage -1} ;#more bind $W <BackSpace> {scrollPage -1} ;#more bind $W <Control-v> {scrollPage 1} ;#emacs bind $W <Meta-v> {scrollPage -1} ;#emacs bind $W <Control-f> {scrollPage 1} ;#vi bind $W <Control-b> {scrollPage -1} ;#vi bind $W <F35> {scrollPage 1} ;#sun bind $W <F29> {scrollPage -1} ;#sun bind $W <Down> {scrollLine 1} bind $W <Up> {scrollLine -1} } } proc scrollPage {dir} { tkScrollByPages .help.sb v $dir return -code break } proc scrollLine {dir} { tkScrollByUnits .help.sb v $dir return -code break } ###################################################################### # exit handling ###################################################################### # xtermKillAll is not intended to be user-callable. It just kills # the processes and that's it. A user-callable version would update # the data structures, close the channels, etc. proc xtermKillAll {} { foreach sid [array names ::xtermPid] { exec /bin/kill -9 $::xtermPid($sid) } } rename exit _exit proc exit {{x 0}} {xtermKillAll;_exit $x} wm protocol . WM_DELETE_WINDOW exit trap exit SIGINT ###################################################################### # start any xterms requested ###################################################################### proc xtermStartAll {} { verbose "xtermNames = \"$::xtermNames\"" foreach n $::xtermNames { regsub -all "%n" $::xtermCmd $n cmdOut xtermStart $cmdOut $n } set ::xtermNames {} } initLate # now that xtermStartAll and its accompanying support has been set up # run it to start anything defined by rc file or command-line args. xtermStartAll ;# If nothing has been requested, this is a no-op. # finally do any explicit command file if {[info exists cmdFile]} { openFile $cmdFile }
Close