$ ll / 總用量 24 lrwxrwxrwx. 1 root root 7 9月 12 10:55 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 9月 12 11:02 boot drwxr-xr-x. 20 root root 3240 9月 20 10:54 dev drwxr-xr-x. 77 root root 8192 9月 20 12:15 etc drwxr-xr-x. 3 root root 18 9月 12 11:01 home lrwxrwxrwx. 1 root root 7 9月 12 10:55 lib -> usr/lib lrwxrwxrwx. 1 root root 9 9月 12 10:55 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 4月 11 2018 media drwxr-xr-x. 2 root root 6 4月 11 2018 mnt drwxr-xr-x. 2 root root 6 4月 11 2018 opt dr-xr-xr-x. 114 root root 0 9月 20 10:54 proc dr-xr-x---. 5 root root 4096 9月 20 12:10 root drwxr-xr-x. 26 root root 760 9月 20 12:45 run lrwxrwxrwx. 1 root root 8 9月 12 10:55 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 4月 11 2018 srv dr-xr-xr-x. 13 root root 0 9月 20 10:54 sys drwxrwxrwt. 25 root root 4096 9月 20 13:02 tmp drwxr-xr-x. 13 root root 155 9月 12 10:55 usr drwxr-xr-x. 19 root root 267 9月 12 11:24 var
和源文件索引節點同樣的文件是硬連接, 反之則是軟連接java
目錄 | 說明 |
---|---|
/bin | /bin目錄的硬連接 |
/sbin | /sbin 目錄的硬連接 |
/usr/bin | 普通用戶所使用得命令的目錄 |
/usr/sbin | 超級管理員所使用的命令目錄 |
$ ls -lid /usr/bin/ 50331721 dr-xr-xr-x. 2 root root 24576 9月 20 12:45 /usr/bin/ $ ls -lid /bin/ 50331721 dr-xr-xr-x. 2 root root 24576 9月 20 12:45 /bin/ $ ls -lid /usr/sbin/ 77 dr-xr-xr-x. 2 root root 12288 9月 20 12:45 /usr/sbin/ $ ls -lid /sbin/ 77 dr-xr-xr-x. 2 root root 12288 9月 20 12:45 /sbin/
目錄 | 說明 |
---|---|
/boot | 引導目錄, 存放grub菜單和內核的信息 |
目錄 | 說明 |
---|---|
/dev | 設備目錄 |
/dev/cdrom | /dev/sr0 的軟連接 |
/dev/sr0 | 光驅, 光盤 |
/dev/random | 產生隨機數 |
/dev/zero | 源源不斷產生數據的文件 |
/dev/pts/ | 虛擬終端 |
/dev/sd* | 磁盤分區 |
/dev/stderr | 錯誤輸出 2 |
/dev/stdin | 標準輸入 0 |
/dev/stdout | 標準輸出 1 |
/dev/null | 黑洞 |
>>> 光驅, 光盤 $ ll -i /dev/cdrom 28731 lrwxrwxrwx. 1 root root 3 9月 20 10:54 /dev/cdrom -> sr0 $ ll -i /dev/sr0 17931 brw-rw----. 1 root cdrom 11, 0 9月 20 10:54 /dev/sr0 >>> 虛擬終端 $ ll /dev/pts/ 總用量 0 crw--w----. 1 root tty 136, 0 9月 20 13:25 0 c---------. 1 root root 5, 2 9月 20 10:54 ptmx >>> 輸入輸出目錄 $ ll -i /dev/stderr 8729 lrwxrwxrwx. 1 root root 15 9月 20 10:54 /dev/stderr -> /proc/self/fd/2 $ ll -i /dev/stdin 8727 lrwxrwxrwx. 1 root root 15 9月 20 10:54 /dev/stdin -> /proc/self/fd/0 $ ll -i /dev/stdout 8728 lrwxrwxrwx. 1 root root 15 9月 20 10:54 /dev/stdout -> /proc/self/fd/1
目錄 | 說明 |
---|---|
/etc | 配置文件 |
/etc/sysconfig/network-scripts/ifcfg-e* | 網卡配置文件(這裏配置的DNS優先級高) |
/etc/hostname | 主機名配置文件 |
/etc/resolv.conf | 本地的dns配置文件(這裏配置的DNS優先級低) |
/etc/fstab | 掛載設備配置文件 |
/etc/sysconfig/selinux | 安全策略配置文件 |
/etc/motd | 登陸系統前顯示內容 |
/etc/hosts | 本地域名解析的文件 |
>>> 網卡配置文件 $ cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no NAME=ens33 UUID=a5ae4b2e-6cb7-45b9-90dd-0420ce5d4b02 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.142.23 PREFIX=24 GATEWAY=192.168.142.2 DNS1=223.5.5.5 >>> 主機名配置文件 $ cat /etc/hostname git >>> 本地的dns配置文件 $ grep -v '#' /etc/resolv.conf nameserver 223.5.5.5 >>> 掛載設備配置文件 $ grep -v '#' /etc/fstab /dev/mapper/centos-root / xfs defaults 0 0 UUID=67ddc4bb-c4e8-4715-b6b4-292df3699ce5 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 >>> 安全策略配置文件 $ grep -v '#' /etc/sysconfig/selinux SELINUX=enforcing SELINUXTYPE=targeted >>> 本地域名解析的文件 $ grep -v '#' /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 >>> 登陸系統前顯示內容(通常不推薦, 會佔用內存) $ cat /etc/motd "###################歡迎登錄主機##############" >>> 退出從新登陸主機 Last login: Fri Sep 20 14:08:11 2019 from 192.168.142.11 "###################歡迎登錄主機##############" $
目錄 | 說明 |
---|---|
/home | 全部普通用戶的家目錄 |
/root | 超級管理員的家目錄 |
目錄 | 說明 |
---|---|
/proc | 虛擬的信息,存放系統實時狀態信息 |
/run | 程序運行產生的pid文件存放點 |
/usr | 安裝軟件目錄 |
/usr/local | 安裝軟件目錄 |
/var | 可變的目錄 |
/var/run | /run的硬連接 |
/var/log | 存放日誌的目錄 |
/var/log/messages | 系統日誌 |
/var/log/secure | 用戶登陸日誌 |
>>>> 程序運行產生的pid文件存放點 $ ll -id /run/ 8713 drwxr-xr-x. 26 root root 760 9月 21 00:30 /run/ $ ll -id /var/run/ 8713 drwxr-xr-x. 26 root root 760 9月 21 00:30 /var/run/ >>>> 系統日誌 $ tail -f /var/log/messages Sep 21 00:05:54 git chronyd[6155]: Forward time jump detected! Sep 21 00:05:54 git nm-dispatcher: req:2 'connectivity-change': start running ordered scripts... Sep 21 00:05:54 git nm-dispatcher: req:3 'up' [ens33]: start running ordered scripts... Sep 21 00:05:54 git nm-dispatcher: req:4 'connectivity-change': start running ordered scripts... Sep 21 00:08:46 git chronyd[6155]: Selected source 202.112.29.82 Sep 21 00:09:52 git systemd: Started Session 11 of user root. Sep 21 00:09:52 git systemd-logind: New session 11 of user root. Sep 21 00:20:18 git systemd: Got automount request for /proc/sys/fs/binfmt_misc, triggered by 9488 (ls) Sep 21 00:20:18 git systemd: Mounting Arbitrary Executable File Formats File System... Sep 21 00:20:18 git systemd: Mounted Arbitrary Executable File Formats File System. >>>> 用戶登陸日誌 $ tail -f /var/log/secure Sep 20 14:07:59 git sshd[8981]: pam_unix(sshd:session): session closed for user root Sep 20 14:08:11 git sshd[9008]: Accepted publickey for root from 192.168.142.11 port 57050 ssh2: DSA SHA256:mGJDCO9vLiNLJQZA6NRYY4lyHBUdrnAFihpxJSN9n3w Sep 20 14:08:11 git sshd[9008]: pam_unix(sshd:session): session opened for user root by (uid=0) Sep 20 14:08:38 git sshd[9008]: error: Received disconnect from 192.168.142.11 port 57050:0: Sep 20 14:08:38 git sshd[9008]: Disconnected from 192.168.142.11 port 57050 Sep 20 14:08:38 git sshd[9008]: pam_unix(sshd:session): session closed for user root Sep 20 14:08:53 git sshd[9036]: Accepted publickey for root from 192.168.142.11 port 57052 ssh2: DSA SHA256:mGJDCO9vLiNLJQZA6NRYY4lyHBUdrnAFihpxJSN9n3w Sep 20 14:08:54 git sshd[9036]: pam_unix(sshd:session): session opened for user root by (uid=0) Sep 21 00:09:52 git sshd[9412]: Accepted publickey for root from 192.168.142.11 port 61648 ssh2: DSA SHA256:mGJDCO9vLiNLJQZA6NRYY4lyHBUdrnAFihpxJSN9n3w Sep 21 00:09:52 git sshd[9412]: pam_unix(sshd:session): session opened for user root by (uid=0)
目錄 | 說明 |
---|---|
/lib | /usr/lib的軟連接 |
/lib64 | /usr/lib64的硬連接 |
usr/lib | 命令調用的庫文件的目錄 |
usr/lib64 | 命令調用的64位庫文件的目錄 |
/media | 掛載點,可移動的設備 |
/mnt | 臨時掛載點 |
/opt | 早期第三方軟件安裝目錄 |
/srv | 物理設備的信息 |
/sys | 物理設備的信息 |
/tmp | 文件的臨時的存放點 |
>>>> 命令調用的庫文件的目錄 $ ll -id /usr/lib 16777313 dr-xr-xr-x. 28 root root 4096 9月 12 10:57 /usr/lib $ ll -id /lib 80 lrwxrwxrwx. 1 root root 7 9月 12 10:55 /lib -> usr/lib >>>> 命令調用的64位庫文件的目錄 $ ll -id /usr/lib64/ 79 dr-xr-xr-x. 42 root root 24576 9月 14 01:01 /usr/lib64/ $ ll -id /lib64/ 79 dr-xr-xr-x. 42 root root 24576 9月 14 01:01 /lib64/ $ du -shx /usr/lib64/ 172M /usr/lib64/ $ du -shx /lib64/ 172M /lib64/
顯示目錄列表node
選項 | 說明 |
---|---|
-a | 顯示全部文件, 包括隱藏文件 |
-l | 以長格式顯示目錄列表, 帶屬性信息 |
-1 | 顯示列表 |
-d | 只顯示目錄自己信息 |
-i | 顯示索引節點信息(inode號) |
-h | 以人類可讀的形式顯示文件大小 |
-F | 給顯示出來的目錄加個標識符(/) |
-S | 根據文件大小排序 |
-t | 根據時間進行排序 |
-r | 倒序排序 |
>>>> 給顯示出來的目錄加個標識符(/) $ ll -F 總用量 36 -rw-r--r--. 1 root root 0 9月 16 09:36 ,$1} -rw-r--r--. 1 root root 0 9月 16 09:36 ,$1,$NF} -rw-------. 1 root root 1681 9月 12 11:02 anaconda-ks.cfg -rwxr-xr-x. 1 root root 86 9月 16 19:12 array.sh* -rw-r--r--. 1 root root 131 9月 14 01:24 col6.txt drwxr-xr-x. 3 root root 18 9月 17 02:18 FishC/ drwxr-xr-x. 3 root root 45 9月 13 22:55 git_data/ -rw-r--r--. 1 root root 4056 9月 20 12:10 help.txt -rw-r--r--. 1 root root 924 9月 14 01:02 netstat.txt -rw-r--r--. 1 root root 0 9月 16 10:54 ,$NF} -rw-r--r--. 1 root root 12 9月 19 12:46 oldboy.sh -rw-r--r--. 1 root root 989 9月 16 09:45 passwd -rw-r--r--. 1 root root 28 9月 16 19:29 test.sh -rw-r--r--. 1 root root 202 9月 16 20:48 test.txt >>>> 根據文件大小排序 $ ll -S -rw-r--r--. 1 root root 4056 9月 20 12:10 help.txt -rw-------. 1 root root 1681 9月 12 11:02 anaconda-ks.cfg -rw-r--r--. 1 root root 989 9月 16 09:45 passwd -rw-r--r--. 1 root root 924 9月 14 01:02 netstat.txt -rw-r--r--. 1 root root 202 9月 16 20:48 test.txt -rw-r--r--. 1 root root 131 9月 14 01:24 col6.txt ... >>>> 根據時間進行排序 $ ll -t -rw-r--r--. 1 root root 4056 9月 20 12:10 help.txt -rw-r--r--. 1 root root 12 9月 19 12:46 oldboy.sh drwxr-xr-x. 3 root root 18 9月 17 02:18 FishC -rw-r--r--. 1 root root 202 9月 16 20:48 test.txt -rw-r--r--. 1 root root 28 9月 16 19:29 test.sh -rwxr-xr-x. 1 root root 86 9月 16 19:12 array.sh ... >>>> 倒序排序 $ ll -rt -rwxr-xr-x. 1 root root 86 9月 16 19:12 array.sh -rw-r--r--. 1 root root 28 9月 16 19:29 test.sh -rw-r--r--. 1 root root 202 9月 16 20:48 test.txt drwxr-xr-x. 3 root root 18 9月 17 02:18 FishC -rw-r--r--. 1 root root 12 9月 19 12:46 oldboy.sh -rw-r--r--. 1 root root 4056 9月 20 12:10 help.txt ...
切換目錄linux
cd / 切換到根目錄 cd . 保持當前目錄 cd .. 切換到當前目錄的上一級目錄 cd ~ 切換到當前用戶的家目錄下 cd 默認切換到當前用戶的家目錄下 cd - 切換到上一次所在的目錄
以樹狀形顯示目錄結構nginx
選項git
選項 | 說明 |
---|---|
-a | 顯示隱藏文件 |
-d | 只顯示目錄 |
-f | 只顯示文件 |
-F | 給目錄加個標識符 |
-L | 查看目錄的深度,層級,後面跟的是正整數 |
>>> 查看目錄的深度,層級,後面跟的是正整數 >>> 給目錄加個標識符 $ tree -LF 2 . ├── ,$1} ├── ,$1,$NF} ├── anaconda-ks.cfg ├── array.sh* ├── col6.txt ├── FishC/ │ └── sle2/ ├── git_data/ │ ├── a │ ├── b │ └── c ├── help.txt ├── netstat.txt ├── ,$NF} ├── oldboy.sh ├── passwd ├── test.sh └── test.txt 3 directories, 15 files >>>> 只顯示目錄 $ tree -d . ├── FishC │ └── sle2 └── git_data 3 directories
建立目錄算法
選項 | 說明 |
---|---|
-p | 建立多層目錄 |
-v | 顯示建立過程 |
-m | 建立給目錄設置其餘權限 |
{} | 生成序列, 建立多個目錄 |
>>>> 建立給目錄設置其餘權限 $ mkdir -m 700 data2 $ mkdir data3 $ ll -d data3 drwxr-xr-x. 2 root root 6 9月 21 01:32 data3 $ ll -d data2 drwx------. 2 root root 6 9月 21 01:32 data2 >>>> 建立多個文件 $ mkdir oldboy oldgirl newboy newgirl $ mkdir oldboy{1..10} $ mkdir oldboy{frank,tank,json}
建立文件shell
1.在一個路徑下,不能出現同名的文件,會改變原文件的時間戳 2.使用{},建立多個文件,區分大小寫。
複製,拷貝數據庫
選項 | 說明 |
---|---|
-r | 遞歸複製 |
-p | 保持屬性 |
-d | 保持軟鏈接 |
-t | 把原目標和目標位置進行替換 |
-a | =-pdr |
-i | 交互式詢問,系統自帶別名 |
$ ll / 總用量 24 lrwxrwxrwx. 1 root root 7 9月 12 10:55 bin -> usr/bin dr-xr-xr-x. 5 root root 4096 9月 12 11:02 boot drwxr-xr-x. 20 root root 3240 9月 20 10:54 dev drwxr-xr-x. 77 root root 8192 9月 21 00:05 etc drwxr-xr-x. 3 root root 18 9月 12 11:01 home lrwxrwxrwx. 1 root root 7 9月 12 10:55 lib -> usr/lib lrwxrwxrwx. 1 root root 9 9月 12 10:55 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 4月 11 2018 media drwxr-xr-x. 2 root root 6 4月 11 2018 mnt drwxr-xr-x. 2 root root 6 4月 11 2018 opt dr-xr-xr-x. 115 root root 0 9月 20 10:54 proc dr-xr-x---. 25 root root 4096 9月 21 01:35 root drwxr-xr-x. 26 root root 760 9月 21 00:30 run lrwxrwxrwx. 1 root root 8 9月 12 10:55 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 4月 11 2018 srv dr-xr-xr-x. 13 root root 0 9月 20 10:54 sys drwxrwxrwt. 25 root root 4096 9月 21 01:35 tmp drwxr-xr-x. 13 root root 155 9月 12 10:55 usr drwxr-xr-x. 19 root root 267 9月 12 11:24 var $ cp -a /lib /opt/ $ ll /opt/ 總用量 0 lrwxrwxrwx. 1 root root 7 9月 12 10:55 lib -> usr/lib
移動json
選項 | 說明 |
---|---|
-f | 強制覆蓋 |
-t | 把原目標和目標位置進行替換 |
-i | 交互式詢問,系統自帶別名 |
$ ll -d netstat.txt -rw-r--r--. 1 root root 26 9月 21 01:59 netstat.txt $ ll /mnt/netstat.txt -rw-r--r--. 1 root root 924 9月 14 01:02 /mnt/netstat.txt $ mv -f netstat.txt /mnt/ $ ll /mnt/netstat.txt -rw-r--r--. 1 root root 26 9月 21 01:59 /mnt/netstat.txt $ ll -rw-r--r--. 1 root root 989 9月 16 09:45 passwd $ ll /opt/ lrwxrwxrwx. 1 root root 7 9月 12 10:55 lib -> usr/lib drwxr-xr-x. 2 root root 6 9月 21 01:51 oldboy $ mv -t ./ /opt/oldboy/ $ ll drwxr-xr-x. 2 root root 6 9月 21 01:51 oldboy -rw-r--r--. 1 root root 989 9月 16 09:45 passwd
刪除centos
選項 | 說明 |
---|---|
-f | 強制刪除 |
-r | 遞歸刪除 |
-i | 交互式詢問,系統自帶別名 |
所見即所得
選項 | 意義 |
---|---|
-e | 支持特殊符號的含義 |
符號名字 | 含義 |
---|---|
單引號 | 強引用,所見即所得 |
雙引號 | 所見即所得,支持變量,會解析變量 |
不加引號 | 所見即所得,出現空格不會看作是個總體,會解析變量,支持通配符 |
反引號 | 先執行反引號裏面的命令,把結果交給外面的命令。和$()做用同樣 |
-e
支持換行符, tab鍵
$ echo -e 'hello\nworld' hello world $ echo -e 'hello\tworld' hello world
echo表示顏色
$ echo -e "\033[30m黑色字\033[0m" $ echo -e "\033[31m紅色字\033[0m" $ echo -e "\033[32m綠色字\033[0m" $ echo -e "\033[33m黃色字\033[0m" $ echo -e "\033[34m藍色字\033[0m" $ echo -e "\033[35m紫色字\033[0m" $ echo -e "\033[36m天藍字\033[0m" $ echo -e "\033[37m白色字\033[0m"
echo表示背景
echo -e "\033[40m黑底白字\033[0m" echo -e "\033[41m紅底白字\033[0m" echo -e "\033[42m綠底白字\033[0m" echo -e "\033[43m黃底白字\033[0m" echo -e "\033[44m藍底白字\033[0m" echo -e "\033[45m紫底白字\033[0m" echo -e "\033[46m天藍底白字\033[0m" echo -e "\033[47m白底白字\033[0m"
查看文件內容
選項 | 含義 |
---|---|
-n | 給顯示內容加上行號 |
-A | 給每行的結尾加上標識符 |
>>> cat建立新文件 $ cat >> oldboy.txt <<E > egon > lxx > alex > E $ cat oldboy.txt egon lxx alex $ cat -A oldboy.txt egon$ lxx$ alex$ >>> cat追加數據到文件 $ cat >>oldboy.txt <<E > hhp > lll > E $ cat oldboy.txt egon lxx alex hhp lll
當文件裏面出現'$'符號, 結束符在定義的時候須要加上引號(單引號雙引號均可以)
EOF
不加引號的狀況$ cat > test2.sh << EOF > #!/bin/bash > read -p '請輸入用戶名' name > read -p '請輸入密碼' pwd > echo "用戶名 $name, 密碼 $pwd" > EOF $ cat test2.sh #!/bin/bash read -p '請輸入用戶名' name read -p '請輸入密碼' pwd echo "用戶名 , 密碼 " $ chmod +x test2.sh $ ./test2.sh 請輸入用戶名lxx 請輸入密碼sb 用戶名 , 密碼
EOF
加上引號能夠正常輸出$ cat > test.sh << 'EOF' > #!/bin/bash > read -p '請輸入用戶名' name > read -p '請輸入密碼' pwd > echo "用戶名 $name, 密碼 $pwd" > EOF $ chmod +x test.sh $ ./test.sh 請輸入用戶名lxx 請輸入密碼123 用戶名 lxx, 密碼 123
分頁顯示文件內容,文件結束時,會自動退出文件
外部選項 | 說明 |
---|---|
-n(數字) | 指定一頁顯示多少行 |
+n(數字) | 指定從第幾行開始顯示 |
$ more +15 /etc/passwd dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin java:x:1000:1000:java:/home/java:/bin/bash $ more -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin --More--(18%)
內部命令 | 說明 |
---|---|
空格或f | 向下翻頁 |
b | 向上翻頁 |
回車 | 下一行 |
/ | 搜索 |
= | 顯示當前光標所在行 |
q | 退出 |
分頁顯示文件內容,文件結束時,不會自動退出
外部選項 | 說明 |
---|---|
-N | 顯示的時候加上行號 |
$ less -N /etc/services
內部命令 | 說明 |
---|---|
空格或f | 向下翻頁 |
b | 向上翻頁 |
回車 | 下一行 |
/ | 搜索, 會高亮 |
= | 顯示當前光標所在頁, 第幾行到第幾行, 會顯示字節大小 |
q | 退出 |
顯示文件頭部信息,默認顯示前十行內容
選項 | 說明 |
---|---|
-n (數字) | 取消默認輸出,指定顯示幾行 |
-c | 顯示頭部幾個字符 |
$ head -n5 /etc/services # /etc/services: # $Id: services,v 1.55 2013/04/14 ovasik Exp $ # # Network services, Internet style # IANA services version: last updated 2013-04-10 $ head -5 /etc/services # /etc/services: # $Id: services,v 1.55 2013/04/14 ovasik Exp $ # # Network services, Internet style # IANA services version: last updated 2013-04-10 $ head -c 5 /etc/services # /et
顯示文件尾部信息,默認顯示十行內容
選項 | 說明 |
---|---|
-n | 取消默認輸出,指定顯示幾行 簡寫 -數字 |
-c | 顯示尾部幾個字符,最後一個是換行符 |
-f | 實時查看文件的更新 |
-F | 實時查看文件的更新,文件不存在時,不會退出,會一直嘗試讀取該文件 |
tailf
實時查看文件的更新,在磁盤不更新時,不會讀取磁盤,減小磁盤的讀寫
$ tail -F /var/log/mess tail: 沒法打開"/var/log/mess" 讀取數據: 沒有那個文件或目錄 $ tail -f /var/log/messages $ tailf /var/log/messages
tailf
和 tail -f
區別在顯示結果上沒有任何區別, 在底層有區別
tail -f
會不停地讀取磁盤中文件的內容, 無論文件有沒有更新
tailf
則是隻有文件更新的時候纔會讀取磁盤中文件的內容
tailf
會減小磁盤的讀寫, 減小性能的使用
根據本地數據庫進行查找, 查找前須要更新數據庫
$ yum provides locate 已加載插件:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.sjtu.edu.cn * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com mlocate-0.26-8.el7.x86_64 : An utility for finding files by name 源 :base 匹配來源: 文件名 :/usr/bin/locate $ yum -y install mlocate-0.26-8.el7.x86_64 $ locate hostname locate: 沒法執行 stat () `/var/lib/mlocate/mlocate.db': 沒有那個文件或目錄 $ updatedb $ locate hostname /etc/hostname /etc/dbus-1/system.d/org.freedesktop.hostname1.conf /etc/selinux/targeted/active/modules/100/hostname /etc/selinux/targeted/active/modules/100/hostname/cil /etc/selinux/targeted/active/modules/100/hostname/hll /etc/selinux/targeted/active/modules/100/hostname/lang_ext /usr/bin/hostname >>> 支持正則(須要加上-r選項) $ locate -r hostname$ /etc/hostname /etc/selinux/targeted/active/modules/100/hostname /usr/bin/hostname /usr/bin/nmtui-hostname /usr/lib64/gettext/hostname
查找命令的絕對路徑
$ which hostname /usr/bin/hostname
$ whereis hostname hostname: /usr/bin/hostname /etc/hostname /usr/share/man/man1/hostname.1.gz /usr/share/man/man5/hostname.5.gz
查看命令類型
$ type hostname hostname 是 /usr/bin/hostname $ type cd cd 是 shell 內嵌 $ type -a cd cd 是 shell 內嵌 cd 是 /usr/bin/cd
>>>> 默認精確查找 $ find / -type f -name "*hostname" >>>> 加上通配符模糊查詢 find / -type f -name "*hostname*" >>> 相似於locate hostname
經過url的方式進行文件傳輸
查看是否能訪問網站
輸出的結果是網站的HTML代碼
$ curl www.baidu.com
$ curl -o nginx.tar.gz http://nginx.org/download/nginx-0.1.14.tar.gz $ ll nginx.tar.gz -rw-r--r--. 1 root root 263949 9月 21 21:36 nginx.tar.gz
下載文件
$ wget -O nginx.tar.gz http://nginx.org/download/nginx-0.1.14.tar.gz
$ scp nginx.tar.gz root@192.168.142.40:/root/
$ scp root@192.168.142.40:/root/nginx.tar.gz .
本地上傳和下載
$ yum install -y lrzsz
$ rz
$ sz *
大文件上傳和下載
安裝註冊碼 101210-450789-147200
排序
2
選項 | 說明 |
---|---|
-t | 指定分隔符, 默認以空白字符爲分隔符 |
-k | 指定列數 |
-n | 以數字的大小方式進行排序 |
-r | 倒序 |
$ cat > file.txt <<EOF > b:3 > c:4 > d:5 > e:11 > f:33 > a:22 > EOF $ sort file.txt a:22 b:3 c:4 d:5 e:11 f:33 $ sort -t ':' file.txt a:22 b:3 c:4 d:5 e:11 f:33 $ sort -t ':' -k2 file.txt e:11 a:22 b:3 f:33 c:4 d:5 $ sort -t ':' -nk2 file.txt b:3 c:4 d:5 e:11 a:22 f:33 $ sort -t ':' -rnk2 file.txt f:33 a:22 e:11 d:5 c:4 b:3
$ sort -t ':' /etc/passwd -nk3 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync ...
對相鄰的行進行去重統計
$ cat >>test.txt <<EOF > tank > egon > tank > egon > oldboy > frank > EOF $ sort test.txt |uniq egon frank oldboy tank
統計每一行中的內容出現的次數
$ sort test.txt |uniq -c |sort -nr 2 tank 2 egon 1 oldboy 1 frank
擅長取列, 默認是以tab鍵爲分隔符
選項 | 說明 |
---|---|
-d | 指定分隔符 |
-f | 指定取出的列 |
-c | 取指定的字符 |
$ echo 'oldboyfgkdfssdsd' |cut -c 1-6 oldboy
$ echo 'frank, QQ is 1176494252' > file2.txt $ cut -d ' ' -f2,4 file2.txt QQ 1176494252
$ echo 'frank ,QQ is 1176494252'>file2.txt >>> 第一種方法 $ cut -d ' ' -f2,4 file2.txt |cut -d ',' -f2 QQ 1176494252 >>> 第二種方法 $ cut -d ' ' -f2,4 file2.txt |tr -d ',' QQ 1176494252
統計/etc/passwd
中全部解釋器用到的次數
>>> 第一種方法 $ cut -d: -f7 /etc/passwd|sort|uniq -c|sort -n 1 /bin/sync 1 /sbin/halt 1 /sbin/shutdown 2 /bin/bash 16 /sbin/nologin >>> 第二種方法 $ awk -F: '{print $7}' /etc/passwd|sort|uniq -c|sort -n 1 /bin/sync 1 /sbin/halt 1 /sbin/shutdown 2 /bin/bash 16 /sbin/nologin >>> 第三種方法 $ awk -F: '{a[$7]++}END{for(i in a){print a[i]":"i}}' /etc/passwd|sort -t: -n 1:/bin/sync 1:/sbin/halt 1:/sbin/shutdown 2:/bin/bash 16:/sbin/nologin
統計
選項 | 說明 |
---|---|
-l | 統計文件的行數 |
-c | 統計文件的字節數, 包括換行符 |
-w | 以空格爲分隔符, 統計文件的單詞數 |
$ cat > test5.txt <<EOF > root:apple > /bin/bash:bin > apple > root:apple > EOF $ wc -l test5.txt 4 test5.txt $ wc -w test5.txt 4 test5.txt $ wc -c test5.txt 42 test5.txt
不能單獨對文件操做, 必須先將文件輸入給tr
命令
tr
全局替換
$ echo 'frank QQ, is 1176494252'>file2.txt $ cut -d ' ' -f2,4 file2.txt|tr '1' '0' QQ, 0076494252
$ echo "HELLO WHO IS SB"|tr 'A-Z' 'a-z' hello who is sb
說明: 這裏的A被替換爲a, B被替換爲b, ...Z被替換爲z
$ echo 12345 |tr '0-9' '9876543210' 87654
說明: 0被替換爲9, 1被替換爲8, 2被替換爲7, ...9替換爲0
$ echo 'frank QQ, is 1176494252'>file2.txt >>> 經過cut沒法篩選出QQ 117649425 $ cut -d ' ' -f2,4 file2.txt|cut -d ',' -f1,2 QQ, 117649425 >>>> 經過tr -d 刪除字符串中的逗號 $ cut -d ' ' -f2,4 file2.txt|tr -d ',' QQ 1176494252
$ echo hello 1 char 2 next 4 |tr -d -c '0-9 \n' 1 2 4 $ echo hello 1 char 2 next 4 |tr -c '0-9\n' ' ' 1 2 4
$ cat >multi_blank.txt<<EOF > line1 > > line2 > > > line3 > line4 > EOF $ cat multi_blank.txt line1 line2 line3 line4 $ tr -s '\n'<multi_blank.txt line1 line2 line3 line4
$ cat sum.txt 1 2 3 4 5 >>>> 先把算法列出來 $ echo $(tr '\n' '+'<sum.txt) 1+2+3+4+5++ >>>> 根據上面的算法, 須要多加個0, 否則會報錯 $ echo $(tr '\n' '+'<sum.txt)0 1+2+3+4+5++0 >>>> 而後把結果計算出來, bash中$[加減乘除運算] 能夠獲得運算的結果 $ echo $[$(tr '\n' '+'<sum.txt)0] 15
$ cat test.txt first 1 second 2 third 3 >>> 第一種方法 ----->>>首先把全部數字搞出來 $ tr -d -c '0-9\n' < test.txt 1 2 3 ----->>>將算法搞出來 $ echo $(tr -d -c '0-9\n' < test.txt |tr '\n' '+')0 1+2+3+0 ----->>>算出結果 $ echo $[$(tr -d -c '0-9\n' < test.txt |tr '\n' '+')0] 6 >>>> 第二種方法 ----->>>首先把全部數字搞出來 $ tr -d [a-z]<test.txt 1 2 3 ----->>>將算法搞出來 $ tr -d [a-z]<test.txt |echo $(tr ' ' '+') +1 +2 +3 ----->>>算出結果 $ tr -d [a-z]<test.txt |echo $[echo $(tr ' ' '+')] 6