[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig

Cov ntaub ntawv, kev txhais lus uas peb tshaj tawm hnub no, yog npaj rau cov neeg uas xav paub txog Linux kab lus txib. Lub peev xwm los siv cov cuab yeej no zoo tuaj yeem txuag tau ntau lub sijhawm. Tshwj xeeb, peb yuav tham txog Bash plhaub thiab 21 cov lus txib tseem ceeb ntawm no. Peb tseem yuav tham txog yuav ua li cas siv cov chij hais kom ua thiab Bash aliases txhawm rau txhawm rau txhawm rau ntaus cov lus qhia ntev.

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig

β†’ Kuj nyeem hauv peb cov blog ib series ntawm cov ntawv tshaj tawm txog bash scripts

Cov ntsiab lus uas

Raws li koj kawm ua haujlwm nrog Linux cov kab hais kom ua, koj yuav ntsib ntau lub tswv yim uas yuav pab tau rau kev taw qhia. Qee tus ntawm lawv, xws li "Linux" thiab "Unix", lossis "plhaub" thiab "terminal", qee zaum tsis meej pem. Cia peb tham txog cov no thiab lwm cov ntsiab lus tseem ceeb.

Unix yog ib qho kev ua haujlwm nrov uas tau tsim los ntawm Bell Labs hauv xyoo 1970s. Nws tus lej raug kaw.

Linux yog qhov nrov tshaj plaws Unix-zoo li operating system. Nws yog tam sim no siv rau ntau yam khoom siv, suav nrog computers.

davhlau ya nyob twg (terminal), lossis davhlau ya nyob twg emulator yog ib qho kev pab cuam uas muab kev nkag mus rau lub operating system. Koj tuaj yeem muaj ntau lub qhov rais davhlau ya nyob twg qhib tib lub sijhawm.

Plhaub (plhaub) yog ib qho kev pab cuam uas tso cai rau koj xa cov lus txib sau ua lus tshwj xeeb rau lub operating system.

bash sawv cev rau Bourne Again Plhaub. Nws yog hom lus plhaub feem ntau siv los cuam tshuam nrog lub operating system. Tsis tas li ntawd, lub plhaub Bash yog lub neej ntawd ntawm macOS.

Hais kom ua kab interface (Command Line Interface, CLI) yog ib txoj hauv kev ntawm kev sib cuam tshuam ntawm tus neeg thiab lub computer, siv cov neeg siv nkag mus rau cov lus txib los ntawm cov keyboard, thiab lub khoos phis tawj, ua tiav cov lus txib, qhia cov lus hauv daim ntawv rau tus neeg siv. Qhov tseem ceeb ntawm kev siv CLI yog kom tau txais cov ntaub ntawv tshiab txog qee qhov chaw, xws li cov ntaub ntawv, thiab ua haujlwm nrog cov ntaub ntawv. Cov kab hais kom ua interface yuav tsum txawv ntawm cov neeg siv graphical interface (GUI), uas feem ntau siv tus nas. Cov kab hais kom ua interface feem ntau hu ua cov kab hais kom ua.

Tsab ntawv (script) yog ib qho kev pab cuam me me uas muaj cov kab ke ntawm cov lus txib plhaub. Cov ntawv sau rau hauv cov ntaub ntawv, lawv tuaj yeem siv tau ntau zaus. Thaum sau ntawv, koj tuaj yeem siv cov kev hloov pauv, cov xwm txheej, cov voj voog, cov haujlwm, thiab lwm yam.

Tam sim no peb tau hais txog cov ntsiab lus tseem ceeb, Kuv xav taw qhia tias kuv yuav siv cov lus "Bash", "plhaub" thiab "kab lus txib" sib hloov ntawm no, nrog rau cov ntsiab lus "directory" thiab "folder".

Txheem ntws, uas peb yuav siv ntawm no yog tus qauv input (standard input, stdin), standard output (cov zis txheem, stdout) thiab standard yuam kev tso zis (standard yuam kev, stderr).

Yog hais tias nyob rau hauv cov piv txwv commands uas yuav muab rau hauv qab no, koj yuav pom tej yam zoo li my_whatever - qhov no txhais tau hais tias qhov seem no yuav tsum tau hloov nrog qee yam ntawm koj li. Piv txwv li, lub npe ntawm cov ntaub ntawv.

Tam sim no, ua ntej pib nrog kev tsom xam ntawm cov lus txib uas cov khoom no tau mob siab rau, cia peb saib lawv cov npe thiab lawv cov lus piav qhia luv luv.

21 Bash cov lus txib

▍ Tau txais cov ntaub ntawv

  • man: Qhia cov neeg siv phau ntawv qhia (pab) rau cov lus txib.
  • pwd: qhia cov ntaub ntawv hais txog kev ua haujlwm.
  • ls: qhia cov ntsiab lus ntawm ib phau ntawv.
  • ps: Tso cai rau koj saib cov ntaub ntawv hais txog kev khiav haujlwm.

▍ File system manipulation

  • cd: hloov chaw ua haujlwm.
  • touch: tsim cov ntaub ntawv.
  • mkdir: tsim ib phau ntawv.
  • cp: Luam ib cov ntaub ntawv.
  • mv: Txav los yog rho tawm cov ntaub ntawv.
  • ln: tsim ib qhov txuas.

▍ I/O redirection thiab pipelines

  • <: redirect stdin.
  • >: redirect stdout.
  • |: piped cov zis ntawm ib qho kev hais kom ua rau cov tswv yim ntawm lwm cov lus txib.

▍ Nyeem cov ntaub ntawv

  • head: nyeem qhov pib ntawm cov ntaub ntawv.
  • tail: nyeem ntawv kawg.
  • cat: Nyeem ib cov ntaub ntawv thiab luam nws cov ntsiab lus rau lub vijtsam, lossis sib txuas cov ntaub ntawv.

▍ Tshem tawm cov ntaub ntawv, nres cov txheej txheem

  • rm: Rho tawm ib cov ntaub ntawv.
  • kill: nres qhov txheej txheem.

▍ Nrhiav

  • grep: nrhiav cov ntaub ntawv.
  • ag: advanced command for searching.

▍ Archiving

  • tar: tsim cov ntaub ntawv thiab ua haujlwm nrog lawv.

Cia peb tham txog cov lus txib no kom ntxaws ntxiv.

Pab neeg Paub meej

Yuav pib nrog, cia peb nrog cov lus txib, cov txiaj ntsig uas tau muab tso rau hauv daim ntawv stdout. Feem ntau cov txiaj ntsig no tshwm sim hauv lub qhov rais davhlau ya nyob twg.

▍ Tau txais cov ntaub ntawv

man command_name: tso saib cov lus qhia, piv txwv li cov ntaub ntawv pab.

pwd: tso saib txoj hauv kev mus rau cov npe ua haujlwm tam sim no. Nyob rau hauv chav kawm ntawm kev ua hauj lwm nrog cov kab hais kom ua, tus neeg siv feem ntau yuav tsum nrhiav kom paub tseeb tias qhov twg hauv qhov system nws nyob.

ls: tso saib cov ntsiab lus ntawm ib phau ntawv. Cov lus txib no kuj tau siv ntau zaus.

ls -a: qhia cov ntaub ntawv zais. chij thov ntawm no -a pab pawg ls. Kev siv cov chij pab kho tus cwj pwm ntawm cov lus txib.

ls -l: Muab cov ncauj lus kom ntxaws txog cov ntaub ntawv.

Nco ntsoov tias cov chij tuaj yeem ua ke. Piv txwv li - zoo li no: ls -al.

ps: Saib cov txheej txheem khiav.

ps -e: Tso cov ntaub ntawv hais txog txhua qhov kev khiav haujlwm, tsis yog cov uas cuam tshuam nrog cov neeg siv lub plhaub tam sim no. Cov lus txib no feem ntau siv rau hauv daim ntawv no.

▍ File system manipulation

cd my_directory: hloov chaw ua haujlwm rau my_directory. Txhawm rau txav mus rau ib qib hauv cov ntoo directory, siv my_directory txoj kev txheeb ze ../.

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig
cd lus

touch my_file: file creation my_file raws txoj kev uas tau muab.

mkdir my_directory: tsim ib daim nplaub tshev my_directory raws txoj kev uas tau muab.

mv my_file target_directory: mov file my_file rau nplaub tshev target_directory. Thaum qhia meej lub hom phiaj phau ntawv qhia, koj yuav tsum siv txoj hauv kev rau nws (thiab tsis yog kev tsim kho zoo li ../).

pab neeg mvtuaj yeem siv los hloov npe cov ntaub ntawv lossis folders. Piv txwv li, nws yuav zoo li no:

mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory
: tsim ib daim qauv ntawm cov ntaub ntawv my_source_file thiab muab tso rau hauv ib daim ntawv tais ceev tseg target_directory.

ln -s my_source_file my_target_file: tsim ib lub cim txuas my_target_file rau cov ntaub ntawv my_source_file. Yog tias koj hloov qhov txuas, thawj cov ntaub ntawv tseem yuav hloov.

Yog cov ntaub ntawv my_source_file yuav deleted, ces my_target_file yuav nyob. Chij -s pab pawg ln tso cai rau koj los tsim cov ntawv txuas rau cov npe.

Tam sim no cia peb tham txog I / O redirection thiab pipelines.

▍ I/O redirection thiab pipelines

my_command < my_file: hloov tus qauv input file descriptor (stdin) per file my_file. Qhov no tuaj yeem pab tau yog tias cov lus txib tos rau qee cov tswv yim los ntawm cov keyboard, thiab cov ntaub ntawv no twb tau khaws cia rau hauv cov ntaub ntawv.

my_command > my_file: redirects cov txiaj ntsig ntawm cov lus txib, piv txwv li dab tsi yuav nquag mus rau hauv stdout thiab tso zis rau qhov screen, rau ib cov ntaub ntawv my_file. Yog cov ntaub ntawv my_file tsis muaj nyob - nws yog tsim. Yog hais tias cov ntaub ntawv muaj, nws yog overwritten.

Piv txwv li, tom qab ua tiav cov lus txib ls > my_folder_contents.txt cov ntawv nyeem yuav raug tsim uas muaj cov npe ntawm yam uas muaj nyob hauv phau ntawv teev npe ua haujlwm tam sim no.

Yog tsis yog lub cim > siv kev tsim kho >>, ces, yog hais tias cov ntaub ntawv uas cov zis ntawm cov lus txib yog redirected muaj, cov ntaub ntawv no yuav tsis overwritten. Cov ntaub ntawv yuav muab ntxiv rau qhov kawg ntawm cov ntaub ntawv no.

Tam sim no cia peb saib cov ntaub ntawv pipeline processing.

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig
Cov zis ntawm ib qho kev hais kom ua yog pub rau hauv cov tswv yim ntawm lwm cov lus txib. Nws zoo li txuas ib lub yeeb nkab mus rau lwm qhov

first_command | second_command: Conveyor cim, |, yog siv los xa cov zis ntawm ib qho lus txib mus rau lwm qhov kev hais kom ua. Dab tsi cov lus txib nyob rau sab laug ntawm cov qauv piav qhia xa mus rau stdout, Poob rau stdin txib mus rau sab xis ntawm lub raj xa dej cim.

Ntawm Linux, cov ntaub ntawv tuaj yeem xa mus siv tsuas yog hais txog ib qho kev hais kom ua tau zoo. Nws feem ntau hais tias txhua yam hauv Linux yog cov kav dej.

Koj tuaj yeem txuas ntau cov lus txib siv lub cim kav dej. Nws zoo li no:

first_command | second_command | third_command

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig
Ib lub raj xa dej ntawm ntau cov lus txib tuaj yeem muab piv rau cov kav dej

Nco ntsoov tias thaum cov lus txib mus rau sab laug ntawm lub cim |, outputs ib yam dab tsi rau stdout, dab tsi nws outputs yog tam sim ntawd muaj raws li stdin pab neeg thib ob. Ntawd yog, nws hloov tawm tias, siv cov raj xa dej, peb tab tom cuam tshuam nrog kev ua tiav ntawm cov lus txib. Qee zaum qhov no tuaj yeem ua rau cov txiaj ntsig tsis tau xav txog. Paub meej txog qhov no tuaj yeem nyeem no.

Tam sim no cia peb tham txog kev nyeem cov ntaub ntawv los ntawm cov ntaub ntawv thiab muab tso rau ntawm qhov screen.

▍ Nyeem cov ntaub ntawv

head my_file: nyeem kab los ntawm qhov pib ntawm ib cov ntaub ntawv thiab luam lawv mus rau qhov screen. Koj tuaj yeem nyeem tsis tau tsuas yog cov ntsiab lus ntawm cov ntaub ntawv, tab sis kuj yog dab tsi cov lus txib tso tawm rau hauv stdinsiv cov lus txib no ua ib feem ntawm cov kav dej.

tail my_file: nyeem kab los ntawm qhov kawg ntawm cov ntaub ntawv. Cov lus txib no kuj tseem siv tau rau hauv cov kav dej.

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig
Lub taub hau (lub taub hau) nyob rau hauv pem hauv ntej, thiab tus Tsov tus tw (tail) yog qab

Yog tias koj ua haujlwm nrog cov ntaub ntawv siv lub tsev qiv ntawv pandas, ces cov lus txib head ΠΈ tail yuav tsum paub koj. Yog tias qhov no tsis yog qhov teeb meem, ua tib zoo saib ntawm daim duab saum toj no, thiab koj yuav nco tau yooj yim.

Xav txog lwm txoj hauv kev los nyeem cov ntaub ntawv, cia peb tham txog cov lus txib cat.

pab neeg cat yog luam tawm cov ntsiab lus ntawm cov ntaub ntawv mus rau qhov screen, los yog concatenates ntau cov ntaub ntawv. Nws nyob ntawm seb muaj pes tsawg cov ntaub ntawv raug xa mus rau cov lus txib no thaum hu.

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig
miv command

cat my_one_file.txt: thaum ib cov ntaub ntawv dhau mus rau cov lus txib no, nws tso tawm rau stdout.

Yog tias koj muab nws ob cov ntaub ntawv lossis ntau cov ntaub ntawv, ces nws coj txawv.

cat my_file1.txt my_file2.txt: tau txais ntau cov ntaub ntawv raws li kev nkag siab, cov lus txib no txuas nrog lawv cov ntsiab lus thiab qhia txog qhov tshwm sim hauv stdout.

Yog tias qhov tshwm sim ntawm cov ntaub ntawv sib txuas yuav tsum tau khaws cia ua cov ntaub ntawv tshiab, koj tuaj yeem siv tus neeg teb xov tooj >:

cat my_file1.txt my_file2.txt > my_new_file.txt

Tam sim no cia peb tham txog yuav ua li cas rho tawm cov ntaub ntawv thiab nres cov txheej txheem.

▍ Tshem tawm cov ntaub ntawv, nres cov txheej txheem

rm my_file: rho tawm cov ntaub ntawv my_file.

rm -r my_folder: deletes ib folder my_folder thiab tag nrho cov ntaub ntawv thiab folders nws muaj. Chij -r qhia tias cov lus txib yuav khiav hauv hom recursive.

Txhawm rau tiv thaiv lub kaw lus los ntawm kev thov kom paub meej txhua zaus cov ntaub ntawv lossis nplaub tshev raug tshem tawm, siv tus chij -f.

kill 012345: Nres cov txheej txheem khiav uas tau teev tseg, muab sijhawm rau kev kaw kom zoo.

kill -9 012345: Forcibly terminates cov txheej txheem khiav. Saib Chij -s SIGKILL txhais tau tias tib yam li tus chij -9.

▍ Nrhiav

Koj tuaj yeem siv cov lus txib sib txawv los tshawb nrhiav cov ntaub ntawv. Hauv particular - grep, ag ΠΈ ack. Cia peb pib paub nrog cov lus txib no grep. Qhov no yog lub sijhawm sim, txhim khu kev qha, uas, txawm li cas los xij, qeeb dua lwm tus thiab tsis yooj yim rau siv li lawv.

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig
lus grep

grep my_regex my_file: kev tshawb nrhiav my_regex Π² my_file. Yog tias pom qhov sib tw, tag nrho cov hlua yuav rov qab, rau txhua qhov sib tw. Default my_regex kho raws li ib txwm qhia.

grep -i my_regex my_file: Kev tshawb nrhiav yog ua nyob rau hauv cov ntaub ntawv-insensitive yam.

grep -v my_regex my_file: rov qab tag nrho cov kab uas tsis muaj my_regex. Chij -v txhais tau tias inversion, nws zoo li tus neeg teb xov tooj NOT, pom nyob rau hauv ntau yam lus programming.

grep -c my_regex my_file: Rov qab cov ntaub ntawv hais txog tus lej ntawm qhov sib tw rau cov qauv tshawb nrhiav pom hauv cov ntaub ntawv.

grep -R my_regex my_folder: ua ib qho kev tshawb nrhiav recursive nyob rau hauv tag nrho cov ntaub ntawv nyob rau hauv cov ntaub ntawv teev tseg thiab nyob rau hauv cov folders nested nyob rau hauv nws.

Tam sim no cia peb tham txog pab neeg ag. Nws tuaj tom qab grep, nws yog nrawm dua, nws yooj yim dua los ua haujlwm nrog nws.

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig
ag lus

ag my_regex my_file: xa rov qab cov ntaub ntawv hais txog kab zauv, thiab cov kab lawv tus kheej, nyob rau hauv qhov kev sib tw tau pom nrog my_regex.

ag -i my_regex my_file: Kev tshawb nrhiav yog ua nyob rau hauv cov ntaub ntawv-insensitive yam.

pab neeg ag txiav cov ntaub ntawv .gitignore thiab cais tawm ntawm cov zis dab tsi pom nyob rau hauv folders los yog cov ntaub ntawv teev nyob rau hauv cov ntaub ntawv ntawd. Nws yooj yim heev.

ag my_regex my_file -- skip-vcs-ignores: cov ntsiab lus ntawm tsis siv neeg version tswj cov ntaub ntawv (xws li .gitignore) tsis suav nrog hauv kev tshawb nrhiav.

Ntxiv rau, txhawm rau qhia rau pab neeg ag ntawm cov ntaub ntawv twg uas koj xav kom tshem tawm ntawm kev tshawb nrhiav, koj tuaj yeem tsim cov ntaub ntawv .agignore.

Thaum pib ntawm ntu no, peb hais txog cov lus txib ack. Pab pawg ack ΠΈ ag zoo sib xws, peb tuaj yeem hais tias lawv yog 99% sib hloov. Txawm li cas los xij, pab neeg ag ua hauj lwm sai, yog vim li cas kuv piav nws.

Tam sim no cia peb tham txog kev ua haujlwm nrog archives.

▍ Archiving

tar my_source_directory: concatenates cov ntaub ntawv los ntawm ib tug folder my_source_directory rau hauv ib daim ntawv tarball. Cov ntaub ntawv zoo li no muaj txiaj ntsig zoo rau kev xa cov ntaub ntawv loj rau ib tus neeg.

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig
tar lus

Cov ntaub ntawv tarball tsim los ntawm cov lus txib no yog cov ntaub ntawv nrog qhov txuas ntxiv .tar (Cov kab xev ARchive). Qhov tseeb tias lo lus "kab kab xev" (kab xev) tau muab zais rau hauv lub npe ntawm cov lus txib thiab nyob rau hauv qhov txuas ntxiv ntawm cov npe ntawm cov ntaub ntawv nws tsim qhia tias ntev npaum li cas cov lus txib no tau tshwm sim.

tar -cf my_file.tar my_source_directory: tsim cov ntaub ntawv tarball npe my_file.tar nrog cov ntsiab lus folder my_source_directory. Chij -c stands rau "tsim" (creation), thiab tus chij -f raws li "file" (file).

Txhawm rau rho tawm cov ntaub ntawv los ntawm .tar-file, siv cov lus txib tar nrog chij -x ("extract", rho tawm) thiab -f ("file", cov ntaub ntawv).

tar -xf my_file.tar: extracts cov ntaub ntawv los ntawm my_file.tar mus rau daim ntawv teev npe ua haujlwm tam sim no.

Tam sim no cia peb tham txog yuav ua li cas compress thiab decompress .tar- cov ntaub ntawv.

tar -cfz my_file.tar.gz my_source_directory: ntawm no siv chij -z ("zip", compression algorithm) qhia tias cov algorithm yuav tsum tau siv los compress cov ntaub ntawv gzip (GNUzip). Cov ntaub ntawv compression txuag chaw disk thaum khaws cov ntaub ntawv zoo li no. Yog tias cov ntaub ntawv tau npaj tseg, piv txwv li, kom xa mus rau lwm tus neeg siv, qhov no ua rau kom nrawm dua ntawm cov ntaub ntawv zoo li no.

Unzip cov ntaub ntawv .tar.gz koj tuaj yeem ntxiv tus chij -z mus rau extract cov ntsiab lus hais kom ua .tar-cov ntaub ntawv, uas peb tau tham saum toj no. Nws zoo li no:

tar -xfz my_file.tar.gz
Nws yuav tsum tau muab sau tseg tias pab neeg no tar Muaj ntau cov chij tseem ceeb dua.

Bash npe

Bash aliases (tseem hu ua aliases lossis abbreviations) yog tsim los tsim cov npe luv ntawm cov lus txib lossis lawv cov kab ke, kev siv uas tsis yog cov lus txib ua haujlwm nrawm. Yog koj muaj alias bu, uas hides cov lus txib python setup.py sdist bdist_wheel, ces hu rau qhov hais kom ua, nws yog txaus los siv no alias.

Txhawm rau tsim cov npe zoo li no, tsuas yog ntxiv cov lus txib hauv qab no rau cov ntaub ntawv ~/.bash_profile:

alias bu="python setup.py sdist bdist_wheel"

Yog tias koj lub kaw lus tsis muaj cov ntaub ntawv ~/.bash_profile, ces koj tuaj yeem tsim koj tus kheej siv cov lus txib touch. Tom qab tsim lub alias, rov pib lub davhlau ya nyob twg, tom qab uas koj tuaj yeem siv lub npe no. Nyob rau hauv cov ntaub ntawv no, lub tswv yim ntawm ob lub cim hloov lub tswv yim ntawm ntau tshaj peb lub kaum os cim ntawm cov lus txib, uas yog npaj rau cov rooj sib txoos Python pob.

Π’ ~/.bash_profile koj tuaj yeem ntxiv aliases rau cov lus txib uas nquag siv.

▍ Cov txiaj ntsig

Hauv tsab ntawv no, peb tau npog 21 cov lus txib nrov Bash thiab tham txog kev tsim cov npe npe. Yog tias koj txaus siab rau lub ncauj lus no - ntawm no ib tug series ntawm kev tshaj tawm rau Bash. nws yog Koj tuaj yeem pom pdf version ntawm cov ntawv tshaj tawm no. Tsis tas li ntawd, yog tias koj xav kawm Bash, nco ntsoov tias, nrog rau lwm yam kev ua haujlwm, kev xyaum yog qhov tseem ceeb.

Nyob zoo nyeem! Dab tsi cov lus txib uas muaj txiaj ntsig zoo rau cov pib tshiab koj yuav ntxiv rau cov uas tau tham hauv kab lus no?

β†’ Kuj nyeem hauv peb cov blog ib series ntawm cov ntawv tshaj tawm txog bash scripts

[bookmarked] Bash rau cov pib tshiab: 21 cov lus txib muaj txiaj ntsig

Tau qhov twg los: www.hab.com

Ntxiv ib saib