Das schnellste Textsuchtool von Linux: ripgrep (die beste Alternative zu grep)

Das schnellste Textsuchtool von Linux: ripgrep (die beste Alternative zu grep)

Vorwort

Apropos Textsuchtools: Jeder sollte grep kennen, eines der nützlichsten und am häufigsten verwendeten Tools in Linux.
Wenn Sie jedoch in einem großen Ingenieurprojekt nach einem Schlüsselwort suchen möchten, müssen Sie wissen, dass dies zeitaufwändig ist.
Es gibt viele alternative Tools, die bekanntesten sind Ack, Ag
Vor kurzem ist eine neue Alternative aufgetaucht: Ripgrep. Dieses Tool verwendet Multithreading wie Ack/Ag, aber rg ist schneller als diese.

Einführung

ripgrep ist ein zeilenbasiertes Suchwerkzeug, das das angegebene Verzeichnis rekursiv nach dem bereitgestellten Muster durchsucht. Es ist in der Sprache Rust geschrieben und im Vergleich zu ähnlichen Tools unglaublich schnell.
Einige der Funktionen sind wie folgt:

  • Automatische rekursive Suche (grep erfordert -R)
  • Dateien in .gitignore und Binärdateien automatisch ignorieren
  • Sie können nach einem bestimmten Dateityp suchen (rg -tpy foo begrenzt Python-Dateien, rg -Tjs foo schließt JS-Dateien aus).
  • Unterstützt die meisten Grep-Funktionen (alle häufig verwendeten)
  • Unterstützt verschiedene Dateikompilierungen (UTF-8, UTF-16, Latin-1, GBK, EUC-JP, Shift_JIS usw.)
  • Unterstützt die Suche nach gängigen komprimierten Dateien (gzip, xz, lzma, bzip2, lz4)
  • Passende Ergebnisse automatisch hervorheben
  • Kürzere Befehlsnamen rg (grep besteht aus vier Zeichen)
  • Unterstützt keine mehrzeiligen Suchen und ausgefallene reguläre Ausdrücke

Installieren Sie ripgrep

Installieren Sie zuerst RUST

curl https://sh.rustup.rs -sSf | sh

Dann drücken Sie einfach die Eingabetaste.

Installieren Sie Rigpre ​​​​mit RUST

Git-Klon https://github.com/BurntSushi/ripgrep
CD-Ripgrep
Frachtbau --Release
cp ./target/release/rg /usr/local/bin/

Der letzte Schritt besteht darin, es entsprechend Ihrer Situation in einen Pfad in PATH einzufügen.

verwenden

Anzeige der Suchergebnisse

Verwendung Allgemeines Format

VERWENDUNG:
  rg [OPTIONEN] MUSTER [PFAD ...]
  rg [OPTIONEN] [-e MUSTER ...] [-f MUSTERDATEI ...] [PFAD ...]
  rg [OPTIONEN] --files [PFAD ...]
  rg [OPTIONEN] --type-list
  Befehl | rg [OPTIONEN] MUSTER

Eingabeparameter

ARGS:
  <MUSTER>
      Ein regulärer Ausdruck, der für die Suche verwendet wird. Um ein Muster zu finden, das mit einem
      Bindestrich, verwenden Sie das Flag -e/--regexp.

      Um beispielsweise nach dem Literal „-foo“ zu suchen, können Sie dieses Flag verwenden:

        rg -e -foo

      Sie können auch das spezielle Trennzeichen '--' verwenden, um anzugeben, dass keine weiteren Flags
      wird bereitgestellt. Das Folgende ist nämlich gleichwertig zum obigen:

        rg -- -foo

  <PFAD>…
      Eine zu durchsuchende Datei oder ein zu durchsuchendes Verzeichnis. Verzeichnisse werden rekursiv durchsucht. Pfade, die auf
      die Befehlszeile überschreibt Glob und ignoriert Regeln.

Optionen Beschreibung andere
-A, --after-context <ZAHL> <NUM> Zeilen nach dem übereinstimmenden Inhalt anzeigen Wird --context überschreiben
-B, --before-context <ZAHL> <NUM> Zeilen vor dem passenden Inhalt anzeigen Wird --context überschreiben
-b, --byte-offset Zeigt den Byte-Offset des passenden Inhalts in der Datei an Verwenden Sie es mit -o, um nur den Offset zu drucken.
-s, --case-sensitive Groß-/Kleinschreibung beachten Überschreibt -i (Groß-/Kleinschreibung ignorieren), -S (Smart Case)
--color <WANN> Wann soll Farbe verwendet werden? Standardmäßig ist „Auto“ Wenn --vimgre verwendet wird, ist der Standardwert nie
Die Optionen sind: nie, automatisch, immer, ansi
--colors <FARBENSPEZIFIKATION>… Legen Sie die Ausgabefarbe fest: Farbe: rot, blau, grün, cyan
{type}:{attribute}:{value} Magenta, Gelb, Weiß, Schwarz
{type} : Pfad, Zeile, Spalte, Übereinstimmung Stil: nobold, bold, nointense
{attribute} : fg, bg, Stil intensiv, keine Unterstreichung, Unterstreichung
{value} : eine Farbe oder ein Textstil Beispiel:
{type}:none löscht die Farbeinstellung von {type} rg --colors 'Übereinstimmung:fg:magenta' --colors 'Zeile:bg:gelb' foo
Der erweiterte Farbsatz kann von {value} verwendet werden, wenn das Terminal ANSI-Farben unterstützt.
Die Beschreibungsmethode ist „x“ (256 Farben) oder „x,x,x“ (24-Bit-Echtfarben).
x ist ein Wert zwischen 0 und 255, der Standardwert ist dezimal und das Präfix 0x ist hexadezimal
Beispiel: rg --colors 'match:bg:0,128,255'
oder gleichwertig: rg --colors 'match:bg:0x0,0x80,0xFF'
Bei Verwendung des erweiterten Farbcodes sind die Optionen „Intense“ und „Nointense“ ungültig.
--Spalte Die Spaltennummer der ersten Übereinstimmung (beginnend bei 1) Kann durch --no-column deaktiviert werden
-C, --context <ZAHL> <NUM> Zeilen vor und nach der Übereinstimmung anzeigen Dies überschreibt die Optionen -B und -A.
--context-separator <TRENNZEICHEN> Wird verwendet, um nicht aufeinanderfolgende Zeilen in der Ausgabe zu trennen x7F oder t können verwendet werden, der Standard ist --
-c, --count Nur übereinstimmende Zeilen anzeigen Wenn ripgrep nur eine Datei übergeben wird, wird nur die Anzahl der übereinstimmenden Zeilen ausgedruckt.
Sie können --with-filename verwenden, um das Drucken des Dateinamens zu erzwingen.
Dies überschreibt die Option --count-matches.
--count-matches Nur die Anzahl der Übereinstimmungen anzeigen Mit --with-file können Sie die Ausgabe des Dateinamens erzwingen, wenn nur eine Datei vorhanden ist.
--debuggen Debuginformationen anzeigen
--dfa-size-limit <ZAHL+SUFFIX?> Die Obergrenze des Regex-DFA beträgt standardmäßig 10 M.
-E, --encoding <KODIERUNG> Beschreibung Textkodierung, Standard ist automatisch https://encoding.spec.whatwg.org/#concept-encoding-get
-f, --file <MUSTERDATEI>… Muster aus Datei lesen, ein Muster pro Zeile Kann mehrfach oder in Kombination mit -e verwendet werden, sodass jede Kombination übereinstimmt
--files Alle zu durchsuchenden Dateien drucken Verwendung mit rg <options> --files [PATH...] , ohne Muster
-l, --files-with-matches Drucken Sie nur die Dateinamen, die übereinstimmen --files-without-match überschreiben
--Dateien ohne Übereinstimmung Drucken Sie nur die Dateinamen, die nicht übereinstimmen --file-with-matches überschreiben
-F, --fixed-strings Muster als normalen Text und nicht als regulären Ausdruck behandeln Diese Option kann mit --no-fixed-strings deaktiviert werden.
-L, --follow Sucht rekursiv nach Links, standardmäßig geschlossen Sie können --no-follow verwenden, um es auszuschalten
-g, --glob <GLOB>… Platzhalterdateien oder -ordner können mit ! negiert werden. Kann mehrfach verwendet werden, entspricht den Platzhalterregeln von .gitignore
-h, --help Hilfeinformationen drucken
--Überschrift Drucken Sie den Dateinamen über dem passenden Inhalt statt in der gleichen Zeile Dies ist das Standardverhalten und kann mit --no-heading deaktiviert werden.
--versteckt Suche nach versteckten Dateien und Ordnern Wird standardmäßig ignoriert, kann mit --no-hidden deaktiviert werden
--iglob <GLOB>… Dasselbe wie --glob, aber ohne Berücksichtigung der Groß-/Kleinschreibung
-i, --ignore-case Das Muster berücksichtigt keine Groß-/Kleinschreibung Diese Option kann durch -s/--case-sensitive oder -S/--smart-case überschrieben werden.
--ignore-file <PFAD>… Pfade ignorieren, das Format ist das gleiche wie .gitignore, mehrere Pfade sind zulässig Wenn mehrere --ignore-file-Tags vorhanden sind, hat der letzte Vorrang.
Verwenden Sie im Befehl -g, um den gleichen Effekt zu erzielen
-v, --invert-match Umgekehrtes Match
-n, --line-number Dateizeilennummer anzeigen, standardmäßig öffnen
-x, --line-regexp Nur Zeilen anzeigen, die vollständig mit dem Muster übereinstimmen Wird --word-regexp überschreiben
-M, --max-columns <ANZAHL> Keine übereinstimmenden Zeilen mit mehr als <NUM> Spalten drucken
-m, --max-count <ZAHL> Beschränken Sie eine Datei auf maximal <NUM> Zeilen.
--max-depth <ZAHL> Begrenzen Sie die Tiefe rekursiver Ordnersuchen rg --max-depth 0 dir/ Keine Suche durchführen
--max-filesize <ZAHL+SUFFIX?> Ignoriere Dateien, die größer sind als <NUM> Bytes Suffix kann K, M, G sein, der Standard ist Byte
--mmap Versuchen Sie, Speicherzuordnungen zu verwenden, Standardverhalten Derzeit werden nicht alle Optionen unterstützt. Verwenden Sie --no-mmap, um die Option zu deaktivieren.
--no-config Lies keine Konfigurationsdateien, ignoriere RIPGREP_CONFIG_PATH
--no-filename Keine übereinstimmenden Dateinamen drucken
--keine Überschrift Drucken Sie den Dateinamen vor jeder übereinstimmenden Zeile.
--nicht ignorieren Ignorierdateien abbrechen, z. B. .gitignore, .ignore Kann mit --ignore deaktiviert werden.
--no-ignore-global Lesen der globalen Ignorierdatei abbrechen Beispiel: $HOME/.config/git/ignore
--no-ignore-messages Parsing-Fehler im Zusammenhang mit .ignore- und .gitignore-Dateien abbrechen Kann mit --ignore-messages deaktiviert werden
--kein-Ignorieren-übergeordnetes Element Liest keine .gitignore- und .ignore-Dateien in übergeordneten Ordnern Kann mit --ignore-parent deaktiviert werden.
--no-ignore-vcs Nur die Catch-All-Datei .ignore Kann mit --ignore-vcs deaktiviert werden.
-N, --no-line-number Keine übereinstimmenden Zeilennummern drucken
--keine-Nachrichten Drucken Sie keine Fehler im Zusammenhang mit dem Öffnen und Lesen von Dateien
-0, --null Fügen Sie nach dem gedruckten Dateipfad ein NUL-Zeichen hinzu Sehr nützlich für xargs
-o, --only-matching Drucken Sie nur den übereinstimmenden Inhalt, nicht die gesamte Zeile
--passthru Übereinstimmende und nicht übereinstimmende Zeilen drucken
--path-separator <TRENNZEICHEN> Pfadtrennzeichen, Standard ist / unter Linux
--pre <BEFEHL> Verarbeiten Sie die Datei mit <COMMAND> und übergeben Sie das Ergebnis an rg Es kann zu erheblichen Leistungseinbußen kommen
Zum Beispiel
Fall "$1" in
*.pdf)
Exec pdftotext "$1" -
;;
*)
Fall $(Datei "$1") in
_Zstandard_)
Führen Sie den Befehl pzstd -cdq aus.
;;
*)
Exec-Katze
;;
esac
;;
esac
-p, --pretty --color always --heading --line-number
-q, --quiet Nicht auf Standardausgabe drucken, wenn eine Übereinstimmung gefunden wird, rg stoppen Dies ist nützlich, wenn rg im Exit-Code verwendet wird.
--regex-size-limit <ZAHL+SUFFIX?> Obergrenze des kompilierten regulären Ausdrucks
-e, --regexp <MUSTER>… Verwenden Sie reguläre Ausdrücke zum Abgleichen Diese Option kann mehrfach verwendet werden, um Zeilen zu drucken, die einem beliebigen Muster entsprechen.
Kann verwendet werden, um nach Mustern zu suchen, die mit - beginnen, wie etwa rg -e -foo
-r, --replace <ERSATZTEXT> Drucken Sie den passenden Inhalt mit der zugehörigen Datei aus Die Gruppennummer ($5) kann verwendet werden
-z, --search-zip Suche in den Dateitypen gz, bz2, xz, lzma, lz4 Kann mit --no-search-zip deaktiviert werden
-S, --smart-case Wenn alles in Kleinbuchstaben geschrieben ist, wird die Groß-/Kleinschreibung nicht beachtet, andernfalls wird die Groß-/Kleinschreibung beachtet. Kann mit -s/--case-sensitive und -i/--ignore-case deaktiviert werden.
--sort-files Sortieren Sie die Ausgabeergebnisse nach Dateipfad Schaltet parallele Suchthreads ab
--Statistiken Drucken Sie die statistischen Ergebnisse aus
-a, --text Suchen nach Binärdateien Kann mit --no-text deaktiviert werden
-j, --threads <ZAHL> Ungefähre Anzahl der verwendeten Threads
-t, --type <TYP>… Nur nach bestimmten Dateitypen suchen Sie können --type-lsit verwenden, um unterstützte Dateitypen aufzulisten.
--type-add <TYPSPEZIFIKATION>… Hinzufügen eines Dateityps Zum Beispiel rg --type-add 'foo:*.foo' -tfoo PATTERN
Kann auch verwendet werden, um eine Regel zu erstellen, die mehrere Dateitypen umfasst --type-add 'quelle:include:cpp,py,md'
--type-clear <TYP>… Standarddateitypen löschen
--Typliste Alle integrierten Dateitypen auflisten
-T, --type-not <TYP>… Nicht nach einem bestimmten Dateityp suchen
-u, --unrestricted -u sucht nach Dateien in .gitignore, -uu sucht nach versteckten Dateien -uuu Suche nach Binärdateien
-V, --version Informationen zur Druckversion
--vimgrep Eine Zeile pro Übereinstimmung drucken Wenn in einer Zeile mehrere Übereinstimmungen vorhanden sind, werden mehrere Zeilen gedruckt.
-H, --with-filename Übereinstimmende Dateipfade drucken, Standard Kann mit --no-filename deaktiviert werden
-w, --word-regexp Stimmt mit dem Muster als einzelnes Wort überein, entspricht < >

Beispielanzeige

Beispiel 1

$ rg 'Name' ./ 

Beispiel 2

Suche nach Inhalten, bei denen Name ein unabhängiges Wort ist (-w), entspricht <pattern>

$ rg -w 'Name' ./ 

Beispiel 3

Nur Dateinamen mit übereinstimmendem Inhalt drucken (-l)

$ rg -w 'Name' ./ -l
src/cpp/epoll_server.cpp
src/cpp/uart_xtor.cpp

Beispiel 4

Suche nur nach cpp-Dateien (-t), mit -T kannst du bestimmte Dateitypen ausschließen

$ rg -w 'Name' ./ -tcpp 

Beispiel 5

Normale Suche (-e)

$ rg -e "sa.*port" ./ -tcpp 

Beispiel 6

Anzeige des passenden Inhalts und zwei Zeilen darüber und darunter (-C), ähnlich wie bei -A/-B

$ rg -e "sa.*port" ./ -tcpp -C2 

Beispiel 7

Zeilen ohne „debug“ anzeigen (-v)

$ rg -v "debug" -tcpp ./

Beispiel 8

Nur passende Teile anzeigen (-o)

$ rg -e "if.*debug" ./ -tcpp -o 

Beispiel 9

Groß-/Kleinschreibung ignorieren (-i)

$ rg -ie "if.*debug" ./ -tcpp -o 

Beispiel 10

Behandeln Sie das Muster als konstantes Zeichen (-F), z. B. braucht .(){}*+ kein Escapezeichen. Wenn das zu suchende Zeichen mit - beginnt, verwenden Sie -- als Trennzeichen oder verwenden Sie rg -e "-foo"

rg -F "i++)" ./ -tcpp 

Beispiel 11

Alle zu durchsuchenden Dateien drucken --files

rg --Dateien 

Beispiel 12

Integrierter Ausgabe-Erkennungsdateityp

$ rg --Typliste
agda: *.agda, *.lagda
Hilfe: *.aidl
amake: *.bp, *.mk
asciidoc: *.adoc, *.asc, *.asciidoc
asm: *.S, *.asm, *.s
ats: *.ats, *.dats, *.hats, *.sats
avro: *.avdl, *.avpr, *.avsc
awk: *.awk
bazel: *.bzl, BUILD, ARBEITSBEREICH
Bitbake: *.bb, *.bbappend, *.bbclass, *.conf, *.inc
bzip2: *.bz2
c: *.H, *.c, *.cats, *.h
Kabale: *.cabal
cbor: *.cbor
Ceylon: *.ceylon
Clojure: *.clj, *.cljc, *.cljs, *.cljx
cmake: *.cmake, CMakeLists.txt
Kaffeeskript: *.coffee
Konfiguration: *.cfg, *.conf, *.config, *.ini
cpp: *.C, *.H, *.cc, *.cpp, *.cxx, *.h, *.hh, *.hpp, *.hxx, *.inl
Kreolisch: *.creole
crystal: *.cr, Projektdatei
Datei: *.cs
csharp: *.cs
Datei: *.cshtml
CSS: *.css, *.scss
Datei: *.csv
Cython: *.pyx
d: *.d
Pfeil: *.dart
dhall: *.dhall
Docker: *Dockerdatei*
elisp: *.el
Elixier: *.eex, *.ex, *.exs
Ulme: *.elm
erlang: *.erl, *.hrl
fidl: *.fidl
Fisch: *.fish
Fortran: *.F, *.F77, *.F90, *.F95, *.f, *.f77, *.f90, *.f95, *.pfo
fsharp: *.fs, *.fsi, *.fsx
gn: *.gn, *.gni
gehen: *.gehen
groovy: *.gradle, *.groovy
gzip: *.gz
h: *.h, *.hpp
haskell: *.c2hs, *.cpphs, *.hs, *.hsc, *.lhs
hbs: *.hbs
hs: *.hs, *.lhs
html: *.ejs, *.htm, *.html
idris: *.idr, *.lidr
java: *.java, *.jsp
jinja: *.j2, *.jinja, *.jinja2
jl: *.jl
Dateiendung js: *.js, *.jsx, *.vue
json: *.json, Komponist.lock
jsonl: *.jsonl
julia: *.jl
jupyter: *.ipynb, *.jpynb
kotlin: *.kt, *.kts
weniger: *.less
Lizenz:* ]*, LGPL-*[0-9]*, Lizenz [CS] E, Lizenz [CS] E [.-]*, MIT-*[0-9]*, MPL-*[0-9]*, Beachten Sie [.-]*, Ofl-*[0-9]*, Patents, Patents [.-]*. -]*, lgpl [.-]*, licen [cs] e, licen [cs] e.*
lisp: *.el, *.jl, *.lisp, *.lsp, *.sc, *.scm
Protokoll: *.log
lua: *.lua
lz4: *.lz4
lzma: *.lzma
m4: *.ac, *.m4
erstellen: *.mak, *.mk, GNUmakefile, Gnumakefile, Makefile, gnumakefile, makefile
Mann: *.[0-9][cEFMmpSx], *.[0-9lnpx]
Markdown: *.markdown, *.md, *.mdown, *.mkdn
matlab: *.m
md: *.markdown, *.md, *.mdown, *.mkdn
mk: mk-Datei
ml: *.ml
msbuild: *.csproj, *.fsproj, *.proj, *.props, *.targets, *.vcxproj
nim: *.nim
nix: *.nix
Objekt: *.h, *.m
objcpp: *.h, *.mm
ocaml: *.ml, *.mli, *.mll, *.mly
org: *.org
pdf: *.pdf
perl: *.PL, *.perl, *.pl, *.plh, *.plx, *.pm, *.t
php: *.php, *.php3, *.php4, *.php5, *.phtml
Pod: *.pod
protobuf: *.proto
ps: *.cdxml, *.ps1, *.ps1xml, *.psd1, *.psm1
Puppe: *.erb, *.pp, *.rb
purs: *.purs
py: *.py
qmake: *.prf, *.pri, *.pro
r: *.R, *.Rmd, *.Rnw, *.r
Datei: *.rdoc
Liesmich: *LESEMICH, LESEME*
erste: *.rst
Ruby: *.gemspec, *.rb, .irbrc, Gemfile, Rakefile
Rost: *.rs
sass: *.sass, *.scss
scala: *.sbt, *.scala
sh: *.bash, *.bashrc, *.csh, *.cshrc, *.ksh, *.kshrc, *.sh, *.tcsh, *.zsh, .bash_login, .bash_logout, .bash_profile, .bashrc, .cshrc, .kshrc, .login, .logout, .profile, .tcshrc, .zlogin, .zlogout, .zprofile, .zshenv, .zshrc, bash_login, bash_logout, bash_profile, bashrc, Profil, zlogin, zlogout, zprofile, zshenv, zshrc
Smarty: *.tpl
sml: *.sig, *.sml
Soja: *.soy
Funke: *.spark
SQL: *.psql, *.sql
Stift: *.styl
sv: *.h, *.sv, *.svh, *.v, *.vg
svg: *.svg
schnell: *.swift
Schluck: *.def, *.i
systemd: *.automount, *.conf, *.device, *.link, *.mount, *.path, *.scope, *.service, *.slice, *.socket, *.swap, *.target, *.timer
Aufgabenpapier: *.taskpaper
tcl: *.tcl
tex: *.bib, *.cls, *.ltx, *.sty, *.tex
Textil: *.textile
tf: *.tf
toml: *.toml, Fracht.lock
ts: *.ts, *.tsx
Zweig: *.twig
txt: *.txt
Wert: *.vala
vb: *.vb
verilog: *.sv, *.svh, *.v, *.vh
vhdl: *.vhd, *.vhdl
vim: *.vim
vimscript: *.vim
webidl: *.idl, *.webidl, *.widl
Wiki: *.mediawiki, *.wiki
xml: *.xml, *.xml.dist
xz: *.xz
yacc: *.y
yaml: *.yaml, *.yml
zsh: *.zsh, .zlogin, .zlogout, .zprofile, .zshenv, .zshrc, zlogin, zlogout, zprofile, zshenv, zshrc

Zusammenfassen

Die Suchgeschwindigkeit von Ripgrep ist wirklich schnell, was mir beim Durchsuchen von Code sehr hilft. Ich bin davon überzeugt, dass es für jeden Programmierer von unendlichem Wert ist, insbesondere in Kombination mit FZF.
Die einzige Schwäche ist die Unterstützung für reguläre Ausdrücke, aber das ist ein Kompromiss. Wenn eine Bibliothek wie PCRE verwendet wird, wird die Geschwindigkeit definitiv stark beeinträchtigt.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Probleme mit dem Ladepfad und Suchpfad der Dynamic Link Library unter Linux
  • Detaillierte Beispiele für Dateisuchbefehle unter Linux
  • Der Unterschied zwischen Linux-Befehlssuchbefehlen whereis und which
  • Befehl „Dateien suchen“ in Linux
  • Einführung in die Linux-Dateisuche und andere grundlegende Befehle (3)
  • Verwenden Sie reguläre Ausdrücke in Linux, um flexibel nach Text in Dateien zu suchen
  • So zeigen Sie das Verhalten von Suchmaschinen-Spider-Crawlern in Linux/Nginx an

<<:  Detaillierte Erläuterung der Installationsschritte der dekomprimierten MySQL-Version

>>:  js+canvas realisiert Code-Regeneffekt

Artikel empfehlen

So erstellen Sie ein Docker-Repository mit Nexus

Das mit dem offiziellen Docker-Register erstellte...

VMware Workstation Pro installiert das Win10-Betriebssystem in Reinform

Dieser Artikel beschreibt die Schritte zur Instal...

15 Linux-Befehlsaliase, die Ihnen Zeit sparen

Vorwort Bei der Verwaltung und Wartung des Linux-...

Lösung für den Fehler beim Aufruf von Yum im Docker-Container

Beim Ausführen von yum im Dockerfile oder im Cont...

So vermeiden Sie die URL-Zeitzonenfalle in MySQL

Vorwort Wenn Sie MySQL 6.0.x oder höher (JAR) ver...

Detaillierte Erklärung einer Methode zum Umbenennen von Prozeduren in MySQL

Kürzlich habe ich die Funktion zum Umbenennen ges...

Zusammenfassung der Methoden zur Änderung des Git-Commit-Protokolls

Fall 1: Letzte Übermittlung und kein Push Führen ...

So verwenden Sie CSS-Overflow: Hidden (Überlauf ausblenden und Floats löschen)

Überlauf ausblenden Damit ist gemeint, dass Text-...

Hast du genau verstanden Schlagworte Definition Verwendung

Vorwort : Heute wurde ich gefragt: „Haben Sie das ...

Analyse und Beschreibung von Netzwerkkonfigurationsdateien unter Ubuntu-System

Ich bin heute auf ein seltsames Netzwerkproblem g...

Implementieren von Rechnerfunktionen mit dem WeChat-Applet

Dieser Artikel ist ein einfacher Rechner, der mit...

Detaillierte Erklärung des JSON-Dateischreibformats

Inhaltsverzeichnis Was ist JSON Warum diese Techn...

Lösung zum Einfügen eines Formulars mit einer Leerzeile oben und unten

Ich weiß nicht, ob Ihnen beim Erstellen einer Webs...