localizar comando con expresiones regulares equivalentes en OSX

2

Estoy aprendiendo Linux bash en mi Mac. ¿Hay un equivalente a este comando en OSX?

locate --regex 'bin/(bz|gz|zip)'
    
pregunta user3064085 28.08.2017 - 04:43

2 respuestas

2

La versión de macOS de locate no tiene una opción regex . Puedes usar * y ? en el patrón de búsqueda, pero eso es todo.

Antes de poder usar locate , tendrá que habilitarlo (es decir, tener la base de datos locate creada) usando el siguiente comando: de forma predeterminada, está deshabilitado:

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
    
respondido por el Tom E 28.08.2017 - 10:30
-2

La versión predeterminada de locate en OS X / macOS no admite esto, como Tom E. indicó.

Apple distribuye la versión BSD de la mayoría de las herramientas de línea de comandos (anteriormente denominada "el subsistema BSD").

Por lo tanto, hay dos respuestas a tu pregunta:

  1. Puede construir cualquier número de oneliners de comando equivalente que cumplan de la misma manera que el comando que citó. Para los estudiantes, las palabras clave no solo son expresiones regulares, sino también tuberías, comillas invertidas y algunas más.

  2. Pero para considerar su primera línea de contexto ("learning linux bash"), la siguiente respuesta puede ser más apropiada:
    Su ejemplo podría ser de un libro como "La línea de comandos de Linux: una introducción completa". Es problemático aplicar palabra por palabra o comando por comando en OS X / macOS. Apple envía principalmente herramientas BSD y (casi?) Todas ellas en versiones muy obsoletas e inseguras (alergia a la GPL3 fanática por parte de Apple). Linux incluye en su mayoría herramientas GNU que pueden / tendrán a menudo los mismos nombres pero características / opciones diferentes en comparación con sus equivalentes BSD.

macOS can por lo tanto, no solo tiene un equivalente, sino el mismo comando y sintaxis que dio como ejemplo. Pero para eso tienes que instalar las herramientas GNU correspondientes. En su caso por encima de findutils . Que contiene el comando locate en el tipo utilizado por su ejemplo.

Esto generalmente es recomendable si quieres aprender "linux bash". Instale todas las herramientas de GNU que pueda necesitar para seguir los ejemplos. Esto también incluye una fiesta actual. Apple envía la horriblemente versión medieval de

/bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
Copyright (C) 2007 Free Software Foundation, Inc.

Considerando que GNU bash es mucho más nuevo:

/usr/local/bin/bash --version
GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.7.0)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
  • Si desea aprender macOS / BSD bash / command line, debería obtener otras guías o libros.

  • Si desea atenerse a sus guías actuales o aprender realmente a la manera de GNU / Linux, debe instalar las herramientas de GNU.

Puede usar los administradores de paquetes para hacer esto en macOS, al igual que en otros BSD o linux.

Los administradores de paquetes disponibles para simplemente tu vida son fink , macports y homebrew . Más enlaces a ellos y alguna discusión sobre sus respectivos méritos y perjuicios se pueden encontrar en aquí .

    
respondido por el LangLangC 28.08.2017 - 12:50

Lea otras preguntas en las etiquetas