歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 20個 Unix/Linux 命令技巧

20個 Unix/Linux 命令技巧

日期:2017/2/28 14:03:16   编辑:Linux教程

讓我們用這些Unix/Linux命令技巧開啟新的一年,提高在終端下的生產力。我已經找了很久了,現在就與你們分享。

刪除一個大文件

我在生產服務器上有一個很大的200GB的日志文件需要刪除。我的rm和ls命令已經崩潰,我擔心這是由於巨大的磁盤IO造成的,要刪除這個大文件,輸入:

  1. >/path/to/file.log
  2. # 或使用如下格式
  3. :>/path/to/file.log
  4. # 然後刪除它
  5. rm /path/to/file.log

如何記錄終端輸出?

試試使用script命令行工具來為你的終端輸出創建輸出記錄。

  1. script my.terminal.sessio

輸入命令:

  1. ls
  2. date
  3. sudo service foo stop

要退出(結束script會話),輸入 exit 或者 logout 或者按下 control-D

  1. exit

要浏覽輸入:

  1. more my.terminal.session
  2. less my.terminal.session
  3. cat my.terminal.session

還原被刪除的 /tmp 文件夾

我在文章Linux和Unix shell,我犯了一些錯誤。我意外地刪除了/tmp文件夾。要還原它,我需要這麼做:

  1. mkdir /tmp
  2. chmod 1777/tmp
  3. chown root:root /tmp
  4. ls -ld /tmp

鎖定一個文件夾

為了我的數據隱私,我想要鎖定我文件服務器下的/downloads文件夾。因此我運行了:

  1. chmod 0000/downloads

root用戶仍舊可以訪問,而ls和cd命令則不工作。要還原它用:

  1. chmod 0755/downloads

在vim中用密碼保護文件

害怕root用戶或者其他人偷窺你的個人文件麼?嘗試在vim中用密碼保護,輸入:

  1. vim +X filename

或者,在退出vim之前使用:X 命令來加密你的文件,vim會提示你輸入一個密碼。

清除屏幕上的亂碼

只要輸入:

  1. reset

易讀格式

傳遞-h或者-H(和其他選項)選項給GNU或者BSD工具來獲取像ls、df、du等命令以易讀的格式輸出:

  1. ls -lh
  2. # 以易讀的格式 (比如: 1K 234M 2G)
  3. df -h
  4. df -k
  5. # 以字節、KB、MB 或 GB 輸出:
  6. free -b
  7. free -k
  8. free -m
  9. free -g
  10. # 以易讀的格式輸出 (比如 1K 234M 2G)
  11. du -h
  12. # 以易讀的格式顯示文件系統權限
  13. stat -c %A /boot
  14. # 比較易讀的數字
  15. sort -h -a file
  16. # 在Linux上以易讀的形式顯示cpu信息
  17. lscpu
  18. lscpu -e
  19. lscpu -e=cpu,node
  20. # 以易讀的形式顯示每個文件的大小
  21. tree -h
  22. tree -h /boot

在Linux系統中顯示已知的用戶信息

只要輸入:

  1. ## linux 版本 ##
  2. lslogins
  3. ## BSD 版本 ##
  4. logins

示例輸出:

  1. UID USER PWD-LOCK PWD-DENY LAST-LOGIN GECOS
  2. 0 root 0022:37:59 root
  3. 1 bin 01 bin
  4. 2 daemon 01 daemon
  5. 3 adm 01 adm
  6. 4 lp 01 lp
  7. 5 sync 01 sync
  8. 6 shutdown 012014-Dec17 shutdown
  9. 7 halt 01 halt
  10. 8 mail 01 mail
  11. 10 uucp 01 uucp
  12. 11operator01operator
  13. 12 games 01 games
  14. 13 gopher 01 gopher
  15. 14 ftp 01 FTP User
  16. 27 mysql 01MySQLServer
  17. 38 ntp 01
  18. 48 apache 01Apache
  19. 68 haldaemon 01 HAL daemon
  20. 69 vcsa 01virtual console memory owner
  21. 72 tcpdump 01
  22. 74 sshd 01Privilege-separated SSH
  23. 81 dbus 01System message bus
  24. 89 postfix 01
  25. 99 nobody 01Nobody
  26. 173 abrt 01
  27. 497 vnstat 01 vnStat user
  28. 498 nginx 01 nginx user
  29. 499 saslauth 01"Saslauthd user"

我如何刪除意外在當前文件夾下解壓的文件?

我意外在/var/www/html/而不是/home/projects/www/current下解壓了一個tarball。它搞亂了/var/www/html下的文件,你甚至不知道哪些是誤解壓出來的。最簡單修復這個問題的方法是:

  1. cd /var/www/html/
  2. /bin/rm -f "$(tar ztf /path/to/file.tar.gz)"

對top命令的輸出感到疑惑?

正經地說,你應該試一下用htop代替top:

  1. sudo htop

想要再次運行相同的命令

只需要輸入!!。比如:

  1. /myhome/dir/script/name arg1 arg2
  2. # 要再次運行相同的命令
  3. !!
  4. ## 以root用戶運行最後運行的命令
  5. sudo !!

!!會運行最近使用的命令。要運行最近運行的以“foo”開頭命令:

  1. !foo
  2. # 以root用戶運行上一次以“service”開頭的命令
  3. sudo !service

!$用於運行帶上最後一個參數的命令:

  1. # 編輯 nginx.conf
  2. sudo vi /etc/nginx/nginx.conf
  3. # 測試 nginx.conf
  4. /sbin/nginx -t -c /etc/nginx/nginx.conf
  5. # 測試完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi再次編輯這個文件了
  6. sudo vi !$

在終端上提醒你必須得走了

如果你需要提醒離開你的終端,輸入下面的命令:

  1. leave +hhmm

這裡:

  • hhmm - 時間是以hhmm的形式,hh表示小時(12時制或者24小時制),mm代表分鐘。所有的時間都轉化成12時制,並且假定發生在接下來的12小時。

甜蜜的家

想要進入剛才進入的地方?運行:

  1. cd -

需要快速地回到你的家目錄?輸入:

  1. cd

變量CDPATH定義了目錄的搜索路徑:

  1. export CDPATH=/var/www:/nas10

現在,不用輸入cd */var/www/html/ 這樣長了,我可以直接輸入下面的命令進入 /var/www/html:

  1. cd html

在less浏覽時編輯文件

要編輯一個正在用less浏覽的文件,可以按下v。你就可以用變量$EDITOR所指定的編輯器來編輯了:

  1. less *.c
  2. less foo.html
  3. ## 按下v鍵來編輯文件 ##
  4. ## 退出編輯器後,你可以繼續用less浏覽了 ##

列出你系統中的所有文件和目錄

要看到你系統中的所有目錄,運行:

  1. find /-type d | less
  2. # 列出$HOME 所有目錄
  3. find $HOME -type d -ls | less

要看到所有的文件,運行:

  1. find /-type f | less
  2. # 列出 $HOME 中所有的文件
  3. find $HOME -type f -ls | less

用一條命令構造目錄樹

你可以用mkdir加上-p選項一次創建一顆目錄樹:

  1. mkdir -p /jail/{dev,bin,sbin,etc,usr,lib,lib64}
  2. ls -l /jail/

將文件復制到多個目錄中

不必運行:

  1. cp /path/to/file /usr/dir1
  2. cp /path/to/file /var/dir2
  3. cp /path/to/file /nas/dir3

運行下面的命令來復制文件到多個目錄中:

  1. echo /usr/dir1 /var/dir2 /nas/dir3 | xargs -n 1 cp -v /path/to/file

留下創建一個shell函數作為讀者的練習。

快速找出兩個目錄的不同

diff命令會按行比較文件。但是它也可以比較兩個目錄:

  1. ls -l /tmp/r
  2. ls -l /tmp/s
  3. # 使用 diff 比較兩個文件夾
  4. diff /tmp/r/ /tmp/s/

圖片: 找出目錄之間的不同

文本格式化

你可以用fmt命令重新格式化每個段落。在本例中,我要用分割超長的行並且填充短行:

  1. fmt file.txt

你也可以分割長的行,但是不重新填充,也就是說分割長行,但是不填充短行:

  1. fmt -s file.txt

可以看見輸出並將其寫入到一個文件中

如下使用tee命令在屏幕上看見輸出並同樣寫入到日志文件my.log中:

  1. 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

Copyright © Linux教程網 All Rights Reserved