"Серия: Заметки"
~~~~~~~~~~~~~~~~
Вы начинающий пользователь Unix и это ваш первый-второй-третий... и тд сеанс.
Если у вас нет навыков общения с компьтером или большими вычислительными
системами или хуже того, ваш опыт обогащен общением с операционными системами
фирмы Microsoft с "худшей" стороны, как и в любой иной ситуации, мой первый
совет - сбор информации: книги по тематике, различные руководства как внутри
организации, так и доступные на публичных архивах Internet.
Как только нашли необходимое, вперед за клавиатуру и сразу осваивать на
практике...
Вы заняли исходную позицию перед монитором и готовы приступить:
все что вы видите на экране дисплея или графического терминала (X-terminal'а)
в самом начале сеанса, это различные формы приглашения для входа в систему:
Например:
приглашение в OS Linux
(linux4u) (ttyp6)
Debian GNU 1.3
linux4u login:
или
приглашение в OS FreeBSD
FreeBSD (unix1.jinr.dubna.su) (ttyp4)
login:
или
приглашение в OS Solaris (Sun Microsystems Unix)
UNIX(r) System V Release 4.0 (ultra)
login:
или
приглашение в OS HP-UX (Hewllet Packard Unix)
HP-UX dtserv.jinr.dubna.su B.10.20 A 9000/780 (ttyp2)
login:
или
ConvexOS, Release 10.1 (cv.jinr.dubna.su)
login:
или
Exemplar S Class () [SPP-UX Release 5.2]
login:
или
приглашение в OS AIX (IBM Unix)
AIX Version 4
(C) Copyrights by IBM and by others 1982, 1994.
login:
или
приглашение в OS OSF1 (бывший Digital Unix, ныне Compaq Tru64 Unix)
Digital UNIX (dbserv.jinr.dubna.su) (ttyp4)
login:
Все это разновидности "системного приглашения" для входа, те ввода имени
пользователя - loginname или username и затем пароля на приглашение:
Password:
Несколько отличается приглажение в CDE(Common Desktop Environment), якобы
удобная графическая среда пользователя, но и в ней не сложно понять что
система хочет сначала, получить от вас имя и затем пароль.
Итак, входим в OS Unix, например как пользователь "lavr":
FreeBSD (unix1.jinr.dubna.su) (ttyp4)
login: lavr
Password:
Last login: Sun Oct 3 19:20:55 1999 from :0.0
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 2.2.8-RELEASE (LAVRWORK) #0: Thu Feb 11 21:11:10 MSK 1999
Welcome to FreeBSD!
Handbook is in /usr/share/doc/handbook and the FAQ in /usr/share/doc/FAQ.
lynx /usr/share/doc/handbook & lynx /usr/share/doc/FAQ.
No new messages.
вс 3 окт 1999 19:47:45 MSD
unix1:/home/lavr>
^^^^- при достоверном пароле мы попадаем в командную строку
операционной системы Unix или в случае графической среды, которая называется
X-Windows, у нас запускаются несколько различных приложений или desktop -
"рабочий стол", это зависит от настроек.
Как и во всех системах защиты, вводимый нами пароль не отображается на дисплее
в целях сохранения безопасности.
Промежуточная информация которую мы видим при входе в Unix, обычно указывает
тип и версию OS Unix, в нашем примере:
FreeBSD 2.2.8-RELEASE (LAVRWORK) #0: Thu Feb 11 21:11:10 MSK 1999
права или торговую марку:
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
время и место(имя машины) откуда был произведен предыдущий заход под вашим
именем:
Last login: Sun Oct 3 19:20:55 1999 from :0.0
^^^^^^^^^- в данном случае с локальной
машины с использованием графической системы X-Windows.
возможны иные сообщения, подготовленные системным администратором:
Welcome to FreeBSD!
Handbook is in /usr/share/doc/handbook and the FAQ in /usr/share/doc/FAQ.
lynx /usr/share/doc/handbook & lynx /usr/share/doc/FAQ.
а также осуществляется ряд действий, первоначально заданных администратором,
по настройке вашей рабочей среди - environment, эти настройки вы можете
впоследствии изменить под свои цели и нужды, после приобретения навыков и
знаний.
Продолжим, итак, мы в командной строке:
unix1:/home/lavr>
Теперь нам доступно все что не запрещено. :)
с чего можно начать? - с команды, которая должна стать основной для пользователя
Unix, "man" - показать руководство по искомой команде, например:
unix1:/home/lavr> man man
MAN(1) FreeBSD General Commands Manual MAN(1)
NAME
man - format and display the on-line manual pages
SYNOPSIS
man [-adfhktw] [-m system] [-p string] [-M path] [-P pager] [-S list]
[section] name ...
это фрагмент руководства по самой команде "man" OS Unix FreeBSD.
начало положено, вероятно встает вопрос что за командная строка, комадная
строка чего?
При регистрации - заведении нового пользователя, ему назначается домашняя
директория - место для хранения файлов, почты, программ и другой личной
информации пользователя и назначается командный интерпретатор - SHELL, это
программа связывающая пользователя с системой.
SHELL - обрабатывает-разбирает запросы от пользователя к системе или
отрабатывает свои собственны команды по запросу пользователя. В Unix имеется
достаточно богатый набор интерпретаторов комадной строки на настоящий момент.
В последнее время большой популярностью пользуются bash, tcsh, но это не
означает что они самые лучшие или единственные, огромными возможностями
обладают такие shell как, ksh - KornShell или Z-Shell и др.
Основополагающим и самым древним интерпретатором является sh - Bourne-shell,
которой идет в поставке любой OS Unix, так же как и еще один старинный
интерпретатор csh - C-Shell, с якобы схожим синтаксисом языка "Cи".
У нас не стоит задача сравнения или обсуждения тех или иных возможностей
интерпретаторов, но коротко, стоит отметить что большинство системных scripts
- скриптов (процедур с элементами программирования) пишется на sh, csh - плохо
подходит для этих целей, равно как и его расширенный собрат - tcsh, хорошим
средством с большими возможностями, является bash, который включает в себя
возможности sh - Bourne-Shell.
И bash, и tcsh предоставляют достаточный набор удобств для облегчения жизни
пользователя в командной строке, работа в которой с незапамятных времен, была
основополагающей в Unix.
Дабы никого не обидеть, необходимо упомянуть EMACS - это целая среда для
облегчения жизни пользователю, разработчику. В прошлом, пользователь заходя
в Unix подразумевал emacs, заканчивая сеанс - emacs, забывая про Unix. :-)
Если вы не заказали себе SHELL при регистрации в системе, то самое время
посмотреть что мы имеем в качестве интерпретатора:
unix1:/home/lavr> echo $SHELL
/usr/local/bin/tcsh
unix1:/home/lavr>
сие означает что наш интерпретатор - tcsh, попутно разберем введенную команду,
echo - команда системы или встроенная команда интерпретатора, выдает сообщения
на стандартный вывод(терминал) заданные ей в качестве параметров или показывает
значение переменных среды - environment. В нашем случае $SHELL означает
переменную, о чем указывает наличие символа "$" перед заданным параметром.
Echo - оно же "эхо" и есть, пример:
unix1:/home/lavr> echo "Просто Эхо"
Просто Эхо
unix1:/home/lavr>
в данном примере ясно видно что echo полностью отвечает своему названию, а
двойные кавычки использовались нами для указания одного параметра - нужной нам
строки символов. Более подробно об "echo" - 'man echo'.
Чтобы увлечь пользователя, хотя бы самую малость, или как-то "подогреть" его
интерес к Unix, рассмотрим еще несколько полезных команд и настроек:
командная строка, например: unix1:/home/lavr>
^^^^^^^^^^^^^^^^^- интерпретаторы позволяют
пользователю использовать свои собственные настройки PROMPT - "приглашения"
командной строки, отличные от системных.
Мы будем рассматривать только интерпретаторы tcsh и bash, перед тем как
привести некоторые примеры, сразу хочу пояснить пожалуйста не путайте
переменные среды - ENVIRONMENT, с переменными интерпретатора - SHELL.
Продолжим, прежде чем менять будь то переменные среды ENVIRONMENT, будь то
переменные SHELL, желательно посмотреть их значения и выяснить для чего
они установлены.
Переменные среды - ENVIRONMENT, можно посмотреть с помощью стандартной
команды "env", например:
unix1:/home/lavr> env
PORTSDIR=/m/FBSD/FreeBSD-current/ports
USER=lavr
MACHTYPE=i386
MAIL=/var/mail/lavr
SSH_AGENT_PID=4632
VENDOR=intel
SHLVL=1
HOME=/home/lavr
LESS=-ceM
XNLSPATH=/usr/X11R6/lib/X11/nls
XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
PERLLIB=/usr/share/perl
PAGER=less
VISUAL=/usr/bin/vi
GROUP=dug
TMPDIR=/tmp
LOGNAME=lavr
TERM=xterm
BLOCKSIZE=K
DISTDIR=/m/FBSD/distfiles
LESSCHARSET=koi8-r
PATH=/home/lavr/bin:/usr/local/bin:/usr/local/sbin:/usr/local/audio:/bin:/usr/bi
n:/usr/X11R6/bin:/sbin:/usr/sbin
PACKAGES=/m/FBSD/packages-current
DISPLAY=:0.0
LANG=ru_SU.KOI8-R
LESSBINFMT=*u[%x]
WRKDIR=/usr/pkg/tmp
SSH_AUTH_SOCK=/tmp/ssh-lavr/agent-socket-4631
SHELL=/usr/local/bin/tcsh
HOST=unix1.jinr.dubna.su
OSTYPE=FreeBSD
PWD=/home/lavr
LC_ALL=ru_SU.KOI8-R
TERMCAP=/etc/termcap
TZ=:/etc/localtime
MANPATH=/usr/local/man:/usr/share/man:/usr/X11R6/man
HOSTTYPE=FreeBSD
EDITOR=/usr/bin/vi
WINDOWID=20971534
команду "env" можно использовать независимо от вашего SHELL-интерпретатора.
Для более полной информации - 'man env'.
Закрепим пройденный материал на примере интерпретатора tcsh:
1. Результат первого примера, переменные среды - ENVIRONMENT, которые мы
получили используя команду системы "env", смотрите выше.
2. В tcsh имеется встроенная команда "printenv" которая предоставляет
сервис, аналогичный системной команде "env", например:
unix1:/home/lavr> printenv
PORTSDIR=/m/FBSD/FreeBSD-current/ports
USER=lavr
MACHTYPE=i386
MAIL=/var/mail/lavr
SSH_AGENT_PID=4632
VENDOR=intel
SHLVL=1
HOME=/home/lavr
LESS=-ceM
XNLSPATH=/usr/X11R6/lib/X11/nls
XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
PERLLIB=/usr/share/perl
PAGER=less
VISUAL=/usr/bin/vi
GROUP=dug
TMPDIR=/tmp
LOGNAME=lavr
TERM=xterm
BLOCKSIZE=K
DISTDIR=/m/FBSD/distfiles
LESSCHARSET=koi8-r
PATH=/home/lavr/bin:/usr/local/bin:/usr/local/sbin:/usr/local/audio:/bin:/usr/bi
n:/usr/X11R6/bin:/sbin:/usr/sbin
PACKAGES=/m/FBSD/packages-current
DISPLAY=:0.0
LANG=ru_SU.KOI8-R
LESSBINFMT=*u[%x]
WRKDIR=/usr/pkg/tmp
SSH_AUTH_SOCK=/tmp/ssh-lavr/agent-socket-4631
SHELL=/usr/local/bin/tcsh
HOST=unix1.jinr.dubna.su
OSTYPE=FreeBSD
PWD=/home/lavr
LC_ALL=ru_SU.KOI8-R
TERMCAP=/etc/termcap
TZ=:/etc/localtime
MANPATH=/usr/local/man:/usr/share/man:/usr/X11R6/man
HOSTTYPE=FreeBSD
EDITOR=/usr/bin/vi
WINDOWID=20971534
результат должен быть одинаков: printenv==env
Теперь посмотрим какие у нас установленны переменные самого интерпретатора
tcsh, для этого воспользуемся его встроенной командой "set", или другой
встроенной командой "@", например:
unix1:/home/lavr> set
addsuffix
argv ()
cdpath (/sys /usr/src/bin /usr/src/sbin /usr/src/usr.bin /usr/src/usr.sbin /usr/src/lib /usr/src/libexec /usr/src/share /usr/src/contrib /usr/src/etc /usr/src/games /usr/src/gnu /usr/src/include /usr/src/)
cpu unix1
cwd /home/lavr
dirstack /home/lavr
echo_style bsd
edit
gid 100
group dug
history 500
home /home/lavr
loginsh
noclobber
nonomatch
owd /tmp
path (/home/lavr/bin /usr/local/bin /usr/local/sbin /usr/local/audio /bin /usr/bin /usr/X11R6/bin /sbin /usr/sbin)
prompt unix1:/home/lavr>
prompt2 %R?
prompt3 CORRECT>%R (y|n|e|a)?
savehist 500
shell /usr/local/bin/tcsh
shlvl 1
status 0
tcsh 6.08.00
term xterm
tt xterm
tty ttyp1
uid 310
user lavr
version tcsh 6.08.00 (Astron) 1998-10-02 (i386-intel-FreeBSD) options 8b,nls,dl,al,sm,rh,color
unix1:/home/lavr>
Теперь рассмотрим то же, но применительно к интерпретатору bash, настройки
среды - ENVIRONMENT, результат работы команды "env" :
[linux4u]~ > env
REMOTEUSER=lavr
INFOPATH=/home/lavr/info:/usr/local/info:/usr/info:/usr/X11R6/info
HISTSIZE=500
HOSTNAME=linux4u
LOGNAME=lavr
HISTFILESIZE=500
VISUAL=vi
TERMINFO=/usr/lib/terminfo
MAIL=/var/spool/mail/lavr
MACHTYPE=i586-debian-linux
PAGER=less
WWW_HOME=http://www.jinr.dubna.su
CDPATH=.:/home/lavr
CERN_ROOT=/cern/pro
TERMCAP=/etc/termcap
TERM=xterm
HOSTTYPE=i586
PATH=/home/lavr/bin:/home/lavr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
/cern/pro/bin:/cern/adamo/3.3/bin:/usr/local/sbin:/usr/sbin:/sbin
CERN_LIB=/cern/pro/lib
HOME=/home/lavr
XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
LESSKEY=/etc/lesskey.bin
SHELL=/bin/bash
ADAMO_LIB=/cern/adamo/3.3/lib
PS1=[\h]\w >\040
USER=lavr
TMPDIR=/tmp
_23500_GNU_nonoption_argv_flags_=000000000
MANPATH=/home/lavr/man:/usr/local/man:/usr/man:/usr/X11R6/man:/cern/pro/man:/cer
n/adamo/3.3/man
SSH_AUTH_SOCK=/tmp/ssh-lavr/agent-socket-23498
LESS=-ceMX
BLOCKSIZE=K
LESSCHARSET=koi8-r
LESSBINFMT=*u[%x]
DISPLAY=linux4u:12.0
LANG=ru_SU.KOI8-R
HOST=linux4u
SSH_CLIENT=159.93.17.121 753 22
HISTFILE=/home/lavr/.bash_history.linux4u
OSTYPE=linux
MM_CHARSET=ru_SU.KOI8-R
ADAMO_ROOT=/cern/adamo/3.3
WINDOWID=54525968
NNTPSERVER=news.jinr.dubna.su
PWD=/home/lavr
XNLSPATH=/usr/X11R6/lib/X11/nls
HISTCONTROL=ignoreboth
SHLVL=2
no_exit_on_failed_exec=1
EDITOR=vi
_=/usr/bin/env
_8576_GNU_nonoption_argv_flags_=0
переменные самого интерпретатора bash, можно посмотреть с помощью встроенной
команды самого bash - "set", например:
[linux4u]~ > set
MAILCHECK=60
REMOTEUSER=lavr
INFOPATH=/home/lavr/info:/usr/local/info:/usr/info:/usr/X11R6/info
HISTSIZE=500
UID=310
HOSTNAME=linux4u
LOGNAME=lavr
BASH_VERSINFO=([0]="2" [1]="00" [2]="0" [3]="1" [4]="release" [5]="i586-debian-l
inux")
OPTIND=1
HISTFILESIZE=500
PPID=23500
VISUAL=vi
TERMINFO=/usr/lib/terminfo
MAIL=/var/spool/mail/lavr
MACHTYPE=i586-debian-linux
DIRSTACK=()
PAGER=less
WWW_HOME=http://www.jinr.dubna.su
CDPATH=.:/home/lavr
CERN_ROOT=/cern/pro
IFS='
'
TERMCAP=/etc/termcap
TERM=xterm
EUID=310
HOSTTYPE=i586
PATH=/home/lavr/bin:/home/lavr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:
/cern/pro/bin:/cern/adamo/3.3/bin:/usr/local/sbin:/usr/sbin:/sbin
CERN_LIB=/cern/pro/lib
OLDPWD=/home/ftp
HOME=/home/lavr
XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
LESSKEY=/etc/lesskey.bin
SHELL=/bin/bash
ADAMO_LIB=/cern/adamo/3.3/lib
LINES=40
PS1='[\h]\w >\040'
PS2='> '
PS4='+ '
USER=lavr
TMPDIR=/tmp
_23500_GNU_nonoption_argv_flags_=000000000
MANPATH=/home/lavr/man:/usr/local/man:/usr/man:/usr/X11R6/man:/cern/pro/man:/cer
n/adamo/3.3/man
SSH_AUTH_SOCK=/tmp/ssh-lavr/agent-socket-23498
LESS=-ceMX
BLOCKSIZE=K
LESSCHARSET=koi8-r
LESSBINFMT='*u[%x]'
COLUMNS=80
SHELLOPTS=braceexpand:hashall:histexpand:monitor:history:interactive-comments:em
acs
DISPLAY=linux4u:12.0
PIPESTATUS=([0]="0")
RANDOM=28471
LANG=ru_SU.KOI8-R
HOST=linux4u
SSH_CLIENT='159.93.17.121 753 22'
HISTFILE=/home/lavr/.bash_history.linux4u
OSTYPE=linux
MM_CHARSET=ru_SU.KOI8-R
ADAMO_ROOT=/cern/adamo/3.3
WINDOWID=54525968
NNTPSERVER=news.jinr.dubna.su
OPTERR=1
PWD=/home/lavr
XNLSPATH=/usr/X11R6/lib/X11/nls
_=clear
HISTCONTROL=ignoreboth
SHLVL=2
BASH_VERSION='2.00.0(1)-release'
no_exit_on_failed_exec=1
BASH=/bin/bash
EDITOR=vi
mc=()
{
MC=/tmp/mc$$-"$RANDOM";
/usr/bin/mc -U -P "$@" >"$MC";
cd `cat "$MC"`;
/bin/rm "$MC";
unset MC
}
emacs=()
{
if [ -z "$DISPLAY" ]; then
/usr/bin/emacs "$@";
else
/usr/bin/emacs "$@" &
fi
}
pp=()
{
ps auxwww | egrep "(PID|${*:-.*})"
}
ff=()
{
if [ $# -eq 0 ]; then
echo "Usage: ff pattern";
else
find . \( -name \*$*\* -o -name $*\* -o -name \*$* \) -print;
fi
}
setenv=()
{
if [ $# -eq 0 ]; then
set;
else
export $1="$2";
fi
}
unsetenv=()
{
export -n $*;
unset $*
}
пусть вас не смущает количество переменных и функции, как было сказано выше
интерпретатор bash - это очень мощное средство, с огромнымы возможностями.
Сделайте свой выбор и постарайтесь освоить хотя бы малую часть возможностей
интерпретатора, поверьте, это очень пригодится.
Самое время хотя бы мельком прочитать руководство:
unix1:/home/lavr> man tcsh
или
unix1:/home/lavr> man bash
и вероятно не помешает,
unix1:/home/lavr> man environ
Вернемся к некоторым важным переменным среды и интерпретатора, приглашение
командной строки - PROMPT, вид командной строки можно установить через
переменные интерпретаторов "prompt" для tcsh и "PS1" для bash, например:
в случае tcsh:
unix1:/home/lavr> set prompt="%m:%/[%T]%#"
и в результате, меняяем вид на:
unix1:/home/lavr[16:04]>
последовательности символов %m,%/,%T и %# - это только малый набор готовых
директив характерных только для задания "prompt" конкретно в tcsh, для
обзора возможных смотрите 'man tcsh'.
в случае bash:
[linux4u]~ > PS1="\h\w[\@] >"
linux4u~[05:28pm] >
сответственно последовательность \h,\w,\@ - характерна для bash, для полного
обзора смотрите 'man bash'.
Если по какой-то причине, у вас не работают команды операционной системы,
например "env" или другие, возможно что неудачно установлена переменная
PATH среды или переменные path для tcsh и PATH для bash.
PATH - путь, он есть путь, последовательность директорий которые система
будет просматривать на предмет запуска той или иной программы-команды.
Пример задания переменной PATH:
в tcsh,
unix1:/home/lavr[17:45]>setenv PATH ${HOME}:/usr/local/bin:/usr/local/sbin:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin
это пример задания переменной среды PATH, используя команду для установки
переменный среды в tcsh - setenv.
unix1:/home/lavr[17:51]>set path=( ~/bin /usr/local/bin /usr/local/sbin /bin /usr/bin /usr/X11R6/bin /sbin /usr/sbin )
это пример задания переменой path интерпретатора tcsh, однако некоторые
свои переменные tcsh синхронизирует с переменными среды, path одна из таких
переменных.
в bash,
linux4u~[05:28pm] >PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/sbin:/sbin
пример задания переменной PATH в bash, для того чтобы экспортировать ее
в среду, достаточно выполнить:
linux4u~[05:54pm] >export PATH
либо сразу выполнить 'export PATH=параметры'.
Не используйте мое ЗНАЧЕНИЕ переменной пути - PATH из примера, оно зависимо
от системы, ниже я постараюсь отразить общую структуру дерева Unix.
В общем случае, установить переменные среды можно так:
tcsh, 'setenv ИМЯ значение'
bash, 'export ИМЯ=значение'
посмотреть, echo $ИМЯ (напоминаю, символ "$" указывает что нужно показать
ЗНАЧЕНИЕ переменной, иначе просто получим результат "эха")
переменные интерпретаторов:
tcsh, 'set имя=значение'
bash, 'ИМЯ=значение'
Некоторые полезные переменные среды: HOME,USER,LOGNAME,MAIL,EDITOR,PAGER,LANG
TERM,TERMCAP.
Переменная среды PATH нам уже знакома, переменная HOME указывает на домашнюю
директорию пользователя, как нетрудно догадаться.
рассмотрим некоторые переменные на примерах:
unix1:/home/lavr[18:39]>echo $HOME
/home/lavr
unix1:/home/lavr[18:41]>
unix1:/home/lavr[18:41]>echo $USER
lavr
unix1:/home/lavr[18:42]>echo $LOGNAME
lavr
unix1:/home/lavr[18:42]>
в данный момент переменные среды USER и LOGNAME совпадают и соответствуют
имени - login, вошедшего в сеанс пользователя.
unix1:/home/lavr[18:42]>echo $MAIL
/var/mail/lavr
unix1:/home/lavr[18:44]>
переменная MAIL указывает полный путь к вашему почтовому ящику в системе,
о работе с почтой будет описано в другой _заметке_.
переменная среды EDITOR, указывает на то какой редактор будет использоваться
по умолчанию при вызове редактора из других программ.
unix1:/home/lavr[18:44]>echo $EDITOR
/usr/bin/vi
unix1:/home/lavr[18:48]>
Сразу хочу заметить, в стандартной конфигурации разных Unix, основные редакторы
, которые приходят с системой это:
ed - строчный текстовый редактор "Эд";
vi,view,ex - что суть, одно и тоже, полноэкранный текстовый редактор "Ви-ай".
Базовый набор команд редактора "Vi" полностью включает команды строчного
редактора "ed", который очень удобно использовать для мелких и быстрых
правок текста.
Предупреждаю, не торопитесь запускать любой из этих редакторов если ранее
вы не сталкивались с редакторами у которых имеется режим "командной строки"
и режим "редактирование".
Для освоения этих редакторов советую использовать две открытые сессии
терминалов(виртуальные консоли или xterm, или два физических терминала - это
зависит от ваших возможностей), в одном сеансе - 'man vi[ed]', а в другом -
'vi [test]' или 'ed [test]'.
Если у вас все-таки возникли проблемы с выходом из редакторов, то:
- в случае ed, необходимо выйти в командный режим используя сочетание клавиш
CTRL-C (те послать сигнал INTR-прервать, ASCII DEL или BREAK), и получить
в строке первым символом - "?", что означает переход в "командный режим"
и затем выдать комадну "Q" - выйти из редактора.
- в случае vi, в комадный режим можно выйти через нажатие "escape" или CTRL-C,
переход в командный режим обычно сопровождается звуковым сигналом и затем
задать команду ":q" или ":q!".
Не трудно заметить, что самое замечательное свойство редакторов ed/vi, это то
что они есть во всех Unix, других качеств, как положительных, так и
отрицательных(?), тоже достаточно, но об этом отдельно в других заметках или
разделах FAQ'ов.
Несколько наиболее распространненых в Unix редакторов:
- joe, jove, emacs(это целая среда), vile,vim,nvi (разнообразие vi-подобных)
- xemacs, nedit - редакторы ориентированные для работы в графическом режиме
X-Windows.
переменная PAGER указывает какая программа будет вызываться для просмотра
файлов в текстовом формате, например команда "man" в разных OS Unix, зачастую
проверяет эту переменную для использования в дальнейшем заданной там программы
просмотра.
Например:
unix1:/home/lavr> echo $PAGER
less
unix1:/home/lavr>
или
1.lavr@sunhe:/home/sunhe/lavr>echo $PAGER
more
2.lavr@sunhe:/home/sunhe/lavr>
Где, less и more - самые распространенные и продвинутые утилиты для просмотра
текстовых файлов.
Переменные среды TERM и TERMCAP указывают тип используемого терминала и базу
данных с описаниями различных терминалов соответственно. Возможно, в следующих
заметках суть этих терминов и их использование будет объяснено подробнее,
сейчас же упомяну что все экранно-ориентированные программы используют одну
из двух баз, старую - termcap или более современную, продвинутую - terminfo для
операций с курсором, цветом, функциональными клавишами и тд и тп, тс операций
ввода-вывода, в зависимости от типа терминала определенного в переменной TERM.
Назначение этих переменных зависит от типа терминала(hardware), косвенно от
OS Unix, режима терминала - текстовая консоль (виртуальная - богатая возможность
использования переключения страниц видео-памяти в Intel-based Unix) или
графический режим X-Windows.
В широко известных Intel-based OS Unix: Linux, FreeBSD, Solaris-x86, SCO,
Xenix, переменная TERM часто имеет следующие значения(в случае текстовой
консоли):
Linux : TERM=linux
FreeBSD : TERM=cons25 или pc3[x] (cons25r и pc3r с koi8-support)
Solaris : TERM=at386
SCO/Xenix: TERM=[не помню] (подойдет at386 или измененный на его основе)
SUN/HP/OSF: TERM=sun/hp/sx
и разнообразные модификации на базе указанных значений TERM, смотрите
файл /etc/termcap, например 'more /etc/termcap'.
В случае использования X-Windows, переменная TERM чаще всего имеет значения
взависимости от используемой программы a-la "xterm":
xterm,color-xterm,kxterm и тд и тп.
Если вы используете эмуляторы терминала в различных программах дозвонки(bbs)
или эмуляторов терминала в пакетах для работы с Unix из Windows9x/NT, не
забудьте привести в соответствие или выбрать наиболее подходящий для вас
режим эмуляции удаленного терминала, например в bbs'ках:
kermit,telix,telemate и многих других: ansi/vt52/100/200/220/...
тот же принцип и в пакетах "эмуляторы удаленного терминала" для Windows9x/NT.
(Разнообразные NetTERM/TerraTERM и тд)
Проверить, настроить или видоизменить "эмуляторы терминалов" можно после
входа в систему, изменив переменные TERM/TERMCAP/TERMINFO, например:
unix1:/home/lavr> echo $TERM
xterm
unix1:/home/lavr> echo $TERMCAP
/etc/termcap
unix1:/home/lavr>
что говорит об использовании грфической среды X-Windows, для нее эмулятора
терминала - xterm (TERM=xterm) и базы описания терминалов, файл /etc/termcap,
который определен через переменную TERMCAP.
Как упоминалось выше, в качестве базы описания терминалов можно использовать
как TERMCAP, так и TERMINFO, в моих примерах я опираюсь на базу TERMCAP, в
силу старой привычки.
Нужно отемтить, использование баз TERMCAP/TERMINFO, часто зависит от того
как ваш администратор собирает те или иные экранно-ориентированные программы.
примеры текстовых консолей,
FreeBSD:
unix1:/home/lavr> echo $TERM
pc3r
unix1:/home/lavr> echo $TERMCAP
/etc/termcap
unix1:/home/lavr>
Linux:
[linux4u]~ > echo $TERM
linux
[linux4u]~ > echo $TERMCAP
/etc/termcap
[linux4u]~ >
Sun(Sparc):
ultra:/home/lavr> echo $TERM
sun
ultra:/home/lavr> echo $TERMCAP
/etc/termcap
ultra:/home/lavr>
В программах удаленного доступа, например через модем - режим online, в
старых-добрых telix/telemate, я использую эмуляцию терминалов vt52/ansi,
тогда при входе на Unix машину имеет смысл проверить и при необходимости
переопределить переменные TERM/TERMCAP.
Например в telix, я выбираю эмуляцию vt52, а при входе через модем на
машину с OS Unix, устанавливаю переменную TERM=vt100, в случае telemate
- выбираю эмуляцию ansi-терминала и затем в Unix использую TERM=ansi или
pcansi (и разнообразные модификации ansi или pcansi).
Кстати, можно сделать разбор и установку переменной TERM при входе -
те отработке "login", а в случае неизвестного терминала попросить задать
переменную TERM интерактивно, как это сделать - личное дело администратора
или пользователя, а вот где - ниже, мы коротко разберем процедуру входа
в систему для пользователей с интерпретаторами bash/tcsh[sh/csh].
Последняя, упомянутая нами переменная среды - LANG. Эта переменная имеет
отношение к локализации операционной системы, в нашем случае, руссификации -
кириллизации.
Спора о выборе кодировки(866-ALT,1251-Windows,ISO-8859-5,KOI8-R) не будет,
гласный или негласный, зарегистрированный или нет, для русскоязычной части
сети Интернет стандартом принято считать KOI8-R(точка). И в этом отношении
правильную политику ведет сеть FIDO. В любом случае, имеется много
руководств или FAQ-ЧАВО, написанных еще во времена Релкомовской _монархии_ :-),
о сетевом этикете, терминах, ресурсах И КОДИРОВКЕ.
На настоящий момент, наиболее удачно локализованная OS Unix - FreeBSD и
вероятно Net[Open]BSD, Linux - те открытые системы. Что-то в этом плане
сделал Sun в Solaris2.7, я не видел и не пробовал и утверждать не берусь.
Во всем что касается локализации, как здесь, так и в дальнейшем будет
подразумеваться кодировка KOI8-R.
Возможно у нас будет раздел о локализации, пока же будем считать что
система "как-то" локализована или по-крайней мере, имеет необходимые
загруженные фонты и "клавиатурный переключатель" между разными раскладками
клавиатуры(кодовыми таблицами).
В этом документе мы попробуем дать лишь несколько советов как можно попытаться
использовать 8-ой бит для чтения и написания кириллицы.
Не хотелось бы "пудрить мозги начинающим", но следует уточнить такие моменты:
- в качестве рабочего места машина с OS Unix или X-Terminal, в этом случае
ваш администратор должен позаботиться о локализации, а при использовании
графической среды X-Windows вы можете загружать необходимые фонты и
и "клавиатурный переключатель" самостоятельно;
- в качестве рабочего места машина с MS-DOS или Windows9x/NT, в этом случае
у вас наверняка кодировки 866 и 1251 соответственно, тогда при использовании
программ "удаленного доступа" вам следует позаботиться о переключении в
MS-DOS/Windows в KOI8-R или использовать в качестве фонтов в программах
"удаленного доступа" - фонты KOI8-R и переопредилить раскладку клавиатуры
(если позволяют программы удаленного доступа)
Рассмотрим несколько примеров,
Допустим что локально мы можем смотреть и/или переключаться в KOI8-R.
1. Проверка характиристик устройства стандартного вывода.
- сначала проверим характеристики устройства стандартного вывода, по-русски
установленный размер отображения символа 5,6,7 или 8 bit и чтобы не
происходило обрезание последнего (8bit) в процессе ввода, воспользуемся
командой "stty" (man stty), например:
unix1:/home/lavr> stty -a
speed 9600 baud; 40 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
-extproc
iflags: istrip icrnl -inlcr -igncr ixon -ixoff -ixany imaxbel -ignbrk
brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs
cflags: cread cs7 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
-dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ;
eol2 = ; erase = ^H; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;
unix1:/home/lavr>
ищите две компоненты в управляющих флагах(cflags) и входных(iflags):
наличие cflags - наличие режима "cs8"(размер символа 8bit) и в iflags -
"-istrip"(запретить обрезание входных символов до 7bit).
В верхнем примере видим что установлены режимы cs7 и istrip, в то время
как нам нужно cs8 и -istrip, посмотрите каков будет результат при переключении
в KOI8-R:
unix1:/home/lavr> MAMA MYLA RAMU
попробуем исправить, установив нужные нам режимы:
unix1:/home/lavr> stty cs8 -istrip
и снова наберем ту же фразу:
unix1:/home/lavr> мама мыла раму
Возможны варианты команды stty с параметрами, попробуйте следующие и если
помогло, установите что именно:
unix1:/home/lavr> stty pass8
работает в разных версия BSD, Linux, OSF1, не работает в Solaris/HP-UX/AIX.
или
unix1:/home/lavr> stty -parity -evenp -oddp cs8 -istrip
или
unix1:/home/lavr> stty -parenb -istrip cs8
2. Проверка интерпретаторов на предмет работы с 8-ым битом.
- возможно ваш SHELL не пропускает 8-ой bit(и это по-большому счету
несущественно, ибо главное чтобы можно было использовать кириллицу
в редакторах и программах просмотра текста - less/more), можно указать
на это системному администратору и попросить разобраться.
Как проверить с какими возможностями скомпилированы tcsh/bash,
tcsh:
unix1:/home/lavr> set
или
unix1:/home/lavr> @
unix1:/home/lavr> set
addsuffix
argv ()
cdpath (/sys /usr/src/bin /usr/src/sbin /usr/src/usr.bin /usr/src/usr.sbin /usr/src/lib /usr/src/libexec /usr/src/share /usr/src/contrib /usr/src/etc /usr/src/games /usr/src/gnu /usr/src/include /usr/src/)
cpu unix1
cwd /home/lavr
...
version tcsh 6.08.00 (Astron) 1998-10-02 (i386-intel-FreeBSD) options 8b,nls,dl,al,sm,rh,color
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- это
интересующая нас строка и в ней необходимо наличие параметров 8b - 8bit и
nls - при отсутствии локализации.
bash:
если я не ошибаюсь, bash не сообщает параметры компиляции, но если возникли
проблемы, то попробуйте создать в домашней директории файл .inputrc
такого вида:
------------------------- begin .inputrc ----------------------------------
set convert-meta off
set meta-flag on
set output-meta on
------------------------- end of .inputrc ---------------------------------
затем запустить второй shell: 'bash --login' или выйти из сеанса и снова войти
или задать эти параметры ввода и отображения входной строки так:
[linux4u]~ > bind 'set convert-meta off' 'set meta-flag on' 'set output-meta on'
3. Отображение кириллицы в редакторах.
При настроенной локализации, при этом неважно как ее определили, те для
пользователей это возможность использования русских символов, ВСЕ ДОЛЖНО
работать.
_правильное_ значение переменной LANG=ru_SU.KOI8-R , однако можно встретить
достаточно большое разнообразие, например:
nusun:~>echo $LANG
koi8
nusun:~>
или
lavr@decimal 101 -> echo $LANG
ru.koi_8
lavr@decimal 102 ->
или ru,RU,su,SU и тд и тп, пользователям "фиолетово" - лишь бы работало.
При ненастроенной локализации, попробуйте такие варианты:
запустите ваш редактор, переключите клавиитуру в русскую раскладку и
попробуйте напечатать, например "мама мала раму", если набранный текст
не соответствует отображаемому, то:
- вы видите кириллицу, но она не соответствует введенному тексту, тогда
у вас проблема с раскладкой клавиатуры;
- если вы видите восмиричные, шестнадцатиричные или "\код", ваш редактор
требует настройки локализации, как этого избежать:
1. попробуйте отменить установку переменной LANG или задать ей пустое
значение и посмотреть как это отразилось на работе редактора;
2. попробуйте установить переменную LANG в любое значение, найденное
в вашей OS Unix, отличное от "C","Latin-1","en_US", лишь бы имелась
возможность отображения 8-ого бита, например,
Solaris:
если у вас имеется директория /usr/lib/locale с локализацией для de,fr,es
можете воспользоваться ими:
tcsh:
ultra:/home/lavr> setenv LANG de
или
ultra:/home/lavr> setenv LC_CTYPE de
bash:
ultra:/home/lavr> export LANG=de
или
ultra:/home/lavr> export LC_CTYPE=de
теперь редактор должен показывать русские буквы.
HP-UX:
если у вас имеется директория /usr/lib/nls с локализацией для german -
de_DE.roman8 или других стран отличных от en_US (USA), вполне можете
воспользоваться ими:
tcsh:
ultra:/home/lavr> setenv LANG de_DE.roman8
или
ultra:/home/lavr> setenv LC_CTYPE de_DE.roman8
bash:
ultra:/home/lavr> export LANG=de_DE.roman8
или
ultra:/home/lavr> export LC_CTYPE=de_DE.roman8
теперь редактор должен показывать русские буквы.
Это не есть верное решение проблемы, а всего лишь выход из положения
который может не сработать для старых OS Unix и для sh/csh.
Коротко о том какие файлы для tcsh/bash нужно создать-модифицировать для
настройки среды в OS Unix. При входе на машину с OS Unix у вас отрабатыает
сценарий "login", подробно - читайте 'man login'.
Если ваш интерпретатор - tcsh, то при входе в систему он пытается выполнить
команды сначала из системных файлов-настроек: /etc/csh.cshrc и /etc/csh.login
(порядок выполнения мб установлен во время компиляции tcsh), а затем из
домашней директории пользователя: .tcshrc, .cshrc, .login (порядок мб изменен)
Более полную информацию см. 'man tcsh'. Свои настройки вы можете сделать
в файлах домашней директории: .tcshrc, .cshrc, .login.
Если ваш интерпретатор - bash, то при входе в систему он пытается выполнить
команды сначала из системных файлов-настроек: /etc/profile и после этого
из файло в домашней директории пользователя: .bash_profile, .bash_login,
.profile и .bashrc (порядок мб изменен при компиляции).
Более полную информацию см. 'man bash'. Свои настройки вы можете сделать
в файлах домашней директории: .bash_profile, .bash_login, .profile и .bashrc.
В большинстве разных OS Unix имеется директория содержащая заготовки для
настройки пользовательской среды, sh/csh/tcsh/bash - /etc/skel, из нее
копируются настроечные файлы в домашнюю директорию пользователя при
регистрации. Часто бывает что администратор либо изменяет изначальные системные
наситройки или добавляет что-то специфичное, либо заменяет эту диреторию на
/usr/local/etc , возможно на иную, характерную для локальных целей.
Например:
Solaris,
ultra:/tmp> ls -la /etc/skel
total 24
drwxr-xr-x 2 root sys 512 Sep 2 1997 .
drwxrwxr-x 28 root sys 3584 Oct 1 14:47 ..
-rwxr-xr-x 1 vvm dug 6 Apr 4 1996 .bash_logout
-rw-r--r-- 1 vvm dug 27 Mar 6 1996 .bash_profile
-rw-r--r-- 1 vvm dug 21 Mar 6 1996 .bashrc
-rw-r--r-- 1 root other 25 Sep 2 1997 .cshrc
-rw-r--r-- 1 root other 25 Sep 2 1997 .login
-rw-r--r-- 1 root other 6 Sep 2 1997 .logout
-rw-r--r-- 1 root other 144 Jul 9 1997 .profile
ultra:/tmp>
HP-UX,
[dtserv]~ > ls -la /etc/skel
total 40
drwxrwxr-x 7 root sys 1024 Jan 30 1998 .
dr-xr-xr-x 25 bin bin 5120 Oct 16 09:20 ..
-rwxr-xr-x 1 root sys 6 Jan 29 1998 .bash_logout
-rw-r--r-- 1 root sys 31 Jan 29 1998 .bash_profile
-rw-r--r-- 1 root sys 25 Jan 29 1998 .bashrc
-r--r--r-- 1 root sys 814 Jun 10 1996 .cshrc
-r--r--r-- 1 root sys 347 Jan 28 1998 .exrc
-r--r--r-- 1 root sys 347 May 30 1996 .exrc.orig
-r--r--r-- 1 root sys 341 Jun 10 1996 .login
drwxr-xr-x 2 root sys 1024 Jan 30 1998 .mc
-rw-r--r-- 1 root sys 677 Jan 29 1998 .profile
-r--r--r-- 1 root sys 446 Jun 10 1996 .profile.orig
drwxr-xr-x 2 root sys 1024 Jan 30 1998 .ssh
drwxr-xr-x 2 root sys 24 Jan 30 1998 Mail
drwxr-xr-x 2 root sys 1024 Apr 21 1998 bin
drwxr-xr-x 2 root sys 1024 Apr 21 1998 sbin
[dtserv]~ >
Теперь попробуем рассмотреть повседневный набор команд в OS Unix:
Примечание: в качестве примера использовалась система FreeBSD, но базовые
команды не сильно отличаются от системы к системе, некоторым дополнительным
набором ключей, не более того.
1. uname - посмотреть под управлением какой OS и на какой платформе мы работаем:
`man uname`
Пример:
[unix1]~ > uname -a
FreeBSD unix1.jinr.dubna.su 4.2-STABLE FreeBSD 4.2-STABLE #0: Tue Mar 13 17:31:28 MSK 2001 toor@unix1.jinr.dubna.su:/usr/src/sys/compile/LAVR i386
[unix1]~ >
ultra:/home/lavr> uname -a
SunOS ultra 5.5.1 Generic_103640-32 sun4u sparc SUNW,Ultra-1
ultra:/home/lavr>
обычно команда `uname` сообщает версию OS и платформу.
2. date - текущие дата и время:
`man date`
ultra:/home/lavr> date
Fri Jun 15 18:19:01 MSK/MSD 2001
ultra:/home/lavr>
3. who[w] - посмотреть среднюю загрузку и кто еще работает на машине и чем
в текущий момент занят:
Примечание: команды who/w похожи и на разных систем имеют небольшие различия,
`man who`
`man w`
[unix1]~ > who
lavr ttyp1 14 июн 15:05 (unix1.jinr.dubna)
lavr ttyp2 10 июн 15:10 (unix1.jinr.dubna)
lavr ttyp3 15 июн 17:06 (unix1.jinr.dubna)
lavr ttyp4 15 июн 18:10 (unix1.jinr.dubna)
lavr ttyp5 15 июн 18:10 (unix1.jinr.dubna)
pin ttyp6 15 июн 18:21 (dezcom.mephi.ru)
lavr ttyp7 15 июн 18:28 (unix1.jinr.dubna)
[unix1]~ >
ultra:/home/lavr> who
palichik pts/3 Jun 14 17:53 (sunct2)
tanyusha pts/5 Jun 15 16:05 (159.93.25.75)
tanyusha pts/0 Jun 15 17:41 (159.93.25.75)
lavr pts/2 Jun 15 18:17 (unix1.jinr.dubna.su)
ultra:/home/lavr>
Примечание: если запущен демон rwhod, то команда rwho покажет всех работающих
пользователей на остальных компьютерах сети под управлением OS Unix, в случае
если на них тоже запущен демон rwhod:
cv:/local2/home/lavr> rwho
asp cv:ttyp9 Jun 15 18:09 :08
eat cv:ttyp1 Jun 13 18:28 :01
eat cv:ttyp7 Jun 13 19:38 :01
karlov cv:ttypc Jun 15 18:03
lavr lxit00:pts/0 Jun 15 14:05 :08
minaev alice:pts/1 Jun 15 10:47 :25
popovla cv:ttyp6 Jun 15 17:44 :34
root dtmain:1 Jun 14 11:53
skachkov cv:ttyp5 Jun 15 17:19 :08
taratin bcv:ttyp3 Jun 15 14:46 :18
toor dtmain:0 Jun 6 13:51
zemlya cv:ttyp8 Jun 15 18:00 :19
cv:/local2/home/lavr>
в верхнем примере мы видим что на машине cv работают пользователи:
asp
eat
karlov
popovla
skachkov
zemlya
на машине dtmain:
root
toor
на машине lxit00:
lavr
на машине alice:
minaev
на машине bcv:
taratin
пример команды `w`:
[unix1]~ > w
6:28пп up 12 days, 6:48, 7 users, load averages: 1.47, 1.31, 1.18
USER TTY FROM LOGIN@ IDLE WHAT
lavr p1 unix1.jinr.dubna чт 03пп 5 ftp ftp://lizard/video
lavr p2 unix1.jinr.dubna вс 03пп 13 slogin lx000h
lavr p3 unix1.jinr.dubna 5:06пп - /usr/local/bin/mc -U -
lavr p4 unix1.jinr.dubna 6:10пп 5 lynx ftp://lizard/vide
lavr p5 unix1.jinr.dubna 6:10пп 3 slogin cv
pin p6 dezcom.mephi.ru 6:21пп - pine
lavr p7 unix1.jinr.dubna 6:28пп - w
[unix1]~ >
cv:/local2/home/lavr> w
6:25pm up 22 days, 23:37, 12 users, load average: 1.39, 1.95, 3.59
User tty login@ idle JCPU PCPU what
vkc tty03 6:22pm 1 -csh[vkc]
lavr ttyp0 6:21pm w
eat ttyp1 6:28pm 6 3:39 1 -csh
toor ttyp2 8:05pm191:42 11:42 23 -bash
ayrjan ttyp3 5:15pm 3:22 10 9 pine
pokorny ttyp4 6:22pm 3 sleep 30
skachkov ttyp5 5:19pm 40 -csh[skachkov]
popovla ttyp6 5:44pm 40 1 -bash[popovla]
eat ttyp7 7:38pm 6 2:34 8 pine
asp ttyp9 6:09pm 17 2 -csh[asp]
kon ttypb 1:48pm 1:39 25 13 -csh[kon]
karlov ttypc 6:03pm 1 9 -csh[karlov]
cv:/local2/home/lavr>
ultra:/home/lavr> w
6:39pm 3 users, load average: 0.04, 0.03, 0.06
User tty login@ idle JCPU PCPU what
palichik pts/3 Thu 5pm 4 4 mc -U
palichik pts/0 6:35pm mc -U
lavr pts/1 6:38pm w
ultra:/home/lavr>
4. tty - посмотреть на каком терминале вы работаете:
`man tty`
ultra:/home/lavr> tty
/dev/pts/1
ultra:/home/lavr>
[unix1]~ > tty
/dev/ttyp7
[unix1]~ >
в примерах выше - pts и ttyp указывают что это сетевые терминальные сессии
[unix1]~ > tty
/dev/console
[unix1]~ >
[unix1]~ > tty
/dev/ttyv3
[unix1]~ >
в прмерах выше - console и ttyv3 указывают на то что это консольные терминалы,
а ttyv3 - 3'ий виртуальный терминал консоли.
5. more|less - команды просмотра содержимого текстовых файлов, часто
используются как фильтры в pipe'ах:
`man more`
`man less`
ultra:/home/lavr> more koi8.txt
ultra:/home/lavr> less koi8.txt
ultra:/home/lavr> who | less
ultra:/home/lavr> who | more
6. cat - программа слияния и распечатки файлов:
`man cat`
[unix1]~ > cat koi8.txt
верхний регистр: winkeys
----------------
цифровой ряд: Ё!"'*:,.;()_+| Ё!"#;%:?*()_+|
ЙЦУКЕНГШЩЗХЪ
ФЫВАПРОЛДЖЭ
ЯЧСМИТЬБЮ?
нижний регистр:
---------------
цифровой ряд: ё1234567890-=\ ё1234567890-=/
йцукенгшщзхъ
фывапролджэ
ячсмитьбю/
[unix1]~ >
[unix1]~ > cat koi8.txt koi8.txt > 2koi8
в примере выше мы использовали команду cat для слияния файла koi8.txt,
дважды в один файл 2koi8 с использованием перенаправления вывода в файл 2koi8.
7. ls - показать содержимое директории:
[unix1]~ > ls
[unix1]~ > ls -la
[unix1]~ > ls /usr/bin
[unix1]~ > ls -la /usr/bin | more
[unix1]~ > ls -la /usr/bin | less
8. cd - перейти в указанную директорию или файловую систему:
`man cd` - это встроенная команда вашего интерпретатора SHELL
[unix1]~ > cd /tmp
[unix1]/tmp >
[unix1]/tmp > cd /usr/local
[unix1]/usr/local >
[unix1]/usr/local > cd ..
[unix1]/usr >
[unix1]/usr > cd ../home
[unix1]/home >
9. pwd - посмотреть в каком текущем месте, директории мы находимся:
[unix1]~ > pwd
/home/lavr
[unix1]~ >
10. mkdir - создать директорию:
[unix1]~ > mkdir testdir
[unix1]~ > ls -la testdir
total 9
drwxr-xr-x 2 lavr dug 512 15 июн 18:57 .
drwxr-xr-x 68 lavr dug 7680 15 июн 18:57 ..
[unix1]~ > mkdir /tmp/testdir
[unix1]~ > ls -la /tmp/testdir
total 5
drwxr-xr-x 2 lavr wheel 512 15 июн 18:57 .
drwxrwxrwt 37 root wheel 4096 15 июн 18:57 ..
[unix1]~ >
11. ed,ex,vi - редакторы для создания и работы с файлами,
touch,cat,copy - команды, в частности позволяющие создавать файлы:
ed - строчный редактор (распространяется в любом дистрибутиве OS Unix)
ex,vi - полноэкранные редакторы (распространяется в любом дистрибутиве OS Unix)
указанные редакторы присутствуют в любом дистрибутиве любой OS Unix
`man ed`
`man ex`
`man vi`
примеры создания небольших файлов с помощью команд touch,cat,copy:
[unix1]~ > cat > testfile
This is example
Easy file creator
- CTRL-D
[unix1]~ >
нажатие CTRL-D мы использовали как посылку сигнала EOF (End Of File)
[unix1]~ > ls -la testfile
-rw-r--r-- 1 lavr dug 34 15 июн 19:07 testfile
[unix1]~ >
примечание: комбинационную связку клавиши-сигнал можно посмотреть командой
`stty -a`:
[unix1]~ > stty -a
speed 9600 baud; 40 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
-extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff -ixany -imaxbel -ignbrk
-brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs
cflags: cread cs8 parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
-dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ; eol2 = ^@;
erase = ^H; intr = ^C; kill = ^U; lnext = ^V; min = 1; quit = ^\;
reprint = ^R; start = ^Q; status = ; stop = ^S; susp = ^Z;
time = 0; werase = ^W;
[unix1]~ >
примечание: stty - команда установки настроек терминальных устройств.
[unix1]~ > touch createfile
[unix1]~ > ls -la createfile
-rw-r--r-- 1 lavr dug 0 15 июн 19:18 createfile
[unix1]~ >
с помощью команды `touch` можно создать пустой файл.
[unix1]~ > cp /dev/stdin newfile
Once again to create new file
Hello, World.
[unix1]~ > ls -la newfile
-rw-r--r-- 1 lavr dug 44 15 июн 19:22 newfile
[unix1]~ >
с помощью достаточного большого набора команд, которые работают с устройством
стандартного ввода, можно быстро создавать простые файлы.
[unix1]~ > echo "Just add one string to file newfile" >> newfile
[unix1]~ > cat newfile
Once again to create new file
Hello, World.
Just add one string to file newfile
[unix1]~ >
в данном случае ">>" означает добавить к уже существующему файлу.
Вариантов быстрого создания маленьких фалов много, но для реальной работы
необходимо осваивать существующие в OS Unix редакторы, их много и поэтому
рекоммендации такие:
- если вы планируете стать системным администратором:
ed/vi[vim] - обязаны знать, по-скольку это базовые редакторы всех OS Unix
- во всех остальных случаях:
ed/vi[vim]
emacs/xemacs
joe
jove
nedit - X11 редактор
и тд и тп
12. rm - удалить файл, директорию:
`man rm`
удалить созданные ранее файлы:
[unix1]~ > rm 2koi8
remove 2koi8? y
[unix1]~ >
удалить созданные ранее директории:
[unix1]~ > rm -r testdir
remove testdir? y
[unix1]~ >
[unix1]~ > rm -r /tmp/testdir
remove /tmp/testdir? y
[unix1]~ >
13. cp - команда копирования файлов, директорий:
копирование файла:
ultra:/home/lavr> cp
cp: Insufficient arguments (0)
Usage: cp [-f] [-i] [-p] f1 f2
cp [-f] [-i] [-p] f1 ... fn d1
cp -r|R [-f] [-i] [-p] d1 ... dn-1 dn
ultra:/home/lavr>
ultra:/home/lavr> cp koi8.txt copy_koi8.txt
ultra:/home/lavr> ls -la copy_koi8.txt
-rw------- 1 lavr dug 1125 Jun 16 15:43 copy_koi8.txt
ultra:/home/lavr>
копирование директории:
ultra:/home/lavr> ls -la Mail
total 150
drwx------ 2 lavr dug 512 Jan 22 13:14 .
drwxr-xr-x 39 lavr dug 3584 Jun 16 15:45 ..
-rw------- 1 lavr dug 1407 Oct 29 1998 anarbay
-rw------- 1 lavr dug 1409 Aug 1 1998 andrew
-rw------- 1 lavr dug 3974 Jun 17 1999 iris
-rw------- 1 lavr dug 2704 Dec 3 1999 lavr
-rw------- 1 lavr dug 5568 Aug 13 1999 mailer-daemon
-rw-r--r-- 1 lavr dug 43384 May 2 2000 posted
-rw------- 1 lavr dug 0 May 14 1998 saved-messages
-rw------- 1 lavr dug 381 Nov 16 2000 sent-mail
-rw------- 1 lavr dug 2763 Jan 22 13:14 virtaliro.com
-rw------- 1 lavr dug 6027 Jul 9 1999 vmitsyn
ultra:/home/lavr>
ultra:/home/lavr> cp -R Mail AltMail
ultra:/home/lavr> ls -la AltMail
total 150
drwx------ 2 lavr dug 512 Jun 16 15:45 .
drwxr-xr-x 40 lavr dug 3584 Jun 16 15:45 ..
-rw------- 1 lavr dug 1407 Jun 16 15:45 anarbay
-rw------- 1 lavr dug 1409 Jun 16 15:45 andrew
-rw------- 1 lavr dug 3974 Jun 16 15:45 iris
-rw------- 1 lavr dug 2704 Jun 16 15:45 lavr
-rw------- 1 lavr dug 5568 Jun 16 15:45 mailer-daemon
-rw-r--r-- 1 lavr dug 43384 Jun 16 15:45 posted
-rw------- 1 lavr dug 0 Jun 16 15:45 saved-messages
-rw------- 1 lavr dug 381 Jun 16 15:45 sent-mail
-rw------- 1 lavr dug 2763 Jun 16 15:45 virtaliro.com
-rw------- 1 lavr dug 6027 Jun 16 15:45 vmitsyn
ultra:/home/lavr>
ultra:/home/lavr> rm -rf AltMail
ultra:/home/lavr>
14. mv - перенос файлов и директорий с одного места в другое:
ultra:/home/lavr> mv
mv: Insufficient arguments (0)
Usage: mv [-f] [-i] f1 f2
mv [-f] [-i] f1 ... fn d1
mv [-f] [-i] d1 d2
ultra:/home/lavr>
ultra:/home/lavr> mv koi8.txt lavr
ultra:/home/lavr> ls -la koi8.txt
koi8.txt: No such file or directory
ultra:/home/lavr> ls -la lavr
-rw------- 1 lavr dug 1125 Oct 28 1998 lavr
ultra:/home/lavr> mv lavr koi8.txt
ultra:/home/lavr> ls -la koi8.txt
-rw------- 1 lavr dug 1125 Oct 28 1998 koi8.txt
ultra:/home/lavr>
15. cut - команда позволяющая вырезать из заданного файла куски по полям
или заданному формату:
`man cut`
ultra:/home/lavr> cut -f 1 -d: /etc/passwd
результат вывода опущен
данный пример вырезает первое поле из файла /etc/passwd используя в качестве
разделителя символ ":".
16 tr - перевод, замена символов по заданному шаблону:
`man tr`
ultra:/home/lavr> echo AGHKGAHKGHK | tr '[:upper:]' '[:lower:]'
aghkgahkghk
ultra:/home/lavr>
используя pipe[канал] подаем входную строку на вход команды `tr` с шаблоном
перевести все символы в верхнего регистра в нижний.
17. grep - команда поиска данных в файле по образцу, можно использовать
регулярные выражения:
ultra:/home/lavr> ls -la /tmp | grep lavr
drwx------ 2 lavr dug 120 Jun 15 18:38 ssh-lavr
ultra:/home/lavr>
в результате вывода команды `ls -la` найти все вхождения строки "lavr"
[unix1]~ >grep "~lavr" /var/log/apache/unix1-access.log | grep -v "159.93" | grep -v "194.87.162.86" | less
результаты вывода опущены, в данной команде в файле /var/log/apache/unix1-access.log ищется строка "~lavr" с исключением строк: "159.93" и "194.87.162.86",
для исключения используетсяя опция "-v".
18. sed - потоковый редактор:
`man sed` - включая регулярные выражения - regexp, это целая жизнь:
ultra:/home/lavr> echo "asdjfh livr asdfjhjk" | sed s/livr/lavr/g
asdjfh lavr asdfjhjk
ultra:/home/lavr>
19. dmesg - в большинстве OS Unix, данная команда позволяет посмотреть
сообщения процедуры загрузки, с важными системными сообщениями,
тип системы, платформы, прерывания, обнаруженные устройства, диагностика,
неполадки, сбои и тд и тп:
ultra:/home/lavr> dmesg | less
Jun 16 16:09
cpu0: SUNW,UltraSPARC (upaid 0 impl 0x10 ver 0x22 clock 143 MHz)
^MSunOS Release 5.5.1 Version Generic_103640-32 [UNIX(R) System V Release 4.0]
Copyright (c) 1983-1996, Sun Microsystems, Inc.
mem = 131072K (0x8000000)
avail mem = 127664128
Ethernet address = 8:0:20:83:4f:e8
root nexus = Sun Ultra 1 SBus (UltraSPARC 143MHz)
sbus0 at root: UPA 0x1f 0x0 ...
espdma0 at sbus0: SBus0 slot 0xe offset 0x8400000
esp0 at espdma0: SBus0 slot 0xe offset 0x8800000 Onboard device sparc9 ipl 4
sd0 at esp0: target 0 lun 0
sd0 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@0,0
sd1 at esp0: target 1 lun 0
sd1 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@1,0
sd2 at esp0: target 2 lun 0
sd2 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@2,0
sd3 at esp0: target 3 lun 0
sd3 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@3,0
sd6 at esp0: target 6 lun 0
sd6 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@6,0
root on /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@0,0:a fstype ufs
zs0 at sbus0: SBus0 slot 0xf offset 0x1100000 Onboard device sparc9 ipl 12
zs0 is /sbus@1f,0/zs@f,1100000
zs1 at sbus0: SBus0 slot 0xf offset 0x1000000 Onboard device sparc9 ipl 12
zs1 is /sbus@1f,0/zs@f,1000000
keyboard is major <29> minor <2>
mouse is major <29> minor <3>
stdin is major <29> minor <2>
cgsix0 at sbus0: SBus0 slot 0x2 offset 0x0 SBus level 5 sparc9 ipl 9
cgsix0 is /sbus@1f,0/cgsix@2,0
cgsix0: screen 1152x900, single buffered, 1M mappable, rev 11
stdout is major <39> minor <0>
boot cpu (0) initialization complete - online
...
[unix1]~ > dmesg | less
> tcp
pid 10141 (communicator-4.7), uid 310: exited on signal 10 (core dumped)
fxp0: promiscuous mode enabled
fxp0: promiscuous mode disabled
fxp0: promiscuous mode enabled
fxp0: promiscuous mode disabled
arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0
arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0
arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0
arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0
arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0
arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0
nfs server lx000h:/xpt/arch/private/lavr: not responding
nfs server lx000h:/xpt/arch/private/lavr: is alive again
pid 50336 (ftpd), uid 14 on /pub: file system full
...
[unix1]~ > dmesg | less
> tcp
pid 10141 (communicator-4.7), uid 310: exited on signal 10 (core dumped)
fxp0: promiscuous mode enabled
fxp0: promiscuous mode disabled
fxp0: promiscuous mode enabled
fxp0: promiscuous mode disabled
arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0
arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0
arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0
arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0
arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0
arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0
nfs server lx000h:/xpt/arch/private/lavr: not responding
nfs server lx000h:/xpt/arch/private/lavr: is alive again
pid 50336 (ftpd), uid 14 on /pub: file system full
20. netstat - отобразить статус сети.сетевых ресурсов на машине:
`man netstat`
[unix1]~ > netstat -rn | less
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 159.93.17.1 UGSc 26 7070 fxp0
127.0.0.1 127.0.0.1 UH 14 2839577 lo0
159.93.16/20 link#1 UC 0 0 fxp0 =>
159.93.17.1 0:d0:97:c0:98:0 UHLW 23 0 fxp0 1197
159.93.17.2 0:30:94:9f:cd:80 UHLW 0 0 fxp0 713
159.93.17.7 8:0:20:a6:bc:dd UHLW 0 630 fxp0 1160
159.93.17.8 8:0:20:22:c9:e5 UHLW 0 11090 fxp0 1165
159.93.17.13 0:80:29:20:8:27 UHLW 0 35868 fxp0 1183
159.93.17.32 0:0:f8:3:e9:7e UHLW 0 8877 fxp0 1177
159.93.17.51 0:80:ad:85:f5:4d UHLW 1 1240802 fxp0 1024
159.93.17.75 8:0:20:83:4f:e8 UHLW 1 1788 fxp0 1082
159.93.17.93 0:d0:b7:d5:d5:a6 UHLW 0 2414 fxp0 1117
159.93.17.106 0:80:ad:50:d1:92 UHLW 1 1442633 fxp0 1165
159.93.17.110 0:50:da:35:96:16 UHLW 0 2011262 fxp0 1017
159.93.17.112 0:60:52:5:a0:3c UHLW 0 3527994 fxp0 1145
159.93.17.121 0:50:8b:5b:ae:6 UHLW 1 1593 lo0
159.93.17.129/32 link#1 UC 0 0 fxp0 =>
159.93.17.130 8:0:20:13:4:ff UHLW 0 201 fxp0 11
...
с ключами "-rn" мы можем посмотреть таблицу маршрутизации на нашей машине.
[unix1]~ > netstat | less
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 17520 xnc.http delta.radio.tsu..64577 ESTABLISHED
tcp4 0 0 unix1.1794 h100.n166.cust.d.1228 ESTABLISHED
tcp4 0 0 unix1.1793 h100.n166.cust.d.ftp ESTABLISHED
tcp4 0 17520 xnc.http delta.radio.tsu..64552 ESTABLISHED
tcp4 0 16060 xnc.http delta.radio.tsu..64551 ESTABLISHED
tcp4 0 0 unix1.1786 spleen.demos.su.49177 ESTABLISHED
tcp4 0 0 unix1.1784 spleen.demos.su.ftp ESTABLISHED
tcp4 0 0 unix1.4034 ultra.ssh ESTABLISHED
tcp4 0 0 localhost.6016 localhost.4032 ESTABLISHED
tcp4 0 0 localhost.4032 localhost.6016 ESTABLISHED
tcp4 0 0 unix1.down alone.dubna.ru.2232 ESTABLISHED
tcp4 0 0 localhost.6015 localhost.4014 ESTABLISHED
tcp4 0 0 localhost.4014 localhost.6015 ESTABLISHED
tcp4 0 0 unix1.down alone.dubna.ru.2231 ESTABLISHED
tcp4 0 0 localhost.6010 localhost.3977 ESTABLISHED
tcp4 0 0 localhost.3977 localhost.6010 ESTABLISHED
tcp4 0 0 unix1.down alone.dubna.ru.2117 ESTABLISHED
tcp4 0 0 unix1.netbios-ssn dct058.4054 ESTABLISHED
tcp4 0 0 localhost.6011 localhost.3606 ESTABLISHED
tcp4 0 0 localhost.3606 localhost.6011 ESTABLISHED
tcp4 0 0 unix1.down alone.dubna.ru.4950 ESTABLISHED
...
в данном случае посмотреть активные сетевые соединения.
[unix1]~ > netstat -I fxp0 -w 2
input (fxp0) output
packets errs bytes packets errs bytes colls
143 0 219287 66 0 6590 0
155 0 175309 77 0 5886 0
128 0 167191 61 0 5754 0
128 0 180442 61 0 4492 0
129 0 129614 63 0 3466 0
смотрим входящие и исходящие пакеты на сетевом интерфейсе fxp0 каждые 2 секунды
и наличие коллизий.
21. ifconfig - посмотреть, изменить, сконфигурировать сетевые интерфейсы:
`man ifconfig`
ultra:/home/lavr> ifconfig -a
lo0: flags=849 mtu 8232
inet 127.0.0.1 netmask ff000000
le0: flags=863 mtu 1500
inet 159.93.17.75 netmask fffff000 broadcast 159.93.31.255
ultra:/home/lavr>
[unix1]~ > ifconfig
fxp0: flags=8843 mtu 1500
inet 159.93.17.121 netmask 0xfffff000 broadcast 159.93.31.255
inet6 fe80::250:8bff:fe5b:ae06%fxp0 prefixlen 64 scopeid 0x1
inet 159.93.25.88 netmask 0xffffffff broadcast 159.93.25.88
inet 159.93.17.129 netmask 0xffffffff broadcast 159.93.17.129
inet 193.124.144.1 netmask 0xffffff00 broadcast 193.124.144.255
ether 00:50:8b:5b:ae:06
media: 100baseTX status: active
supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP
lp0: flags=8810 mtu 1500
faith0: flags=8000 mtu 1500
gif0: flags=8010 mtu 1280
gif1: flags=8010 mtu 1280
gif2: flags=8010 mtu 1280
gif3: flags=8010 mtu 1280
lo0: flags=8049 mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
ppp0: flags=8010 mtu 1500
ppp1: flags=8010 mtu 1500
ppp2: flags=8010 mtu 1500
ppp3: flags=8010 mtu 1500
[unix1]~ >
22. du - посмотреть дисковую статистику на предмет сколько блоков занимает
тот или иной файл, директория, файловая система:
`man du`
[unix1]~ > du koi8.txt
1 koi8.txt
[unix1]~ >
[unix1]~ > du koi8.txt
1 koi8.txt
[unix1]~ > du -s /tmp
du: /tmp/ssh-2vvlLjiH: Permission denied
du: /tmp/ssh-rib6JdrI: Permission denied
du: /tmp/ssh-SPFlXG4J: Permission denied
du: /tmp/ssh-HKVnOass: Permission denied
du: /tmp/ssh-4q1VOPlz: Permission denied
du: /tmp/ssh-1rTOGbiD: Permission denied
du: /tmp/screens/S-kev: Permission denied
du: /tmp/kfm-cache-0: Permission denied
12906 /tmp
[unix1]~ >
23. df - показать свободное дисковое пространство:
`man df`
[unix1]~ > df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad4s2a 79359 45477 27534 62% /
/dev/ad4s2g 99183 12951 78298 14% /tmp
/dev/ad4s1e 988591 642023 267481 71% /pub
/dev/ad4s2f 2977230 2433724 305328 89% /usr
/dev/ad4s2e 793983 240049 490416 33% /var
/dev/ad4s2h 14086242 11159515 1799828 86% /pub/ftp/1
/dev/ad5s1e 793983 459880 270585 63% /home
/dev/ad5s1f 18230608 15289542 1482618 91% /pub/ftp/2
/dev/ad0s1e 19396603 14413862 3431013 81% /pub/ftp/3
/dev/ad6s1c 9598123 8076441 753833 91% /pub/ftp/4
/dev/ad7s1e 19399910 13561354 4286564 76% /pub/ftp/incoming/moviez
procfs 4 4 0 100% /proc
lx000h:/xpt/arch/private/lavr 16513960 12538704 3136396 80% /pub/ftp/incoming/raid
[unix1]~ >
24. Как самостоятельно изменить свой пароль:
`man passwd`
[unix1]~ > passwd
Changing local password for lavr.
Old password: <вводим своий текущий пароль> (если правильно набран, идем далее)
New password: <вводим новый пароль>
Retype new password: <повторно вводим новый пароль> (для проверки на совпадение)
[unix1]~ >
Теперь у нас новый пароль.
25. Как самостоятельно изменить себе SHELL:
`man chsh`
1) посмотрите какие shell-интерпретаторы доступны на вашей системе:
[unix1]~ > less /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/sh
/bin/csh
/bin/tcsh
/bin/bash
/usr/local/bin/bash
/sbin/nologin
/usr/bin/false
/nonexistent
2) из этого списка: sh/csh/tcsh/bash с помощью команды chsh, установите
наиболее удобный для вас.
Стартовые файлы настройки среды и переменных интерпретатора:
sh - .profile, иногда .shrc
csh - .login, .cshrc
tcsh - .login, .tcshrc
bash - .bash_rc, .bash_profile
В соответствии с выбранным вами SHELL, вы можете редактировать указанные выше
файлы в вашей домашней директории, создавая, настройки под себя и для себя.
--
Andrey Lavrentyev/lavr | JINR, Dubna, Russia | lavr@cv.jinr.ru