GPRename автоматически вставляет нуль, если вы переименовываете 10 или более файлов (два, если вы переименовываете 100 или более и т. д.) при использовании числовой функции. Просто убедитесь, что Zero auto-fill включен в меню Options.
touch "$HOME/.local/share/nautilus/scripts/MyC++Run"
chmod +x "$HOME/.local/share/nautilus/scripts/MyC++Run"
1. Вот содержание скрипта. Он создает дополнительный (автоматически удаленный) скрипт, который выполняется в новом gnome-терминале, поэтому вы можете видеть сообщения об ошибках в окне терминала:
#!/bin/bash -e
# Get the list of the selected in Nautilus items as an array $ITEM_LIST
IFS_BAK=$IFS
IFS=$'\t\n'
ITEM_LIST=($NAUTILUS_SCRIPT_SELECTED_FILE_PATHS)
IFS=$IFS_BAK
# Create aux script, that compile and execute the program. Run the script in gnome-terminal
compile_and_exec_program() {
OUT="${DIR}/${NAME}.out" # Define the name of the output file
AUX="${DIR}/${NAME}.bash" # Define the name of the aux script
printf '#!/bin/bash -e\n' > "${AUX}" # Create the auxiliary script
printf '%s "%s" "%s" && "%s"\n' "${1}" "${OUT}" "${item}" "${OUT}" >> "${AUX}"
printf 'rm -f "%s"\nexec bash' "${AUX}" >> "${AUX}"
chmod +x "${AUX}" # Make the aux script exec and run it
nohup gnome-terminal -x sh -c "$(echo \'"${AUX}"\')" >/dev/null 2>&1 &
}
# For each selected item: get its name, location, etc. and proceed...
for item in "${ITEM_LIST[@]}"; do
ITEM="$(basename "${item}")" # Get the item name (exclude the path)
DIR="$(dirname "${item}")" # Get the path to the item (exclude the name)
NAME="${ITEM%.*}" # Get the name (exclude the extension)
EXT="${ITEM##*.}" # Get the extension (exclude the name)
# If the item is a file and its extension is `c` or `cpp`, then compile and execute
if [ -f "$item" ]; then
if [ "$EXT" == "c" ]; then compile_and_exec_program "gcc -o"
elif [ "$EXT" == "cpp" ]; then compile_and_exec_program "g++ -o"
else notify-send "Wrong extension of the selected file: $ITEM"
fi
else
notify-send "The selected item is a directory: $ITEM"
fi
done
Дополнительные пояснения: Использование вспомогательного скрипта является наиболее надежным способом запуска нескольких команд в новом терминале gnome, который я нашел, когда я сделал один из моих ответов. В зависимости от входных параметров функции compile_and_exec_program содержимое сгенерированного раздела printf вспомогательный скрипт будет аналогичным: #!/bin/bash -e
g++ -o /work/dir/project.cpp /work/dir/output.out && /work/dir/project.out
rm -f /work/dir/project.bash
exec bash
Где && означает (как обычно), если команда, которая включена левая сторона успешно выполнена, а затем выполните команду, которая находится справа. Строка rm -f /work/dir/project.bash удалит сам вспомогательный скрипт. Последняя строка exec bash намерена открыть новое окно gnome-terminal. Эта часть $(echo \'"${AUX}"\') предназначена для печати одиночных кавычек вокруг имени сценария aux. Это важно, когда имя скрипта содержит некоторые специальные символы. Я не мог найти другого способа сделать это. Другим способом qote только пространства является использование: ${AUX/\ /\\ }. Вот пример сценария, который создает файлы журналов, где вы можете видеть сообщения об ошибках из процесса. 3. Вот демонстрация (из предыдущей версии) возможностей скрипта:
touch "$HOME/.local/share/nautilus/scripts/MyC++Run"
chmod +x "$HOME/.local/share/nautilus/scripts/MyC++Run"
1. Вот содержание скрипта. Он создает дополнительный (автоматически удаленный) скрипт, который выполняется в новом gnome-терминале, поэтому вы можете видеть сообщения об ошибках в окне терминала:
#!/bin/bash -e
# Get the list of the selected in Nautilus items as an array $ITEM_LIST
IFS_BAK=$IFS
IFS=$'\t\n'
ITEM_LIST=($NAUTILUS_SCRIPT_SELECTED_FILE_PATHS)
IFS=$IFS_BAK
# Create aux script, that compile and execute the program. Run the script in gnome-terminal
compile_and_exec_program() {
OUT="${DIR}/${NAME}.out" # Define the name of the output file
AUX="${DIR}/${NAME}.bash" # Define the name of the aux script
printf '#!/bin/bash -e\n' > "${AUX}" # Create the auxiliary script
printf '%s "%s" "%s" && "%s"\n' "${1}" "${OUT}" "${item}" "${OUT}" >> "${AUX}"
printf 'rm -f "%s"\nexec bash' "${AUX}" >> "${AUX}"
chmod +x "${AUX}" # Make the aux script exec and run it
nohup gnome-terminal -x sh -c "$(echo \'"${AUX}"\')" >/dev/null 2>&1 &
}
# For each selected item: get its name, location, etc. and proceed...
for item in "${ITEM_LIST[@]}"; do
ITEM="$(basename "${item}")" # Get the item name (exclude the path)
DIR="$(dirname "${item}")" # Get the path to the item (exclude the name)
NAME="${ITEM%.*}" # Get the name (exclude the extension)
EXT="${ITEM##*.}" # Get the extension (exclude the name)
# If the item is a file and its extension is `c` or `cpp`, then compile and execute
if [ -f "$item" ]; then
if [ "$EXT" == "c" ]; then compile_and_exec_program "gcc -o"
elif [ "$EXT" == "cpp" ]; then compile_and_exec_program "g++ -o"
else notify-send "Wrong extension of the selected file: $ITEM"
fi
else
notify-send "The selected item is a directory: $ITEM"
fi
done
Дополнительные пояснения: Использование вспомогательного скрипта является наиболее надежным способом запуска нескольких команд в новом терминале gnome, который я нашел, когда я сделал один из моих ответов. В зависимости от входных параметров функции compile_and_exec_program содержимое сгенерированного раздела printf вспомогательный скрипт будет аналогичным: #!/bin/bash -e
g++ -o /work/dir/project.cpp /work/dir/output.out && /work/dir/project.out
rm -f /work/dir/project.bash
exec bash
Где && означает (как обычно), если команда, которая включена левая сторона успешно выполнена, а затем выполните команду, которая находится справа. Строка rm -f /work/dir/project.bash удалит сам вспомогательный скрипт. Последняя строка exec bash намерена открыть новое окно gnome-terminal. Эта часть $(echo \'"${AUX}"\') предназначена для печати одиночных кавычек вокруг имени сценария aux. Это важно, когда имя скрипта содержит некоторые специальные символы. Я не мог найти другого способа сделать это. Другим способом qote только пространства является использование: ${AUX/\ /\\ }. Вот пример сценария, который создает файлы журналов, где вы можете видеть сообщения об ошибках из процесса. 3. Вот демонстрация (из предыдущей версии) возможностей скрипта:
touch "$HOME/.local/share/nautilus/scripts/MyC++Run"
chmod +x "$HOME/.local/share/nautilus/scripts/MyC++Run"
1. Вот содержание скрипта. Он создает дополнительный (автоматически удаленный) скрипт, который выполняется в новом gnome-терминале, поэтому вы можете видеть сообщения об ошибках в окне терминала:
#!/bin/bash -e
# Get the list of the selected in Nautilus items as an array $ITEM_LIST
IFS_BAK=$IFS
IFS=$'\t\n'
ITEM_LIST=($NAUTILUS_SCRIPT_SELECTED_FILE_PATHS)
IFS=$IFS_BAK
# Create aux script, that compile and execute the program. Run the script in gnome-terminal
compile_and_exec_program() {
OUT="${DIR}/${NAME}.out" # Define the name of the output file
AUX="${DIR}/${NAME}.bash" # Define the name of the aux script
printf '#!/bin/bash -e\n' > "${AUX}" # Create the auxiliary script
printf '%s "%s" "%s" && "%s"\n' "${1}" "${OUT}" "${item}" "${OUT}" >> "${AUX}"
printf 'rm -f "%s"\nexec bash' "${AUX}" >> "${AUX}"
chmod +x "${AUX}" # Make the aux script exec and run it
nohup gnome-terminal -x sh -c "$(echo \'"${AUX}"\')" >/dev/null 2>&1 &
}
# For each selected item: get its name, location, etc. and proceed...
for item in "${ITEM_LIST[@]}"; do
ITEM="$(basename "${item}")" # Get the item name (exclude the path)
DIR="$(dirname "${item}")" # Get the path to the item (exclude the name)
NAME="${ITEM%.*}" # Get the name (exclude the extension)
EXT="${ITEM##*.}" # Get the extension (exclude the name)
# If the item is a file and its extension is `c` or `cpp`, then compile and execute
if [ -f "$item" ]; then
if [ "$EXT" == "c" ]; then compile_and_exec_program "gcc -o"
elif [ "$EXT" == "cpp" ]; then compile_and_exec_program "g++ -o"
else notify-send "Wrong extension of the selected file: $ITEM"
fi
else
notify-send "The selected item is a directory: $ITEM"
fi
done
Дополнительные пояснения: Использование вспомогательного скрипта является наиболее надежным способом запуска нескольких команд в новом терминале gnome, который я нашел, когда я сделал один из моих ответов. В зависимости от входных параметров функции compile_and_exec_program содержимое сгенерированного раздела printf вспомогательный скрипт будет аналогичным: #!/bin/bash -e
g++ -o /work/dir/project.cpp /work/dir/output.out && /work/dir/project.out
rm -f /work/dir/project.bash
exec bash
Где && означает (как обычно), если команда, которая включена левая сторона успешно выполнена, а затем выполните команду, которая находится справа. Строка rm -f /work/dir/project.bash удалит сам вспомогательный скрипт. Последняя строка exec bash намерена открыть новое окно gnome-terminal. Эта часть $(echo \'"${AUX}"\') предназначена для печати одиночных кавычек вокруг имени сценария aux. Это важно, когда имя скрипта содержит некоторые специальные символы. Я не мог найти другого способа сделать это. Другим способом qote только пространства является использование: ${AUX/\ /\\ }. Вот пример сценария, который создает файлы журналов, где вы можете видеть сообщения об ошибках из процесса. 3. Вот демонстрация (из предыдущей версии) возможностей скрипта:
У вас есть основное недоразумение в программировании на C / C ++: это не скрипты, интерпретируемые во время выполнения. Вместо этого эти программы необходимо скомпилировать и преобразовать в исполняемые программы.
Предполагая, что имя вашего файла Cpp1.cpp, вам нужно будет выполнить следующий терминал:
[d2 ] gcc -o Cpp1 Cpp1.cppРезультирующий вывод Cpp1 будет исполняемым двоичным файлом, который можно запустить с помощью команды ./Cpp1. Обратите внимание, что в этом случае эту программу нельзя запустить, щелкнув правой кнопкой мыши он: он не знает об открытии окон и использовании их.
У вас есть основное недоразумение в программировании на C / C ++: это не скрипты, интерпретируемые во время выполнения. Вместо этого эти программы необходимо скомпилировать и преобразовать в исполняемые программы.
Предполагая, что имя вашего файла Cpp1.cpp, вам нужно будет выполнить следующий терминал:
gcc -o Cpp1 Cpp1.cpp
Результирующий вывод Cpp1 будет исполняемым двоичным файлом, который можно запустить с помощью команды ./Cpp1. Обратите внимание, что в этом случае эту программу нельзя запустить, щелкнув правой кнопкой мыши он: он не знает об открытии окон и использовании их.
У вас есть основное недоразумение в программировании на C / C ++: это не скрипты, интерпретируемые во время выполнения. Вместо этого эти программы необходимо скомпилировать и преобразовать в исполняемые программы.
Предполагая, что имя вашего файла Cpp1.cpp, вам нужно будет выполнить следующий терминал:
gcc -o Cpp1 Cpp1.cpp
Результирующий вывод Cpp1 будет исполняемым двоичным файлом, который можно запустить с помощью команды ./Cpp1. Обратите внимание, что в этом случае эту программу нельзя запустить, щелкнув правой кнопкой мыши он: он не знает об открытии окон и использовании их.