Linux 中 11 個比較實用的命令行

閱讀本文了解組合簡單命令以創建更強大命令的可能性。

  1. 同時創建不同名稱的文件夾

shell 的{} 運算符非常適合此操作。下面是用{} 創建三個子目錄的示例:

[root@localhost ~]# mkdir -p /tmp/users/{dir1,another,third}
  1. 就地編輯文件

在不使用編輯器的情況下替換一個或多個文件上的字符串,可以使用sed 來操作:

[root@localhost ~]# sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
  1. 使用 web 服務器快速共享文件

下面可以使用 python 的http.server搭建一個簡易的 web 網站,來顯示當前目錄的文件,以方便下載:

[root@localhost ~]# cd /root && python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

  1. 使用 journalctl 查詢錯誤日誌

可以使用 journalctl 以及 sort 和 uniq 的組合來查找最近的錯誤:

[root@localhost ~]# journalctl --no-pager  --grep 'fail|error|fatal' --output json| jq '._EXE'| sort| uniq -c | sort --numeric --reverse --key 1
     45 null
     14 "/usr/bin/cat"
      6 "/usr/lib/systemd/systemd"
      6 "/usr/libexec/platform-python3.6"
      6 "/usr/bin/bash"
      5 "/usr/sbin/useradd"
      3 "/usr/sbin/rngd"
      2 "/usr/sbin/groupadd"
      1 "/usr/sbin/rsyslogd"
  1. 命令行中向文件寫入內容

當需要編寫多行文檔時,然後使用自定義的字符EOL來結束寫入,這是一個很好的技巧:

[root@localhost ~]# cat << EOL >> /root/documents.txt
> line 1
> line 2
> a b c d ef
> EOL

  1. 不使用 top 監控內存

使用watch命令每 5 秒重複一次free命令,來監測內存:

[root@localhost ~]# watch -n 5 -d free -h
  1. 顯示磁盤分區大小

使用 lsbk 和 jq 來顯示分區信息:

[root@localhost ~]# lsblk --json | jq -c '.blockdevices[] | [.name,.size]'
["sda","20G"]
["sdb","20G"]
["sdc","20G"]
["sdd","20G"]
["sr0","1024M"]
["nvme0n1","20G"]

  1. 快速顯示文件的類型

下面創建一個函數,調用 stat 命令來顯示文件名和輸入的文件類型:

[root@localhost ~]# function wi { test -n "$1" && stat --printf "%F\n" "$1"; }
或者可以檢查多個文件的類型:
[root@localhost ~]# function wi { test "$#" -gt 0 && stat --printf "%n: %F\n" "$@"; }

  1. 顯示已安裝 RPM 包的大小

可以使用 rpm 包管理器的--queryformat選項來查看包的大小:

[root@localhost ~]# rpm --queryformat='%12{SIZE} %{NAME}\n' -q adobe-mappings-cmap-20171205-3.el8.noarch
    13746679 adobe-mappings-cmap

  1. 查看天氣

使用此功能可以查看天氣:

[root@localhost ~]# weather() { curl -s --connect-timeout 3 -m 5 http://wttr.in/$1; }

不添加參數,輸出的是當前地理位置的天氣,輸入城市名稱可以查看當地天氣

  1. 顯示訪問 web 服務器的前 10 個 IP 地址

下面是從 access.log 文件中獲取前十個訪問 web 服務器的 ip 地址:

[root@localhost httpd]# cat /var/log/nginx/access.log | cut -f 1 -d ' ' | sort | uniq -c | sort -hr | head -n 10
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/4WBGtDws4rvWN6O6YCmBsQ