Curso correspondente https://www.bilibili.com/video/BV18p4y167Md
Curso por Correspondência sobre Sistema Operacional Aulas Práticas sobre Sistema Operacional 45
Índice CSAPP Uma compreensão profunda dos sistemas de computador vem da aula aberta do chefe da Microsoft,
yangminz
, https://www.bilibili.com/video/BV17K4y1N7Q2 (atualização)
Índice Série de programação orientada a objetos C++ da série de programação orientada a objetos CPP do Mestre Hou Jie (concluída)
Uma introdução ao uso básico e opções de comandos.
Man é a abreviatura de manual, que exibe as informações específicas da instrução.
Quando man date é executado, DATE(1) aparece. O número nele representa o tipo de instrução comumente usada e seus tipos são os seguintes:
codinome | tipo |
---|---|
1 | Instruções ou arquivos executáveis que os usuários podem operar no ambiente shell |
5 | Arquivo de configuração |
8 | Comandos administrativos disponíveis para administradores de sistema |
info é semelhante a man, mas info divide o documento em páginas e cada página pode ser saltada.
/usr/share/doc armazena um conjunto completo de documentação do software.
Antes de desligar, você precisa usar o comando who para verificar se há outros usuários online.
Para acelerar a leitura e gravação de arquivos em disco, os dados do arquivo localizados na memória não serão sincronizados com o disco imediatamente, portanto, uma operação de sincronização de sincronização é necessária antes de desligar.
# # shutdown [-krhc] 时间 [信息] |
-k : 不会关机,只是发送警告信息,通知所有在线的用户
-r : 将系统的服务停掉后就重新启动
-h : 将系统的服务停掉后就立即关机
-c : 取消已经在进行的 shutdown 指令内容
O caminho para o arquivo executável é declarado em PATH, separado por :.
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
sudo permite que usuários comuns usem comandos executáveis root, mas apenas usuários adicionados no arquivo de configuração /etc/sudoers podem usar este comando.
RPM e DPKG são os dois tipos mais comuns de ferramentas de gerenciamento de pacotes de software:
Uma distribuição Linux é uma versão integrada do kernel Linux e vários softwares aplicativos. Ferramentas de gerenciamento de pacotes baseadas em Distribuições comerciais Distribuições comunitárias RPM Red Hat Fedora/CentOS DPKG Ubuntu Debian
Ordem | efeito |
---|---|
:c | gravar no disco |
:c! | Força a gravação no disco quando o arquivo é somente leitura. Se ele pode ser gravado depende das permissões do usuário no arquivo. |
:q | deixar |
:q! | Forçado a sair sem salvar |
Escreva no disco e saia | |
:qq! | Forçar a gravação no disco e sair |
O Projeto GNU, traduzido como Projeto Genuíno, visa criar um sistema operacional totalmente livre chamado GNU, e seu software de conteúdo é totalmente liberado sob a GPL. O nome completo da GPL é GNU General Public License, que inclui os seguintes conteúdos: liberdade de executar este programa para qualquer finalidade; liberdade de reproduzir este programa e lançar melhorias publicamente; ¶Escolha uma licença de código aberto (abre uma nova janela) Como escolher uma licença de código aberto (abre uma nova janela)?
IDE (ATA) significa Advanced Technology Attachment A velocidade máxima da interface é de 133 MB/s porque o desempenho anti-interferência do cabo da porta paralela é muito fraco e o cabo ocupa um grande espaço, o que não contribui para o calor interno. dissipação do computador, ele foi gradualmente substituído pelo SATA.
O nome completo do SATA é Serial ATA, que é uma interface ATA que usa uma porta serial. Possui forte anti-interferência, tem requisitos de comprimento de cabo de dados muito mais baixos do que ATA e suporta hot-swap e outras funções. A velocidade da interface do SATA-II é de 300 MiB/s, enquanto o novo padrão SATA-III pode atingir uma velocidade de transmissão de 600 MiB/s. Os cabos de dados SATA também são muito mais finos que os ATA, o que é benéfico para a circulação de ar no chassi e facilita a organização dos cabos.
O nome completo do SCSI é Small Computer System Interface. Ele passou por muitas gerações de desenvolvimento, desde o início do SCSI-II até o atual Ultra320 SCSI e Fiber-Channel, com vários tipos de interface. Os discos rígidos SCSI são amplamente utilizados em computadores pessoais e servidores em nível de estação de trabalho. Portanto, eles usam tecnologias mais avançadas, como alta velocidade de disco de 15.000 rpm, e têm menor uso de CPU durante a transmissão. do que discos rígidos ATA e SATA com a mesma capacidade.
Cada peça de hardware no Linux é tratada como um arquivo, incluindo discos. Os discos são nomeados de acordo com o tipo de interface do disco. Os nomes comuns dos arquivos do disco são os seguintes:
A determinação do número de série após o nome do arquivo está relacionada à ordem em que o sistema detecta os discos e não tem nada a ver com a posição do slot em que os discos são inseridos.
Existem dois formatos principais de tabelas de partição de disco, um é a tabela de partição MBR mais restritiva e o outro é a tabela de partição GPT mais recente e menos restritiva.
No MBR, o primeiro setor é o mais importante. Ele contém o registro mestre de inicialização (MBR) e a tabela de partição. O registro mestre de inicialização ocupa 446 bytes e a tabela de partição ocupa 64 bytes.
A tabela de partições tem apenas 64 bytes e só pode armazenar até 4 partições, que são a partição primária (Primária) e a partição estendida (Estendida). Existe apenas uma partição estendida, que utiliza outros setores para registrar tabelas de partição adicionais. Portanto, mais partições podem ser divididas por meio de partições estendidas.
O Linux também trata partições como arquivos. O método de nomenclatura dos arquivos de partição é: nome do arquivo do disco + número, como /dev/sda1. Observe que a numeração das partições lógicas começa em 5.
Discos diferentes têm tamanhos de setor diferentes, por exemplo, 512 bytes e 4k para os discos mais recentes. Para ser compatível com todos os discos, o GPT usa endereços de bloco lógico (Logical Block Address, LBA) em setores definidos. O tamanho padrão do LBA é 512 bytes.
O primeiro bloco do GPT registra o registro de inicialização principal (MBR), seguido por 33 blocos para registrar informações de partição, e os últimos 33 blocos são usados para fazer backup de informações de partição. O primeiro desses 33 blocos é o registro do cabeçalho GPT. Esta parte registra a localização e o tamanho da própria tabela de partição e a localização da partição de backup. Ele também coloca o código de verificação (CRC32) da tabela de partição. use este código de verificação para determinar se o GPT está correto. Se houver um erro, você poderá usar a partição de backup para restaurá-lo.
GPT não possui o conceito de partições estendidas. Todas são partições primárias. Cada LAB pode ser dividido em 4 partições, portanto, um total de 4 * 32 = 128 partições.
MBR não suporta discos rígidos acima de 2,2 TB, enquanto GPT suporta até 233 TB = 8 ZB.
BIOS (Basic Input/Output System) é um firmware (software incorporado no hardware). O programa BIOS é armazenado em uma memória somente leitura que não perderá seu conteúdo após uma queda de energia.
BIOS é o primeiro programa executado pelo computador quando ele é ligado. Este programa conhece o disco que pode ser inicializado e lê o registro de inicialização principal (MBR) do primeiro setor do disco. programa de gerenciamento de inicialização, este programa de gerenciamento de inicialização carregará os arquivos principais do sistema operacional.
O gerenciador de inicialização no Main Boot Record (MBR) fornece as seguintes funções:
menu, carregue arquivos principais e transfira para outros programas de gerenciamento de inicialização. A função de transferência pode ser usada para implementar inicialização múltipla. Você só precisa instalar o programa de gerenciamento de inicialização de outro sistema operacional no setor de inicialização de outra partição. Ao iniciar o programa de gerenciamento de inicialização, você pode optar por iniciar o sistema operacional atual ou. inicie o sistema operacional atual por meio do menu. Transfira-o para outros programas de gerenciamento de inicialização para iniciar outro sistema operacional.
Na figura abaixo, o programa de gerenciamento de boot no registro de boot principal (MBR) do primeiro setor oferece dois menus: M1, M2 aponta para o sistema operacional Windows e M2 aponta para os setores de boot de outras partições, que contém. Outro programa de gerenciamento de inicialização fornece um menu apontando para Linux.
Para instalar a inicialização múltipla, é melhor instalar primeiro o Windows e depois o Linux. Como o registro de inicialização principal (MBR) será substituído durante a instalação do Windows, o Linux pode optar por instalar o programa de gerenciamento de inicialização no registro de inicialização principal (MBR) ou no setor de inicialização de outras partições e pode definir o menu do programa de gerenciamento de inicialização .
O BIOS não consegue ler a tabela de partição GPT, mas o UEFI consegue.
Formatar uma partição é criar um sistema de arquivos na partição. Geralmente, uma partição só pode ser formatada com um sistema de arquivos, mas tecnologias como matrizes de disco podem formatar uma partição com vários sistemas de arquivos.
Os componentes mais importantes são os seguintes:
Além disso, também inclui:
Isso significa que o bloco onde está localizado o conteúdo de um arquivo está muito disperso.
Os tamanhos de bloco suportados no sistema de arquivos Ext2 são 1K, 2K e 4K. Tamanhos diferentes limitam o tamanho máximo de um único arquivo e do sistema de arquivos.
tamanho | 1 KB | 2 KB | 4 KB |
---|---|---|---|
maior arquivo único | 16 GB | 256 GB | 2 TB |
Sistema de arquivos máximo 2 TB 8 TB 16 TB Um bloco só pode ser usado por um arquivo e a parte não utilizada é diretamente desperdiçada. Portanto, se você precisar armazenar um grande número de arquivos pequenos, é melhor escolher um bloco menor.
O inode contém especificamente as seguintes informações:
inode tem as seguintes características:
O inode registra o número do bloco onde o conteúdo do arquivo está localizado, mas cada bloco é muito pequeno. Um arquivo grande requer centenas de milhares de blocos. Um inode tem um tamanho limitado e não pode fazer referência direta a tantos números de bloco. Portanto, foram introduzidas referências indiretas, duplas indiretas e triplas indiretas. Referência indireta significa que o bloco de referência registrado pelo inode registra informações de referência.
Quando um diretório é criado, um inode e pelo menos um bloco são alocados. O conteúdo gravado por bloco é o número do inode e o nome de todos os arquivos no diretório. Pode-se observar que o inode do arquivo em si não registra o nome do arquivo, mas o nome do arquivo é gravado no diretório. Portanto, operações como adicionar arquivos, excluir arquivos e alterar nomes de arquivos estão relacionadas à permissão w de. o diretório.
Se houver uma queda repentina de energia, ocorrerá um erro no sistema de arquivos. Por exemplo, o bitmap do bloco só foi modificado antes da queda de energia, mas os dados não foram realmente gravados no bloco. O sistema de arquivos ext3/ext4 apresenta uma função de log, que pode ser usada para reparar o sistema de arquivos.
A montagem usa o diretório como ponto de entrada do sistema de arquivos, ou seja, após entrar no diretório, os dados do sistema de arquivos podem ser lidos.
Para manter a consistência na estrutura de diretórios de diferentes distribuições Linux, o Filesystem Hierarchy Standard (FHS) especifica a estrutura de diretórios do Linux.
Os três diretórios mais básicos são os seguintes:
Existem três tipos de usuários: proprietários de arquivos, grupos e outros usuários diferentes têm permissões de arquivo diferentes.
Ao usar ls para visualizar um arquivo, as informações de um arquivo serão exibidas, como drwxr-xr-x. 3 root root 17 May 6 00:14 .config
.
Os tipos de arquivos comuns e seus significados são:
No campo de permissão de arquivo de 9 dígitos, cada 3 dígitos estão em um grupo e há 3 grupos no total. Cada grupo representa as permissões de arquivo para o proprietário do arquivo, o grupo ao qual ele pertence e outras pessoas. Os três dígitos em um conjunto de permissões são permissões r, w e x, indicando legível, gravável e executável.
Existem três tipos de tempos de arquivo:
Liste as informações de um arquivo ou diretório As informações do diretório são os arquivos nele contidos.
# # ls [-aAdfFhilnrRSt] file|dir
-a : 列出全部的文件
-d : 仅列出目录本身
-l : 以长数据串行列出,包含文件的属性与权限等等数据
cd [相对路径或绝对路径]
# # mkdir [-mp] 目录名称
-m : 配置目录权限
-p : 递归创建目录
rmdir [-p] 目录名称
-p : 递归删除目录
# # touch [-acdmt] filename
-a : 更新 atime
-c : 更新 ctime,若该文件不存在则不建立新文件
-m : 更新 mtime
-d : 后面可以接更新日期而不使用当前日期,也可以使用 --date= "日期或时间"
-t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]
Copie o arquivo. Se houver mais de dois arquivos de origem, o arquivo de destino deverá ser um diretório.
cp [-adfilprsu] source destination
-a : 相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明
-d : 若来源文件为链接文件,则复制链接文件属性而非文件本身
-i : 若目标文件已经存在时,在覆盖前会先询问
-p : 连同文件的属性一起复制过去
-r : 递归持续复制
-u : destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
--preserve=all : 除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了
# # rm [-fir] 文件或目录
-r : 递归删除
Mova arquivos.
# # mv [-fiu] source destination
# # mv [options] source1 source2 source3 .... directory
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
Um conjunto de permissões pode ser representado por números. Neste momento, os três bits de um conjunto de permissões são considerados como os bits de um número binário. O peso de cada bit da esquerda para a direita é 4, 2 e 1. ou seja, o peso digital correspondente a cada permissão. Os valores são r: 4, w: 2, x: 1.
# # chmod [-R] xyz dirname/filename
Exemplo: altere as permissões do arquivo .bashrc para -rwxr-xr--.
# # chmod 754 .bashrc
Você também pode usar símbolos para definir permissões.
# # chmod [ugoa] [+-=] [rwx] dirname/filename
- u: 拥有者
- g: 所属群组
- o: 其他人
- a: 所有人
- +: 添加权限
- -: 移除权限
- =: 设定权限
Exemplo: adicione permissões de gravação ao arquivo .bashrc para todos os usuários.
# # chmod a+w .bashrc
**Os nomes dos arquivos não são armazenados no conteúdo de um arquivo, mas no diretório em que o arquivo está localizado. **Portanto, ter permissão w no arquivo não pode modificar o nome do arquivo. Os diretórios armazenam listas de arquivos e as permissões de um diretório são as permissões em sua lista de arquivos.
**Portanto, a permissão r do diretório significa que a lista de arquivos pode ser lida; a permissão w significa que a lista de arquivos pode ser modificada, especificamente, adicionar, excluir arquivos e modificar o nome do arquivo pode tornar a permissão x; diretório um diretório de trabalho, e a permissão x pode tornar o diretório um diretório de trabalho. É a base das permissões r e w. Se um diretório não puder ser transformado em um diretório de trabalho, não haverá como ler a lista de arquivos ou modificar a lista. lista de arquivos. **
# # ln [-sf] source_filename dist_filename
-s : 默认是 hard link,加 -s 为 symbolic link
-f : 如果目标文件存在时,先删除目标文件
Crie uma entrada no diretório para registrar o nome do arquivo e o número do inode. Este inode é o inode do arquivo de origem. Exclua qualquer entrada e o arquivo ainda existirá, desde que o número de referências não seja zero. Possui as seguintes restrições: não pode abranger sistemas de arquivos e não pode vincular diretórios.
# # ln /etc/crontab .
# # ll -i /etc/crontab crontab
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
O arquivo de link simbólico salva o caminho absoluto do arquivo de origem e estará localizado no arquivo de origem durante a leitura. Pode ser entendido como um atalho para o Windows. Quando o arquivo de origem é excluído, o arquivo vinculado não pode ser aberto. Links podem ser feitos para diretórios.
# # ll -i /etc/crontab /root/crontab2
34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 - > /etc/crontab
# # cat [-AbEnTv] filename
-n : 打印出行号,连同空白行也会有行号,-b 不会
# # head [-n number] filename
-n : 后面接数字,代表显示几行的意思
Pesquisa de comando.
# # which [-a] command
-a : 将所有指令列出,而不是只列第一个
Pesquisa de arquivos. É mais rápido porque pesquisa apenas alguns diretórios específicos. ## whereis [-bmsu] nome do diretório/nome do arquivo
Pesquisa de arquivos. Você pode pesquisar usando palavras-chave ou expressões regulares. localizar usa o banco de dados /var/lib/mlocate/ para pesquisar. Ele é armazenado na memória e atualizado uma vez por dia, portanto, você não pode usar localizar para pesquisar arquivos recém-criados. Você pode usar updateb para atualizar o banco de dados imediatamente.
# # locate [-ir] keyword
-r: 正则表达式
Pesquisa de arquivos. Você pode pesquisar usando as propriedades e permissões do arquivo.
# # find [basedir] [option]
example: find . -name " shadow* "
(1) Opções relacionadas ao tempo
-mtime n : 列出在 n 天前的那一天修改过内容的文件
-mtime +n : 列出在 n 天之前 (不含 n 天本身) 修改过内容的文件
-mtime -n : 列出在 n 天之内 (含 n 天本身) 修改过内容的文件
-newer file : 列出比 file 更新的文件
(2) Opções relacionadas a proprietários e grupos de arquivos
-uid n
-gid n
-user name
-group name
-nouser : 搜索拥有者不存在 /etc/passwd 的文件
-nogroup: 搜索所属群组不存在于 /etc/group 的文件
(3) Opções relacionadas a permissões e nomes de arquivos
-name filename
-size [+-]SIZE: 搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有: c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k
-type TYPE
-perm mode : 搜索权限等于 mode 的文件
-perm -mode : 搜索权限包含 mode 的文件
-perm /mode : 搜索权限包含任一 mode 的文件
Existem muitos nomes de arquivos compactados no Linux, os mais comuns são os seguintes:
extensão | Compressor |
---|---|
*.Z | compressa |
*.zip | zip |
*.gz | gzip |
*.bz2 | bzip2 |
*.xz | xz |
*.alcatrão | Os dados empacotados pelo programa tar não são compactados. |
*.tar.gz | Arquivos empacotados pelo programa tar e compactados por gzip |
*.tar.bz2 | Arquivos empacotados pelo programa tar e compactados pelo bzip2 |
*.tar.xz | Arquivos empacotados pelo programa tar e compactados por xz |
gzip é o comando de compactação mais usado no Linux e pode descompactar arquivos compactados por compress, zip e gzip.
Após a compactação gzip, o arquivo de origem não existe mais. Existem 9 níveis de compressão diferentes disponíveis. Você pode usar zcat, zmore e zless para ler o conteúdo de arquivos compactados.
$ gzip [-cdtv#] filename
-c : 将压缩的数据输出到屏幕上
-d : 解压缩
-t : 检验压缩文件是否出错
-v : 显示压缩比等信息
-# # : ## 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6
Fornece taxa de compactação mais alta que gzip. Ver comandos: bzcat, bzmore, bzless, bzgrep.
$ bzip2 [-cdkzv#] filename
-k : 保留源文件
Fornece melhor taxa de compactação do que bzip2. Pode-se observar que as taxas de compactação de gzip, bzip2 e xz são constantemente otimizadas. Contudo, deve-se notar que quanto maior a taxa de compressão, maior será o tempo de compressão.
Ver comandos: xzcat, xzmore, xzless, xzgrep.
$ xz [-dtlkc#] filename
O comando de compactação pode compactar apenas um arquivo, enquanto o pacote pode compactar vários arquivos em um arquivo grande. Tar não pode ser usado apenas para empacotamento, mas você também pode usar gip, bzip2 e xz para compactar os arquivos compactados.
$ tar [-z | -j | -J] [cv] [-f 新建的 tar 文件] filename... ==打包压缩
$ tar [-z | -j | -J] [tv] [-f 已有的 tar 文件] ==查看
$ tar [-z | -j | -J] [xv] [-f 已有的 tar 文件] [-C 目录] ==解压缩
-z : 使用 zip;
-j : 使用 bzip2;
-J : 使用 xz;
-c : 新建打包文件;
-t : 查看打包文件里面有哪些文件;
-x : 解打包或解压缩的功能;
-v : 在压缩/解压缩的过程中,显示正在处理的文件名;
-f : filename: 要处理的文件;
-C 目录 : 在特定目录解压缩。
Uso | Ordem |
---|---|
Embalar e comprimir | tar -jcv -f filename.tar.bz2 O nome do arquivo ou diretório a ser compactado |
Verificar | tar -jtv -f nome do arquivo.tar.bz2 |
Descompacte | tar -jxv -f filename.tar.bz2 -C Diretório para descompactar |
Você pode solicitar que o kernel forneça serviços por meio do Shell, e Bash é um tipo de Shell.
Histórico de comandos: registre comandos usados Conclusão de comandos e arquivos: Tecla de atalho: tab Alias de nomenclatura: Por exemplo, lm é o alias de ls -al shell scripts Curinga: Por exemplo, ls -l /usr/bin/X* lista /usr/ bin Todos os arquivos abaixo começando com X
$
antes da variável ou pode usar o formato ${}
;$ x=abc
$ echo $x
$ echo ${x}
Se houver espaços no conteúdo da variável, deverão ser utilizadas aspas duplas ou simples.
x="lang is $LANG"
, então o valor de x is lang é zh_TW.UTF-8;x='lang is $LANG'
, então o valor de x is lang é $LANG
. 指令
ou $(指令)
para atribuir os resultados da execução de instruções a variáveis. Por exemplo, version=$(uname -r), o valor da versão é 4.15.0-22-generic. Você pode usar o comando de exportação para converter variáveis personalizadas em variáveis de ambiente. Variáveis de ambiente podem ser usadas em subprogramas. Os chamados subprogramas são sub-Bash gerados pelo Bash atual. Variáveis bash podem ser declaradas como arrays e números inteiros. Observe que os tipos numéricos não possuem números de ponto flutuante. Se não for declarado, o padrão será o tipo string. As variáveis são declaradas usando o comando declare: $ declare [-aixr] variable
-a : 定义为数组类型
-i : 定义为整数类型
-x : 定义为环境变量
-r : 定义为 readonly 类型
Use [ ] para indexar um array:
$ array[1]=a
$ array[2]=b
$ echo ${array[1]}
$PATH
e execute-a.Redirecionamento refere-se ao uso de arquivos em vez de entrada padrão, saída padrão e saída de erro padrão.
1 | código | operador |
---|---|---|
Entrada padrão (stdin) | 0 | < ou << |
Saída padrão (stdout) | 1 | > ou >> |
Saída de erro padrão (stderr) | 2 | 2> ou 2>> |
Dentre elas, uma seta indica o redirecionamento de forma sobrescrita, enquanto duas setas indicam o redirecionamento de forma anexada.
A saída padrão desnecessária e a saída de erro padrão podem ser redirecionadas para /dev/null, o que equivale a jogá-las no lixo. Se você precisar redirecionar a saída padrão e a saída de erro padrão para um arquivo ao mesmo tempo, será necessário converter uma saída em outra saída. Por exemplo, 2>&1 significa converter a saída de erro padrão em saída padrão.
$ find /home -name .bashrc > list 2>&1
$ nohup latte-dock --replace > /dev/null 2>&1 & # 没有任何输出的后台任务
Pipelining consiste em usar a saída padrão de um comando como a entrada padrão de outro comando. O pipeline pode ser usado quando os dados precisam ser processados em várias etapas antes que possamos obter o que desejamos.
Use | entre comandos para separar comandos de pipeline individuais.
$ ls -al /etc | less
cut divide os dados e extrai a parte desejada. O processo de segmentação prossegue linha por linha.
$ cut
-d : 分隔符
-f : 经过 -d 分隔后,使用 -f n 取出第 n 个区间
-c : 以字符为单位取出区间
$ last
root pts/1 192.168.201.101 Sat Feb 7 12:35 still logged in
root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 (06:33)
root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16)
$ last | cut -d ' ' -f 1
$ export
declare -x HISTCONTROL= " ignoredups "
declare -x HISTSIZE= " 1000 "
declare -x HOME= " /home/dmtsai "
declare -x HOSTNAME= " study.centos.vbird "
.....(其他省略).....
$ export | cut -c 12-
usado para classificação.
$ sort [-fbMnrtuk] [file or stdin]
-f : 忽略大小写
-b : 忽略最前面的空格
-M : 以月份的名字来排序,例如 JAN,DEC
-n : 使用数字
-r : 反向排序
-u : 相当于 unique,重复的内容只出现一次
-t : 分隔符,默认为 tab
-k : 指定排序的区间
$ cat /etc/passwd | sort -t ' : ' -k 3
root:x:0:0:root:/root:/bin/bash
dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash
alex:x:1001:1002::/home/alex:/bin/bash
arod:x:1002:1003::/home/arod:/bin/bash
Você pode pegar apenas um dado duplicado.
$ uniq [-ic]
-i : 忽略大小写
-c : 进行计数
$ last | cut -d ' ' -f 1 | sort | uniq -c
1
6 (unknown
47 dmtsai
4 reboot
7 root
1 wtmp
O redirecionamento de saída redirecionará o conteúdo de saída para um arquivo, e tee pode não apenas completar esta função, mas também preservar a saída na tela. Ou seja, usando o comando tee, uma saída é enviada tanto para o arquivo quanto para a tela.
$ tee [-a] file
Usado para excluir caracteres em uma linha ou substituir caracteres.
$ tr [-ds] SET1 ...
-d : 删除行中 SET1 这个字符串
$ last | tr ' [a-z] ' ' [A-Z] '
Converta caracteres de tabulação em caracteres de espaço.
$ col [-xb]
-x : 将 tab 键转换成对等的空格键
Converta tabulações em um determinado número de espaços, o padrão é 8.
$ expand [-t] file
-t : tab 转为空格的数量
Mesclar linhas com os mesmos dados.
$ join [-ti12] file1 file2
-t : 分隔符,默认为空格
-i : 忽略大小写的差异
-1 : 第一个文件所用的比较字段
-2 : 第二个文件所用的比较字段
Cole as duas linhas diretamente juntas.
$ paste [-d] file1 file2
-d : 分隔符,默认为 tab
split divide um arquivo em vários arquivos.
$ split [-bl] file PREFIX
-b : 以大小来进行分区,可加单位,例如 b, k, m 等
-l : 以行数来进行分区。
- PREFIX : 分区文件的前导名称
g/re/p (pesquisar globalmente uma expressão regular e imprimir), use expressões regulares para pesquisar e imprimir globalmente.
$ grep [-acinv] [--color = auto] 搜寻字符串 filename
-c : 统计个数
-i : 忽略大小写
-n : 输出行号
-v : 反向选择,也就是显示出没有 搜寻字符串 内容的那一行
--color=auto : 找到的关键字加颜色显示
$ grep -n ' the ' regular_express.txt
8:I can ' t finish the test.
12:the symbol ' * ' is represented as start.
15:You are the best is mean you are the no. 1.
16:The world Happy is the same with "glad".
18:google is the best tools for search keyword
Como { e } têm um significado especial no shell, eles devem ser escapados usando caracteres de escape.
$ grep -n ' go{2,5}g ' regular_express.txt
Para saída formatada. Não pertence ao comando pipeline. Você precisa usar o formulário $() ao transmitir dados para printf.
$ printf ' %10s %5i %5i %5i %8.2f n ' $( cat printf.txt )
DmTsai 80 60 92 77.33
VBird 75 55 80 70.00
Ken 60 90 70 73.33
Foi criado por Alfred Aho, Peter Weinberger e Brian Kernighan. O nome awk são as iniciais dos três fundadores.
awk processa uma linha por vez. A menor unidade de processamento é um campo.