成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一些可以極大提高工作效率的 Linux 命令

系統(tǒng)
如果你是Linux的新手,或者想要更新、提高或加強(qiáng)對(duì) Linux 命令的了解,本文對(duì)你可能會(huì)有所幫助。

作為一名軟件開發(fā)人員,掌握 Linux 命令是必不可少的技能。即使你使用 Windows 或 macOS,你總會(huì)遇到需要使用 Linux 命令的場(chǎng)合。例如,大多數(shù) Docker 鏡像都基于 Linux 系統(tǒng)。要進(jìn)行 DevOps 工作,你需要熟悉Linux,至少要了解一些常用命令。

在本文中,我將介紹一些我每天使用的命令。如果你是Linux的新手,或者想要更新、提高或加強(qiáng)對(duì) Linux 命令的了解,本文對(duì)你可能會(huì)有所幫助。不過(guò),本文不會(huì)重點(diǎn)介紹像 cd 或 ls 這樣的基礎(chǔ)命令,而是介紹一些從實(shí)踐中學(xué)到的更高級(jí)的命令。

自定義bash提示符

嗯,這個(gè)主題本身可以是一篇冗長(zhǎng)的文章。不過(guò),我們不需要學(xué)習(xí)所有的內(nèi)容。在大多數(shù)情況下,我們只需要修改 PS1 變量,該變量指定在每個(gè)命令之前顯示的內(nèi)容。如果不修改它,提示符將顯示路徑,當(dāng)我們深入到一個(gè)文件夾中時(shí),這是非常不方便的。我更喜歡在提示符中只顯示用戶名和當(dāng)前文件夾,可以通過(guò)以下命令設(shè)置:

linuxmi@linuxmi:~/www.linuxmi.com$ export PS1="[\u@\W]\$"

這里,\u表示當(dāng)前用戶名,\W表示當(dāng)前工作目錄。[、]和@保持原樣顯示。對(duì)于$,如果當(dāng)前用戶不是root,則顯示$,否則顯示#。更多代碼可以在這里找到。

請(qǐng)注意,如果您希望更改持久化,這個(gè)命令和下面顯示的命令應(yīng)添加到 ~/.bashrc中。

查找文件或文件夾

查找文件或文件夾是一個(gè)非常常見(jiàn)的需求,可以使用find命令來(lái)實(shí)現(xiàn):

# 查找文件:
find ~ -type f -name data-model.ts

# 查找文件夾:
find ~ -type d -name angular15

請(qǐng)注意,第一個(gè)參數(shù)是要查找的目標(biāo)文件或文件夾的路徑。如果未指定類型,默認(rèn)為文件。

這似乎有點(diǎn)太簡(jiǎn)單了 ??。讓我們來(lái)做一些稍微復(fù)雜一點(diǎn)的事情。讓我們找一些文件,并統(tǒng)計(jì)每個(gè)文件的行數(shù):

#查找所有.html文件并計(jì)算每個(gè)文件的行數(shù):
find src/app/ -name "*.html" -exec wc -l {} \;

請(qǐng)注意這里的魔法語(yǔ)法。-exec 指定了要針對(duì)每個(gè)找到的文件運(yùn)行的命令。花括號(hào) {} 是文件的占位符,而轉(zhuǎn)義的分號(hào) ; 用于防止 shell 解釋該命令。我們也可以使用加號(hào) + 來(lái)實(shí)現(xiàn)同樣的效果:

find src/app/ -name "*.html" -exec wc -l {} +

輸出結(jié)果會(huì)稍有不同。如果命令以 + 結(jié)尾,將會(huì)打印總計(jì)行數(shù)。

更改文件和文件夾的權(quán)限

更改文件和文件夾的權(quán)限也是一個(gè)常見(jiàn)任務(wù)。我們很容易在權(quán)限代碼上感到困惑。這篇文章很好地解釋了權(quán)限代碼和不同的組合。在這里,我們只展示最常見(jiàn)的幾個(gè):

# 與其他人共享文件夾,以便他們可以檢查文件夾中的內(nèi)容:
chmod 755 <path-to-your-folder>

# 與其他人共享不可執(zhí)行文件:
chmod 644 <path-to-your-file>

# 與其他人共享可執(zhí)行文件:
chmod 755 <path-to-your-file>

# 使文件只讀:
chmod 400 <path-to-your-file>

# 使文件可執(zhí)行:
chmod +x <path-to-your-file>

建議查看這篇文章中代碼的含義,這太好了,不能在這里重復(fù)。

自定義 rm 命令將文件移動(dòng)到回收站

如果在 Linux 系統(tǒng)上意外刪除了一些文件,恢復(fù)它們將非常困難。因此,將 rm 命令設(shè)置為將文件或文件夾移動(dòng)到回收站而不是永久刪除是一種安全策略。我們可以在需要時(shí)清空回收站。

這個(gè)自定義功能可以通過(guò)別名(alias)來(lái)實(shí)現(xiàn),在 Linux 上非常方便(稍后會(huì)介紹更多相關(guān)內(nèi)容):

alias rm='gio trash'

使用別名可以簡(jiǎn)化輸入

如果你有一個(gè)帶有許多參數(shù)的長(zhǎng)命令,或者你有一系列需要一起執(zhí)行的命令,使用別名非常方便:

# 為長(zhǎng)命令設(shè)置別名:
alias dc="docker compose"
alias prettier="npx prettier -w"
alias eslint="npx eslint --fix"
alias pre="pre-commit run --files"

# 將一些命令鏈接在一起:
alias update-container="docker-compose pull <service-name> && docker-compose stop <service-name> && yes | docker-compose rm <service-name> && docker-compose up -d <service-name>"

使用awk從輸入中提取數(shù)據(jù)

awk是Linux中非常強(qiáng)大的工具。你甚至可以使用awk編寫腳本,盡管可讀性和維護(hù)性是另外一個(gè)問(wèn)題。作為軟件開發(fā)人員,我們通常使用awk從輸入文件或前一個(gè)命令的輸出中獲取所需的字段。

例如,讓我們ping google.com并獲取每個(gè)ping的時(shí)間:

ping google.com -c 2 | grep -iE 'time=.*ms' | awk 'BEGIN {FS="="} {print $NF}'

這個(gè)命令的重要注意事項(xiàng):

我們使用-iE來(lái)為grep指定一個(gè)正則表達(dá)式,因此只有與模式匹配的消息將進(jìn)一步處理。

對(duì)于awk來(lái)說(shuō),BEGIN指定在處理文本之前要執(zhí)行的命令。在這里,我們指定字段分隔符(FS)應(yīng)為等號(hào)。此外,NF表示字段的數(shù)量,$NF將返回最后一個(gè)字段。如果你想進(jìn)一步學(xué)習(xí)awk,這是一個(gè)很好的參考。

以上命令也可以簡(jiǎn)化如下:

ping google.com -c 2 | grep -iE 'time=.*ms' | awk -F"=" '{print $NF}'
ping google.com -c 2 | awk -F"=" '/time=.*ms/ {print $NF}'

在這些簡(jiǎn)化版本中,我們還可以利用 awk 的另外兩個(gè)功能:

  • 可以直接使用 -F 選項(xiàng)指定字段分隔符。
  • 可以在 awk 中使用正則表達(dá)式模式,在花括號(hào)之前指定。

使用 xargs 鏈接命令

我們已經(jīng)展示了使用 -exec 選項(xiàng)可以為 find 命令鏈接命令。一個(gè)更好的工具是 xargs,它可以以更靈活的方式鏈接任何命令。

# 檢查當(dāng)前文件夾中每個(gè)文件的大小:
ls | xargs -I % du -sh %

# 查找一些文件并將其復(fù)制到新位置:
find ~/Downloads/ -name "*.jpeg" | xargs -I {} cp {} ~/Pictures/

# 將所有文件夾和子文件夾的權(quán)限更改為755:
find . -type d | xargs -I {} chmod 755 {}

# 將當(dāng)前文件夾和子文件夾中所有文件的權(quán)限更改為644:
find . -type f | xargs -I {} chmod 644 {}

請(qǐng)注意,-I 選項(xiàng)指定了一個(gè)占位符,可以在需要的任何地方使用。占位符可以是任何有效的字符串,其中 % 和 {} 是最常見(jiàn)的。

為腳本傳遞變量

有時(shí)我們需要為腳本傳遞一些變量。這些變量可以在運(yùn)行腳本的命令之前通過(guò)命令行指定。例如:

# linuxmi.sh
echo mysql -u ${USERNAME} -p${PASSWORD}

# 在命令行上:
USERNAME=johndoe PASSWORD=12345 bash some_script.sh

對(duì)于在云環(huán)境(如Cloud Build)中運(yùn)行的某些腳本,這一點(diǎn)尤為重要,因?yàn)樽兞靠梢宰詣?dòng)注入。

如果腳本需要許多變量,逐個(gè)在命令行中指定會(huì)變得很麻煩。在這種情況下,可以將這些變量存儲(chǔ)在文件中,并在運(yùn)行腳本時(shí)進(jìn)行引用:

# variables.env
USERNAME=johndoe
PASSWORD=12345

# 在命令行上:
env $(grep -v '^#' variables.env | xargs) bash some_script.sh

請(qǐng)注意,使用此命令時(shí),變量會(huì)從目標(biāo)文件中讀取(注釋除外),并通過(guò)xargs命令執(zhí)行。env命令用于在修改的環(huán)境中運(yùn)行腳本,而不是當(dāng)前的Shell環(huán)境。

重定向STDOUT和STDERR

命令的輸出和錯(cuò)誤被寫入標(biāo)準(zhǔn)輸出(STDOUT)和標(biāo)準(zhǔn)錯(cuò)誤(STDERR)。STDOUT和STDERR的文件描述符分別為1和2。默認(rèn)情況下,STDOUT和STDERR都會(huì)輸出到控制臺(tái)。然而,我們可以將它們重定向到文件或空設(shè)備(/dev/null),即丟棄它們。

# 讓我們假設(shè)existing.txt存在,而nonexisting.txt不存在。

# 將STDOUT重定向到文件。這是最常見(jiàn)的用例。
ls -al existing.txt 1>out.log
# STDOUT的文件描述符是可選的。
ls -al existing.txt >out.log

# 將STDOUT重定向到一個(gè)文件,將STDOUT重定向到另一個(gè)文件。
ls -al existing.txt non-existing.txt 1>out.log 2>error.log

# 將STDOUT和STDERR都指向同一個(gè)文件:
ls -al existing.txt non-existing.txt 1>combined.log 2>&1
# 它可以簡(jiǎn)化為:
ls -al existing.txt non-existing.txt &>combined.log

# 忽略命令的輸出和錯(cuò)誤:
ls -al existing.txt non-existing.txt 1>/dev/null 2>&1
ls -al existing.txt non-existing.txt &>/dev/null

請(qǐng)注意,不是所有的Shell都支持&>語(yǔ)法。它支持常用的BASH。

命令行模糊查找器

我們可以按下CTRL-R來(lái)查找我們使用過(guò)的歷史命令。然而,默認(rèn)情況下,當(dāng)我們輸入時(shí),它只顯示一個(gè)命令,不方便找到我們想要的命令。

幸運(yùn)的是,fzf極大地增強(qiáng)了CTRL-R的功能。fzf是一個(gè)通用的命令行模糊查找器,可以模糊搜索歷史命令。最重要的是,它將匹配的命令顯示為列表,使得找到我們想要的命令非常方便。

安裝fzf非常簡(jiǎn)單:

# Linux:
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install  # 您可以接受所有默認(rèn)設(shè)置.

# MacOS:
brew install fzf
$(brew --prefix)/opt/fzf/install

如果你之前從未嘗試過(guò)fzf,那么絕對(duì)值得一試,你會(huì)立刻喜歡上它 ??。

在本文中,介紹了一些實(shí)用的Linux命令,如果你還不熟悉它們,它們可以提高你的效率。一篇文章不可能涵蓋所有的Linux命令。然而,我們不需要學(xué)習(xí)所有的命令,通常只需要學(xué)習(xí)在工作中實(shí)際需要的命令。希望本文能成為你工作中有用的參考。

責(zé)任編輯:趙寧寧 來(lái)源: Linux迷
相關(guān)推薦

2009-05-14 11:43:56

2009-05-15 16:36:34

EclipseIDE效率

2018-08-29 20:00:11

Linux命令行命令行別名

2011-03-22 14:57:58

2011-09-13 19:46:57

2023-10-24 17:45:31

AI

2012-03-12 13:35:10

開發(fā)

2019-12-29 15:41:42

終端命令Unix系統(tǒng)

2021-07-29 11:45:03

Python字符串索引

2020-11-26 10:29:01

Redis

2019-04-03 09:58:00

GitHub代碼開發(fā)者

2012-07-04 15:42:22

Web

2009-07-06 13:38:29

JSPInitJSPDestory

2019-04-10 05:57:43

Linux命令Linux命令

2014-03-20 16:18:30

碼農(nóng)工作效率

2019-08-30 14:25:03

Vim命令Linux

2019-07-17 05:02:14

物聯(lián)網(wǎng)工作效率IOT

2020-12-11 10:00:17

工具代碼Windows

2025-02-18 10:56:18

2020-03-20 11:49:20

Linux命令技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 天堂一区二区三区 | 日韩av成人 | 欧美一级在线观看 | 国产美女一区二区 | a免费视频| 亚洲最大的成人网 | 欧美性生活一区二区三区 | 精品一区二区三区不卡 | 在线中文一区 | 黄色片大全在线观看 | 精品96久久久久久中文字幕无 | 国产在线二区 | 久久伊人免费视频 | 久久久精彩视频 | 成人午夜视频在线观看 | av网站免费 | 国产欧美一区二区三区日本久久久 | 精品欧美一区二区在线观看欧美熟 | 久久精品久久久久久 | 国产视频中文字幕 | 欧美一区免费 | 亚洲国产午夜 | 久久久久久黄 | 国产日韩欧美一区 | 亚洲欧美在线一区 | 一级黄色片网址 | 国产精品久久片 | 国产精品福利视频 | 亚洲成av| 国产精品1区2区 | 国产精品日韩欧美一区二区三区 | 欧美一级二级视频 | 一区二区三区视频在线 | 中文字幕在线观 | 成人黄色av| 亚洲91| 欧美日韩中文在线 | 奇米超碰 | 欧美日韩在线精品 | 中文字幕在线第一页 | 成人久久久 |