你最常用的一個 linux 命令是什麼?為什麼?


要說最常用的,那都不用問,肯定是ls (ls=蕾絲,蕾絲是大多數人的最愛)。

我來回答一些又常用的,又有用的,還很酷的shell命令。另外,所謂授人魚不如授人以漁:大家沒事可以逛逛All commands

下面介紹幾個常用的命令,很酷的,很有用的命令。

用Python快速啟動一個HTTP Server,用以同事之間傳文件

python -m SimpleHTTPServer

格式化json數據

echo "{"a": 1, "c": 3, "b": 2}" | python -m json.tool

將上一條命令中的 foo 替換為 bar,並執行

^foo^bar

在 Vim 中無需許可權保存正在編輯的文件

:w !sudo tee %

刪除空文件/刪除垃圾文件

find . -type f -size 0 -delete
find . -type f -name "a.out" -exec rm -rf {} ;

在 vim 中編輯上一條命令

fc

以 root 帳戶執行上一條命令。

$sudo !!

插個廣告,對shell感興趣的同學,可以看我這裡推薦的學習材料:學習 shell 有什麼好書推薦?

刪除文件中的空行

cat a.txt | sed -e "/^$/d"


本機(Mac):

TankyWoo@Mac-OS::~/ ? history 1 -1 | awk "{a[$2]++}END{for(i in a){print a[i] " " i}}" | sort -rn | head
1731 ls
911 cd
814 git
689 ssh
640 vi
495 python
452 gst
389 ping
346 fg
229 exit

開發機(Gentoo):

tankywoo@gentoo-local::~/ ? history 1 | awk "{a[$2]++}END{for(i in a){print a[i] " " i}}" | sort -rn | head
1098 git
1056 ls
704 cd
647 sudo
615 ssh
419 vi
417 ping
361 fg
338 vim
301 python

awk的操作就不說了,很基本的統計操作。

說下history吧,history和fc都是shell builtin,當然我的 .dotfiles ( tankywoo/dotfiles 路 GitHub ) 已經把 history 配置為fc -l的alias了(我印象中好像zsh就是這麼處理的):

tankywoo@gentoo-local::~/ ? type history
history is an alias for fc -l
tankywoo@gentoo-local::~/ ? type fc
fc is a shell builtin

fc 是一個很強悍的命令

我這裡的 history 1 [-1] 相當於從記錄中的第一條開始計算,後面的-1可不寫,配置默認顯示最新的16條。

另外,還發現問題中問了「為什麼」,這個問得。。。

用一個命令,肯定是有需求才用,我估計大部分的Linuxer 的top1命令都是 ls(或者ll)吧。。。


今天才發現 zsh 自帶 zsh_stats 命令,所以搜來這個問題強答一下:

其中 gco、gd、gst 分別是 git checkout、git diff、git status 的縮寫,所以,看來作為一個程序猿,還是 git 用的最多啊,加起來達到了 17.64%,畢竟要論用 git,還是命令行最順手。

idea 是 IntelliJ IDEA 的命令行 launcher,暴露了大量寫 java 的事實,還好大部分情況都是 spotlight 打開 IntelliJ,而不是命令行。

ssh 使用的頻率應該很高的,不過是使用已打開的 ssh 連接,而不是新開的,不然 ssh 佔用的時間妥妥前三。

ag、ack、grep 功能是重疊的,不過 ag 有時太過智能(比如一個 git 項目在另一個 git 項目內部,那麼在外層用 ag 會自動不搜索裡邊那個項目),這時為了節省參數用 ack 或 grep 就看心情了。


sudo !!


ll 就是ls -l啦~


cat也常用 剛開始看同事們用一直覺得為啥linux這麼逗逼 跟貓有喵的關係...


sudo的路過


除去ls等常用的。
watch -d ifconfig
ifconfig 可以用任何命令替換,可以觀察到任何命令輸出的變化。


我使用 Linux 命令都是在安卓的 ADB 調試環境下,所以用的最多的大概是 cd 命令。

之所以 cd 命令使用頻度最高,是因為我使用 cd 命令時不跨越兩層或以上的目錄層級,否則容易感到混亂。比如進入 /dev/block/platform/msm_sdcc.1/by-name 目錄,我就會寫五條命令。當然了,光用 cd 命令肯定也是啥事都幹不了,命令必須配合起來用,以下命令我也常使用,但是頻度肯定是比 cd 要低得多:

ls:列出目錄里的內容,常和參數 -l 搭配用。

dd:複製用,一般會用 dd if=/dev/zero of=/dev/... 這樣的命令來擦除某個區塊的數據。

rm:刪除臨時文件用,常和下面說的 find 命令搭配用,以刪除指定擴展名的文件。

cat:列印文件里的內容。有時需要創建一個空文件也會用到這個命令,即 cat /dev/null &> ...。

tar:打包用。備份安卓系統的 data 分區。

find:遍歷當前目錄下符合指定條件的所有文件,同時深度遍歷所有子文件夾。


實不相瞞,是 ls


sudo apt-get updateapt-get upgradeapt-get autoremoveapt-get autocleancleardatedf -h


rm ./exe/* ./obj /* -rf


話說有很多人對我在linux下用make把代碼產生到exe和obj兩個文件中感到不解。其實rwx裡面的x不就是executable的意思嗎,是一樣的,啊哈哈哈哈,見 https://gac.codeplex.com/SourceControl/latest#Libraries/Workflow/WorkflowSrc/Linux/makefile


arch用戶每天早上開機第一件事就是sudo pacman –Syu


g++算不算命令……


sudo
為什麼?
你猜我一天用幾次pacman


cd ls


tail -f,查看log用的。再配合grep。


看到有sudo和ls之爭,我就來抖個機靈:
ssh才是最常用之本,不服來辯。


強迫症的我比較習慣,ls -al


ls


推薦閱讀:

VPS有什麼有趣的用途?
Linux 運維中,為什麼現在很多人用源碼安裝而不用 RPM 安裝?
為什麼 Linux 在桌面會失敗?
Linux 中 rc.local、init.d、rc.x、init 這幾個文件(夾)各有什麼作用?啟動執行的腳本應該均放在 rc.local 中嗎?
有哪些命令行的軟體堪稱神器?

TAG:Linux | Linux軟體 | Linux開發 |