- How Does PATH Work in Bash
- Environment variable and $PATH
- Modifying PATH
- Adding directory to PATH
- Removing directory from PATH
- Final thoughts
- About the author
- Sidratul Muntaha
- Переменная PATH в Linux
- Переменная PATH в Linux
- Выводы
- Bash get filename from given path on Linux or Unix
- Bash get filename from given path
- Examples
- How to remove extesnion from filenames
- Extract filename and extension in Bash
- Работа с файлами и каталогами в командной оболочке Bash
- Работа с файлами и каталогами
- Команды для каталогов
- Список основных команд
- Команды для файлов
- Список основных команд
- Перенаправление данных
- Генерация имён файлов в Bash
How Does PATH Work in Bash
Here come the environment variables into play, especially the PATH variable. This variable is responsible for telling bash where to look for those programs. Let’s check out how PATH works and how to view/modify PATH.
Environment variable and $PATH
In the shell terminology, the “environment” is an area that the shell builds every time it starts a session. To manage the environment, there are “environment variables” denoting different parts of the environment. The value of the variable can be string, directory location, value or others.
PATH is such an environment variable that keeps track of certain directories. By default, the PATH variable contains the following locations.
- /usr/bin
- /usr/sbin
- /usr/local/bin
- /usr/local/sbin
- /bin
- /sbin
- /snap/bin (if Snap is installed)
Want to see what directories are currently registered under PATH? Fire up a terminal and run the following command.
Here, the $ sign is to denote a variable. The echo command prints the value of the PATH variable.
Now, why this specific environment variable is so important? It’s because how shell and the system as a whole treats it. The PATH variable stores where executables may be found. Whenever any command is run, the shell looks up the PATH directories for the target executable file and runs it.
For example, let’s test with the echo command. Here, I’m running an echo command.
Where’s the executable file of echo? Run the next command to find out.
As we can see, the echo executable is located at /usr/bin/echo. Where’s which located? Let’s find out.
It’s also located at /usr/bin/which. Most of the command tools are located under the /usr/bin directory. Here, bash is consulting PATH for the locations to search for the executable(s) of a command.
Modifying PATH
Before we modify the value of PATH, it’s important to understand its structure. Run the command again to check the value of PATH.
Notice that each of the directories is separated by a “:” sign.
Adding directory to PATH
To add a custom directory to PATH, we’ll be taking the help of the bashrc file. It’s a special bash script that bash loads every time a new bash session starts. Note that the bashrc file is unique to every single user in the Linux system.
Open the bashrc file in a text editor. If the bashrc file isn’t present already, then the editor will create it automatically.
Here, it’s the default bashrc that comes with Ubuntu. Go to the last of the file (if it exists) and add the following line.
Here, the new value of PATH variable will be the old variable along with the new directory we just added.
Save the file and tell bash to reload it.
Let’s verify whether the new path was successfully added.
Voila! PATH updated successfully! Now, bash will also search the new path for executable(s). I already have a script demo.sh on desktop. Let’s see if bash can call it without specifying the exact location.
Yup, bash can directly call it without any problem.
Removing directory from PATH
There’s no straightforward way of adding/removing directories from PATH. Let me explain.
The value of PATH is actually fixed. Then, what about the bashrc trick? Bashrc is a bash script that bash loads every time it starts a session. In bashrc, we just declared that the new value of PATH will be its default value and the user-defined directory. Now, every time bash loads, it sees that bashrc is telling to assign a new value of PATH and that’s what it does.
Similarly, if we want to remove a directory from PATH, we have to re-assign a different value of PATH in the bashrc so that every time bash starts, it uses the modified value.
Let’s have a look at this example. I’m willing to remove the directory “
/Desktop” from the PATH.
If the directory would be /home/wrong/dir, the command would look like this.
Here, the interesting part is the sed tool. Learn more about sed here and here. Long story short, using sed, we’re modifying the output of the echo command. Now, we can use this modified output to change the value of PATH.
Open bashrc in a text editor and add the following lines. I’m intentionally keeping the previous lines to prove that it’s working.
Alternatively, you can also manually set the value of PATH. It’s a laboring process but more straightforward and simple.
Here, the value of the command will be assigned to PATH. Save the file and reload bashrc.
Let’s verify the result.
The PATH value is updated!
Final thoughts
In bash, the PATH variable is an important one. Any program that runs through the bash session inherits the variable, so it’s important that PATH includes the necessary directories only. Adding more directory will only add redundancy to the system.
To see all the environment variables for bash, run this command. The first command part will return all the environment variables and the second part will sort the output in ascending order.
Want to spice up your bash experience? Bash aliases offer a unique way of speeding and spicing things up. Learn more about bash aliases.
About the author
Sidratul Muntaha
Student of CSE. I love Linux and playing with tech and gadgets. I use both Ubuntu and Linux Mint.
Источник
Переменная PATH в Linux
Когда вы запускаете программу из терминала или скрипта, то обычно пишете только имя файла программы. Однако, ОС Linux спроектирована так, что исполняемые и связанные с ними файлы программ распределяются по различным специализированным каталогам. Например, библиотеки устанавливаются в /lib или /usr/lib, конфигурационные файлы в /etc, а исполняемые файлы в /sbin/, /usr/bin или /bin.
Таких местоположений несколько. Откуда операционная система знает где искать требуемую программу или её компонент? Всё просто — для этого используется переменная PATH. Эта переменная позволяет существенно сократить длину набираемых команд в терминале или в скрипте, освобождая от необходимости каждый раз указывать полные пути к требуемым файлам. В этой статье мы разберёмся зачем нужна переменная PATH Linux, а также как добавить к её значению имена своих пользовательских каталогов.
Переменная PATH в Linux
Для того, чтобы посмотреть содержимое переменной PATH в Linux, выполните в терминале команду:
На экране появится перечень папок, разделённых двоеточием. Алгоритм поиска пути к требуемой программе при её запуске довольно прост. Сначала ОС ищет исполняемый файл с заданным именем в текущей папке. Если находит, запускает на выполнение, если нет, проверяет каталоги, перечисленные в переменной PATH, в установленном там порядке. Таким образом, добавив свои папки к содержимому этой переменной, вы добавляете новые места размещения исполняемых и связанных с ними файлов.
Для того, чтобы добавить новый путь к переменной PATH, можно воспользоваться командой export. Например, давайте добавим к значению переменной PATH папку/opt/local/bin. Для того, чтобы не перезаписать имеющееся значение переменной PATH новым, нужно именно добавить (дописать) это новое значение к уже имеющемуся, не забыв о разделителе-двоеточии:
Теперь мы можем убедиться, что в переменной PATH содержится также и имя этой, добавленной нами, папки:
Вы уже знаете как в Linux добавить имя требуемой папки в переменную PATH, но есть одна проблема — после перезагрузки компьютера или открытия нового сеанса терминала все изменения пропадут, ваша переменная PATH будет иметь то же значение, что и раньше. Для того, чтобы этого не произошло, нужно закрепить новое текущее значение переменной PATH в конфигурационном системном файле.
В ОС Ubuntu значение переменной PATH содержится в файле /etc/environment, в некоторых других дистрибутивах её также можно найти и в файле /etc/profile. Вы можете открыть файл /etc/environment и вручную дописать туда нужное значение:
sudo vi /etc/environment
Можно поступить и иначе. Содержимое файла .bashrc выполняется при каждом запуске оболочки Bash. Если добавить в конец файла команду export, то для каждой загружаемой оболочки будет автоматически выполняться добавление имени требуемой папки в переменную PATH, но только для текущего пользователя:
Выводы
В этой статье мы рассмотрели вопрос о том, зачем нужна переменная окружения PATH в Linux и как добавлять к её значению новые пути поиска исполняемых и связанных с ними файлов. Как видите, всё делается достаточно просто. Таким образом вы можете добавить столько папок для поиска и хранения исполняемых файлов, сколько вам требуется.
Источник
Bash get filename from given path on Linux or Unix
Bash get filename from given path
The basename command strip directory and suffix from filenames. The syntax is pretty simple:
basename /path/to/file
basename /path/to/file suffix
Examples
Let us see how to extract a filename from given file such as /bin/ls. Type the following basename command:
basename /bin/ls
You can pass multiple arguments using the -a option as follows:
basename -a /bin/date /sbin/useradd /nas04/nfs/nixcraft/data.tar.gz
Store outputs in a shell variable, run:
How to remove extesnion from filenames
Remove .gz from backups.tar.gz file and get backups.tar only:
basename /backups/14-nov-2019/backups.tar.gz .gz
OR
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Extract filename and extension in Bash
From the bash man page:
The ‘$’ character introduces parameter expansion, command substitution, or arithmetic expansion. The parameter name or symbol to be expanded may be enclosed in braces, which are optional but serve to protect the variable to be expanded from characters immediately following it which could be interpreted as part of the name. When braces are used, the matching ending brace is the first
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
Работа с файлами и каталогами в командной оболочке Bash
Содержание:
Bash (Bourne Again Shell) — это командная оболочка, использующаяся в таких UNIX-системах, как Linux или MacOS. Она позволяет управлять компонентами ОС с помощью определённых запросов, которые вводятся в консоль или берутся из скрипта.
Как новичкам, так и опытным пользователям будет полезно узнать или вспомнить основные команды Bash для управления такими важными аспектами системы, как файлы и каталоги. Этот вопрос будет разобран на примере ОС Linux.
Работа с файлами и каталогами
Работа с файлами и каталогами в Linux через Bash осуществляется с учетом иерархического принципа их классификации. Иерархическая структура файловой системы Linux напоминает «дерево». Существует корневой каталог, который является начальным для всей ОС, а в нём, соответственно, масса других подкаталогов.
Такой же принцип используется для командной строки. Файлы и каталоги берут начало из корневого узла « / », который является начальной точкой для всех элементов.
Ниже представлен стандартный перечень подкаталогов, встречающийся в большинстве UNIX-систем.
Каталог | Содержимое |
/bin | Бинарные версии файлов (в том числе для командной оболочки). |
/dev | Псевдофайлы, представляющие собой аппаратные средства, подключённые к устройству. |
/etc | Большая часть конфигурационных файлов. |
/lib | Библиотеки для системных приложений. |
/opt | Необязательные компоненты системы или приложения. |
/tmp | Временные файлы. |
/usr | Пользовательские компоненты. |
/var | Файлы приложений (в том числе системные журналы, кэши и т. д.). |
Команды для каталогов
Существуют конкретные команды, предназначенные для работы с каталогами. Далее будут приведены самые важные из них.
Список основных команд
- pwd — вывод полного пути к текущему каталогу.
- cd — переход с текущего каталога на домашний пользовательский.
- cd dirname — перейти в папку «dirname».
- cd / — переход по директориям относительно корневого каталога.
- ls — просмотреть список файлов в каталоге.
- ls -d */ — просмотреть список папок в текущем каталоге.
- ls dirname — вывод содержимого каталога «dirname» на экран.
- mkdir dirname — создать папку с наименованием «dirname».
- rmdir dirname — удалить папку «dirname».
- rm -rf dirname — удалить папку «dirname» с её содержимым (опция -r) без предупреждения пользователя (опция -f).
- du -h dirname — размер папки «dirname».
Помимо этого, существуют полезные сокращения. Например, текущая директория обозначается с помощью « . ». Знак « .. » позволяет задействовать родительский каталог. Для представления домашней директории используется «
Пример использования сокращений:
Команды для файлов
Далее приведены основные команды для осуществления взаимодействия с файлами. Начинающим полезно опробовать каждую из них, чтобы лучше понять принцип работы утилит.
Список основных команд
- touchfile — создать файл.
- realpath file — узнать абсолютный путь к файлу.
- stat file1 — получение информации о «file1» (размер файла, дата создания файла и т. д.) и проверка существования файла.
- cat > file — запись в файл.
- catfile — чтение файла.
- echo текст >> file — дописать в файл текст.
- find file — поиск файла.
- mcedit file — редактирование файла (также можно использовать редакторы Nano, Vim и другие).
- cat file1 file2 > file12 — объединение файлов.
- sh filename — запустить файл со сценарием Bash.
- ./filename — запустить исполняемый файл.
- cp file1 file2 — копировать файл «file1» с переименованием на «file2». Произойдёт замена файлов, если элемент с таким же названием существует.
- mv file1 file2 — переименовать файл «file1» в «file2».
- mv filename dirname — переместить файл «filename» в каталог «dirname».
- less filename — открыть файл в окне терминала.
- file filename — определение типа файла.
- head filename — вывод нескольких начальных строк из файла на экран (построчное чтение файла). По умолчанию строк 10.
- tail filename — вывод нескольких конечных строк из файла на экран.
- diff file1 file2 — сравнение файлов.
- grep text filename — поиск и вывод строк из файла, содержащих «text».
- rm filename — удалить файл.
Подробную информацию об утилитах можно получить, воспользовавшись справочной службой: « man ».
Пример получения справки по работе с программой rm: « man rm ».
Перенаправление данных
Перенаправление ввода-вывода в файл осуществляется с помощью специальных знаков. Для вывода используются « > » и « >> », а для ввода — « ».
Пример вывода « ls » в файл, а не на экран:
Новый файл создаётся автоматически. В случае существования элемента с таким же наименованием, произойдёт перезапись. Чтобы этого избежать, необходимо использовать « >> ». Тогда данные будут дописываться в документ.
Пример ввода, при котором информация выносится из файла с помощью команды « sort »:
Генерация имён файлов в Bash
Иногда пользователю приходится работать с несколькими файлами одновременно, например, при выполнении переноса документов в другой каталог. Это станет проблемой, если элементов десятки или сотни и среди них нужно отобрать определённые.
Для решения поставленной задачи можно попробовать использование шаблонного выражения, позволяющего Bash определить необходимые элементы, ориентируясь по наименованию. Этот способ упрощает управление группой файлов путём применения короткой формулировки в команде.
Итак, теперь остаётся разобраться с вопросом составления шаблонов. Сейчас будут приведены основные конструкции для осуществления генерации имён. Чаще всего для отбора файлов применяется символ: « * ». В случае использования этого знака в чистом виде, Bash выберет все элементы в каталоге без исключений.
Для примера, чтобы из этого каталога отобрать файлы: file1, file2, file3, следует воспользоваться шаблоном:
Символ звёздочки позволяет командному интерпретатору выделить все файлы, начинающиеся с «file». При этом последующая часть наименования будет проигнорирована.
Знак « * » можно использовать также в начале или с обеих сторон шаблона.
Кроме того, сгенерировать имена можно, взяв за основу расширение файла. Например:
Начни экономить на хостинге сейчас — 14 дней бесплатно!
Источник