你最常用的一個 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 中嗎?
※有哪些命令行的軟體堪稱神器?