Fundamentos de Linux (8)

procesamiento de texto simple

  1. comando tr : utilizado para eliminar ciertas palabras en un mensaje de texto, o para ser convertidas, usando métodos:
tr [option]...SET1 [SET2]

Entre ellos, el de uso común [opción] son:
-d: Retire y coincidentes set1 caracteres, cabe destacar que no es la palabra completa coincidencia no es una secuencia de caracteres con el fin
-s: la eliminación de set1 se especifica en el texto de entrada continua y repetida personajes
castañas:

# 删除 "hello shiyanlou" 中所有的'o','l','h'
$ echo 'hello shiyanlou' | tr -d 'olh'
# 将"hello" 中的ll,去重为一个l
$ echo 'hello' | tr -s 'l'
# 将输入文本,全部转换为大写或小写输出
$ echo 'input some text here' | tr '[:lower:]' '[:upper:]'
# 上面的'[:lower:]' '[:upper:]'你也可以简单的写作'[a-z]' '[A-Z]',当然反过来将大写变小写也是可以的
  1. comando col : se utiliza para Tabsustituir el número de pares barra espaciadora, o revertir esta operación.
col [option]

Comúnmente utilizados son opciones:
-x: se Tabpueden convertir en espacios
-h: para convertir el espacio en Tab(la opción predeterminada)
castañas:

# 查看 /etc/protocols 中的不可见字符,可以看到很多 ^I ,这其实就是 Tab 转义成可见字符的符号
$ cat -A /etc/protocols
# 使用 col -x 将 /etc/protocols 中的 Tab 转换为空格,然后再使用 cat 查看,你发现 ^I 不见了
$ cat /etc/protocols | col -x | cat -A
  1. unirse a comandos de línea que se utiliza para unir los dos archivos contienen el mismo contenido ::
join [option]... file1 file2

Comúnmente opciones utilizadas son:

-t:指定分隔符,默认为空格
-i:忽略大小写的差异
-1:指明第一个文件要用哪个字段来对比,默认对比第一个字段
-2:指明第二个文件要用哪个字段来对比,默认对比第一个字段
$ cd /home/shiyanlou
# 创建两个文件
$ echo '1 hello' > file1
$ echo '1 shiyanlou' > file2
$ join file1 file2
# 将/etc/passwd与/etc/shadow两个文件合并,指定以':'作为分隔符
$ sudo join -t':' /etc/passwd /etc/shadow
# 将/etc/passwd与/etc/group两个文件合并,指定以':'作为分隔符, 分别比对第4和第3个字段
$ sudo join -t':' -1 4 /etc/passwd -2 3 /etc/group
  1. pegar comandos : Comando y unirse Del mismo modo, es sin datos de comparación, simplemente gota a gota a combinar varios archivos juntos, en Tabespaciada.
    Utilizando el formato:
paste [option] file...

De uso general [opción] son:
-d: separador combinado se especifica, el valor predeterminado es el Tab
-s: No se fusionó en una sola línea, una línea por cada archivo

$ echo hello > file1
$ echo shiyanlou > file2
$ echo www.shiyanlou.com > file3
$ paste -d ':' file1 file2 file3
$ paste -s file1 file2 file3

redirección de tráfico de datos

Dos de redirección de operaciones de uso frecuente:

$ echo 'hello shiyanlou' > redirect # 将标准输出导向一个文件中
$ echo 'www.shiyanlou.com' >> redirect # 将标准输出追加到一个文件中
$ cat redirect

Por supuesto, existen de manera similar <y <<operación tampoco es un problema, ya que entiende, al igual que su diferencia es incompatible dirección redirección, >la representación es de izquierda a derecha, <de derecha a izquierda.

redirección sencilla

Linux proporciona un dispositivo especial de tres por defecto para los terminales de pantalla y salida, respectivamente, stdin(entrada estándar correspondiente al terminal de entrada que), stdout(estándar de salida correspondiente al terminal de salida), stderr(estándar de salida de error, lo que corresponde a el terminal de salida).
Los descriptores de archivo
0 / dev / stdin entrada estándar
1 / dev / stdout stdout
2 / dev / stderr error estándar

Los descriptores de archivo: descriptores de fichero en la forma de un número entero no negativo. De hecho, es un valor de índice que apunta al núcleo para procesar cada proceso para abrir los registros mantenidos por la lista de archivos. Cuando el programa se abre un archivo existente o crear un nuevo archivo, el núcleo devuelve un descriptor de archivo para el proceso. En la programación, algunos de los procedimientos involucrados en la preparación de la subyacente tienden a desplegarse en todo el descriptor de archivo. Pero el concepto de descriptores de archivo a menudo sólo se aplican a sistemas operativos como UNIX, Linux.
1, el terminal de entrada estándar por defecto como la entrada de comandos y la salida estándar como la salida del comando

$ cat 
(按Ctrl+C退出)

2, la salida continua de gato (heredoc en realización) redirigido a un archivo

$ mkdir Documents
$ cat > Documents/test.c <<EOF
#include <stdio.h>

int main()
{
    printf("hello world\n");
    return 0;
}

EOF

3, el documento como una entrada de mando, la salida estándar como un comando de salida

$ cat Documents/test.c

4, la transmisión sobre el comando de eco a través de datos de mando del gato de línea como entrada, la salida estándar como una salida de comando

$ echo 'hi' | cat

5, la salida del comando echo de la redirección de la salida estándar por defecto en un archivo común

$ echo 'hello shiyanlou' > redirect
$ cat redirect

error estándar de redirección

Redirigir la salida estándar a un archivo, esta es una operación muy práctico, otra operación es muy útil para redirigir el error estándar, salida estándar y el error estándar se dirigen pantalla pseudo terminal, a menudo vemos un comando la salida es generalmente contiene tanto la salida estándar y el error estándar de los resultados. Tales como los siguientes:

# 使用cat 命令同时读取两个文件,其中一个存在,另一个不存在
$ cat Documents/test.c hello.c
# 你可以看到除了正确输出了前一个文件的内容,还在末尾出现了一条错误信息
# 下面我们将输出重定向到一个文件
$ cat Documents/test.c hello.c > somefile

Todavía hay una pieza de un mensaje de error aparece, esto se debe a que, como ya he dicho anteriormente, la salida estándar y el error estándar Mientras apunta la pantalla del terminal, que en realidad no son los mismos. Que a veces sólo queremos ocultar ciertos errores o advertencias, entonces ¿cómo debemos hacerlo. Ahí es donde hablamos delante de un descriptor de archivo:

# 将标准错误重定向到标准输出,再将标准输出重定向到文件,注意要将重定向到文件写到前面
$ cat Documents/test.c hello.c >somefile  2>&1
# 或者只用bash提供的特殊的重定向符号"&"将标准错误和标准输出同时重定向到文件
$ cat Documents/test.c hello.c &>somefilehell

Tenga en cuenta que debe redirigir los descriptores de archivo de salida antes de añadir &, de lo contrario la cáscara será redirigido a un archivo como un archivo llamado 1.

Usando el comando tee para redirigir varios archivos simultáneamente

Además de la necesidad de reorientar el archivo de salida, pero también es necesario para imprimir el terminal de información. A continuación, puede utilizar el comando tee para lograr:

$ echo 'hello shiyanlou' | tee hello

redirección permanente

La redirección anterior son sólo temporales, que sólo es válido para el comando actual, cómo hacerlo "permanente" eficaz, tal como en un guión, se necesita una cierta parte de la salida de la orden para redirigir todo, no deja agrega operaciones redirección temporal en cada comando anterior Bueno, por supuesto que no podemos usar el execcomando para lograr la redirección "permanente". execEl efecto es reemplazar el comando Shell comando actual especifica que el uso de un proceso para reemplazar el proceso actual, o especificar un nuevo cambio de dirección:

# 先开启一个子 Shell
$ zsh
# 使用exec替换当前进程的重定向,将标准输出重定向到一个文件
$ exec 1>somefile
# 后面你执行的命令的输出都将被重定向到文件中,直到你退出当前子shell,或取消exec的重定向(后面将告诉你怎么做)
$ ls
$ exit
$ cat somefile

Crea un descriptor de archivo de salida

Hay 9 descriptores de fichero en el Shell. Por encima se utilizó el número predeterminado 0,1,2 sino que también proporciona los descriptores de fichero. Además, también podemos utilizar los descriptores de archivos 3-8, pero no están activadas de forma única por defecto. Se puede utilizar el siguiente comando para ver el proceso actual descriptores de archivo abierto de Shell:

$ cd /dev/fd/;ls -Al

Utilizar el mismo execcomando para crear una nueva descriptores de archivo:

$ zsh
$ exec 3>somefile
# 先进入目录,再查看,否则你可能不能得到正确的结果,然后再回到上一次的目录
$ cd /dev/fd/;ls -Al;cd -
# 注意下面的命令>与&之间不应该有空格,如果有空格则会出错
$ echo "this is test" >&3
$ cat somefile
$ exit

Cerrar el descriptor de archivo

Como el anterior, abrimos el descriptor de archivo número 3, se puede utilizar para cerrarla siguiente manera:

$ exec 3>&-
$ cd /dev/fd;ls -Al;cd -

salida del comando totalmente blindada

Se conoce como un "agujero negro" en el archivo de dispositivo Linux, importar todos sus datos serán "tragadas".

En sistemas similares a Unix, / dev / null, o vacío, dicho dispositivo es un archivo de dispositivo especial, por lo general es innecesario para desechar el flujo de salida, o como un flujo de entrada archivo vacío, estas operaciones son por lo general consta de una pesada finalización de orientación. Al leerlo obtendrá un EOF inmediata.

Podemos utilizar la salida del comando escudo / dev / null:

$ cat Documents/test.c 1>/dev/null 2>&1

Esta operación le permitirá llegar a la cima de cualquier salida.

Usar xargs lista de argumentos dividida

xargsEs un UNIX y UNIX-como sistema operativo de uso común comandos. Su función es la de convertir en pequeños segmentos de parámetros lista pasada a otros comandos, a los problemas de evitar en la larga lista de parámetros. Este comando es útil en algunos casos, especialmente cuando el comando utilizado para manejar una gran cantidad de producción como Buscar, localizar y resultados grep, uso detallado ver la página del manual.

$ cut -d: -f1 < /etc/passwd | sort | xargs echo

El comando anterior para /etc/passwdel archivo de :dividir el primer campo tomada después de la clasificación, utilizando el echocomando para generar una lista.
fuente

Publicado 33 artículos originales · ganado elogios 1 · vistas 1231

Supongo que te gusta

Origin blog.csdn.net/weixin_44783002/article/details/104929632
Recomendado
Clasificación