Разное

Cd bash: Работа с Bash | Losst

Содержание

Работа с Bash | Losst

Bash — это самый популярный интерпретатор команд, который используется в большинстве дистрибутивов Linux. Вы сталкиваетесь с Bash каждый раз, когда открываете терминал в своей системе и начинаете выполнять там команды, а также когда пишите различные скрипты для автоматизации выполнения системных задач.

Мы уже много писали о Bash, его возможностях и особенностях, теперь пришло время написать статью, в которой будет описана работа с Bash в целом, как пользоваться Bash, горячие клавиши и другие полезные моменты, которые помогут вам пользоваться Bash более эффективно.

Содержание статьи:

Что такое Bash?

Как я уже говорил, Bash — это интерпретатор команд. По сути, это обычная программа, которая запускается при старте сеанса оболочки. Мы могли бы запускать не Bash, а скажем, интерпретатор python или ruby, и тогда нам пришлось бы выполнять методы этих языков вместо команд Bash для администрирования системы.

Bash принимает команды от пользователя и передает их системному загрузчику, а также обеспечивает взаимодействие между командами, обмен информацией и потоками ввода-вывода. Также оболочка предоставляет пользователю удобный интерфейс для работы с историей команд, поиска и замены, а также исправления ранее выполненных команд, а также автодополнение путей.

Команды Bash

Основу работы в Bash составляют команды. Именно с помощью команд вы будете выполнять большинство действий над системой. Команды можно поделить на два типа. Это встроенные в оболочку, которые существуют только виртуально, мы рассматривали их в статье основные команды Bash, а также внешние команды — обычные утилиты или скрипты, расположенные в файловой системе.

Возвращаясь к встроенным командам, можно привести пример, вы не найдете в файловой системе команду cd. Ее нет, она встроена.

Обычные же команды находятся в файловой системе. Они могут находиться в одной из папок, указанных в переменной PATH. Для выполнения встроенной или внешней команды достаточно набрать ее имя, интерпретатор отлично справляется с поиском команд по папкам, указанным в PATH. Например:

ls /

Но если команда находится в одной из сторонних папок, то необходимо ввести ее полный адрес:

/usr/local/bin/simplenote

Иначе оболочка не сможет найти исполняемый файл команды.

Объединение команд

Оболочка Bash позволяет не только выполнять команды, но и объединять их в сложные конструкции для получения нужного эффекта. Использование Bash таким способом очень эффективно. Как вы знаете, система Linux создает три потока для каждой программы — поток ввода, поток вывода и поток ошибок. Оболочка позволяет перенаправить поток одной программы прямо в другую с помощью специальных операторов. Читайте более подробно обо всем этом в статье перенаправление ввода вывода в Bash.

Кроме того, Bash позволяет объединять команды по времени выполнения. Существуют такие операторы для объединения команд:

  • && — выполнить первую команду, а вторую выполнять только если первая завершится успешно;
  • || — выполнить первую команду, а вторую выполнять только если первая завершится неудачей;
  • ; — выполняет последовательно каждую следующую команду, как только завершится предыдущая;
  • & — запустить команду в фоне и сразу же вернуть управление в командную оболочку для выполнения следующей команды.

Например, сначала выполняем загрузку файла, а затем открываем его в плеере, если загрузка прошла успешно:

wget https://archive.org/download/testmp3testfile/mpthreetest.mp3 && mplayer mpthreetest.mp3

Чтобы продолжить этот пример, мы можем удалить загруженный файл, если произошла ошибка:

wget https://archive.org/download/testmp3testfile/mpthreetest.mp3 || rm mpthreetest.mp3

Чтобы выполнить обновление системы, а затем завершить работу выполните:

sudo apt update ; shutdown -h now

И наконец, вы можете запустить какой-либо сервис или приложение, например, браузер в фоне и свободно продолжить работу в терминале:

firefox &

Управляющие символы Bash

Перенаправление вывода, организация тоннелей и поочередное выполнение команд — это очень хорошо, но у Bash есть еще и другие полезные возможности. Например, с помощью специальных символов вы можете модифицировать команды, искать в истории и многое другое.

Чтобы вставить в положение курсора предыдущую команду напишите !!. Например, чтобы выполнить последнюю команду с sudo достаточно выполнить:

sudo !!

Чтобы выполнить не последнюю команду, а скажем, предпоследнюю или выполненную еще раньше, то после восклицательного знака нужно указать ее номер:

!-1

Если вы укажите один восклицательный знак и несколько символов, то выполнится последняя команда, которая начиналась на эти символы:

!l

Также может понадобиться искать команду не по первому символу, а по вхождению в нее определенного набора символов. Тогда можно использовать такую конструкцию. Ищем последнюю команду, в которой встречалось tmp:

!?tmp?

 

Если перед командой написать пробел, то она не сохранится в истории:

 ls

Символ $? позволяет вывести код завершения последней команды:

echo $?

Символ звездочки возвращает массивом содержимое текущей папки:

echo *

С помощью символа ^ можно заменить несколько букв из предыдущей команды. rm

В результате файл будет удален.

Горячие клавиши Bash

Работа с Bash была бы не такой удобной без горячих клавиш, которые позволяют упростить множество действий. Рассмотрим основные сочетания, некоторые из них вы и так используете каждый день:

  • Tab — автодополнение, наберите начало команды или пути и нажмите Tab, если такая команда только одна оболочка ее дополнит. Если доступно несколько вариантов, нажмите два раза Tab чтобы их увидеть;
  • Стрелка вверх — предыдущая команда в истории;
  • Стрелка вниз — следующая команда в истории;
  • Ctrl+R — поиск по истории. Просто нажмите эту кнопку и начните вводить нужную команду;
  • Ctrl+G — выйти из режима поиска;
  • Alt+. — предыдущее слово последней команды;
  • Ctrl+L — очистить вывод терминала;
  • Ctrl+A — перейти в начало строки;
  • Ctrl+E — в конец строки;
  • Ctrl+K — удалить символы начиная от курсора и к концу команды;
  • Ctrl+U — удалить символы от курсора до начала команды;
  • Ctrl+W — удалить все символы этого слова слева;
  • Ctrl+Y — удалить все символы этого слова справа;
  • Ctrl+S — остановить вывод на экран;
  • Ctrl+Q — возобновить вывод на экран.

Это все основные сочетания клавиш, которые вам понадобятся чтобы пользоваться bash. Конечно, существуют и другие, но эти основные.

Выводы

В этой статье мы рассмотрели как пользоваться Bash. Как применять основные возможности оболочки, как выполнять команды и какие бывают основные горячие клавиши, этой информации должно быть вполне достаточно новичкам для того, чтобы освоить на начальном уровне эту оболочку. Надеюсь, эта информация была полезной для вас.

На завершение видео по теме от Акцент профи:

 

Команда ls – просмотр каталога. Курс «Введение в Linux и Bash»

Команда ls используется в командной оболочке Linux для вывода содержимого каталогов и информации о файлах. Кроме утилиты ls, есть схожие с ней dir и vdir, отличающиеся поведением по-умолчанию.

В качестве аргументов ls принимает адреса каталогов или файлов. Если их не передавать, то будет выведено содержимое текущей папки.

Указав адрес или адреса других каталогов, можно посмотреть их содержимое.

Обратите внимание, что в случае команды ls смены текущего каталога не происходит, как при использовании cd. Bash лишь выводит нам файлы и папки запрашиваемого каталога. Если нужно сразу просмотреть несколько каталогов, их указывают простым перечислением.

У программы ls есть много ключей, позволяющих получать о файлах более подробную информацию, а также выводить ее в различных форматах. Информацию по всем ключам можно получить с помощью команды ls --help. Самым используемым ключом является -l, благодаря которому выводится подробная информация об объектах.

В первой строке указано общее количество блоков дискового пространства, которое занимают файлы просматриваемого каталога. В данном случае один блок соответствует 1024-м байтам, или 1-му килобайту.

В описании каждого файла первый символ указывает на тип файлового объекта, далее идут права (rwxrwxrwx). О типах файлов в Unix-подобных ОС мы уже говорили, о правах будет сказано позже. В примере выше имеется две директории (d), один именованный канал (p) и два обычных файла (-).

Во втором столбце числом указывается количество жестких ссылок для файлов. Что значат числа в этом столбце для каталогов, непонятно. Далее идут имена владельца, группы, размер, дата последнего изменения и имя файла. Размер указан в байтах, но с помощью ключа -h можно получить более читаемый формат:

Ключ -a позволяет увидеть скрытые файлы:

Здесь также используется ключ -1, чтобы вывод был в столбик. Кроме скрытого файла .iamhidden мы видим имена текущего каталога (.) и родительского (..). Если они не нужны, вместо -a употребляют -A.

Если требуется просмотреть не только сам каталог, но и вложенные в него папки, используется ключ -R:

В отличие от cd, команде ls можно передавать не только имена каталогов, но и файлов. Например, когда нужно получить информацию о конкретном файле или группе файлов.

На скрине во второй команде используется шаблон. О шаблонах мы поговорим позже.

Задание

По-умолчанию ls сортирует файлы по алфавиту. С помощью справочной системы Linux узнайте, как сортировать файлы по размеру и времени изменения.

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

Команды Linux: оболочка BASH

Что такое Bash?

Bash — это командный интерпретатор, получивший большую популярность в юних подобных системах. Когда вы вводите команду в консоль, например mkdir, интерпретатор Bash преобразует эту команду в низкоуровневый язык, в результате чего, у вас создается новый каталог.

 

 

Знаете ли, что в unix подобных операционных системах (ubuntu, debian, freebsd, centos и других), принято называть “папки” каталогами. 

 

Основные команды Bash

 

Команда CD

Если вы хотите перемещаться в терминале линукс по каталогам, вам нужно использовать команду cd.

Для того чтобы переместиться в ваш домашний каталог, вам нужно выполнить команду:

 

cd /home/YOUR_USER_NAME или проще: cd ~

 

Для того, чтобы перейти в каталог на уровень выше, выполните команду cd..

 

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

Вместо этого, вы можете ввести только часть букве free и нажат на клавишу tab, и интерпретатор bash самостоятельно дополнит команду. 

 

Команда CAT

Для того, чтобы посмотреть содержимое какого нибудь файла, например hosting.txt, вы можете воспользоваться командой cat. Пример:

 

cat hosting.txt

 

Команда GREP

Очень полезную функцию grep можно использовать в ситуации, когда вы хотите посмотреть логи доступа на сайт с определенными данными. Например,  вы хотите посмотреть чем занимался на вашем сайте пользователь с ip адресом 10.23.11.14. Чтобы это сделать нужно ввести команду:

 

cat /var/log/apache2/access.log | grep 10.23.11.14

В результате запроса вы увидите данные только по пользователю с ip адреса 10.23.11.14

 

Команда TAIL

Tail — это очень полезная команда линукс, с ее помощью можно в реальном времени смотреть изменяемые файлы, например те же логи apache, или логи доступа auth. log к серверу.
Для того, чтобы просматривать логи в реальном времени, нужно ввести команду: 

 

tail -f /var/log/apache2/access.ru

 

Команда SSH

SSH — это протокол подключения к серверу. Для того, чтобы подключиться к серверу по ssh, введите команду в формате:

 

ssh USER@SERVERIP и нажмите enter. 

И если ваш сервер поддерживает подключение по ssh, вам нужно будет ввести пароль и вы попадете на нужный вам сервер в оболочку Bash или оболочку, которая настроена по умолчанию на вашем сервере.

Стандартный порт SSH — 22. Многие администраторы, для того, чтобы немного обезопасить сервер закрывают доступ к ssh через порт 22, а открывают альтернативный порт, например 2231. 

Если ваш сервер находиться на не стандартном порте 22, а на порте к примеру 2231, тогда команда подключения через ssh к серверу будет выглядеть так:

 

ssh USER@SERVERIP -p2231

 

Как изменить права на файл (chmod)

У файлом, как и у каталогов, есть права и владельцы эти файлов. Для того, чтобы изменить права на файл .htaccess вашего сайта введите команду:

 

chmod 644 .htaccess

Командой для имения прав можно воспользоваться и в другом случае, когда вам нужно изменить права на каталог, подкаталоги и файлы в них. Для этого введите опцию к команде chmod, -R.

Пример команды:

chmod -R 775 catalog

 

Как получить root права в linux и выполнять команды от root. Команда sudo.

Для получения root прав, без смены пользователя, можно воспользоваться командой sudo перед основной командой. Пример команды sudo:

sudo less /etc/php5/apache2/php.ini

 

Команда сменить владельца файла или каталога (chown и sudo)

У файлов и у каталогов есть владельцы. Если вы зашли под пользователем root и создали файл backup.sh, затем разлогинились и зашли под обычным пользователем, например под пользователем john, вы не сможете обратиться к этому файлу, т. к. у файла backup.sh владелец пользователь root. 

Для смены владельца файла или каталога, нужно воспользоваться двумя командами: sudo и chown:

sudo chown john:john backup.sh затем enter и введите пароль для root и снова enter.

Команда sudo позволит без входа пол пользователем root, выполнить команду от root.
jonh — это ваш пользователь, второй john — это группа пользователя john (может быть любой).

 

Резюме

В данной статье мы рассмотрели несколько полезных команд оболочки Bash в Linux и Unix подобных системах. Эти команды вам могут пригодиться для настройки собственного VDS сервера, например от хостинга Таймвеб. 

 

В следующих статьях мы рассмотрим не менее полезные команды оболочки bash, познакомимся с консольным редактором nano и vim, файловыми менеджером mc и многими другими. 



Читайте также


Все материалы с сайта wh-db. com и ru.wh-db.com защищены авторским правом. Копирование, публикация, продажа и распространение материала строго запрещены.

Урок 2. Основные bash команды для работы в терминале

Работа в командной строке очень важна в Linux. Во-первых, система не всегда имеет графическую оболочку. Во-вторых, многие задачи легче и быстрее выполнить в терминале, чем в графической оболочке.

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

Наиболее распространенные интерпретаторы Shell и Bash. Bash более мощный интерпретатор, поэтому по умолчанию во многих системах запускается Bash. 

Bash имеет свои встроенные команды, кроме того пользователи могут создавать свои собственные команды.  

При входе пользователя в систему необходимо авторизоваться, то есть ввести логин и пароль. Причем в системах Linux  введенный пароль не отображается. После успешной авторизации появляется строка следующего вида:

Любой пользователь при входе в систему попадает в свой родной каталог, который находится в каталоге /home. 

Рассмотрим некоторые команды, чтобы понять как работает система. 

Формат ввода команд следующий: 

Команда  [необязательные опции] опции [необязательный аргумент] аргумент

 

Некоторые команды используются с опциями и аргументами, некоторые — вообще работают без них. 

Опции бывают одно буквенными либо целыми словами. Перед одно буквенными опциями всегда стоит дефис -, а перед опциями-словами — уже два дефиса. 

Опции предназначены для выполнения дополнительных действий и у каждой команды они разные, однако некоторые могут совпадать. 

В качестве аргументов выступают названия файлов или каталогов.

 

 

Базовые команды 

ls — отображение содержимого текущего каталога

ls /каталог — отображение файлов и каталогов в указанном каталоге

ls -a или ls —all — отображение скрытых файлов и каталогов

 

 

На рисунке выше видно, что некоторые файлы начинаются с точки. В линуксе точкой обозначаются скрытые файлы и каталоги.

 

ls -F или ls —classify  — отображение типа файла

Как видно выше некоторые файлы заканчиваются специальными символами. Данные символы обозначают определенный тип файлов. В таблице ниже приводится описание данных символов:








Символ

Обозначение

*

Исполняемый файл

/

Каталог

=

Сокет

@

Ссылка

|

FIFO

без знака

Обычный файл (текстовый, медиа  т. д.)

Однобуквенные опции можно объединять, в том время как опции-слова нельзя. 

Например, 

ls -aF  — отображает абсолютно все файлы, а также их тип.

cat файл — просмотр текстового документа

cat не самая удобная команда, поэтому можно воспользоваться командой less, которая позволяет постранично просматривать содержимое документа. В таблице ниже указаны какие клавиши можно использовать при работе с командой less











Название клавиш

Действие

<PageDown> или пробел

Перемещение на одну страницу вперед

<PageUp>

Перемещение на одну страницу назад

<Enter> или стрелка вниз

Перемещение на одну строку вперед

Стрелка вверх

Перемещение на одну строку назад

Стрелка влево

Прокрутка страницы влево

Стрелка вправо

Прокрутка страницы вправо

g или p

Перемещение вперед к концу файла

1g

Перемещение назад к началу файла

q

Завершение работы команды less

pwd — определение текущего каталога

cd  /каталог — переход в указанный каталог

cd ~  — возврат в свой домашний каталог.  

cd .. — переход в родительский каталог текущего каталога.

 

Следует помнить, что с помощью команд также запускаются уже установленные утилиты (программы), которые находятся в каталогах /bin, /sbin, /usr/bin, /usr/sbin.

Причем название команд очень часто совпадает с названием каталогов самих утилит в упомянутых выше каталогах. 

Например, следующие команды вызывают соответствующие утилиты, которые находятся в каталогах /bin, /sbin: 

date — вывод текущей даты

cal — вывод календаря

Вызов справки 

Linux содержит множество команд и опций и все запомнить невозможно. Поэтому во всех дистрибутивах уже имеется встроенное руководство пользователя, где можно найти информацию по всем командам. 

Руководство man  состоит из следующих разделов: 

  1. Команды пользовательского уровня
  2. Системные вызовы и коды ошибок ядра
  3. Библиотечные функции
  4. Драйверы устройств и сетевые протоколы
  5. Форматы файлов
  6. Игры и демонстрационные программы
  7. Различные документы и файлы
  8. Команды системного администрирования
  9. Внутренние интерфейсы и спецификации ядра

 

Формат обращения к руководству выглядит так: 

man [номер раздела] название_команды

 

Номер раздела указывается, если необходима информация о команде с конкретного раздела, потому что иногда одна и та же команда может быть сразу в нескольких разделах.  

Например, 

man ls — отображение подробной информации о команде ls

При вызове man запускается программа less для постраничного просмотра файла. 

Как работать с less ты уже знаешь.

man date — отображение подробной информации о команде date

С помощью man можно узнать какие опции поддерживаются запрашиваемой командой. 

Кроме того, можно воспользоваться командой whatis, чтобы получить краткое описание команды:

whatis ls — краткое описание команды ls

Альтернативой команды man может служить команда info: 

info cd — краткое описание команды cd

А что если я не помню название команды, но помню что она делает?

Для этого есть команда apropos ключевое_слово

Например, 

apropos content — поиск команд по ключевому слову content

 

 

Слева отображаются команды, а справа — их описание. В каждом описании присутствует ключевое слово content.

apropos day — поиск команд по ключевому слову day

Необязательно запоминать все команды — достаточно понять как устроено встроенное руководство. Кроме того, те, кто не знают английский, могут воспользоваться Google.

 

Комментарии для сайта Cackle

Сценарии Bash — примеры Linux

В этой статье поговорим о сценариях bash, на примерах вы поймете насколько они удобны и как ими пользоваться.

Прежде чем перейти к заданиям, которых у нас сегодня 12, нужно рассказать как запускать сценарии: итак, каждый сценарий мы будем помещать в файл с расширением .sh (это расширение сценариев в оболочке bash).

Вызывается этот файл в командной строке с помощью следующей конструкции: ./primer.sh , но прежде чем запускать этот файл, нужно установить права доступа на него: chmod a+rx primer.sh, и только после этого запускать файл в командной строке.

Программируем в командной строке

  1. Определите есть ли в текстовом файле слово root, выведите только ответ содержится или нет.
    Создаем файл pr1.sh в который помещаем следующий код:
    #!/bin/bash
    FILE=$1
    if grep -q root $FILE
    then
    echo "Содержится"
    else
    echo "Не содержится"
    fi
    

    Далее в командной строке меняем права доступа:

    chmod a+rx pr1.sh
    

    Затем вызываем этот скрипт с 1 параметром(имя файла):
    ./pr1.sh filename
    Для следующих файлов нужно проделать тоже самое(за исключением параметров, они у каждого сценария разные)

  2. Определите совпадают ли первые строки двух текстовых файлов и выведите соответствующее сообщение.
    #!/bin/bash
    FILE1=$1
    FILE2=$2
    str1=$(head -n 1 $FILE1)
    str2=$(head -n 1 $FILE2)
    if [ "$str1" = "$str2" ]
    then echo "Равно"
    else echo "Не Равно"
    fi
    

    Надеюсь, всем очевидно, что этот сценарий вызывается с 2 параметрами:
    ./pr2.sh filename1 filename2

  3. Вычислите и выведите первые 7 значений факториала.
    #!/bin/bash
    
    n=1
    for A in 1 2 3 4 5 6 7
    do
         : $((n=$n*$A))
    echo "$n "
    done
    
  4. Выведите 25 случайных чисел в форме квадрата 5Х5.
    #!/bin/bash
    n=1
    for A in 1 2 3 4 5
    do
        for B in 1 2 3 4 5
        do
            n=$RANDOM
            echo -n $n'   '
        done
        echo ' '
    done
    
  5. Текстовые файлы

  6. Используя цикл, создайте 10 файлов (rating1…rating10) для студентов в формате: <фамилия> <оценка 1> <оценка 2> … <оценка 100>.
    #!/bin/bash
    i=0
    j=0
    until [ "$i" = 10 ]
    do
        j=0
        echo -n ФИО' -> ' >> rating$(echo $i).txt
        while [ $j -lt 100 ]
        do
        #echo "$i"
        #echo "$j"
        echo -n оценка$j'   ' >> rating$(echo $i).txt
        let "j+=1"
        done
    let "i+=1"
    done
    
  7. Создайте один итоговый файл в формате один студент – одна строка. <фамилия> <оценка1> <оценка 2> … <оценка 100>
    #!/bin/bash
    paste -s rating{0..9}.txt > itog.txt
    
  8. Есть 10 файлов. В каждом файле есть строки с заголовком и соответствующими данными под ними. Заголовки во всех файлах одинаковые, данные – разные.
    Заголовок 1
    Данные 1.1
    Заголовок 2
    Данные 1.2
    ……
    Например:file1.txt
    >hg19
    aaaaaaaa
    >mm9
    bbbbbbb
    file2.txt
    >hg19
    cccccccc
    >mm9
    dddddddНадо создать результирующий файл chr.fasta, в котором под заголовками будут строки с данными, последовательно склеенными из всех 10 файлов.
    Заголовок 1
    Данные 1.1 Данные 2.1 Данные 3.1 …
    Заголовок 2
    Данные 1.2 Данные 2.2 Данные 3.2 … …… Файлы прилагаются в архиве.
    #!/bin/bash
    #cd files4lab4
    paste -d"\n" chr{1..10}.fasta > chr.fasta
    uniq itog.txt
    
  9. Сценарии bash

  10. Измените скрипт (Пример case, лекция 10) так чтобы продолжал ожидать ввод клавиш, выводя результаты каждого нажатия, пока не нажата клавиша “X”.
    #!/bin/bash
    # Проверка диапазонов символов
    echo; echo "Нажмите клавишу и затем нажмите Return (Enter)."
    read Keypress
    while [ $Keypress != 'X' ]
    do
    case "$Keypress" in
    [[:lower:]] ) echo "Буква в нижнем регистре";;
    [[:upper:]] ) echo "Буква в верхнем регистре";;
    [0-9] ) echo "Цифра";;
    * ) echo "Знак пунктуации, пробел или что-то другое";;
    esac
    read Keypress
    done
    
  11. Напишите сценарий, проверяющий имя текущего каталога и выводящий сообщение об ошибке, если оно короче пяти символов.
    #!/bin/bash
    n=$(pwd)
    l=${#n}
    echo $n
    echo $l
    if [ "$l" -lt 5 ]
    then
    echo "Ошибка"
    else
    echo "Всё ок посоны"
    fi
    
  12. Требуется проверить, является ли файл обычным или он является каталогом. Если это обычный файл, то сценарий должен выводить имя файла и его размер. В случае, если размер файла превышает килобайт, то размер должен выводиться в килобайтах. Если размер превышает мегабайт — в мегабайтах. Ознакомьтесь с командой du.
    #!/bin/bash
    file=$1
    declare -i siz
    if $(test -f $file)
    then
    siz=$(du -b $file | cut -f1)
    
    
    
    if  (( "$siz" > 1024 && "$siz" < 1024*1024 ))
    then
    echo $(du -k $file)
    fi
    
    if (( "$siz" < 1024 ))
    then
    echo $siz
    fi
    
    if (( siz > 1024*1024 ))
    then
    echo $(du -m $file)
    fi
    
    fi
    
  13. Напишите сценарий, выводящий посекундно в цикле имена файлов текущего каталога и их порядковый номер.
    #!/bin/bash
    c=0
    for file in `find * -maxdepth 0 -type f`
    do echo "$c - $file"
    c=$[$c+1]
    sleep 1
    done
    
  14. Напишите сценарий, который генерирует тысячу файлов 1. txt …. 1000.txt, и в каждый файл записывает подряд 100 чисел N, где N = порядковый номер файла. Затем скрипт должен соединить в один файл все файлы с четными номерами (even.txt) и в другой файл – все файлы с нечетными номерами (odd.txt).
    !/bin/bash
    i=0
    j=0
    until [ "$i" = 1000 ]
    do
        j=0
        while [ $j -lt 100 ]
        do
        #echo "$i"
        #echo "$j"
        echo $i >> file-$(echo $i).txt
        let "j+=1"
        done
    let "i+=1"
    done
    paste -s file*{0,2,4,6,8}.txt > even.txt
    paste -s file*{1,3,5,7,9}.txt > odd.txt
    

Просмотреть исходники
Файлы к 7 заданию
Не забывайте оставлять свои комментарии!

Поделиться ссылкой:

Похожее

Получение исходного каталога скрипта Bash изнутри

команда dirname является самой простой, просто разбирая путь до имени файла с переменной $0 (имя скрипта):

dirname ""

, а как Мэтт б указал, возвращаемый путь отличается в зависимости от того, как вызывается скрипт. pwd не выполняет эту работу, потому что это говорит вам только о текущем каталоге, а не о том, в каком каталоге находится скрипт. Кроме того, если выполняется символическая ссылка на скрипт ,вы получите (возможно, относительную) путь к тому, где находится ссылка, а не фактический скрипт.

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

dirname "$(readlink -f "")"

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

вот сценарий, демонстрирующий каждый из них, whatdir.sh:

#!/bin/bash
echo "pwd: `pwd`"
echo "$0: "
echo "basename: `basename `"
echo "dirname: `dirname `"
echo "dirname/readlink: $(dirname $(readlink -f ))"

запуск этого скрипта в моем домашнем каталоге, используя относительный путь:

>>>$ . /whatdir.sh 
pwd: /Users/phatblat
: ./whatdir.sh
basename: whatdir.sh
dirname: .
dirname/readlink: /Users/phatblat

снова, но используя полный путь к скрипту:

>>>$ /Users/phatblat/whatdir.sh 
pwd: /Users/phatblat
: /Users/phatblat/whatdir.sh
basename: whatdir.sh
dirname: /Users/phatblat
dirname/readlink: /Users/phatblat

теперь изменение каталогов:

>>>$ cd /tmp
>>>$ ~/whatdir.sh 
pwd: /tmp
: /Users/phatblat/whatdir.sh
basename: whatdir.sh
dirname: /Users/phatblat
dirname/readlink: /Users/phatblat

и, наконец, используя символическую ссылку, чтобы выполнить скрипт:

>>>$ ln -s ~/whatdir.sh whatdirlink.sh
>>>$ ./whatdirlink.sh 
pwd: /tmp
: ./whatdirlink.sh
basename: whatdirlink.sh
dirname: .
dirname/readlink: /Users/phatblat

cd Man Page — Linux

cd Man Page — Linux — SS64.com

Change Directory — изменить текущую рабочую
каталог в определенную папку.

 Синтаксис
      cd [ Опции ] [ Каталог ]

Ключ
    -P Не переходить по символическим ссылкам
    -L Переходить по символическим ссылкам (по умолчанию) 

Если задано каталог , изменяет рабочий каталог оболочки на каталог . Если нет, меняется на HOME (переменная оболочки).

$ cd — вернется к последней просматриваемой папке. Это не складывается, поэтому при многократном выпуске CD будет просто переключаться между двумя каталогами, для дальнейшего возврата используйте pushd / popd. Предыдущий
каталог — эквивалент $ OLDPWD

./ или просто. это сокращение для текущего каталога.

CDPATH

Переменная оболочки CDPATH обеспечивает полезную функцию, эта переменная похожа на PATH, но задает список путей, по которым cd будет искать подкаталоги.CDPATH можно задать в командной строке для использования в текущем сеансе или в .bash_profile для постоянного использования, список путей должен быть разделен двоеточием (:)

$ CDPATH = «. : ~: ~ / Библиотека»

Если dir начинается с косой черты (/), то CDPATH не используется.

Если используется непустое имя каталога из CDPATH или если — является первым аргументом и изменение каталога прошло успешно, в стандартный вывод записывается абсолютный путь к новому рабочему каталогу.

Статус возврата равен нулю, если каталог успешно изменен, иначе ненулевой.

Это встроенная оболочка BASH для отображения вашего локального синтаксиса из приглашения типа bash: help cd

Примеры

Переместите в папку sybase:
$ cd / usr / local / sybase

долл. США
/ usr / local / sybase

Переход в другую папку:
$ cd / var / log

долл. США
/ var / log

Быстро вернуться:
$ cd —

долл. США
/ usr / local / sybase

Перейти на одну папку вверх:
$ cd..

долл. США
/ usr / local /

$ cd (возврат в домашнюю папку)

Перейти в каталог fred внутри текущего каталога:
$ cd . /fred

«Я считаю, что развлечение может быть искусством, и может
стать искусством, но если вы решили заниматься искусством, вы идиот »~ Стив Мартин

Связанные команды linux:

popd — восстановить предыдущее значение текущего каталога.
pushd — Сохранить и затем изменить текущий каталог.
pwd — Рабочий каталог печати.

Эквивалентная команда Windows:
CD — Изменить каталог.


Авторские права © 1999-2020 SS64.com
Некоторые права защищены

bash

Интернет-:

| PHP
| JavaScript
| SQL

| DHTML
| Smarty
| SVG / VML JavaScript

| баш
|

1.
1.
Оболочка?
2. Ша-Банг
2.1.
2.2.
2.
3.
4..
.
4.1.
4.2.
4.3. Баш
4.4.
5.
6.
7.
7.1.
7.2.
7.3.
7.4.
если / то
7.5.
8.
8.1.
8,2.
3.
9.
9.1.
9.2.
9.3.
9,4. : заявить наборный
9,5.
9,6. $ RANDOM:
9,7.
10.
10.1.
10.2.
10.3.
10.4.
11.
11. 1.
12.,
12.1.
12.2.
12,3.
12,4.
12,5.
12.6.
12,7.
12,8.
12.9.
13.
14.
15.
16.
/
16,1. исполнительный
16.2.
16,3.
17.
4.
18.
18.1.
18,2. Глобус —
19., Оболочки
20.
21.
22.
22.1.
22.2.
23.
24.
25.
26.
27. / dev / proc
27,1. / dev
27.2. / proc
28. / dev / zero / dev / null
29.
30.
()
31.
32.
32,1.
33.
33,1.
33.2. —
33,3. :
33,4.
33,5. «»
33,6.
33,7.
33,8.
33,9.
33.10.
Окна
34. Баш, 2
35.
35,1.
35,2.
35,3. ,
35.3.1.
35. 3.2.
35,4.
А.
Б. Сед Авк
Б.1. Sed
B.2. AWK
с.,
Д.
— —
E.
F.
Г. .bashrc
H. (* .bat) DOS
I.
I.1.
I.2.
J.
11-1.
30-1. Баш
33-1.
побег-
Б-1. sed
Б-2. sed
С-1. «»
Н-1. //
DOS
Н-2. ДОС
UNIX

команд Bash для управления каталогами и файлами | Наука о данных о Земле

  • Учебники
  • Курсы
  • Семинары
  • Инструменты
  • Блог
  • О

    Зарегистрируйтесь сейчас! Учить больше.

    1. Home
    2. /

    3. Courses /
    4. Введение в науку о данных о Земле /
    5. Открытая воспроизводимая наука /
    6. Bash /
    7. Команды Bash для управления каталогами и файлами