2021-05-12 14:32:11
20個 Unix/Linux 命令技巧
讓我們用這些Unix/Linux命令技巧開啟新的一年,提高在終端下的生產力。我已經找了很久了,現在就與你們分享。
刪除一個大檔案
我在生產伺服器上有一個很大的200GB的紀錄檔檔案需要刪除。我的rm和ls命令已經崩潰,我擔心這是由於巨大的磁碟IO造成的,要刪除這個大檔案,輸入:
>/path/to/file.log
# 或使用如下格式
:>/path/to/file.log
# 然後刪除它
rm /path/to/file.log
如何記錄終端輸出?
試試使用script命令列工具來為你的終端輸出建立輸出記錄。
script my.terminal.sessio
輸入命令:
ls
date
sudo service foo stop
要退出(結束script對談),輸入 exit 或者 logout 或者按下 control-D。
exit
要瀏覽輸入:
more my.terminal.session
less my.terminal.session
cat my.terminal.session
還原被刪除的 /tmp 資料夾
我在文章Linux和Unix shell,我犯了一些錯誤。我意外地刪除了/tmp資料夾。要還原它,我需要這麼做:
mkdir /tmp
chmod 1777/tmp
chown root:root /tmp
ls -ld /tmp
鎖定一個資料夾
為了我的資料隱私,我想要鎖定我檔案伺服器下的/downloads資料夾。因此我執行了:
chmod 0000/downloads
root使用者仍舊可以存取,而ls和cd命令則不工作。要還原它用:
chmod 0755/downloads
在vim中用密碼保護檔案
害怕root使用者或者其他人偷窺你的個人檔案麼?嘗試在vim中用密碼保護,輸入:
vim +X filename
或者,在退出vim之前使用:X 命令來加密你的檔案,vim會提示你輸入一個密碼。
清除螢幕上的亂碼
只要輸入:
reset
易讀格式
傳遞-h或者-H(和其他選項)選項給GNU或者BSD工具來獲取像ls、df、du等命令以易讀的格式輸出:
ls -lh
# 以易讀的格式 (比如: 1K 234M 2G)
df -h
df -k
# 以位元組、KB、MB 或 GB 輸出:
free -b
free -k
free -m
free -g
# 以易讀的格式輸出 (比如 1K 234M 2G)
du -h
# 以易讀的格式顯示檔案系統許可權
stat -c %A /boot
# 比較易讀的數位
sort -h -a file
# 在Linux上以易讀的形式顯示cpu資訊
lscpu
lscpu -e
lscpu -e=cpu,node
# 以易讀的形式顯示每個檔案的大小
tree -h
tree -h /boot
在Linux系統中顯示已知的使用者資訊
只要輸入:
## linux 版本 ##
lslogins
## BSD 版本 ##
logins
範例輸出:
UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
0 root 0022:37:59 root
1 bin 01 bin
2 daemon 01 daemon
3 adm 01 adm
4 lp 01 lp
5 sync 01 sync
6 shutdown 012014-Dec17 shutdown
7 halt 01 halt
8 mail 01 mail
10 uucp 01 uucp
11operator01operator
12 games 01 games
13 gopher 01 gopher
14 ftp 01 FTP User
27 MySQL 01MySQLServer
38 ntp 01
48 apache 01Apache
68 haldaemon 01 HAL daemon
69 vcsa 01virtual console memory owner
72 tcpdump 01
74 sshd 01Privilege-separated SSH
81 dbus 01System message bus
89 postfix 01
99 nobody 01Nobody
173 abrt 01
497 vnstat 01 vnStat user
498 nginx 01 nginx user
499 saslauth 01"Saslauthd user"
我如何刪除意外在當前資料夾下解壓的檔案?
我意外在/var/www/html/而不是/home/projects/www/current下解壓了一個tarball。它搞亂了/var/www/html下的檔案,你甚至不知道哪些是誤解壓出來的。最簡單修復這個問題的方法是:
cd /var/www/html/
/bin/rm -f "$(tar ztf /path/to/file.tar.gz)"
對top命令的輸出感到疑惑?
正經地說,你應該試一下用htop代替top:
sudo htop
想要再次執行相同的命令
只需要輸入!!。比如:
/myhome/dir/script/name arg1 arg2
# 要再次執行相同的命令
!!
## 以root使用者執行最後執行的命令
sudo !!
!!會執行最近使用的命令。要執行最近執行的以“foo”開頭命令:
!foo
# 以root使用者執行上一次以“service”開頭的命令
sudo !service
!$用於執行帶上最後一個引數的命令:
# 編輯 nginx.conf
sudo vi /etc/nginx/nginx.conf
# 測試 nginx.conf
/sbin/nginx -t -c /etc/nginx/nginx.conf
# 測試完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi再次編輯這個檔案了
sudo vi !$
在終端上提醒你必須得走了
如果你需要提醒離開你的終端,輸入下面的命令:
leave +hhmm
這裡:
- hhmm - 時間是以hhmm的形式,hh表示小時(12時制或者24小時制),mm代表分鐘。所有的時間都轉化成12時制,並且假定發生在接下來的12小時。
甜蜜的家
想要進入剛才進入的地方?執行:
cd -
需要快速地回到你的家目錄?輸入:
cd
變數CDPATH定義了目錄的搜尋路徑:
export CDPATH=/var/www:/nas10
現在,不用輸入cd */var/www/html/ 這樣長了,我可以直接輸入下面的命令進入 /var/www/html:
cd html
在less瀏覽時編輯檔案
要編輯一個正在用less瀏覽的檔案,可以按下v。你就可以用變數$EDITOR所指定的編輯器來編輯了:
less *.c
less foo.html
## 按下v鍵來編輯檔案 ##
## 退出編輯器後,你可以繼續用less瀏覽了 ##
列出你系統中的所有檔案和目錄
要看到你系統中的所有目錄,執行:
find /-type d | less
# 列出$HOME 所有目錄
find $HOME -type d -ls | less
要看到所有的檔案,執行:
find /-type f | less
# 列出 $HOME 中所有的檔案
find $HOME -type f -ls | less
用一條命令構造目錄樹
你可以用mkdir加上-p選項一次建立一顆目錄樹:
mkdir -p /jail/{dev,bin,sbin,etc,usr,lib,lib64}
ls -l /jail/
將檔案複製到多個目錄中
不必執行:
cp /path/to/file /usr/dir1
cp /path/to/file /var/dir2
cp /path/to/file /nas/dir3
執行下面的命令來複製檔案到多個目錄中:
echo /usr/dir1 /var/dir2 /nas/dir3 | xargs -n 1 cp -v /path/to/file
留下建立一個shell函數作為讀者的練習。
快速找出兩個目錄的不同
diff命令會按行比較檔案。但是它也可以比較兩個目錄:
ls -l /tmp/r
ls -l /tmp/s
# 使用 diff 比較兩個資料夾
diff /tmp/r/ /tmp/s/
圖片: 找出目錄之間的不同
文字格式化
你可以用fmt命令重新格式化每個段落。在本例中,我要用分割超長的行並且填充短行:
fmt file.txt
你也可以分割長的行,但是不重新填充,也就是說分割長行,但是不填充短行:
fmt -s file.txt
可以看見輸出並將其寫入到一個檔案中
如下使用tee命令在螢幕上看見輸出並同樣寫入到紀錄檔檔案my.log中:
mycoolapp arg1 arg2 input.file | tee my.log
tee可以保證你同時在螢幕上看到mycoolapp的輸出並寫入檔案 my.log。
20條Linux命令面試問答 http://www.linuxidc.com/Linux/2015-02/112637.htm
《Linux命令列與Shell指令碼程式設計大全》第2版 PDF中文版 http://www.linuxidc.com/Linux/2015-02/112708.htm
不同應用場景的10個Linux面試問題與解答 http://www.linuxidc.com/Linux/2014-04/99710.htm
10個核心的Linux面試問題與答案 http://www.linuxidc.com/Linux/2014-04/100447.htm
10個有用的Linux命令面試問題及答案 http://www.linuxidc.com/Linux/2014-08/105150.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-03/115305.htm
相關文章