/l3/users/6-6-2017/NT-Ladm/debian2.net.nt/root :1 :2 :3 :4 :5 :6 |
|
#find -regextype posix-egrep ~ -regex '.*(\.tar\.gz|\.tgz|\.rpm)'
find: paths must precede expression: /root Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] |
#find ~ -regextype posix-egrep -regex '.*(\.tar\.gz|\.tgz|\.rpm)'
|
#find ~ -regextype posix-egrep -regex '.*(\.tar\.gz|\.tgz|\.rpm)'
|
#find ~ -regextype posix-egrep -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'
|
#find -regextype posix-egrep -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'
|
#find \ -regextype posix-egrep -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'
![]() find: ` -regextype': Нет такого файла или каталога find: `posix-egrep': Нет такого файла или каталога |
#find / -regextype posix-egrep -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'
/etc/alternatives/mt.1.gz /etc/alternatives/ex.pl.1.gz /etc/alternatives/aptitude.ja.8.gz /etc/alternatives/awk.1.gz /etc/alternatives/traceroute6.1.gz /etc/alternatives/aptitude.pl.8.gz /etc/alternatives/c99.1.gz /etc/alternatives/aptitude.gl.8.gz /etc/alternatives/unlzma.1.gz /etc/alternatives/rcp.1.gz ... /var/log/aptitude.1.gz /var/log/syslog.5.gz /home/user/234q213we.gz /home/user/werfgbz.rpm /home/user/23fsesegz.tgz /home/user/qwe.tar /home/user/23fsesr23regz.tgz /home/user/23fsesr252213regz.rpm /home/user/234q2qe13we.gz /home/user/234qwe.tar |
#>test.sh
|
#vi test.sh
--- /tmp/l3-saved-11399.10798.16728 2017-06-08 10:53:09.914189874 +0300 +++ test.sh 2017-06-08 10:54:33.458192419 +0300 @@ -0,0 +1,2 @@ +#!/bin/bash + |
#vi test.sh
--- /tmp/l3-saved-11399.13439.13039 2017-06-08 10:58:24.378194418 +0300 +++ test.sh 2017-06-08 11:10:04.422199442 +0300 @@ -1,2 +1,10 @@ #!/bin/bash +users=$(awk -F: /etc/passwd '$3>=1000 && S3!=65534{print $1}' | tr '\n' ' ') +for u in $users + do + acho "Changing shell $1 for user $u" + usermod -s $1 $u + done + + |
#vi test.sh
|
#~
|
#vi test.sh
|
#./test.sh /bin/sh
./test.sh: line 6: acho: команда не найдена usermod: изменения не внесены ./test.sh: line 6: acho: команда не найдена ./test.sh: line 6: acho: команда не найдена ./test.sh: line 6: acho: команда не найдена |
#vi test.sh
--- /tmp/l3-saved-11399.4484.772 2017-06-08 11:14:31.638184521 +0300 +++ test.sh 2017-06-08 11:14:40.206183667 +0300 @@ -4,7 +4,7 @@ for u in $users do acho "Changing shell $1 for user $u" - usermod -s $1 $u + usrmod -s $1 $u done |
#./test.sh /bin/sh
![]() ./test.sh: line 6: acho: команда не найдена ./test.sh: line 7: usrmod: команда не найдена ./test.sh: line 6: acho: команда не найдена ./test.sh: line 7: usrmod: команда не найдена ./test.sh: line 6: acho: команда не найдена ./test.sh: line 7: usrmod: команда не найдена ./test.sh: line 6: acho: команда не найдена ./test.sh: line 7: usrmod: команда не найдена |
#./test.sh /bin/sh
![]() ./test.sh: line 6: acho: команда не найдена ./test.sh: line 7: usrmod: команда не найдена ./test.sh: line 6: acho: команда не найдена ./test.sh: line 7: usrmod: команда не найдена ./test.sh: line 6: acho: команда не найдена ./test.sh: line 7: usrmod: команда не найдена ./test.sh: line 6: acho: команда не найдена ./test.sh: line 7: usrmod: команда не найдена |
#vi test.sh
--- /tmp/l3-saved-11399.1543.20250 2017-06-08 11:14:48.842190537 +0300 +++ test.sh 2017-06-08 11:15:04.534202227 +0300 @@ -3,7 +3,7 @@ users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do - acho "Changing shell $1 for user $u" + echo "Changing shell $1 for user $u" usrmod -s $1 $u done |
#./test.sh /bin/sh
![]() Changing shell /bin/sh for user nobody ./test.sh: line 7: usrmod: команда не найдена Changing shell /bin/sh for user user ./test.sh: line 7: usrmod: команда не найдена Changing shell /bin/sh for user ivan ./test.sh: line 7: usrmod: команда не найдена Changing shell /bin/sh for user petr ./test.sh: line 7: usrmod: команда не найдена |
#vi test.sh
--- /tmp/l3-saved-11399.18225.26061 2017-06-08 11:15:16.314189898 +0300 +++ test.sh 2017-06-08 11:15:29.030176633 +0300 @@ -4,7 +4,7 @@ for u in $users do echo "Changing shell $1 for user $u" - usrmod -s $1 $u + usermod -s $1 $u done |
#./test.sh /bin/sh
Changing shell /bin/sh for user nobody usermod: изменения не внесены Changing shell /bin/sh for user user usermod: изменения не внесены Changing shell /bin/sh for user ivan usermod: изменения не внесены Changing shell /bin/sh for user petr usermod: изменения не внесены |
#vi test.sh
--- /tmp/l3-saved-11399.3476.30279 2017-06-08 11:16:10.870180605 +0300 +++ test.sh 2017-06-08 11:16:24.958189445 +0300 @@ -4,7 +4,7 @@ for u in $users do echo "Changing shell $1 for user $u" - usermod -s $1 $u + usrmod -s $1 $u done |
#./test.sh /bin/sh
![]() Changing shell /bin/sh for user nobody ./test.sh: line 7: usrmod: команда не найдена Changing shell /bin/sh for user user ./test.sh: line 7: usrmod: команда не найдена Changing shell /bin/sh for user ivan ./test.sh: line 7: usrmod: команда не найдена Changing shell /bin/sh for user petr ./test.sh: line 7: usrmod: команда не найдена |
#cat test.sh
#!/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do echo "Changing shell $1 for user $u" usrmod -s $1 $u done |
#vi test.sh
--- /tmp/l3-saved-11399.27476.5023 2017-06-08 11:19:49.246214504 +0300 +++ test.sh 2017-06-08 11:20:28.974203573 +0300 @@ -4,7 +4,7 @@ for u in $users do echo "Changing shell $1 for user $u" - usrmod -s $1 $u + usermod -s $1 $u done |
#./test.sh /bin/sh
Changing shell /bin/sh for user nobody usermod: изменения не внесены Changing shell /bin/sh for user user usermod: изменения не внесены Changing shell /bin/sh for user ivan usermod: изменения не внесены Changing shell /bin/sh for user petr usermod: изменения не внесены |
#./test.sh /bin/bash
Changing shell /bin/bash for user nobody Changing shell /bin/bash for user user Changing shell /bin/bash for user ivan Changing shell /bin/bash for user petr |
#vi test.sh
--- /tmp/l3-saved-11399.13931.23000 2017-06-08 11:21:27.254160804 +0300 +++ test.sh 2017-06-08 11:24:40.702210153 +0300 @@ -1,6 +1,7 @@ #!/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') +s=${1:-/vin/bash} for u in $users do echo "Changing shell $1 for user $u" |
#vi test.sh
--- /tmp/l3-saved-11399.4757.11124 2017-06-08 11:24:46.014220941 +0300 +++ test.sh 2017-06-08 11:25:13.238198192 +0300 @@ -4,8 +4,8 @@ s=${1:-/vin/bash} for u in $users do - echo "Changing shell $1 for user $u" - usermod -s $1 $u + echo "Changing shell $s for user $u" + usermod -s $s $u done |
#./test.sh /bin/sh
Changing shell /bin/sh for user nobody Changing shell /bin/sh for user user Changing shell /bin/sh for user ivan Changing shell /bin/sh for user petr |
#vi test.sh
|
#./test.sh
Changing shell /vin/bash for user nobody Changing shell /vin/bash for user user Changing shell /vin/bash for user ivan Changing shell /vin/bash for user petr |
#vi test.sh
--- /tmp/l3-saved-11399.29422.26727 2017-06-08 11:26:27.926150672 +0300 +++ test.sh 2017-06-08 11:26:43.590190978 +0300 @@ -1,7 +1,7 @@ #!/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') -s=${1:-/vin/bash} +s=${1:-/bin/bash} for u in $users do echo "Changing shell $s for user $u" |
#./test.sh
Changing shell /bin/bash for user nobody Changing shell /bin/bash for user user Changing shell /bin/bash for user ivan Changing shell /bin/bash for user petr |
#./test.sh /bin
Changing shell /bin for user nobody Changing shell /bin for user user Changing shell /bin for user ivan Changing shell /bin for user petr |
#./test.sh
Changing shell /bin/bash for user nobody Changing shell /bin/bash for user user Changing shell /bin/bash for user ivan Changing shell /bin/bash for user petr |
#cat test.sh
#!/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') s=${1:-/bin/bash} for u in $users do echo "Changing shell $s for user $u" usermod -s $s $u done |
#vi test.sh
--- /tmp/l3-saved-11399.31577.16409 2017-06-08 11:29:49.342194587 +0300 +++ test.sh 2017-06-08 11:32:15.106197764 +0300 @@ -1,5 +1,5 @@ #!/bin/bash - +shells=${cat /etc/shells | sed \1d\ | tr '\n' ' '} users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') s=${1:-/bin/bash} for u in $users |
#vi test.sh
--- /tmp/l3-saved-11399.19333.15988 2017-06-08 11:32:19.470197392 +0300 +++ test.sh 2017-06-08 11:33:29.378190155 +0300 @@ -1,5 +1,5 @@ #!/bin/bash -shells=${cat /etc/shells | sed \1d\ | tr '\n' ' '} +shells=${cat /etc/shells | sed '/^#/d' | tr '\n' ' '} users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') s=${1:-/bin/bash} for u in $users |
#./test.sh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#./test.sh /bin
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution Changing shell /bin for user nobody Changing shell /bin for user user Changing shell /bin for user ivan Changing shell /bin for user petr |
#./test.sh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution Changing shell /bin/bash for user nobody Changing shell /bin/bash for user user Changing shell /bin/bash for user ivan Changing shell /bin/bash for user petr |
#vi test.sh
--- /tmp/l3-saved-11399.27074.28948 2017-06-08 11:34:04.638189884 +0300 +++ test.sh 2017-06-08 11:45:08.970190375 +0300 @@ -1,7 +1,11 @@ #!/bin/bash shells=${cat /etc/shells | sed '/^#/d' | tr '\n' ' '} -users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') s=${1:-/bin/bash} +for shell in $shells + do + test [ $1 = $shell ] || s=$1 + done +users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do echo "Changing shell $s for user $u" |
#vi test.sh
--- /tmp/l3-saved-11399.23187.31242 2017-06-08 11:45:11.226167222 +0300 +++ test.sh 2017-06-08 11:51:15.522189565 +0300 @@ -3,7 +3,7 @@ s=${1:-/bin/bash} for shell in $shells do - test [ $1 = $shell ] || s=$1 + test $1=$shell || s=$1 done users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users |
#vi test.sh
--- /tmp/l3-saved-11399.20889.18291 2017-06-08 12:08:07.230187801 +0300 +++ test.sh 2017-06-08 12:22:01.546191255 +0300 @@ -1,10 +1,10 @@ #!/bin/bash shells=${cat /etc/shells | sed '/^#/d' | tr '\n' ' '} -s=${1:-/bin/bash} for shell in $shells do - test $1=$shell || s=$1 + test $1 = $shell 2> /dev/null && s=$1 done +test -v s || s=${1:-/bin/bash} users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do |
#./test.sh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#vi test.sh
--- /tmp/l3-saved-11399.2658.12272 2017-06-08 12:22:17.678195026 +0300 +++ test.sh 2017-06-08 12:27:22.426187906 +0300 @@ -1,10 +1,12 @@ #!/bin/bash shells=${cat /etc/shells | sed '/^#/d' | tr '\n' ' '} +z= 'echo $1' for shell in $shells do test $1 = $shell 2> /dev/null && s=$1 done -test -v s || s=${1:-/bin/bash} +test -v z || s=/bin/bash +test -v s || s=/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do |
#./test.sh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution ./test.sh: line 3: echo $1: команда не найдена Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#./test.sh /bin/sh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution ./test.sh: line 3: echo $1: команда не найдена Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#./test.sh /bin/sh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution ./test.sh: line 3: echo $1: команда не найдена Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#vi test.sh
|
#./test.sh /bin/zsh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution ./test.sh: line 3: echo $1: команда не найдена Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#vi test.sh
--- /tmp/l3-saved-11399.32703.23083 2017-06-08 12:29:10.202159574 +0300 +++ test.sh 2017-06-08 12:29:23.618194739 +0300 @@ -1,6 +1,6 @@ #!/bin/bash shells=${cat /etc/shells | sed '/^#/d' | tr '\n' ' '} -z= 'echo $1' +z= `echo $1` for shell in $shells do test $1 = $shell 2> /dev/null && s=$1 |
#./test.sh /bin/zsh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution debian2# debian2# l3 l3script l3-agent l3-config l3script |
#ls
![]() |
#ls
|
#./test.sh /bin/sh
![]() ./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#./test.sh /bin/sh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#vi test.sh
![]() --- /tmp/l3-saved-13892.11877.8913 2017-06-08 12:30:45.694187770 +0300 +++ test.sh 2017-06-08 12:31:33.770189965 +0300 @@ -1,5 +1,5 @@ #!/bin/bash -shells=${cat /etc/shells | sed '/^#/d' | tr '\n' ' '} +shells=${cat /etc/shells | sed `/^#/d` | tr '\n' ' '} z='echo $1' for shell in $shells do |
#./test.sh /bin/sh
![]() ./test.sh: line 2: ${cat /etc/shells | sed `/^#/d` | tr '\n' ' '}: bad substitution Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#./test.sh /bin/sh
./test.sh: line 2: ${cat /etc/shells | sed `/^#/d` | tr '\n' ' '}: bad substitution Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#vi test.sh
![]() --- /tmp/l3-saved-13892.19699.1140 2017-06-08 12:31:40.734197622 +0300 +++ test.sh 2017-06-08 12:32:16.570186139 +0300 @@ -1,6 +1,6 @@ #!/bin/bash -shells=${cat /etc/shells | sed `/^#/d` | tr '\n' ' '} -z='echo $1' +shells=${cat /etc/shells | sed '/^#/d' | tr '\n' ' '} +z=`echo $1` for shell in $shells do test $1 = $shell 2> /dev/null && s=$1 |
#./test.sh /bin/sh
![]() ./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#./test.sh /bin/sh
./test.sh: line 2: ${cat /etc/shells | sed '/^#/d' | tr '\n' ' '}: bad substitution Changing shell /bin/bash for user nobody usermod: изменения не внесены Changing shell /bin/bash for user user usermod: изменения не внесены Changing shell /bin/bash for user ivan usermod: изменения не внесены Changing shell /bin/bash for user petr usermod: изменения не внесены |
#vi test.sh
![]() --- /tmp/l3-saved-13892.7188.1377 2017-06-08 12:32:36.482189897 +0300 +++ test.sh 2017-06-08 12:33:02.634193100 +0300 @@ -1,5 +1,5 @@ #!/bin/bash -shells=${cat /etc/shells | sed '/^#/d' | tr '\n' ' '} +shells=$(cat /etc/shells | sed '/^#/d' | tr '\n' ' ') z=`echo $1` for shell in $shells do |
#./test.sh /bin/sh
![]() Changing shell /bin/sh for user nobody Changing shell /bin/sh for user user Changing shell /bin/sh for user ivan Changing shell /bin/sh for user petr |
#./test.sh /bin/sh
Changing shell /bin/sh for user nobody Changing shell /bin/sh for user user Changing shell /bin/sh for user ivan Changing shell /bin/sh for user petr |
#cat test.sh
![]() #!/bin/bash shells=$(cat /etc/shells | sed '/^#/d' | tr '\n' ' ') z=`echo $1` for shell in $shells do test $1 = $shell 2> /dev/null && s=$1 done test -v z || s=/bin/bash test -v s || s=/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do echo "Changing shell $s for user $u" usermod -s $s $u done |
#cat test.sh
#!/bin/bash shells=$(cat /etc/shells | sed '/^#/d' | tr '\n' ' ') z=`echo $1` for shell in $shells do test $1 = $shell 2> /dev/null && s=$1 done test -v z || s=/bin/bash test -v s || s=/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do echo "Changing shell $s for user $u" usermod -s $s $u done |
#./test.sh /bin/sh
![]() Changing shell /bin/sh for user nobody usermod: изменения не внесены Changing shell /bin/sh for user user usermod: изменения не внесены Changing shell /bin/sh for user ivan usermod: изменения не внесены Changing shell /bin/sh for user petr usermod: изменения не внесены |
#./test.sh /bin/sh
Changing shell /bin/sh for user nobody usermod: изменения не внесены Changing shell /bin/sh for user user usermod: изменения не внесены Changing shell /bin/sh for user ivan usermod: изменения не внесены Changing shell /bin/sh for user petr usermod: изменения не внесены |
#cat test.sh
![]() #!/bin/bash shells=$(cat /etc/shells | sed '/^#/d' | tr '\n' ' ') z=`echo $1` for shell in $shells do test $1 = $shell 2> /dev/null && s=$1 done test -v z || s=/bin/bash test -v s || s=/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do echo "Changing shell $s for user $u" usermod -s $s $u done |
#cat test.sh
#!/bin/bash shells=$(cat /etc/shells | sed '/^#/d' | tr '\n' ' ') z=`echo $1` for shell in $shells do test $1 = $shell 2> /dev/null && s=$1 done test -v z || s=/bin/bash test -v s || s=/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do echo "Changing shell $s for user $u" usermod -s $s $u done |
#help test
![]() test: test [expr] Evaluate conditional expression. Exits with a status of 0 (true) or 1 (false) depending on the evaluation of EXPR. Expressions may be unary or binary. Unary expressions are often used to examine the status of a file. There are string operators and numeric comparison operators as well. The behavior of test depends on the number of arguments. Read the bash manual page for the complete specification. File operators: -a FILE True if file exists. ... arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne, -lt, -le, -gt, or -ge. Arithmetic binary operators return true if ARG1 is equal, not-equal, less-than, less-than-or-equal, greater-than, or greater-than-or-equal than ARG2. See the bash manual page bash(1) for the handling of parameters (i.e. missing parameters). Exit Status: Returns success if EXPR evaluates to true; fails if EXPR evaluates to false or an invalid argument is given. |
#help test
test: test [expr] Evaluate conditional expression. Exits with a status of 0 (true) or 1 (false) depending on the evaluation of EXPR. Expressions may be unary or binary. Unary expressions are often used to examine the status of a file. There are string operators and numeric comparison operators as well. The behavior of test depends on the number of arguments. Read the bash manual page for the complete specification. File operators: -a FILE True if file exists. ... arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne, -lt, -le, -gt, or -ge. Arithmetic binary operators return true if ARG1 is equal, not-equal, less-than, less-than-or-equal, greater-than, or greater-than-or-equal than ARG2. See the bash manual page bash(1) for the handling of parameters (i.e. missing parameters). Exit Status: Returns success if EXPR evaluates to true; fails if EXPR evaluates to false or an invalid argument is given. |
#./test.sh /bin/bash
Changing shell /bin/bash for user nobody Changing shell /bin/bash for user user Changing shell /bin/bash for user ivan Changing shell /bin/bash for user petr |
#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh ... list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/bash libuuid:x:100:101::/var/lib/libuuid:/bin/sh Debian-exim:x:101:103::/var/spool/exim4:/bin/false user:x:1000:1000:user,,,:/home/user:/bin/bash sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#apt-get install finger
Чтение списков пакетов… Готово Построение дерева зависимостей Чтение информации о состоянии… Готово НОВЫЕ пакеты, которые будут установлены: finger обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено. Необходимо скачать 20,5 kБ архивов. После данной операции, объём занятого дискового пространства возрастёт на 31,7 kB. Получено:1 http://ftp.ua.debian.org/debian/ wheezy/main finger amd64 0.17-15 [20,5 kB] Получено 20,5 kБ за 0с (542 kБ/c) Выбор ранее не выбранного пакета finger. (Чтение базы данных … на данный момент установлено 30012 файлов и каталогов.) Распаковывается пакет finger (из файла …/finger_0.17-15_amd64.deb) … Обрабатываются триггеры для man-db … Настраивается пакет finger (0.17-15) … |
#finger petr
Login: petr Name: Directory: /home/petr Shell: /bin/bash On since Fri Jun 9 10:00 (EEST) on pts/4 from 192.168.16.206 17 minutes 51 seconds idle No mail. No Plan. |
#lastname
![]() l3script: lastname: команда не найдена |
#last
user pts/2 192.168.16.206 Fri Jun 9 10:00 still logged in petr pts/4 192.168.16.206 Fri Jun 9 10:00 still logged in ivan pts/3 192.168.16.206 Fri Jun 9 09:59 still logged in user pts/2 192.168.16.206 Fri Jun 9 09:59 - 10:00 (00:00) root pts/0 192.168.16.206 Fri Jun 9 09:59 still logged in petr pts/5 192.168.16.206 Thu Jun 8 09:11 - 16:51 (07:39) ivan pts/4 192.168.16.206 Thu Jun 8 09:11 - 16:51 (07:39) user pts/2 192.168.16.206 Thu Jun 8 09:11 - 16:57 (07:46) root pts/0 192.168.16.206 Thu Jun 8 09:10 - 16:55 (07:44) user pts/4 192.168.16.206 Wed Jun 7 13:36 - 17:31 (03:54) ... petr pts/1 192.168.16.206 Tue Jun 6 17:35 - 17:42 (00:06) ivan pts/0 192.168.16.206 Tue Jun 6 17:34 - 17:37 (00:02) user pts/5 192.168.16.206 Tue Jun 6 16:31 - 17:34 (01:02) user pts/4 192.168.16.206 Tue Jun 6 12:07 - 16:39 (04:31) petr pts/3 192.168.16.206 Tue Jun 6 10:46 - 17:34 (06:47) ivan pts/3 192.168.16.206 Tue Jun 6 10:46 - 10:46 (00:00) ivan pts/2 192.168.16.206 Tue Jun 6 10:46 - 17:42 (06:55) ivan pts/2 192.168.16.206 Tue Jun 6 10:33 - 10:35 (00:01) root pts/0 192.168.16.206 Tue Jun 6 10:03 - 17:32 (07:29) wtmp begins Tue Jun 6 10:03:09 2017 |
#last sort
wtmp begins Tue Jun 6 10:03:09 2017 |
#last | sort
ivan pts/0 192.168.16.206 Tue Jun 6 17:34 - 17:37 (00:02) ivan pts/0 192.168.16.206 Tue Jun 6 17:37 - 17:42 (00:04) ivan pts/2 192.168.16.206 Tue Jun 6 10:33 - 10:35 (00:01) ivan pts/2 192.168.16.206 Tue Jun 6 10:46 - 17:42 (06:55) ivan pts/2 192.168.16.206 Wed Jun 7 09:56 - 17:30 (07:34) ivan pts/3 192.168.16.206 Fri Jun 9 09:59 still logged in ivan pts/3 192.168.16.206 Tue Jun 6 10:46 - 10:46 (00:00) ivan pts/4 192.168.16.206 Thu Jun 8 09:11 - 16:51 (07:39) petr pts/1 192.168.16.206 Tue Jun 6 17:35 - 17:42 (00:06) petr pts/3 192.168.16.206 Tue Jun 6 10:46 - 17:34 (06:47) ... root pts/0 192.168.16.206 Wed Jun 7 09:56 - 17:30 (07:34) root pts/3 192.168.16.206 Tue Jun 6 17:36 - 17:42 (00:05) user pts/2 192.168.16.206 Fri Jun 9 09:59 - 10:00 (00:00) user pts/2 192.168.16.206 Fri Jun 9 10:00 still logged in user pts/2 192.168.16.206 Thu Jun 8 09:11 - 16:57 (07:46) user pts/4 192.168.16.206 Tue Jun 6 12:07 - 16:39 (04:31) user pts/4 192.168.16.206 Wed Jun 7 10:00 - 13:35 (03:35) user pts/4 192.168.16.206 Wed Jun 7 13:36 - 17:31 (03:54) user pts/5 192.168.16.206 Tue Jun 6 16:31 - 17:34 (01:02) wtmp begins Tue Jun 6 10:03:09 2017 |
#last
user pts/2 192.168.16.206 Fri Jun 9 10:00 still logged in petr pts/4 192.168.16.206 Fri Jun 9 10:00 still logged in ivan pts/3 192.168.16.206 Fri Jun 9 09:59 still logged in user pts/2 192.168.16.206 Fri Jun 9 09:59 - 10:00 (00:00) root pts/0 192.168.16.206 Fri Jun 9 09:59 still logged in petr pts/5 192.168.16.206 Thu Jun 8 09:11 - 16:51 (07:39) ivan pts/4 192.168.16.206 Thu Jun 8 09:11 - 16:51 (07:39) user pts/2 192.168.16.206 Thu Jun 8 09:11 - 16:57 (07:46) root pts/0 192.168.16.206 Thu Jun 8 09:10 - 16:55 (07:44) user pts/4 192.168.16.206 Wed Jun 7 13:36 - 17:31 (03:54) ... petr pts/1 192.168.16.206 Tue Jun 6 17:35 - 17:42 (00:06) ivan pts/0 192.168.16.206 Tue Jun 6 17:34 - 17:37 (00:02) user pts/5 192.168.16.206 Tue Jun 6 16:31 - 17:34 (01:02) user pts/4 192.168.16.206 Tue Jun 6 12:07 - 16:39 (04:31) petr pts/3 192.168.16.206 Tue Jun 6 10:46 - 17:34 (06:47) ivan pts/3 192.168.16.206 Tue Jun 6 10:46 - 10:46 (00:00) ivan pts/2 192.168.16.206 Tue Jun 6 10:46 - 17:42 (06:55) ivan pts/2 192.168.16.206 Tue Jun 6 10:33 - 10:35 (00:01) root pts/0 192.168.16.206 Tue Jun 6 10:03 - 17:32 (07:29) wtmp begins Tue Jun 6 10:03:09 2017 |
#cat /etc/passwd |sort
backup:x:34:34:backup:/var/backups:/bin/sh bin:x:2:2:bin:/bin:/bin/sh daemon:x:1:1:daemon:/usr/sbin:/bin/sh Debian-exim:x:101:103::/var/spool/exim4:/bin/false games:x:5:60:games:/usr/games:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh ivan:x:1001:1001::/home/ivan:/bin/bash libuuid:x:100:101::/var/lib/libuuid:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh ... nobody:x:65534:65534:nobody:/nonexistent:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash proxy:x:13:13:proxy:/bin:/bin/sh root:x:0:0:root:/root:/bin/bash sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync sys:x:3:3:sys:/dev:/bin/sh user:x:1000:1000:user,,,:/home/user:/bin/bash uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh |
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/bash libuuid:x:100:101::/var/lib/libuuid:/bin/sh Debian-exim:x:101:103::/var/spool/exim4:/bin/false user:x:1000:1000:user,,,:/home/user:/bin/bash sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash
#!/bin/bash shells=$(cat /etc/shells | sed '/^#/d' | tr '\n' ' ') z=`echo $1` for shell in $shells do test $1 = $shell 2> /dev/null && s=$1 done test -v z || s=/bin/bash test -v s || s=/bin/bash users=$(awk -F: '$3>=1000 && S3!=65534{print $1}' /etc/passwd | tr '\n' ' ') for u in $users do echo "Changing shell $s for user $u" usermod -s $s $u done
Время первой команды журнала | 09:16:03 2017- 6- 8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 09:23:33 2017- 6- 9 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 101 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 0.99 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 4.95 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 2.66 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 0.63 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.
Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
$ l s-l bash: l: command not found |
Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
$ test 5 -lt 4 |
Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
$ find / -name abc find: /home/devi-orig/.gnome2: Keine Berechtigung find: /home/devi-orig/.gnome2_private: Keine Berechtigung find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung find: /home/devi-orig/.metacity: Keine Berechtigung find: /home/devi-orig/.inkscape: Keine Berechtigung ^C |
Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
# id uid=0(root) gid=0(root) Gruppen=0(root) |
Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
$ vi ~/.bashrc
|
Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
$ patch ~/.bashrc |
Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.
Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.
Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.
Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора
Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.
Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.
Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:
$ whoami
user
$ #^ Интересно, кто я?в журнале это будет выглядеть так:
$ whoami
user
Интересно, кто я? |
Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:
$ whoami
user
$ cat > /dev/null #^ Интересно, кто я?
Программа whoami выводит имя пользователя, под которым мы зарегистрировались в системе. - Она не может ответить на вопрос о нашем назначении в этом мире.В журнале это будет выглядеть так:
$ whoami user
|
Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=
1 2 3 4Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.
LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008