Главная страница
Навигация по странице:

  • echo $SHELL

  • cd /usr То, затем мы можем использовать относительный путь local/bin , чтобы попасть в директорию /usr/local/bin : $ cd local/bin

  • pwd

  • cd /usr

  • ls -dl /usr /usr/bin /usr/X11R6/bin ../share

  • cd /tmp

  • ln -s secondlink thirdlink

  • rm file1 file2

  • alias rm="rm -i"

  • mkdir mydir

  • технический текст. Введение в bash


    Скачать 27.94 Kb.
    НазваниеВведение в bash
    Анкортехнический текст
    Дата26.10.2022
    Размер27.94 Kb.
    Формат файлаdocx
    Имя файлатехнический текст.docx
    ТипПрограмма
    #756800


    Введение в bash

    Оболочка

    Если вы уже использовали Linux ранее, то наверняка знаете, что после входа в систему вас приветствует приглашение, которое выглядит примерно так:

    $
    На практике приглашение, которое вы видите, может немного отличаться. Например, оно может содержать имя хоста, имя текущей рабочей директории, или все вместе. Не зависимо от того, как выглядит ваше приглашение, есть одна несомненная вещь: программа, которая выводит это приглашение, называется оболочка интерпретатора команд (от англ. shell — оболочка, он же командная строка или терминал — прим. пер.), и, вероятнее всего, вашей командной оболочкой будет 'bash'.


    А у вас запущен bash?

    Вы можете убедиться, что используете bash, набрав:

    echo $SHELL
    /bin/bash
    Если строчка выше выдает ошибку, или ответ не соответствует, возможно, что вы запустили другую оболочку. В этом случае большая часть этого руководства все еще будет полезна, но было бы значительно лучше для вас переключиться на bash, ради подготовки к экзамену 101.


    О bash

    Bash — это акроним от Bourne-again-shell, от англ. «ещё-одна-командная-оболочка-Борна» или «рождённая-вновь-командная оболочка» (тут игра слов Bourne/born — прим. пер.), и является оболочкой по умолчанию для большинства Linux-систем. Задача оболочки получать от вас команды, через которые вы взаимодействуете с Linux-системой. После того, как вы закончили ввод команд, вы можете выйти из оболочки (exit) или закончить сеанс (logout), в этом случае вы увидите приглашение входа в систему.


    Кстати, вы также можете выйти из оболочки bash нажав control-D в приглашении.


    Использование «cd»

    Вы, возможно, уже обнаружили, что пялиться на приглашение bash — не самое впечатляющее занятие в мире. Ну что ж, давайте узнаем как путешествовать по нашей файловой системе. В приглашении введите пожалуйста следующую команду (без $):

    cd /

    Вы только что сообщили bash, что хотите работать в директории /, также известной, как корневая; все директории в системе имеют форму дерева, и / является его вершиной, т.е. корнем (в информатике деревья растут наоборот, корень вверху, а ветки спускаются вниз — прим. пер.). cd устанавливает директорию, в которой вы в данный момент работаете, также известную как «текущая рабочая директория».
    Пути
    Чтобы узнать текущую рабочую директорию в bash нужно набрать:

    pwd
    /

    В примере с cd, аргумент / называется путь. Он сообщает cd куда мы хотим отправиться. В частности, аргумент / это абсолютный путь, что значит, что он задает расположение относительно корня дерева файловой системы.
    Абсолютные пути
    Ниже несколько из них:

    /dev
    /usr
    /usr/bin
    /usr/local/bin


    Как можно заметить, у всех абсолютных путей есть одна общая черта, они начинаются с /. Указывая, допустим, /usr/local/bin в качестве аргумента для cd, мы сообщаем, что хотим попасть в / директорию, затем в usr директорию внутри нее, и так далее в local и bin, вниз по дереву. Абсолютные пути всегда отсчитываются начиная от / сперва.


    Относительные пути

    Другой тип пути называется «относительный путь». bash, cd, и другие команды всегда интерпретируют их относительно текущей директории. Относительные пути НИКОГДА не начинаются с /. Так, если мы сначала переместимся в /usr:

    cd /usr
    То, затем мы можем использовать относительный путь local/bin, чтобы попасть в директорию /usr/local/bin:

    cd local/bin
    pwd
    /usr/local/bin


    Использование ..

    Относительные пути могут также содержать одну или более ".." директории. Директория ".." специальная; она указывает на родительскую директорию. Так, продолжая с примера выше:

    pwd
    /usr/local/bin
    cd ..
    pwd
    /usr/local
    Как видно, наша текущая директория теперь /usr/local. Мы смогли переместиться «назад» на одну директорию относительно текущей, где были до того.


    Кроме того, мы также можем использовать ".." в существующем относительном пути, позволяющем нам переместиться в директорию «рядом» с той, в которой находимся:

    pwd
    /usr/local
    cd ../share
    pwd
    /usr/share

    Использование команд Linux

    Знакомство с ls

    А сейчас, мы быстренько пройдемся по команде ls. Скорее всего вы уже хорошо знакомы с этой командой, и знаете, что набрав ls получите список содержимого текущей рабочей директории:


    $ cd /usr



    $ ls



    X11R6 doc i686-pc-linux-gnu lib man sbin ssl

    bin gentoo-x86 include libexec portage share tmp

    distfiles i686-linux info local portage.old src

    Указав опцию -a, вы можете увидеть полный список, включая скрытые файлы и директории, начинающиеся с ".". Как видно в следующем примере, ls -a выводит также особые связывающие директории "." и "..":


    $ ls -a



    . bin gentoo-x86 include libexec portage share tmp

    .. distfiles i686-linux info local portage.old src

    X11R6 doc i686-pc-linux-gnu lib man sbin ssl

    Развернутые списки директорий

    Вы также можете задать одну и более директорий или файлов в командной строке с ls. Если вы укажите файл, то ls покажет вам только этот файл. А если зададите директорию, то ls выдаст ее содержимое. Опция -l очень удобна, когда необходимо посмотреть права доступа, владельца, время последнего изменения и размер в списке содержимого директории.


    В следующем примере мы использовали опцию -l чтобы отобразить содержимое моей директории /usr:


    $ ls -l /usr



    drwxr-xr-x 7 root root 168 Nov 24 14:02 X11R6

    drwxr-xr-x 2 root root 14576 Dec 27 08:56 bin

    drwxr-xr-x 2 root root 8856 Dec 26 12:47 distfiles

    lrwxrwxrwx 1 root root 9 Dec 22 20:57 doc -> share/doc

    drwxr-xr-x 62 root root 1856 Dec 27 15:54 gentoo-x86

    drwxr-xr-x 4 root root 152 Dec 12 23:10 i686-linux

    drwxr-xr-x 4 root root 96 Nov 24 13:17 i686-pc-linux-gnu

    drwxr-xr-x 54 root root 5992 Dec 24 22:30 include

    lrwxrwxrwx 1 root root 10 Dec 22 20:57 info -> share/info

    drwxr-xr-x 28 root root 13552 Dec 26 00:31 lib

    drwxr-xr-x 3 root root 72 Nov 25 00:34 libexec

    drwxr-xr-x 8 root root 240 Dec 22 20:57 local

    lrwxrwxrwx 1 root root 9 Dec 22 20:57 man -> share/man

    lrwxrwxrwx 1 root root 11 Dec 8 07:59 portage -> gentoo-x86/

    drwxr-xr-x 60 root root 1864 Dec 8 07:55 portage.old

    drwxr-xr-x 3 root root 3096 Dec 22 20:57 sbin

    drwxr-xr-x 46 root root 1144 Dec 24 15:32 share

    drwxr-xr-x 8 root root 328 Dec 26 00:07 src

    drwxr-xr-x 6 root root 176 Nov 24 14:25 ssl

    lrwxrwxrwx 1 root root 10 Dec 22 20:57 tmp -> ../var/tmp

    Первая колонка показывает информацию о правах доступа для каждого элемента. Чуть позже я объясню, как её интерпретировать. Следующая колонка содержит числа ссылок на каждый элемент файловой системы, позже мы вернемся к этому. Третья и четвертая колонки — это список владельцев и групп, соответственно. Пятая колонка — размер объекта. Шестая — время последнего изменения (mtime) объекта. И наконец, последняя колонка с именами объектов. Если файлы являются символическими ссылками, то вы увидите стрелку -> и путь, куда указывает эта символическая ссылка.


    Смотрим на директории

    Иногда вы захотите взглянуть на директорию, а не внутрь нее. В этом случае вы можете указать опцию -d, которая скажет ls рассматривать любую директорию, как внутреннюю:


    $ ls -dl /usr /usr/bin /usr/X11R6/bin ../share



    drwxr-xr-x 4 root root 96 Dec 18 18:17 ../share

    drwxr-xr-x 17 root root 576 Dec 24 09:03 /usr

    drwxr-xr-x 2 root root 3192 Dec 26 12:52 /usr/X11R6/bin

    drwxr-xr-x 2 root root 14576 Dec 27 08:56 /usr/bin

    Создание ссылок и удаление файлов

    Жесткие ссылки

    Мы уже упоминали термин «ссылка», когда рассказывали о взаимоотношениях между директориями (их именами) и инодами (индексным номерами, лежащими в основе файловой системы, которых мы не замечаем). Вообще в Linux существует два типа ссылок. Тип, о котором мы уже говорили ранее, называется «жесткие ссылки». Каждый инод может иметь произвольное число жестких ссылок. Когда уничтожается последняя жесткая ссылка, и не одна программа не держит файл открытым, то Linux автоматически удаляет его. Новые жесткие ссылки можно создать воспользовавшись командой ln:


    $ cd /tmp



    $ touch firstlink



    $ ln firstlink secondlink



    $ ls -i firstlink secondlink



    15782 firstlink 15782 secondlink

    Как видите, жесткие ссылки работают на уровне инодов, для указания конкретного файла. В Linux системах, для жестких ссылок есть несколько ограничений. В частности, можно создавать жесткие ссылки только на файлы, не на директории. Да-да, именно так; хотя "." и ".." являются созданными системой жесткими ссылками на директории, вам (даже от имени пользователя «root») не разрешается создавать любые свои собственные. Второе ограничение жестких ссылок состоит в том, что нельзя связать ими несколько файловых систем. Это значит, что у вас не получится создать жесткую ссылку с /usr/bin/bash на /bin/bash и если ваши директории / и /usr находятся в разных файловых системах (разделах — прим. пер.).


    Символьные ссылки

    В практике, символьные ссылки (или символические, иногда «симлинки» — от англ.) используются гораздо чаще, чем жесткие. Симлинки — это файлы особого типа, которые ссылаются на другие файлы по имени, а не прямо по номеру инода. Они не спасают файлы от удаления; если файл, на который указывает ссылка, исчезает, то симлинк перестает работать, ломается.


    Символические ссылки можно создать передав для ln опцию -s.


    $ ln -s secondlink thirdlink



    $ ls -l firstlink secondlink thirdlink



    -rw-rw-r-- 2 agriffis agriffis 0 Dec 31 19:08 firstlink

    -rw-rw-r-- 2 agriffis agriffis 0 Dec 31 19:08 secondlink

    lrwxrwxrwx 1 agriffis agriffis 10 Dec 31 19:39 thirdlink -> secondlink

    В выводе ls -l символьные ссылки можно отличить тремя способами. Во-первых, обратите внимание на символ l в первой колонке. Во-вторых, размер символической ссылки равен количеству символов в ней (secondlink в нашем случае). В-третьих, последняя колонка в выводе показывает куда ведет ссылка с помощью интуитивного обозначения "->".

    rm

    Итак, мы знаем как использовать cp, mv и ln, настало время узнать о том, как можно удалять объекты из файловой системы. Обычно это делается с помощью команды rm. Чтобы удалить файлы, просто укажите их в командной строке:


    $ cd /tmp



    $ touch file1 file2



    $ ls -l file1 file2



    -rw-r--r-- 1 root root 0 Jan 1 16:41 file1

    -rw-r--r-- 1 root root 0 Jan 1 16:41 file2


    rm file1 file2
    ls -l file1 file2
    ls: file1: No such file or directory
    ls: file2: No such file or directory


    Имейте ввиду, что под Linux, однажды удаленный файл, обычно исчезает на века. Поэтому многие начинающие системные администраторы используют опцию -i, когда удаляют файлы. Опция -i сообщает rm удалять файлы в интерактивном режиме — это значит спрашивать перед удалением любого файла. Например:

    rm -i file1 file2
    rm: remove regular empty file `file1'? y
    rm: remove regular empty file `file2'? y


    В примере выше команда rm запрашивает подтверждение на удаление каждого из указанных файлов. В случае согласия, я должен был вводить «y» и нажать enter, дважды. Если бы я ввел «n», то файл бы остался цел. Или, если я сделал что-нибудь не так, я мог бы нажать Control-C и сбросить выполнение команды rm -i целиком — всяко до того, как это могло нанести какой-нибудь ущерб моей системе.


    Если вы все еще учитесь пользоваться командой rm, то может быть полезным добавить при помощи вашего любимого текстового редактора следующую строку в ваш файл 

    /.bashrc, и затем выйти (logout) и войти (login) в систему вновь. После этого, всякий раз, когда вы наберете rm, оболочка bash преобразует ее автоматически в команду rm -i. Таким образом, rm будет всегда работать в интерактивном режиме:

    alias rm="rm -i"
    rmdir

    Для удаления директорий у вас имеется два варианта. Вы можете удалить все объекты внутри директории и затем воспользоваться rmdir для удаления самой директории:

    mkdir mydir
    touch mydir/file1
    rm mydir/file1
    rmdir mydir


    Этот метод широко известен под названием «способ удаления директорий для лохов». Все реальные пацаны и админы-гуру съевшие пользователя собаку на этом деле, используют гораздо более удобную команду rm -rf, описанную далее.


    написать администратору сайта