Linux сделать файл исполняемым и запустить его из командной строки — пример командного файла
![]()
Пусть у нас есть файл с содержимым типа (запустит Наутилус с правами суперпользователя):
#!/bin/bash sudo nautilus /var/www/
- Запустите текстовый редактор.
- Последовательно запишите команды, располагая каждую команду на отдельной строке.
- Сохраните этот файл, сделайте его исполняемым, применив команду:
chmod +x имя_файла.
chmod +x runme
Как запустить в командной строке
Для запуска в командной строке просто перейдите в папку с файлом и наберите команду вида:
./runme
Как запускать при двойном клике в Ubuntu
- Если вы используйте в качестве проводника Наутилус (обычно в убунту стоит именно он)
Key Words for FKN + antitotal forum (CS VSU):
- linux создание командного файла
- линукс скрипт пример
- ubuntu make file executable by double click
- ubuntu как сделать файл исполняемым
- ubuntu make executable and run it from terminal
- ubuntu make executable and run it from terminal — but stil opens in text editor like gpedit problem
- ubuntu run .sh by double click
- ubuntu запуск .sh по двойному клику
- скрипт для запуска наутилус проводника с правами супервользователя root
Как запускаются исполняемые файлы в Linux

Доброго времени, читатели моих постов о Linux!
В сегодняшней статье расскажу о том, как работают исполняемые файлы. Из моей прошлой статьи о атрибутах доступа к файлам в Linux думаю Вам будет известно, что такое полномочия выполнения (исполнения). Данное право можно установить для любого файла. Исходя из этого, можно задать вопрос: неужели любой файл можно сделать программой? Да, так и есть. В Linux является ли файл исполняемым или нет, определяется не по его расширению, как в Windows (понятие расширение файла отсутствует в файловой системе Linux), а по правам доступа. Если у файла установлено право x (выполнения), его можно запустить на выполнение.
Что происходит, когда мы пытаемся выполнить файл ? Мы пытаемся набрать имя и, может быть, путь к файлу, который пытаемся запустить в командной строке и нажимаем Enter. (если файл расположен в текущем каталоге, то необходимо набирать ./ program). В первую очередь, оболочка проверяет, а имеет ли пользователь права на исполнение этого файла? Если имеет, тогда система смотрит, а это исполняемый бинарный файл? В Linux все исполняемые бинарные файлы в начале файла имеют заголовок .ELF (Executable and Linkable Format) (напомню, что в Windows в исполняемых файлах заголовок — MZ). Если это исполняемый бинарный файл, тогда, согласно его заголовку, происходит распределение оперативной памяти, и управление передается программе.
Если файл не бинарный, тогда считается, что это текстовый файл — скрипт или сценарий. В первых двух байтах сценария обнаруживается последовательность символов #!. Если символы «#!» присутствуют, тогда всю первую строку сценария, начиная с третьего байта, ядро воспримет как команду обработки. Исполнение сценария, содержащего указанную последовательность приведет к запуску указанной после » #!» команды, последним параметром которой будет имя самого файла сценария. Например, для файлов, написанных на языке shell script, первая строка будет выглядеть так:
#! /bin/sh
Для программ, написанных на perl, так:
#! /bin/perl
Таким образом, можно написать сценарий для любой программы, пример:
[bash@localhost ]$ cat > to.sort #!/bin/sort some unsorted lines [bash@localhost ]$ chmod +x to.sort [bash@localhost ]$ ./to.sort #!/bin/sort lines some unsorted
Во всех интерпретируемых языках программирования # — это символ комментария. То есть первая строка считается комментарием и программой не выполняется. При указании интерпретатора можно писать аргументы командной строки. Например:
#! /bin/sed -f command
Если в файле в первой строке нет этих символов, тогда все зависит о программы оболочки, в которой запускается программа. Если используется bash, то он считает, что файл содержит программу, написанную на языке shell script, запускает копию себя любимого и передает этой копии файл на интерпретацию. Если в файле действительно находится программа, то он ее выполняет. Если в файле находится «Война и мир» графа Льва Николаевича Толстого, то на экране появляются сообщения об ошибках shell script: «Я не знаю оператор Пьер Безухов. Наташа Ростова — это оператор или функция?»
Если Вы желаете выполнить exe-файл, который запускали в Windows, необходимо воспользоваться таким пакетом, как Wine. Но это уже совсем другая тема.
С Уважением, Mc.Sim!
P.S. Спасибо http://www.kryukov.biz/ за исходный текст.
Другие материалы в категории основы Linux
- Текстовый редактор VIM, основы работы
- ddrescue или спасаем данные с HDD
- Резервное копирование файлов сайта по ssh
- Седьмой релиз Debian
- Использование ramdisk в Linux (ramdisk, ramfs, tmpfs) или препарирование рамдисков
- SNMP протокол (основы)
- Установка антивирусного сканера ClamAV на Debian
- HOWTO использование backports в Debian
- Конспект установки Debian на сервер
- SSH сервер на Debian
Основные команды Linux: делаем первые шаги в командной строке
![]()

Чтобы начать работать в терминале Linux, не нужно быть гуру администрирования — достаточно знать список базовых команд для навигации, поиска и работы с файлами. В этой статье мы разберём основные команды Linux и рассмотрим их функции, чтобы помочь вам освоиться в командной строке и более эффективно использовать возможности этой ОС.
- Навигация
- Поиск
- Работа с папками
- Работа с файлами
- Переименование, перемещение и копирование
Навигация
После подключения к серверу Linux вы оказываетесь в домашней директории пользователя. Чтобы узнать точный путь к вашему текущему местонахождению, воспользуйтесь командой:
Она выведет текущую рабочую директорию (print working directory).
Если вам нужно перейти в другую директорию, для этого используется команда cd (change directory) с указанием пути к нужной вам директори:
cd /home
Говоря о навигации, нельзя не упомянуть сокращения для обозначения некоторых директорий Linux:
текущая директория, в которой вы сейчас находитесь. Например, чтобы найти документ с именем hello.txt в текущей директории, можно использовать команду:
find . -name hello.txt
директория, расположенная на уровень выше текущей. Если вы находитесь в /home/user , то комбинация .. будет обозначать папку /home . То есть, чтобы вернуться на один уровень назад, достаточно выполнить команду:
домашняя директория текущего пользователя. Например, запустить скрипт some-script.sh из домашней директории, когда вы находитесь в другой, можно с помощью команды:
sh ~/some-script.sh
предыдущая посещённая директория. Представим, что вы перешли в /home , потом вам потребовалось изменить настройки в /etc . Чтобы вернуться назад, достаточно использовать команду:
Для навигации с помощью команды cd есть два формата указания пути к нужной директории: абсолютный и относительный.
Абсолютный путь — это полный путь от корневого каталога сервера «/» . Например, вот такой:
/var/www/data/username/data/www/example.com/
Также к абсолютным относятся пути, в которых используется ~ — указание на домашний каталог текущего пользователя. Например, при доступе к файлу ~/.bash_profile он всегда будет открываться из одного и того же места: вместо ~ будет использоваться значение переменной окружения $HOME, которое не меняется.
Относительный путь — это неполный путь. Он указывается относительно какого-то объекта: например, текущей рабочей директории. То есть в начале отсутствует символ корневого каталога «/» .
./docs/files/file.txt file.txt
Представим, что мы сейчас работаем с файлами в /var/www/data/username . Нам нужно отредактировать содержимое в директории на уровень выше — /var/www/data . Чтобы управлять данными в этой директории, нам не обязательно постоянно указывать полный путь к ним — можно работать с относительным, начиная его с «../» .
Также относительные пути используются, когда нужно выполнить операцию над файлом или папкой в директории, в которой мы сейчас работаем. Для выполнения команды достаточно указать имя, и система поймёт, что мы имеем в виду объект из текущего каталога.
Чтобы отобразить список содержимого каталога, можно использовать команду ls (list). Она покажет названия объектов в текущем каталоге:
Если дополнить её ключом -al , команда покажет типы данных, разрешения и скрытые объекты. Например, в этом случае она выведет в терминал подробный список содержимого /etc:
ls -al /etc
Чтобы немного упростить себе жизнь, можно использовать консольные файловые менеджеры для Linux, например mc .
apt -y install mc
yum -y install mc
Его особенность — примитивный графический интерфейс. Он позволяет быстро ориентироваться в структуре каталогов, перемещаться между ними, создавать новые директории. Интерфейс разбит на два окна, между которыми вы можете перемещать объекты. Помимо прочего, в нём можно работать и с помощью мыши — перемещаться с помощью двойного клика, использовать кнопки в нижней части панели.

Поиск
С помощью команды find можно найти на сервере директорию или файл по набору условий. Структура команды проста:
find [где искать] [как искать] [что искать]
Например, мы знаем название скрипта hello.txt , но не знаем, где именно на сервере он лежит. Найти его поможет команда:
find / -name "hello.txt"
- / указывает, что искать надо, начиная с корневой директории сервера. Если вам известно, где может лежать искомое, можно задать путь точнее.
- «hello.txt» — имя файла, который нам нужно найти. Если известна только часть имени, можно указать сокращённый вариант: «hello*» , «*.txt»
Кроме -name , команда find имеет множество опций, которые позволяют уточнить условия поиска. Вот список наиболее полезных параметров:
Позволяет указать тип искомых данных: -type f — файлы, -type d — директории
Позволяет вывести файлы с определённым уровнем доступа. Например, — perm 777
Отображает только пустые файлы или папки
Позволяет искать данные среди файлов, принадлежащих конкретному пользователю: -user root
Позволяет искать данные среди файлов, принадлежащих определённой группе пользователей: -group www-data
Позволяет задать условие относительно времени изменения:
- -mtime 7 — менявшиеся в течение последних 7 дней;
- -mtime +7 — менявшиеся более чем 7 дней назад;
- -mtime -14 — менявшиеся менее чем 14 дней назад.
Позволяет задать условие относительно времени последнего доступа, аналогично mtime
Позволяет уточнить размер (или диапазон размера)
Позволяет применить к найденным файлам команду COMMAND
Больше информации о возможностях команды find можно узнать в документации. Здесь на помощь пользователям приходит команда man — используя её, вы сможете получить полную справочную информацию о любой команде Linux:
man find
Из встроенных инструментов поиска можно также отметить утилиту whereis . Она предназначена для поиска бинарных и системных файлов и директорий служб. Следующий пример выведет список всех объектов, имеющих прямое отношение к php :
whereis php
Работа с папками
Для создания новых директорий в системе Linux используется команда mkdir с указанием пути. Например, команда ниже создаст директорию /new в /home/user :
mkdir /home/user/new
Если нужно создать сразу несколько вложенных папок, можно использовать параметр -p . В таком случае все несуществующие директории, указанные в пути, будут созданы автоматически. Представим, что нам нужно создать вложенные папки docs/photos/2020-08-17 в текущей директории — тогда команда будет выглядеть так:
mkdir -p docs/photos/2020-08-17
Если нужно создать несколько папок за раз, можно просто перечислить их через пробел:
mkdir docs pictures games
Удалить директорию можно с помощью команды rmdir с указанием пути. При этом она будет удалена только в случае, если она пуст (можно использовать параметр —ignore-fail-on-non-empty , чтобы удалить ее в любом случае). Для удаления нескольких вложенных папок можно аналогично использовать параметр -p . Например, команда ниже удалит /photos и все папки внутри нее:
rmdir -p docs/photos
Для удаления есть более эффективный инструмент — команда rm , о ней расскажем чуть позже.
Работа с файлами
Создание
Для создания новых файлов в ОС Linux есть несколько полезных команд.
Самый простой способ, одновременно создающий и файл, и недостающие папки — команда touch . Для этого ей достаточно только передать полный путь. Например, создадим в директории docs папку copies , а внутри неё — copies-list.txt :
touch docs/copies/copies-list.txt
Несуществующая папка copies создастся автоматически.
Если нужно создать сразу несколько файлов, можно просто перечислить их через пробел:
touch file1.txt file2.txt file3.txt file4.txt file5.txt
Ещё один способ — вызвать какой-нибудь консольный текстовый редактор с указанием полного пути к файлу. Тогда редактор автоматически создаст его и откроет для редактирования. Однако все папки придётся создать заранее, а файл придётся сохранить (даже пустой), иначе он не будет создан.
Команда ниже создаст new-file.txt с помощью редактора vi :
vi new-file.txt
Для сохранения и выхода в vi нужно нажать клавишу Esc , ввести сочетание :wq и нажать Enter . Для выхода без сохранения нужно также нажать Esc , ввести сочетание :q! и нажать Enter .
Также создать пустой файл можно с помощью команды cat или команды echo:
cat > new-file.txt echo > new-file.txt
Редактирование
Для редактирования используются консольные текстовые редакторы. Самые известные — vi и nano . В некоторых дистрибутивах vi заменён на vim ( vi improved, улучшенный vi ) или vim.tiny
Редактор vi будет доступен вам по умолчанию на большинстве Linux-систем.

А теперь к делу. Vi (более известен как Vim) — старый, очень гибкий и при этом не очень простой в плане управления редактор. Собственно, так он и попал в популярные программистские и админские шуточки, а вопрос «как выйти из Vim?» стал практически культовым среди пользователей Linux-систем.
Запуск редактора без аргументов откроет его в режиме справки:

Чтобы закрыть Vim (без сохранения), введите сочетание :q!
Если указать редактору путь к файлу, он откроет его для редактирования. Если его не существовало, то он будет создан:
vi new-file.txt
При первом входе Vim открывает файл в режиме просмотра. Он не позволяет редактировать его содержимое, но можно вводить командные последовательности, перемещаться по тексту, выполнять поиск и пр.
Чтобы начать ввод, нужно перейти в режим редактирования с помощью клавиши I . Чтобы вернуться в режим просмотра, нажмите Esc .
Перемещение по тексту выполняется с клавиатуры:
- перемещение в начало текста: Esc + дважды G
- перемещение в конец текста: Shift + G
- перемещение по строке горизонтально: стрелки ← →
- перемещение по строкам вертикально: стрелки ↑ ↓
- отображение номеров строк: Esc , введите :set number , нажмите Enter
- перемещение по номерам строк: Esc , введите : номер строки, нажмите Enter
Для выхода с сохранением файла нажмите Esc и введите :wq!
Текстовый редактор vim — краткое руководство
Более современной и удобной альтернативой Vim считается редактор nano . Современные дистрибутивы Linux включают его по умолчанию, но на ранних версиях устанавливать придётся вручную:
apt -y install nano
yum -y install nano
Вызов nano без аргументов откроет пустой редактор. Можно начать ввод (при сохранении вам будет предложено указать имя и сохранить файл) или вызвать режим помощи со списком доступных команд с помощью сочетания Ctrl + G .

Для сохранения нажмите Ctrl + O — редактор предложит ввести имя файла: введите имя и нажмите Enter . Если файл существовал и имя изменять не требуется, просто нажмите Enter .
Для выхода из редактора нажмите Ctrl + X .
Чтение
Бывает, что нам нужно получить какую-то информацию из файла без необходимости редактировать его. В таком случае необязательно использовать текстовый редактор — в Linux есть и более простые инструменты.
Например, команда cat позволяет вывести в терминал всё содержимое файла, который указан в качестве аргумента:
cat example.txt

Однако, если мы заведомо знаем, что в файле большой объём информации, нет смысла выводить его целиком. Например, команды head и tail могут вывести часть содержимого с начала или конца соответственно. Если добавить к ним ключ -n , можно уточнить, сколько строк текста нужно вывести:
head -n 3 example.txt

tail -n 3 example.txt

Помимо прочего, команда tail очень удобна для чтения логов с ключом -f . В таком режиме она открывает файл в режиме ожидания и выводит все добавляемые данные. Это может пригодиться для тестирования или дебаггинга.
Иногда нам всё-таки нужно полностью просмотреть файл. При этом читать его вывод в терминале неудобно. На такие случаи есть команда less — она открывает файл (или переданный в неё вывод другой команды) в режиме чтения:
less example.com
В режиме чтения команда less можно перемещаться, искать текст и многое другое. Все командные последовательности и горячие клавиши можно вывести с помощью параметра —help :
less --help
Для выхода из режима чтения введите q и нажмите Enter .
Удаление
Для удаления используется команда rm . Она крайне опасна — неправильное применение грозит удалением всего содержимого сервера. Поэтому, как говорится, семь раз отмерь, один раз отрежь: категорически важно перепроверять путь, который вы указываете для удаления.
Самая простая версия команды rm удалит файл с предварительным подтверждением — для этого потребуется ввести y и нажать Enter :
rm new-file.txt
Для полного же уничтожения всего и вся к команде добавляются параметры -rf . Первый отвечает за рекурсивное удаление данных (т.е. удаление вложенных файлов и папок), второй позволяет отключить подтверждение при удалении. Например, следующая команда удалит папку photos , размещённую в docs , и всё её содержимое:
rm -rf docs/photos
Эта команда приобрела некоторую популярность из-за того, что её используют ради шутки над неопытными администраторами и пользователями, которые только начинают своё знакомство с системой Linux. Им под тем или иным предлогом предлагают выполнить из терминала команду rm -rf [/] (без квадратных скобок). Она удаляет всё содержимое сервера от корня. Результат — все данные безвозвратно теряются, а сервер перестаёт работать.
Скачивание и загрузка
Для передачи файлов на сервер и скачивании их с с сервера есть много способов. Самый простой — использование программ wget , curl или утилиты scp .
-
wget позволяет скачивать данные на сервер. Она поддерживает HTTP, HTTPS и FTP протоколы.
wget [как скачать] [откуда скачать]
Скачать файл по ссылке в вашу текущую рабочую директорию можно с помощью команды:
wget https://ru.wordpress.org/latest-ru_RU.tar.gz
С помощью параметра -P можно указать путь, куда нужно сохранить скачиваемое:
wget -P /var/www/example.com https://ru.wordpress.org/latest-ru_RU.tar.gz
Полный список параметров wget можно посмотреть с помощью команды man :
man wget
curl [как скачать] [откуда скачать / куда загрузить]
- Ubuntu и Debian:
apt -y install curl - CentOS:
yum -y install curl
Для работы с curl нужно знать название и расположение файлов, которые необходимо скачать/загрузить. Например, так будет выглядеть команда на скачивание по ссылке:
curl -O https://ru.wordpress.org/latest-ru_RU.tar.gz
В примере мы скачиваем архив latest-ru_RU.tar.gz по ссылке и сохраняем его в текущую рабочую директорию с таким же именем — за это отвечает ключ -O . Если использовать опцию -o , можно задать своё имя ( wp.tar.gz ) для сохраняемого файла:
curl -o wp.tar.gz https://ru.wordpress.org/latest-ru_RU.tar.gz
Если нам нужно загрузить файл c нашего сервера на другой, используется следующая конструкция:
curl -T filename.txt https://example.com/downloads/filename.txt
Здесь filename.txt из текущей рабочей директории загружается на сайт example.com в директорию downloads и сохраняется с именем filename.txt . Пример подразумевает, что у нас есть права на запись в указанный каталог.
Остальные возможности curl можно узнать в справочной информации с помощью команды:
man curl
scp [откуда копируем] [куда копируем]
Например, для передачи filename.txt с нашего сервера на удалённый сервер 1.2.3.4 в директорию new-documents пользователя username можно использовать в терминале следующую команду:
scp ~/documents/filename.txt username@1.2.3.4:/home/username/new-documents
В процессе система запросит у нас пароль пользователя username для подключения к удалённому серверу. После авторизации файл будет скопирован на целевой сервер в указанную директорию. Чтобы скачать файл с удалённого сервера, достаточно немного видоизменить нашу команду:
scp username@1.2.3.4:/home/username/documents/filename.txt ~/new-documents/
Здесь мы в качестве источника для получения копии указали удалённый сервер, а в качестве цели для загрузки копии — папку на текущем сервере. С помощью scp аналогичным образом можно копировать данные между двумя удалёнными серверами:
scp username1@1.2.3.4:/home/username1/documents/filename.txt username2@2.3.4.5:/home/username2/new-documents
Запуск исполняемых bash-скриптов
Чтобы запустить скрипт script.sh на сервере Linux, нужно выполнить два шага:
-
Настроить права на запуск файла для пользователей с помощью команды chmod :
chmod +x ./script.sh
./script.sh
В некоторых случаях нужно использовать команду sh либо указывать путь к исполняемому файлу командной оболочки:
sh ./script.sh
/bin/bash ./script.sh
Чтобы иметь возможность запускать скрипт из любого места на сервере одной простой командой в терминале, можно создать для него алиас — короткую команду (псевдоним), которая будет ассоциироваться системой с полным вызовом скрипта.
Весь список существующих алиасов системы можно вывести с помощью команды alias :

Создать свой постоянный алиас можно с помощью файла .bashrc , размещённого в домашнем каталоге вашего пользователя. Нужно открыть его для редактирования:
vi ~/.bashrc
В соответствующем разделе нужно добавить ваш алиас в следующем формате:
alias [короткая команда]='[исходная команда]'
Например, если нам потребуется создать псевдоним для скрипта выше, настройки будут выглядеть так:
alias myScript='sh /путь/к/скрипту/script.sh'
Чтобы после добавления алиас сразу стал доступен, предварительно нужно обновить командную оболочку с помощью команды:
source ~/.bashrc
После этого вы сможете вызывать ваш скрипт с помощью короткой команды.
Скрипт можно добавить в расписание планировщика cron , чтобы он запускался регулярно.
Как настроить cron по ssh
Переименование, перемещение и копирование файлов и папок
Скопировать файл в терминале Linux можно с помощью команды:
cp [что копируем] [куда копируем]
К примеру, вы можете сделать копию конфигурационного файла, который вы хотите изменить. Здесь мы создаём копию nginx.conf :
cp nginx.conf nginx.conf.copy
Директории копируются аналогично. При необходимости скопировать каталог со всем содержимым (рекурсивно) нужно добавить к команде ключ -r :
cp -r /docs /files
Здесь мы создаём копию docs со всем её содержимым с именем files .
Переместить файл также просто, для этого используем в терминале команду mv :
mv [что переместить/переименовать] [куда переместить/как назвать]
Например, следующая команда переместит файл file.txt в директорию new :
mv file.txt docs/new
Переименовать файл тоже не составит труда. В Linux переименование аналогично перемещению в ту же самую папку, но с новым именем. Например, команда ниже переименует file.txt (в директории /docs/new/) в todolist.txt:
mv /docs/new/file.txt /docs/new/todolist.txt
В этом примере file.txt переименовывается в todolist.txt
Аналогично можно перемещать и переименовывать директории.
Теперь, когда вы знаете базовые команды для работы с терминалом Linux, самое время познакомиться с файловой системой.
Как запустить отредактированный файл C++ в терминале Linux Ubuntu быстрее всего (кратчайшей командой)?
Я пользуюсь Ubuntu 20.10. Предположим, что у меня есть c++ файл testfile.cpp в следующем каталоге \home\username . Я хочу его запустить в терминале, для этого я перехожу в \home\username , после чего выполняю следующий код в терминале:
g++ -o testfile testfile.cpp ./testfile
После чего код успешно выполняется.После чего, я редактирую код через редактор кода, сохраняю изменения в файле testfile.cpp , выполняю в терминале
cd /home/username ./testfile
И терминал выдаёт мне результат старого кода. Если я проделываю опять процедуру
g++ -o testfile testfile.cpp ./testfile
Все успешно работает. Посему вопрос, есть ли более короткие способы запустить c++ файл в терминале?Я хотел бы максимально коротко запускать отредактированный файл, не прописывая каждый раз g++ -o testfile testfile.cpp или make testfile в терминале.
Отслеживать
задан 29 ноя 2021 в 12:28
user450648 user450648
Запустить C++ файл вообще нельзя, можно запустить только программу, которая будет включать в себя код единицы трансляции этого файла. Соответственно после каждого редактирования необходимо будет пересобирать программу каким-либо способом. А вообще используйте IDE. Там и пересобираться все будет автоматически, и даже есть возможность менять код прямо по ходу выполнения программы.
29 ноя 2021 в 13:02
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Ужимаете в одну команду: g++ -o testfile testfile.cpp && ./testfile .
Чтобы запустить повторно, не пишете ее руками, а делаете ↑ Enter .
Если даже один раз писать надоедает, или флагов или файлов становится слишком много, то советую настроить какую-нибудь систему сборки (Make/CMake/. ) и/или в своем текстовом редакторе настроить хоткей под эту команду.
Отслеживать
ответ дан 29 ноя 2021 в 13:05
HolyBlackCat HolyBlackCat
26.9k 3 3 золотых знака 27 27 серебряных знаков 40 40 бронзовых знаков
Да, тоже хорошии идеи, спасибо!
– user450648
29 ноя 2021 в 13:06
«Ужимаете в одну команду» — это скорее ужатие двух команд в одну строчку
29 ноя 2021 в 13:07
если написать makefile, то можно просто make написать и все будет работать.
Если же совсем все плохо, то можно веселее.
Открываете консоль и пишите такое
и теперь любой с++ файл можно компилировать и запустить вот так
cr ~/mycpp/data/main.cpp
Если скомпилировать не удалось, то запускать не будет. Результат компиляции забрасываем в /tmp, что бы не засорять текущий каталог. Да, в некоторых случаях на /tmp каталоге могут быть наложены так права, что бы нельзя было исполнять там бинарники, но это отдельная тема.
Если все работает как нужно, то открываем ~/.bashrc и аккуратно добавляем в конец (там иногда может быть много другого, так что действуем по обстоятельствам).
И на последок, почему cr ? это от compile & run , такая комбинация, как минимум у меня, не занята и она очень короткая.
Я бы на самом деле эту команду чуточку расширил
а также, -pedantic/-Wextra — что бы сразу давало побольше информации.