Mostrando entradas con la etiqueta GNU/Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta GNU/Linux. Mostrar todas las entradas

Extraer nombre de fichero y extensión en bash

De cuando en cuando necesito extraer el únicamente el nombre del fichero y/o su extensión. Para ello en bash podemos hacer los siguiente (vía Stack Overflow):
NOMBRE_FICHERO=$(basename -- "$RUTA_COMPLETA")
EXTENSION="${NOMBRE_FICHERO##*.}"
NOMBRE_FICHERO="${NOMBRE_FICHERO%.*}"
Para más información sobre la expansión de parámetros en el siguiente enlace podremos encontrarla: http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html

CMake. Soporte para MySQL/MariaDB y PostgreSQL en C.

Para añadir soporte para MySQL/MariaDB o PostgreSQL en C utilizando CMake podemos partir del siguiente CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(CPasos C)


set(CMAKE_C_FLAGS_DEBUG "-D_ZZSoft_DEBUG_ -Wall")

include(FindPkgConfig)
pkg_check_modules(LIBMYSQLCLIENT REQUIRED mysqlclient)


foreach(FLAG ${LIBMYSQLCLIENT_CFLAGS_OTHER})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG}")
endforeach()

pkg_check_modules(LIBPOSTGRESQL REQUIRED libpq)

set (HEADER_FILES variables.h)
set (SOURCES main.c ${HEADER_FILES})
set (THREADS_PREFER_PTHREAD_FLAG ON)

find_package(Threads REQUIRED)

link_directories(${LIBMYSQLCLIENT_LIBRARY_DIRS} ${LIBPOSTGRESQL})

add_executable(${PROJECT_NAME} ${SOURCES})
target_include_directories(${PROJECT_NAME} PRIVATE ${LIBMYSQLCLIENT_INCLUDE_DIRS} ${LIBPOSTGRESQL_INCLUDE_DIRS})
target_link_libraries (${PROJECT_NAME} PRIVATE ${CMAKE_THREAD_LIBS_INIT} ${LIBMYSQLCLIENT_LIBRARIES} ${LIBPOSTGRESQL_LIBRARIES})
Normalmente para añadir el soporte para alguna librería utilizando cmake se utiliza la función find_package que busca dentro de los directorios configurados ficheros con extensión cmake. Las pruebas las hice sobre Ubuntu, y en esta distribución, para el soporte PostgreSQL no me funcionó esta función. Para el soporte MySQL/MariaDB partí de https://mysqlserverteam.com/the-client-library-part-4-how-to-write-a-simple-mysql-client-in-c-using-cmake-and-pkg-config/

Previsión meteorológica desde la línea de órdenes

Personalmente utilizo la línea de órdenes prácticamente para todo lo que hago con el ordenador (aunque tenga instalado entorno gráfico) así que poder conocer la previsión meteorológica desde la línea de órdenes es algo que me resulta bastante práctico. Por ello, gracias a @igor_chubin, consultando mediante curl la web wttr.in/ciudad podemos conocer la previsión para la "ciudad" que indiquemos en la URL.
curl wttr.in/Zanzabornín
Como se puede ver, están permitidos caracteres UTF-8. Al ejecutar la línea anterior, veremos algo como lo siguiente: 


 
Una nota para finalizar. El código fuente de esta aplicación creada por @igor_chubin está disponible en su GitHub.

Conocer IP pública desde la línea de órdenes

En ocasiones suele necesitarse conocer la IP pública de una máquina y si no disponemos de entorno gráfico para poder acceder a alguna de las webs que te la muestran (o si como a mi os resulta más cómoda la línea de órdenes), podemos ejecutar la siguiente línea que sólo necesita de curl:
curl ipinfo.io/ip

Si preferimos utilizar wget, o es la orden que tenemos instalada en nuestra máquina, podemos ejecutar:
wget -qO- ipinfo.io/ip

Añadir un disco a una máquina virtual sin reiniciar

Después de añadir un disco a una máquina virtual es posible que no nos aparezca disponible. Si necesidad de reiniciar, desde la línea de órdenes, y como usuario root podemos ejecutar lo siguiente:


for i in `ls /sys/class/scsi_host/`; do \
  echo "- - -" > /sys/class/scsi_host/$i/scan; \
done
 
Una vez ejecutado esa línea, el nuevo disco ya debería aparecer bajo /dev