$ hg status

y

$ hg status --ignored

dar muy similares a las salidas. Me gustaría concatenar para que yo pueda darles de comer a awk, como si no hubiera un hg estado –todos (o svn del svn status-no-ignorar)

Estoy pensando en algo como:

$ echo "$(hg status)" "$(hg status --ignored)" | awk  ' ( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r

para hacer un » make muy limpio, de hecho,’ comando, pero parece que de vez en cuando dejar un archivo detrás, tal vez debido a una nueva línea va a faltar o algo.

  • Si reemplaza rm con echo (u omitir la última pipa), entonces ¿cuál es la salida y lo que debería haber sido? También, puede ser problemas de permisos donde rm se niega a eliminar un archivo.

4 Comentarios

  1. 27

    Puede utilizar un subshell:

    ( hg status; hg status --ignored ) | awk '( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r
    • No hay necesidad de utilizar un subshell (otro proceso). En lugar usted puede utilizar los apoyos para el grupo: { a; b; } | c
    • +1, muy elegante
    • No veo la significativa diferencia de velocidad time { git branch; git branch -r; } > /dev/null; time (git branch; git branch -r) > /dev/null de hecho subshell es consistentemente más rápido en mi sistema para que @camh, ¿cuál es la ventaja de un grupo?
    • Es probable que el error de medición. El grupo tiene uno menos fork() de la subshell. Es muy difícil medir una sola ejecución de este tipo de cosas. Desea ejecutar 1000 veces o más para conseguir una buena sensación para el rendimiento. Cuando hago eso, el grupo sale a 1.69 s y el subshell en 2,36 s, que es de aproximadamente un 40% más lento.
  2. 6

    Puede utilizar el resto de los hg de indicadores de estado para mostrar lo que realmente quieres:

    hg status -uriamn

    Que muestra los archivos desconocidos (u), archivos eliminados (r), ignorado (i), agregado (a), modificado (m) y lo hace sin mostrar el estado de prefijo.

    • +1 yo sólo escribió «¿por qué no probar hg st -iu|awk ...?» y vi tu respuesta muestra…
    • Y me gustaría haber publicado antes, pero yo estaba tratando de hacer una divertida anagrama de las banderas 😉
  3. 2

    Esto funciona para mí:

    echo $(a)$(b)

    si agrega «» usted puede agregar delimitadores ej.:

    echo "$(./gethostname.sh)|($(./getip.sh);"

    Yo uso este en Openwrt para transmitir mi configuración de ip:

    echo "$( uci get [email protected][0].hostname )|$( ip addr | grep inet | grep br-lan | cut -d ' ' -f 6 | cut -d '/' -f 1 );"  | socat - UDP-DATAGRAM:255.255.255.255:4999,broadcast ;

Dejar respuesta

Please enter your comment!
Please enter your name here