第二章 文件和目錄操作命令

来源:https://www.cnblogs.com/key-oldboy/archive/2018/09/30/9727217.html
-Advertisement-
Play Games

2.1 pwd (print work directory)列印工作目錄(顯示當前所在路徑) 後面可以接 -L 預設情況下接的也是-L(logical)的 此種情況顯示的是邏輯路徑(相當於win的一樣) -P(physical)的話,就會把真實的物理路徑全部顯示出來 2.2 cd (change d ...


2.1 pwd

(print work directory)列印工作目錄(顯示當前所在路徑)  後面可以接 -L  預設情況下接的也是-L(logical)的 此種情況顯示的是邏輯路徑(相當於win的一樣) -P(physical)的話,就會把真實的物理路徑全部顯示出來

[root@oldbody local]# pwd

/usr/local

[root@oldbody local]# cd -

/root

[root@oldbody ~]#

[root@oldbody home]# pwd

/home

[root@oldbody home]# echo $PWD

/home

2.2 cd

(change directory)改變目錄路徑 例子:cd /etc 後面的參數-L和-P的話,一個是邏輯的,一個是物理的

絕對路徑:從/開始的路徑 /root/test/a/b    

相對路徑:不從/開始的路徑 test/a/b

cd ../..    上上級目錄    cd ../../..  上上上級目錄    cd /  直接到/目錄下    cd -   上一次目錄   其實 -   是因為有一個$OLDPWD這個環境變數  

cd ~  代表家目錄  其實 因為有一個$HOME這個環境變數 

cd ..  退回上一級目錄  如果是一個點的話代表當前目錄

比如[root@oldbody oldboy]# pwd

/oldboy

[root@oldbody oldboy]# cd /tmp/

[root@oldbody tmp]# cd -

/oldboy

[root@oldbody oldboy]# env | grep -i oldpwd     因為你在oldboy目錄下 所以你的環境變數OLDPWD=/tmp

OLDPWD=/tmp

[root@oldbody oldboy]#

[root@oldbody oldboy]# cd -

/tmp

[root@oldbody tmp]# env | grep -i oldpwd       因為你在tmp目錄下 所以你的環境變數OLDPWD=/oldboy 其中-i就是不區分大小寫的

OLDPWD=/oldboy

[root@oldbody tmp]#

2.3 tree

tree   樹的意思  以樹的形式來顯示一個目錄結構 如果tree不接任何參數的話,會顯示所有的tree的目錄結構 在Linux系統裡面以 以.開頭的都是隱藏文件 使用 ls命令查看不出來 必須使用ls -a參數進行查看

tree -a 查看隱藏文件

tree -d代表只顯示目錄     

tree -L其中L代表level層級的意思 顯示指定的層級

tree -i 不顯示樹枝 常與-f參數配合使用

tree -f 顯示每個文件的全路徑

tree -F 用以區分文件和目錄的方法 以/結尾的為目錄

可以用rpm -qa tree命令查看下tree是否安裝 如果tree沒有安裝,可以使用yum install tree -y 安裝tree軟體包  LANG=en   調整字元集 為英文  然後輸入tree /liangli2/ 可以看到

[root@oldbody /]# tree /liangli2/

/liangli2/

`-- liangli3

 

1 directory, 0 files

 

[root@oldbody key]# tree

.

|-- 1

|-- key1

|   |-- 4

|   `-- 5

|-- key2

|   |-- 4

|   `-- 5

`-- key3

    |-- 4

    `-- 5

 

10 directories, 0 files

[root@oldbody key]# tree -L 1

.

|-- 1

|-- key1

|-- key2

`-- key3

 

4 directories, 0 files

[root@oldbody key]#

 

[root@oldbody key]# tree -dL 1

.

|-- 1

|-- key1

|-- key2

`-- key3

 

4 directories

[root@oldbody key]#

為每一個路徑顯示完整的路徑   f    full   完整

[root@oldbody key]# tree -dLf 1

.

|-- ./1

|-- ./key1

|-- ./key2

`-- ./key3

 

4 directories

[root@oldbody key]#

 

[root@oldbody key]# tree -dLfi 1  indentation壓痕 這個點的話,tree後面可以接路徑點消失

不要前面的樹枝

[root@oldbody sysconfig]# tree -L 1 -fi /boot/

/boot

/boot/System.map-2.6.32-573.el6.x86_64

/boot/config-2.6.32-573.el6.x86_64

/boot/efi

/boot/grub

/boot/initramfs-2.6.32-573.el6.x86_64.img

/boot/lost+found

/boot/symvers-2.6.32-573.el6.x86_64.gz

/boot/vmlinuz-2.6.32-573.el6.x86_64

 

3 directories, 5 files

[root@oldbody sysconfig]#

區分文件和目錄

[root@oldbody key]# tree -F

.

|-- 1/

|-- key1/

|   |-- 4/

|   `-- 5/

|-- key2/

|   |-- 4/

|   `-- 5/

`-- key3/

    |-- 4/

    `-- 5/

 

10 directories, 0 files

[root@oldbody key]#

2.4 mkdir

windows下的路徑樣式為c:\data\test 而Linux下的路徑樣式為/data/test,不同的是windows系統下還有D,E等盤,Linux下就只有/,它是所有目錄的頂點    (macke directorys)創建目錄  例子:mkdir /data  在根/下創建data目錄   

-p 參數  如果文件存在 在創建文件話,接-p參數不會報錯的  另一個作用就是 可以連續創建多級目錄   

-v 參數作用 就是可以看到創建目錄的流程是怎麼樣的     

或者cd /;mkdir data  切換到根下,然後創建data目錄 其中;就是命令的分隔符    

連續創建目錄  mkdir -p /liangli/liangli1  創建2個目錄 一個是liangli一個是liangli1  其中liangli1在liangli目錄下

[root@oldbody /]# mkdir -pv Tech/{1..3}/{4..6}

mkdir: created directory `Tech/1'

mkdir: created directory `Tech/1/4'

mkdir: created directory `Tech/1/5'

mkdir: created directory `Tech/1/6'

mkdir: created directory `Tech/2'

mkdir: created directory `Tech/2/4'

mkdir: created directory `Tech/2/5'

mkdir: created directory `Tech/2/6'

mkdir: created directory `Tech/3'

mkdir: created directory `Tech/3/4'

mkdir: created directory `Tech/3/5'

mkdir: created directory `Tech/3/6'

 

[root@oldbody /]# tree /tmp

/tmp

`-- Tech

    |-- 1

    |   |-- 4

    |   |-- 5

    |   `-- 6

    |-- 2

    |   |-- 4

    |   |-- 5

    |   `-- 6

    `-- 3

        |-- 4

        |-- 5

        `-- 6

 

13 directories, 0 files

 

[root@oldbody a]# mkdir -pv  /e/b/c/d/e/f

mkdir: created directory `/e'

mkdir: created directory `/e/b'

mkdir: created directory `/e/b/c'

mkdir: created directory `/e/b/c/d'

mkdir: created directory `/e/b/c/d/e'

mkdir: created directory `/e/b/c/d/e/f'

[root@oldbody a]#      

 

一下子創建連續5個dir1  dir2  dir3  dir4  dir5目錄了

[root@oldbody /]# mkdir /Tech/dir{1..5}

[root@oldbody /]#

[root@oldbody /]#

[root@oldbody /]# ls /Tech/

dir1  dir2  dir3  dir4  dir5  liangli.txt  oldboy.txt

同時創建多個目錄

[root@oldbody tmp]# mkdir -p test/dir{1..5} oldboy/{a..g}

[root@oldbody tmp]# tree test oldboy/

test

|-- dir1

|-- dir2

|-- dir3

|-- dir4

`-- dir5

oldboy/

|-- a

|-- b

|-- c

|-- d

|-- e

|-- f

`-- g

 

12 directories, 0 files

[root@oldbody tmp]#

克隆目錄結構    

[root@oldbody ~]# tree -if liangli2018/      

liangli2018

liangli2018/dir1

liangli2018/dir1/4

liangli2018/dir1/5

liangli2018/dir1/6

liangli2018/dir1/7

liangli2018/dir2

liangli2018/dir2/4

liangli2018/dir2/5

liangli2018/dir2/6

liangli2018/dir2/7

liangli2018/dir3

liangli2018/dir3/4

liangli2018/dir3/5

liangli2018/dir3/6

liangli2018/dir3/7

 

15 directories, 0 files

 

[root@oldbody ~]# tree -if liangli2018/ --noreport liangli2018   --noreport不顯示最後一行統計信息

liangli2018

liangli2018/dir1

liangli2018/dir1/4

liangli2018/dir1/5

liangli2018/dir1/6

liangli2018/dir1/7

liangli2018/dir2

liangli2018/dir2/4

liangli2018/dir2/5

liangli2018/dir2/6

liangli2018/dir2/7

liangli2018/dir3

liangli2018/dir3/4

liangli2018/dir3/5

liangli2018/dir3/6

liangli2018/dir3/7

liangli2018

liangli2018/dir1

liangli2018/dir1/4

liangli2018/dir1/5

liangli2018/dir1/6

liangli2018/dir1/7

liangli2018/dir2

liangli2018/dir2/4

liangli2018/dir2/5

liangli2018/dir2/6

liangli2018/dir2/7

liangli2018/dir3

liangli2018/dir3/4

liangli2018/dir3/5

liangli2018/dir3/6

liangli2018/dir3/7

 

[root@oldbody ~]# tree -if liangli2018/ --noreport liangli2018 >oldboy.txt

[root@oldbody ~]#

[root@oldbody ~]#

[root@oldbody ~]# cat oldboy.txt

liangli2018          這個是必須存在的目錄

liangli2018/dir1

liangli2018/dir1/4

liangli2018/dir1/5

liangli2018/dir1/6

liangli2018/dir1/7

liangli2018/dir2

liangli2018/dir2/4

liangli2018/dir2/5

liangli2018/dir2/6

liangli2018/dir2/7

liangli2018/dir3

liangli2018/dir3/4

liangli2018/dir3/5

liangli2018/dir3/6

liangli2018/dir3/7

liangli2018

liangli2018/dir1

liangli2018/dir1/4

liangli2018/dir1/5

liangli2018/dir1/6

liangli2018/dir1/7

liangli2018/dir2

liangli2018/dir2/4

liangli2018/dir2/5

liangli2018/dir2/6

liangli2018/dir2/7

liangli2018/dir3

liangli2018/dir3/4

liangli2018/dir3/5

liangli2018/dir3/6

liangli2018/dir3/7

[root@oldbody ~]# cd /tmp

[root@oldbody tmp]# mkdir -p `cat /root/oldboy.txt`    首先執行``反引號裡面的內容 然後在執行mkdir命令

[root@oldbody tmp]# ll

total 4

drwxr-xr-x 5 root root 4096 Sep 29 10:42 liangli2018

[root@oldbody tmp]# tree

.

`-- liangli2018

    |-- dir1

    |   |-- 4

    |   |-- 5

    |   |-- 6

    |   `-- 7

    |-- dir2

    |   |-- 4

    |   |-- 5

    |   |-- 6

    |   `-- 7

    `-- dir3

        |-- 4

        |-- 5

        |-- 6

        `-- 7

 

16 directories, 0 files

[root@oldbody tmp]#

2.5 touch

創建文件或更新時間戳 查看ls /Tech可以看到自己創建的文件了,如果文件不存在,就建立新文件,如果存在,就改變文件的訪問時間atime等時間戳

連續創建10000個文件  touch stu{1..10000}  

可以同時創建2個文件  touch a.txt b.txt 兩個文件   也可以用touch {1..4}.txt

通過命令可以看到訪問(-a) 修改(-m) 改變(-c)文件的時間狀態

[root@oldbody 1]# stat 1.txt

  File: `1.txt'

  Size: 0               Blocks: 0          IO Block: 4096   regular empty file

Device: 803h/2051d      Inode: 784979      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2018-06-21 20:16:43.546093627 +0800

Modify: 2018-06-21 20:16:43.546093627 +0800

Change: 2018-06-21 20:16:43.546093627 +0800

[root@oldbody 1]#

[root@oldbody 1]# touch -a 1.txt 的話,表示只改變訪問和改變的時間戳,不改變修改的時間戳  其中Change時間不管任何情況都是會改變的

touch -m 1.txt   只改變修改時間戳

[root@oldboy liangli]# stat  -c  %a  a.txt

644

[root@oldboy liangli]#

-c    使用指定的格式而不是預設的格式  %a 八進位許可權

 

指定時間屬性創建/修改文件(瞭解)

[root@oldbody tmp]# touch -d 20201001 1.txt    d指定創建文件後文件修改時間

[root@oldbody tmp]# ll -h 1.txt

-rw-r--r-- 1 root root 11 Oct  1  2020 1.txt

[root@oldbody tmp]# ll -h 2.txt

-rw-r--r-- 1 root root 0 Sep 29 10:57 2.txt

 

[root@oldbody tmp]# touch -r 2.txt 1.txt         r讓其和其他文件時間屬性保持一致

[root@oldbody tmp]# ll -h 1.txt          

-rw-r--r-- 1 root root 11 Sep 29 10:57 1.txt

 

[root@oldbody tmp]# touch -t 201809291110.00 1.txt    t設置文件格式

[root@oldbody tmp]# ll -h 1.txt                   

-rw-r--r-- 1 root root 11 Sep 29  2018 1.txt

[root@oldbody tmp]# ll -h --full-time  1.txt

-rw-r--r-- 1 root root 11 2018-09-29 11:10:00.000000000 +0800 1.txt

[root@oldbody tmp]#

2.6 ls

list(列表)  列表目錄文件  例子:ls / 列 根/目錄下目錄和文件 

-l  long  長格式(顯示出來的時間為最後一次修改時間)  

-d directorys 查看目錄   

-a  all的意思  顯示所有文件,包括隱藏的文件(預設.開頭文件都是隱藏的 不顯示)

-A 列出所有文件,包括隱藏文件,但是不包括.和..這兩個是目錄  

-t根據最後修改時間排序,預設從大到小(最新到最老)  

-r反轉排序

--time-style=long-iso  顯示完整時間屬性參數(年份)

ls -lrt /etc 執行這個命令後最新的文件會在最下麵  這條命令依賴於當前系統正確的時間

-F 區分文件和目錄的方式(在結尾處加上類型指示符號 * / @等)瞭解

   加上“*”代表可執行的普通文件

   加上“/”表示目錄

   加上“=”表示套接字(sockets)

   加上“|”表示FIFOs

   加上“@”表示符號鏈接

-p 也是區分文件和目錄的方式(在結尾處給目錄加上/)

[root@oldbody oldboy]# touch oldboy.txt

[root@oldbody oldboy]# ls -lrt     r是倒敘的意思    t按修改時間排序

total 20

-rw-r--r-- 1 root root    0 Jun 26 21:53 yingsui.gz

-rw-r--r-- 1 root root    0 Jun 26 21:53 wodi.gz

-rw-r--r-- 1 root root    0 Jun 26 21:53 oldboy

-rw-r--r-- 1 root root    0 Jun 26 21:53 jeacen

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaodong

drwxr-xr-x 2 root root 4096 Jun 26 21:56 test

drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan

-rw-r--r-- 1 root root    0 Jun 26 23:40 oldboy.txt

[root@oldbody oldboy]#

查看系統時間

[root@oldbody ~]# date

Wed Jun 27 20:28:45 CST 2018

[root@oldbody ~]#

ls -l --color=auto  顯示顏色

[root@oldbody oldboy]# alias

alias cp='cp -i'

alias l.='ls -d .* --color=auto'

alias ll='ls -l --color=auto'

alias ls='ls --color=auto'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@oldbody oldboy]# ls -l   目錄會顯示顏色的

total 20

drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext

-rw-r--r-- 1 root root    0 Jun 26 21:53 jeacen

-rw-r--r-- 1 root root    0 Jun 26 21:53 oldboy

-rw-r--r-- 1 root root    0 Jun 26 23:40 oldboy.txt

drwxr-xr-x 2 root root 4096 Jun 26 21:56 test

-rw-r--r-- 1 root root    0 Jun 26 21:53 wodi.gz

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaodong

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie

-rw-r--r-- 1 root root    0 Jun 26 21:53 yingsui.gz

[root@oldbody oldboy]# \ls -l     屏蔽掉別名

total 20

drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext

-rw-r--r-- 1 root root    0 Jun 26 21:53 jeacen

-rw-r--r-- 1 root root    0 Jun 26 21:53 oldboy

-rw-r--r-- 1 root root    0 Jun 26 23:40 oldboy.txt

drwxr-xr-x 2 root root 4096 Jun 26 21:56 test

-rw-r--r-- 1 root root    0 Jun 26 21:53 wodi.gz

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaodong

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie

-rw-r--r-- 1 root root    0 Jun 26 21:53 yingsui.gz

[root@oldbody oldboy]#

[root@oldbody oldboy]# \ls -l --color=auto   目錄會顯示顏色的

total 20

drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext

-rw-r--r-- 1 root root    0 Jun 26 21:53 jeacen

-rw-r--r-- 1 root root    0 Jun 26 21:53 oldboy

-rw-r--r-- 1 root root    0 Jun 26 23:40 oldboy.txt

drwxr-xr-x 2 root root 4096 Jun 26 21:56 test

-rw-r--r-- 1 root root    0 Jun 26 21:53 wodi.gz

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaodong

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan

drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie

-rw-r--r-- 1 root root    0 Jun 26 21:53 yingsui.gz

[root@oldbody oldboy]#

 

我們也可以給過濾的內容加顏色

[root@oldbody oldboy]# cat 123.log

key

[root@oldbody oldboy]# grep --color=auto key 123.log

key

[root@oldbody oldboy]#

給3306這個埠加上顏色

[root@oldbody oldboy]# grep --color=auto 3306 /etc/services

mysql           3306/tcp                        # MySQL

mysql           3306/udp                        # MySQL

[root@oldbody oldboy]#

 

ls -a  可以顯示隱藏的文件和不隱藏的文件 all

[root@oldbody test]# ls -a

.  ..  dir1  dir2  dir3  file1.txt  file2.txt  file3.txt

 

ls -l   將文件的屬性和修改時間都可以顯示出來

ll就相當於ls -l一樣  系統自帶的一個alias

[root@oldbody test]# ls -l

total 12

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

[root@oldbody test]# ll

total 12

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

[root@oldbody test]# alias

alias cp='cp -i'

alias l.='ls -d .* --color=auto'

alias ll='ls -l --color=auto'

alias ls='ls --color=auto'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@oldbody test]#

 

-h   human(人類) 的作用就是可以很直觀的現實文件的大小 

[root@oldbody test]# ls -lh

total 12K

drwxr-xr-x 2 root root 4.0K Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4.0K Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4.0K Jun 28 11:48 dir3

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

[root@oldbody test]#

 

-d    directory參數表示只顯示目錄

[root@oldbody test]# ls -l | grep dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

[root@oldbody test]# ll -d dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

[root@oldbody test]#

 

-F   classify 就是給目錄後面加上/

[root@oldbody test]# ls -F

dir1/  dir2/  dir3/  file1.txt  file2.txt  file3.txt

[root@oldbody test]#

 

生產案例:查找最近更新的文件  ll -rt     等於ls -lrt

-r   reverse 倒敘排序或者反向排序

-t   按修改時間排序

預設情況下  最新創建的文件和目錄放在最前面

[root@oldbody test]# ll

total 12

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

[root@oldbody test]#

 

[root@oldbody test]# ll -rt

total 12

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

[root@oldbody test]#

-i  參數  查看inode節點

[root@oldbody test]# ll

total 12

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

[root@oldbody test]# ll -i

total 12

915788 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

915789 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

915790 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

915785 -rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

915786 -rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

915787 -rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

[root@oldbody test]#

 

--time-style=long-iso 參數使用

[root@oldbody tmp]# ll --time-style=long-iso

total 12

-rw-r--r-- 1 root root   21 2018-09-29 11:39 1.txt

-rw-r--r-- 1 root root    0 2018-09-29 11:21 123.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 2.txt

drwxr-xr-x 2 root root 4096 2018-09-29 11:19 key

-rw-r--r-- 1 root root    0 2018-09-29 11:18 key.txt

drwxr-xr-x 5 root root 4096 2018-09-29 10:42 liangli2018

-rw-r--r-- 1 root root    0 2018-09-29 11:49 nihao.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test1.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test10.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test2.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test3.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test4.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test5.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test6.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test7.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test8.txt

-rw-r--r-- 1 root root    0 2018-09-29 10:57 test9.txt

[root@oldbody tmp]#

2.7 cp  

不加參數的時候 只能拷貝文件

-a 相當於-dpr   

-d 若源文件為鏈接文件(link file),則複製鏈接文件屬性而非檔案本身  

-p 連同檔案的屬性一起複制過去,而非使用預設屬性    

-r 遞歸 用於複製目錄

假如tmp目錄下有一個test.txt文件   mnt目錄下有一個test.txt文件,現在將tmp目錄下的test.txt文件複製到mnt目錄下  預設情況下 會進行相應的提示

輸入命令 \cp /mnt/test.txt /tmp/   不提示 別名的原因 \就是屏蔽別名

或者 /bin/cp /mnt/test.txt /tmp/    補全cp命令的路徑也是不提示的  

因為cp vm rm屬於危險的操作命令,有可能會對文件造成損壞,我們可以查看下系統現有的別名alias  可以輸入命令unalias cp 直接刪除cp的別名,也可以達到其效果 (不推薦使用)

cp命令   複製文件或目錄

[root@oldbody test]# ll

total 12

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

[root@oldbody test]# cp file3.txt file4.txt

[root@oldbody test]# ll

total 12

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

-rw-r--r-- 1 root root    0 Jun 28 12:17 file4.txt

[root@oldbody test]#

cp    -a      -a等於-pdr      作用,複製過去的時候可以保證屬性不變化  複製文件或目錄保持文件或目錄所有屬性均不變化

[root@oldbody test]# ll

total 12

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

-rw-r--r-- 1 root root    0 Jun 28 12:17 file4.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file5.txt

[root@oldbody test]#

-i   覆蓋前會提示

[root@oldbody test]# alias cp

alias cp='cp -i'

[root@oldbody test]#

 

[root@oldbody test]# cp -a file3.txt file5.txt

cp: overwrite `file5.txt'? ^C

[root@oldbody test]# \cp -a file3.txt file5.txt

[root@oldbody test]#

 

 

[root@oldbody test]# cp -a dir3 dir4

[root@oldbody test]# ll

total 16

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir4

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

-rw-r--r-- 1 root root    0 Jun 28 12:17 file4.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file5.txt

[root@oldbody test]#

 

A{B,C}  等價於 AB  AC

[root@oldbody test]# cp -a dir{3,5}

[root@oldbody test]# ll

total 20

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

drwxr-xr-x 3 root root 4096 Jun 28 12:30 dir4

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir5

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

-rw-r--r-- 1 root root    0 Jun 28 12:17 file4.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file5.txt

[root@oldbody test]#

cp /etc/ssh/sshd_config {,.ori}  相當於

cp /etc/ssh/sshd_config cp /etc/ssh/sshd_config.ori   一樣

[root@oldbody test]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.ori}  備份網卡信息

2.8 mv      

move  移動文件或目錄  移動就是剪切的意思  例子:mv /Tech /liangli    把Tech移動到liangli目錄下  也有改名的功能

mv    移動文件和重命名   move(rename)files

[root@oldbody test]# mv file{4,6}.txt

[root@oldbody test]# ll

total 20

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3

drwxr-xr-x 3 root root 4096 Jun 28 12:30 dir4

drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir5

-rw-r--r-- 1 root root    0 Jun 28 11:47 file1.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file2.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file3.txt

-rw-r--r-- 1 root root    0 Jun 28 11:47 file5.txt

-rw-r--r-- 1 root root    0 Jun 28 12:17 file6.txt

 

No such file or directory  沒有那個文件或目錄

 

mv  系統別名  -i參數 在覆蓋前需要提示

[root@oldbody test]# alias

alias cp='cp -i'

alias l.='ls -d .* --color=auto'

alias ll='ls -l --color=auto'

alias ls='ls --color=auto'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@oldbody test]#

多個文件袋移動方式(必須得保證/dir1目錄存在)

[root@oldbody test]# mv file1.txt  file2.txt  file3.txt  file5.txt  file6.txt dir1/t  file6.txt dir1/

[root@oldbody test]# ls

dir1  dir2  dir3  dir4  dir5

[root@oldbody test]# cd dir1/

[root@oldbody dir1]# ls

file1.txt  file2.txt  file3.txt  file5.txt  file6.txt

 

[root@oldbody test]# tree

.

|-- dir1

|   |-- file1.txt

|   |-- file2.txt

|   |-- file3.txt

|   |-- file5.txt

|   `-- file6.txt

|-- dir2

|-- dir3

|-- dir4

|   `-- dir3

`-- dir5

 

6 directories, 5 files

[root@oldbody test]#

使用file dir1  可以查看dir1是文件還是目錄

[root@oldbody test]# file dir1

dir1: directory

 

移動目錄

把前n-1個目錄移動到最後一個目錄(必須得保證dir5目錄存在)

[root@oldbody test]# mv dir1  dir2  dir3  dir4  dir5

[root@oldbody test]# tree

.

`-- dir5

    |-- dir1

    |   |-- file1.txt

    |   |-- file2.txt

    |   |-- file3.txt

    |   |-- file5.txt

    |   `-- file6.txt

    |-- dir2

    |-- dir3

    `-- dir4

        `-- dir3

 

6 directories, 5 files

[root@oldbody test]#

2.9 rm

remove(移除)刪除目錄和文件 -f(force)強制,-r(遞歸,用於刪除目錄) 強調刪除命令要慎用,非常危險,刪除前一定要先備份一份  因為刪除後不可恢復

正確刪除文件的姿勢     

1,使用mv命令移動到/tmp(回收站)替代刪除動作

2、通過cd命令到達目的目錄    

然後通過find -type f(d) -name ‘’ | xargs  rm -f

或者    find -type f(d)-name “*.txt” -mtime +7 -exec rm {} \;

別名在你敲這條命令的時候生效的額,通過一些管道符傳送給它的是不會生效的

2.10 rmdir

用於刪除空目錄 當目錄不為空時 命令不起作用

-p參數 遞歸刪除空目錄

[root@oldbody ~]#

[root@oldbody ~]# mkdir -p oldboy/oldboy1/oldboy2

[root@oldbody ~]# rmdir -p oldboy/oldboy1/oldboy2/

[root@oldbody ~]#

2.11 ln

link得縮寫,可以創建硬鏈接與軟連接

語法 ln 選項 源文件 目標文件

ln這個命令就是創建鏈接文件的,在預設不帶參數的情況下,執行ln命令創建的鏈接是硬鏈接   如果使用ln -s創建鏈接則為軟鏈接

硬鏈接    ln 源文件 目標文件  (硬鏈接生成時普通文件-字元)

軟鏈接    ln -s 源文件  目標文件  (目標文件不能事先存在)(生成的符號鏈接l類型)

硬鏈接:

是通過inode來進行鏈接的   在linux文件系統中,多個文件名指向同一個inode是正常且允許的   硬鏈接文件就相當於文件的另外一個入口    硬鏈接的作用之一是允許一個文件擁有多個有效路徑名(多個入口),這樣用戶就可以建立硬鏈接到重要的文件 ,以防止 誤刪  源數據 註意:目錄不能作為硬鏈接

[root@oldbody ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@oldbody ~]# ln /etc/hosts hard_link

[root@oldbody ~]# ll -ih /etc/hosts hard_link

654109 -rw-r--r--. 3 root root 158 1月  12 2010 /etc/hosts

654109 -rw-r--r--. 3 root root 158 1月  12 2010 hard_link

[root@oldbody ~]# rm -f /etc/hosts

[root@oldbody ~]# cat /etc/hosts

cat: /etc/hosts: 沒有那個文件或目錄

[root@oldbody ~]# cat hard_link

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@oldbody ~]# ln hard_link /etc/hosts

[root@oldbody ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@oldbody ~]# ll -ih /etc/hosts hard_link

654109 -rw-r--r--. 3 root root 158 1月  12 2010 /etc/hosts

654109 -rw-r--r--. 3 root root 158 1月  12 2010 hard_link

[root@oldbody ~]#

硬鏈接知識小結:

1、具有相同inode節點號的多個文件是互為硬鏈接文件

2、刪除硬鏈接文件或者刪除源文件任意之一,文件實體並未被刪除

3、只有刪除了源文件及所有對應的硬鏈接文件,文件實體才會被刪除

4、當所有的硬鏈接文件及源文件被刪除後,再存放新的數據會占用這個文件的空間,或者磁碟fsck檢查的時候,刪除的數據也會被系統回收(養成刪除及多套環境測試的好習慣)

5、硬鏈接文件就是文件的另一個入口(相當於超市的前門,後門一樣)

6、可以通過給文件設置硬鏈接文件,來防止重要文件被誤刪

7、通過執行命令 ln 源文件  硬鏈接文件  即可完成創建硬鏈接

8、硬鏈接文件是普通文件,因此可以用rm命令刪除

9、對於靜態文件(沒有進程正在調用的文件)來講,當對應硬鏈接數為0 (i_link)文件就被刪除    i_link的查看方法(ls -l結果的第三列就是)

 

軟連接  或者符號鏈接  相當於win的快捷方式 註意:軟連接目錄可以創建

ln -s 源文件 目標文件

軟鏈接知識小結:

1、軟鏈接類似win的快捷方式(可以通過readlink查看其指向)

2、軟鏈接類似一個文本文件,裡面存放的是源文件的路徑,指向源文件實體

3、刪除源文件,軟鏈接文件依然存在,但是無法訪問指向的源文件路徑的內容了

4、失效的時候一般是白字紅底閃爍提示 

5、執行命令 ln -s 源文件 軟鏈接文件   即可完成創建軟鏈接(目標不能存在)

6、軟鏈接和源文件是不同類型的文件,也是不同的文件,inode號也不相同

7、軟鏈接文件類型為(l),可以用rm命令

[root@oldbody ~]# ln -s /etc/hosts soft_link

[root@oldbody ~]# ll -ih /etc/hosts hard_link soft_link

654109 -rw-r--r--. 3 root root 158 1月  12 2010 /etc/hosts

654109 -rw-r--r--. 3 root root 158 1月  12 2010 hard_link

915785 lrwxrwxrwx  1 root root  10 9月  29 13:34 soft_link -> /etc/hosts

全局結論:

刪除源文件 對硬鏈接沒有影響   但是會導致軟鏈接文件失效,白字紅底閃爍

刪除源文件和硬鏈接文件   整個文件會真正的被刪除

很多硬體設備中的快照功能  就是利用了硬鏈接的原理

[root@oldbody liangli2018]# ll -ihd oldboy  oldboy/. oldboy/test/..

915805 drwxr-xr-x 3 root root 4.0K 9月  29 13:44 oldboy

915805 drwxr-xr-x 3 root root 4.0K 9月  29 13:44 oldboy/.

915805 drwxr-xr-x 3 root root 4.0K 9月  29 13:44 oldboy/test/..

目錄的鏈接小結:

1、對於目錄  不可以創建硬鏈接  但可以創建軟鏈接(原因是目錄可以跨文件系統的)

2、對於目錄的軟鏈接是生產場景運維中常用的技巧

3、目錄的硬鏈接不能跨越文件系統(從硬鏈接原理可以理解 硬鏈接需要有相同的inode值)

4、每個目錄下麵都有一個硬鏈接 “.” 號和對應上級目錄的硬鏈接“..”

5、再父目錄里創建一個子目錄,父目錄的鏈接數增加1(每個子目錄里都有..來指向父目錄)但是再父目錄里創建文件,父目錄的鏈接數不會增加

2.12 readlink

查看符號鏈接文件的內容

[root@oldbody ~]# readlink soft_link

/etc/hosts

[root@oldbody ~]#

2.13 find

查找目錄下的文件

語法格式 find  路徑  操作語句

pathname 命令所查找的目錄路徑 如.表示當前目錄,用/表示根目錄

-maxdepth levels 查找的最大目錄級數,levels為自然數

-type 文件類型(f(file),d(directory),c(character字母),b(block塊)。s(socket),l(link),

-name “文件名” 支持通配符(* ? []等)

-mtime 後面接時間 按修改時間查找 +7 7天以前 、7 第七天、-7最近7天

-atime 和-ctime 按照訪問時間和文件狀態改變時間來查找文件

-exec  對匹配的文件執行該參數所給出的shell命令

! 取反   -a 取交集 -o 取並集

例子:find /Tech -type f   意思就是查找Tech下類型為文件的東西

find /Tech -type f -name 'oldboy.txt'   查找Tech下文件名為oldboy.txt的文件

find /Tech -type f -name ‘oldboy.txt’ -exec  rm {} \; 意思是對前面查找的文件進行刪除的操作 {}表示find找到的內容 

find /Tech -type f -name '*.txt'      *號表示代表所有的文件   通配符

find /Tech -type f -name '*.txt' | xargs rm -f   把查找的內容通過管道   這個就相當於同時刪除*.txt所有文件  等同於 rm -f /Tech/oldboy.txt /Tech/liangli.txt文件一樣    其中xargs表示把*.txt做成一個文件,可以一起進行刪除

find /log -type f -name '*.log' -mtime +15 | xargs rm -f    查找/log目錄,刪15天以前修改過的文件

find /log -type d -name '*oldboy' -mtime +30 | xargs rm -rf 查找/log目錄,刪修改日期在30天以前且以oldboy名稱結尾的目錄

[root@oldbody oldboy]# ls

oldboy.txt  passwd  test.txt

[root@oldbody oldboy]# find /tmp/oldboy/ -type f ! -name "passwd" | xargs rm -f

[root@oldbody oldboy]# ls

passwd

 

find的-delete參數

[root@oldbody key]# find . -type f -name "*.txt"

./file3.txt

./file1.txt

./file2.txt

./file4.txt

./file5.txt

[root@oldbody key]# find . -type f -name "*.txt" -delete

 

[root@oldbody data]# find /data/ -type f -name "*.txt" | xargs  sed -i 's#oldgirll#oldboy#g'

oldboyl

oldboyl

oldboyl

oldboyl

[root@oldbody data]#

方法二:

find  /data  -type  f  -name “*.txt” -exec  sed -i  's#oldgirll#oldboy#g' {} \;

方法三:

sed -i  's#oldgirll#oldboy#g'  `find  /data  -name “*.txt”`

最高效的處理方法 先執行反引號裡面的東西

 

[root@oldbody key]# tar zcvf oldboy.gz.tar `find . -type d -name "oldboy"`

./oldboy/

[root@oldbody key]# LL

-bash: LL: command not found

[root@oldbody key]# ll

總用量 44

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir1.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir2.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir3.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir4.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir5.txt

-rw-r--r-- 1 root root   45 9月  29 18:35 file1.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file2.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file3.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file4.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file5.txt

drwxr-xr-x 2 root root 4096 9月  29 18:34 key

-rw-r--r-- 1 root root  109 9月  29 18:39 key.gz

drwxr-xr-x 2 root root 4096 9月  29 18:39 oldboy

-rw-r--r-- 1 root root  115 9月  29 18:49 oldboy.gz.tar

drwxr-xr-x 2 root root 4096 9月  29 18:40 oldgirl

[root@oldbody key]#

 

[root@oldbody key]# find . -type d -name "oldgirl" | xargs tar zcvf oldgirl.gz.tar

./oldgirl/

[root@oldbody key]# ll

總用量 48

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir1.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir2.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir3.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir4.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir5.txt

-rw-r--r-- 1 root root   45 9月  29 18:35 file1.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file2.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file3.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file4.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file5.txt

drwxr-xr-x 2 root root 4096 9月  29 18:34 key

-rw-r--r-- 1 root root  109 9月  29 18:39 key.gz

drwxr-xr-x 2 root root 4096 9月  29 18:39 oldboy

-rw-r--r-- 1 root root  115 9月  29 18:49 oldboy.gz.tar

drwxr-xr-x 2 root root 4096 9月  29 18:40 oldgirl

-rw-r--r-- 1 root root  115 9月  29 18:50 oldgirl.gz.tar

[root@oldbody key]#

 

[root@oldbody tmp]# find /data/ -type f -name "*.log" -size +1M -mtime +30 -exec mv {} /tmp \;

[root@oldbody tmp]#

[root@oldbody test]# find -type f -mtime -7

./dir5/dir1/file3.txt

./dir5/dir1/file6.txt

./dir5/dir1/file1.txt

./dir5/dir1/file2.txt

./dir5/dir1/file5.txt

./.ori

!還有取反的意思   把除了file1.txt文件以外的文件查找出來

[root@oldbody test]# find -type f -name 'file1.txt'

./dir5/dir1/file1.txt

[root@oldbody test]# find -type f ! -name 'file1.txt'

./dir5/dir1/file3.txt

./dir5/dir1/file6.txt

./dir5/dir1/file2.txt

./dir5/dir1/file5.txt

./.ori

[root@oldbody test]#

 

find /root -type f -exec ls -l {} \;

上面紅色的部分可以是其他任何命令,例如:ls,mv,cp等命令

{}  代表前面找出的file1.txt文件(內容)   \;作為轉義字元  後面的;作為結束標誌

[root@oldbody test]# find . -type f -name 'file1.txt' -exec mv {} /tmp/ \;      是正確的

[root@oldbody key]# find . -type f -name "*.txt" -exec ls -l {} \;

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file3.txt

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file1.txt

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file2.txt

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file4.txt

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file5.txt

[root@oldbody key]#

find還有一個參數-ok 其實和-exec用法一樣,唯一區別就是使用-ok的話 在刪除之前會給出提示 需要管理員確認後方可刪除,計較安全

[root@oldbody key]# find . -type f -name "*.txt" -ok ls -l {} \;   

< ls ... ./file3.txt > ? y

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file3.txt

< ls ... ./file1.txt > ? y

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file1.txt

< ls ... ./file2.txt > ? y

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file2.txt

< ls ... ./file4.txt > ? y

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file4.txt

< ls ... ./file5.txt > ? y

-rw-r--r-- 1 root root 0 9月  29 17:38 ./file5.txt

[root@oldbody key]#

[root@oldbody test]# ls /tmp/

123.log  file1.txt  oldboy

[root@oldbody test]#

[root@oldbody test]# find -type f -name 'file2.txt' | xargs -i mv {} /tmp/

[root@oldbody test]# ls /tmp

123.log  file1.txt  file2.txt  oldboy

-i參數就是把前面查找的內容丟到{}中

 

[root@oldbody test]# mv `find -type f -name 'file3.txt'` /tmp/

[root@oldbody test]# ls /tmp

123.log  file1.txt  file2.txt  file3.txt  oldboy

[root@oldbody test]#

mv中-t參數將源和目標反轉過來

find . -type f -name “file3.txt” | xargs mv -t dir2/

 

no such file or directory  沒有這樣的文件或目錄

按照目錄或者文件的許可權來進行查找   -perm 644  參數

[root@oldbody key]# ll

總用量 20

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir1.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir2.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir3.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir4.txt

drwxr-xr-x 2 root root 4096 9月  29 17:38 dir5.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file1.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file2.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file3.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file4.txt

-rw-r--r-- 1 root root    0 9月  29 17:38 file5.txt

[root@oldbody key]#

[root@oldbody key]#

[root@oldbody key]# find . -type f -perm 644

./file3.txt

./file1.txt

./file2.txt

./file4.txt

./file5.txt

[root@oldbody key]#

參數-size 按大小查找文件

[root@oldbody key]# find . -type f -size -1M    小於1M

./file3.txt

./file1.txt

./file2.txt

./file4.txt

./file5.txt

[root@oldbody key]#

 

find中xargs和-exec的區別

-exec 該參數是將查找的結果文件名逐個傳遞給後面的命令執行,如果文件比較多則執行效率會比較低 文件名有空格等特殊字元照常處理

xargs 該命令是將查找的結果一次性傳遞給後面的命令執行,命令執行效率高,可以使用-n參數控制一次傳遞給文件的個數 處理特殊的文件名(如:文件名有空格)需要採用特殊的方式

[root@oldbody key]# find . -type f -name "*.txt"

./file3.txt

./file1.txt

./file2.txt

./file4.txt

./file5.txt

[root@oldbody key]# find . -type f -name "*.txt" -exec echo mingtiannihao {} \;

mingtiannihao ./file3.txt

mingtiannihao ./file1.txt

mingtiannihao ./file2.txt

mingtiannihao ./file4.txt

mingtiannihao ./file5.txt

[root@oldbody key]# find . -type f -name "*.txt"  | xargs echo mingtiannihao

mingtiannihao ./file3.txt ./file1.txt ./file2.txt ./file4.txt ./file5.txt

[root@oldbody key]# find . -type f -name "*.txt"  | xargs -n 3 echo mingtiannihao  

mingtiannihao ./file3.txt ./file1.txt ./file2.txt

mingtiannihao ./file4.txt ./file5.txt

[root@oldbody key]#

[root@oldbody key]# touch "hello word.txt"

[root@oldbody key]# touch mingtian\ nihao.txt

[root@oldbody key]# ll

總用量 0

-rw-r--r-- 1 root root 0 9月  29 14:23 hello word.txt

-rw-r--r-- 1 root root 0 9月  29 14:25 mingtian nihao.txt

[root@oldbody key]#

[root@oldbody key]# find . -type f -name "*.txt" |xargs rm

rm: 無法刪除"./hello": 沒有那個文件或目錄

rm: 無法刪除"word.txt": 沒有那個文件或目錄

rm: 無法刪除"./mingtian": 沒有那個文件或目錄

rm: 無法刪除"nihao.txt": 沒有那個文件或目錄

[root@oldbody key]#

[root@oldbody key]# find . -type f -name "*.txt" -print0|xargs -0 rm

[root@oldbody key]# ll

總用量 0

[root@oldbody key]#

2.14 xargs

將標準輸入轉換成命令行參數

三行文本變成一行文本了

[root@oldbody test]# cat test.txt

1 2 3 4 5 6

7 8 9

10 11

[root@oldbody test]# xargs < test.txt

1 2 3 4 5 6 7 8 9 10 11

[root@oldbody test]#

-n  參數  -n 4 以4個字元為一組

[root@oldbody test]# xargs -n 4 < test.txt

1 2 3 4

5 6 7 8

9 10 11

[root@oldbody test]#

自定義分隔符-d參數

[root@oldbody ~]# echo splitXsplitXsplitXsplitX |xargs -d X

split split split split

[root@oldbody ~]# echo splitXsplitXsplitXsplitX |xargs -d X -n 2

split split

split split

-i 參數 把前面找到的文件命令和 {} 進行關聯  用參數i來實現

[root@oldbody key]# find . -type f -name "file*"

./file3.txt

./file1.txt

./file2.txt

[root@oldbody key]# find . -type f -name "file*" | xargs -i mv {} dir1/

[root@oldbody key]# ll

總用量 4

drwxr-xr-x 2 root root 4096 9月  29 14:14 dir1

[root@oldbody key]# tree

.

└── dir1

    ├── file1.txt

    ├── file2.txt

    └── file3.txt

 

1 directory, 3 files

[root@oldbody key]#

結合find使用xargs的特殊案例  xargs -0(數字0)

[root@oldbody key]# touch "hello word.txt"

[root@oldbody key]# touch mingtian\ nihao.txt

[root@oldbody key]# ll

總用量 0

-rw-r--r-- 1 root root 0 9月  29 14:23 hello word.txt

-rw-r--r-- 1 root root 0 9月  29 14:25 mingtian nihao.txt

[root@oldbody key]#

[root@oldbody key]# find . -type f -name "*.txt" |xargs rm

rm: 無法刪除"./hello": 沒有那個文件或目錄

rm: 無法刪除"word.txt": 沒有那個文件或目錄

rm: 無法刪除"./mingtian": 沒有那個文件或目錄

rm: 無法刪除"nihao.txt": 沒有那個文件或目錄

[root@oldbody key]#

[root@oldbody key]# find . -type f -name "*.txt" -print0|xargs -0 rm

[root@oldbody key]# ll

總用量 0

[root@oldbody key]#

2.15 rename

rename  from to file  重新命名文件

rename

from   代表需要替換或要處理的字元  一般是文件的一部分 或者是文件的擴展名

to      把前面form代表的內容替換為to代表的內容即重命名處理後的結果

file    就是我們需要處理的文件

[root@oldboy test]# touch shu_102999_{1..5}_finished.jpg

[root@oldboy test]#

[root@oldboy test]#

[root@oldboy test]# ll

總用量 0

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_1_finished.jpg

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_2_finished.jpg

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_3_finished.jpg

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_4_finished.jpg

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_5_finished.jpg

[root@oldboy test]#  rename "finished"  ""  *     把finished替換成空

[root@oldboy test]# ll

總用量 0

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_1_.jpg

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_2_.jpg

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_3_.jpg

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_4_.jpg

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_5_.jpg

[root@oldboy test]# rename  "jpg"  "JPG"  *

[root@oldboy test]# ll

總用量 0

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_1_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_2_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_3_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_4_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_102999_5_.JPG

 11:38 shu_102999_5_.JPG

[root@oldboy test]# rename  "102999"  "1314"  /root/test/*

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_1314_1_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_1314_2_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_1314_3_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_1314_4_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 shu_1314_5_.JPG

[root@oldboy test]#

2.16 basename

basename命令用於顯示去除路徑和文件尾碼部分的文件名或目錄名

[root@oldboy test]# ll

總用量 0

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_1_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_2_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_3_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_4_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_5_.JPG

[root@oldboy test]# basename /root/test/_1314_1_.JPG

_1314_1_.JPG

[root@oldboy test]# basename /root/test/_1314_1_.JPG   .JPG

_1314_1_

[root@oldboy test]# basename /root/test/_1314_1_.JPG   _.JPG

_1314_1

[root@oldboy test]#

2.17 dirname

顯示文件或目錄名

[root@oldboy test]# ll

總用量 0

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_1_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_2_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_3_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_4_.JPG

-rw-r--r-- 1 root root 0 9月  19 11:38 _1314_5_.JPG

[root@oldboy test]# dirname /root/test/_1314_1_.JPG

/root/test

[root@oldboy test]#

2.18 chattr

改變文件的擴展屬性

chattr命令 只能是root用戶用  其他用戶使用不了

-a  只能向文件追加數據 你不能刪除它  不能清空它

    用途:比如.bash_history文件中寫入歷史紀錄,可以採用-i追加模式,只增不減

-i   設定文件不能被刪除,改名,寫入或新增內容

    用途:希望鎖定的文件不能被刪除或修改,比如/etc/passwd

-R  遞歸更改目錄屬性

+ 增加參數 – 移除參數 = 更新為指定參數

lsattr命令     所有用戶都能夠使用  顯示文件的擴展屬性

 [root@oldboy ~]# lsattr person.txt

-------------e- person.txt

[root@oldboy ~]#

[root@oldboy ~]#

[root@oldboy ~]# chattr +a person.txt

[root@oldboy ~]# lsattr person.txt   

-----a-------e- person.txt

[root@oldboy ~]#

 

[root@oldboy ~]# rm -f person.txt

rm: 無法刪除"person.txt": 不允許的操作

[root@oldboy ~]# > person.txt

-bash: person.txt: 不允許的操作

[root@oldboy ~]# echo 111 >> person.txt

[root@oldboy ~]# cat person.txt

101,oldboy,CEO

102,zhangyao,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

011111111

0111111100

111

[root@oldboy ~]#

-i  就是加鎖

[root@oldboy ~]# chattr +i .bash_history

[root@oldboy ~]# lsattr .bash_history

----i--------e- .bash_history

[root@oldboy ~]#

[root@oldboy ~]# >.bash_history

-bash: .bash_history: 許可權不夠

[root@oldboy ~]# echo 1111>>.bash_history

-bash: .bash_history: 許可權不夠

[root@oldboy ~]# rm -f .bash_history

rm: 無法刪除".bash_history": 不允許的操作

[root@oldboy ~]#

 

[root@oldbody key]# tree

.

├── 123

│   └── mintain

├── 456

└── 789

 

4 directories, 0 files

[root@oldbody key]# chattr +a -R  123

[root@oldbody key]# lsattr

-------------e- ./456

-------------e- ./789

-----a-------e- ./123

[root@oldbody key]# cd 123

[root@oldbody 123]# ll

總用量 4

drwxr-xr-x 2 root root 4096 9月  29 14:57 mintain

[root@oldbody 123]# lsattr

-----a-------e- ./mintain

2.19 file

file  後面接文件或目錄 查看文件類型

[root@oldboy ~]# file xiaomi.txt

xiaomi.txt: ASCII text

[root@oldbody ~]# file *

1.txt:              ASCII text

anaconda-ks.cfg:    ASCII English text

hard_link:          ASCII text

install.log:        UTF-8 Unicode text

install.log.syslog: ASCII text

key:                directory

key1:               symbolic link to `key'

liangli:            directory

liangli2018:        directory

oldboy.txt:         ASCII text

soft_link:          symbolic link to `/etc/hosts'

2.20 md5sum 

-c  從指定文件中讀取MD5校驗值,併進行校驗

計算和校驗文件的md5值 (md5值是唯一的 兩個文件如果md5一樣的話 證明是同一個文件)源文件和硬鏈接文件和軟鏈接文件md5sum是一樣的

[root@oldboy ~]# ln xiaomi.txt xiaomi2.txt

[root@oldboy ~]# md5sum xiaomi.txt 

d41d8cd98f00b204e9800998ecf8427e  xiaomi.txt

[root@oldboy ~]# md5sum xiaomi2.txt

d41d8cd98f00b204e9800998ecf8427e  xiaomi2.txt

[root@oldboy ~]# md5sum xiaomi3.txt 

d41d8cd98f00b204e9800998ecf8427e  xiaomi3.txt

[root@oldboy ~]#

[root@oldboy ~]# md5sum xiaomi.txt >md5.log

[root@oldboy ~]# cat md5.log

d41d8cd98f00b204e9800998ecf8427e  xiaomi.txt

[root@oldboy ~]# md5sum -c md5.log              顯示校驗結果是否成功

xiaomi.txt: 確定

[root@oldboy ~]#

模擬網路波動造成現象

[root@oldboy ~]# echo "1111">>xiaomi.txt

[root@oldboy ~]# md5sum xiaomi.txt

1f18348f32c9a4694f16426798937ae2  xiaomi.txt

[root@oldboy ~]# md5sum -c md5.log      

xiaomi.txt: 失敗

md5sum: 警告:1/1 生成的校驗和不匹配

[root@oldboy ~]#

2.21 chown

改變文件或目錄的用戶和用戶組

chown命令  只能是root用戶使用  改變文件的屬主和屬組(就是用戶和用戶組)

chown  用戶  文件或目錄

chown  :用戶組   文件或目錄

chown   用戶:用戶組   文件或目錄   其中:可以用.號代替

-R  就是遞歸的意思 

[root@oldboy ~]# chown oldboy test.txt

[root@oldboy ~]# ll test.txt         

-rw-r--r-- 2 oldboy root 419 9月  19 10:01 test.txt

[root@oldboy ~]#

這個前提條件是oldboy用戶必須在/etc/passed 和/etc/group中 存在

[root@oldboy ~]# chown :user1 test.txt

[root@oldboy ~]# ll test.txt

-rw-r--r-- 2 oldboy user1 419 9月  19 10:01 test.txt

[root@oldboy ~]#

[root@oldboy ~]# chown root.root test.txt

[root@oldboy ~]# ll test.txt

-rw-r--r-- 2 root root 419 9月  19 10:01 test.txt

[root@oldboy ~]#

-R  就是遞歸的意思 

[root@oldboy test]# pwd

/root/test

[root@oldboy test]# chown -R oldboy.oldboy /root/test

[root@oldboy test]# ll

總用量 0

-rw-r--r-- 1 oldboy oldboy 0 9月  19 11:38 _1314_1_.JPG

-rw-r--r-- 1 oldboy oldboy 0 9月  19 11:38 _1314_2_.JPG

-rw-r--r-- 1 oldboy oldboy 0 9月  19 11:38 _1314_3_.JPG

-rw-r--r-- 1 oldboy oldboy 0 9月  19 11:38 _1314_4_.JPG

-rw-r--r-- 1 oldboy oldboy 0 9月  19 11:38 _1314_5_.JPG

[root@oldboy test]#

2.22 chmod

改變文件或目錄的許可權

chmod命令   可以是root用戶用  也可以是這個文件的屬主使用  改變文件或目錄許可權

-R 遞歸參數

例如: rwxr-xr-x  9個字元  三個許可權是一組

前三位叫屬主許可權位 /用戶許可權位    假如我root用戶對oldboy具有讀寫執行許可權位

r-xr  是用戶組對應的許可權   當有人加入到用戶組的話,就對應這個許可權位

r-w  其他用戶許可權位     

 

+        加入

-             減去

=        設置

 

r       4    讀

w      2    寫

x       1    執行

-       0    無

 

用戶類型

u       user    用戶

g       group   用戶組

o       Other    其他

a        ALL    總和

[root@oldboy ~]# ll test.txt

-rw-r--r-- 2 root root 419 9月  19 10:01 test.txt

[root@oldboy ~]# chmod u=x,g=w,o=rwx test.txt

[root@oldboy ~]# ll test.txt                 

---x-w-rwx 2 root root 419 9月  19 10:01 test.txt

[root@oldboy ~]# chmod o=--- test.txt            

[root@oldboy ~]# ll test.txt         

---x-w---- 2 root root 419 9月  19 10:01 test.txt

[root@oldboy ~]# chmod o-rwx test.txt     

[root@oldboy ~]# ll test.txt         

---x-w---- 2 root root 419 9月  19 10:01 test.txt

[root@oldboy ~]#

[root@oldboy ~]# chmod 421 test.txt

[root@oldboy ~]# ll test.txt

-r---w---x 2 root root 419 9月  19 10:01 test.txt

[root@oldboy ~]#

[root@oldbody key]# tree

.

└── 123

    └── mintain

 

2 directories, 0 files

[root@oldbody key]# chmod 744 -R 123/

[root@oldbody key]# ll

總用量 4

drwxr--r-- 3 root root 4096 9月  29 14:57 123

[root@oldbody key]# ll 123

總用量 4

drwxr--r-- 2 root root 4096 9月  29 14:57 mintain

[root@oldbody key]#

2.23 chgrp  

更改文件的用戶組   基本被淘汰

[root@oldboy ~]# ll test.txt

-r---w---x 2 root root 419 9月  19 10:01 test.txt

[root@oldboy ~]# chgrp user1 test.txt

[root@oldboy ~]# ll test.txt

-r---w---x 2 root user1 419 9月  19 10:01 test.txt

[root@oldboy ~]#

2.24 umask

顯示或設置許可權掩碼

umask (預設許可權分配的命令)為什麼預設許可權目錄是755,文件許可權是644  而不是其他的值呢

不管是操作系統還是網站,安全許可權的臨界點,目錄755文件644 是相對安全的許可權,並且用戶為root 以及用戶組root

以上許可權兼顧了安全和使用,生產工作中一定要儘量要我們文件和目錄達到以上預設的許可權,包括用戶和屬組都是root,Linux系統預設許可權的方針,允許瀏覽,查看,但是禁止創建和修改文件及內容以及執行

在linux下文件的預設許可權是由umask值決定的,umask是通過八進位的數值來決定用戶創建文件或目錄的預設許可權的,umask對應數值表示的是禁止的許可權

超級用戶

[root@oldboy ~]# umask

0022

[root@oldboy ~]#

普通用戶

[test@oldboy ~]$ umask

0002

[test@oldboy ~]$

umask越小,許可權越大,根據umask值計算文件許可權3中方法

文件的許可權從666開始算起,umask都為偶數,直接相減,如果有奇數對應位+1

比如:

6  6  6

0  2   2  -

---------------

6  4   4 

[root@oldboy ~]# ll xiaomi.txt

-rw-r--r-- 2 root root 5 9月  19 12:28 xiaomi.txt

[root@oldboy ~]#

[root@oldboy ~]#

[root@oldboy ~]# umask

0022

[root@oldboy ~]#

[root@oldboy ~]# umask 044

[root@oldboy ~]# touch f044

[root@oldboy ~]# ll f044

-rw--w--w- 1 root root 0 9月  20 11:54 f044

[root@oldboy ~]# umask 064

[root@oldboy ~]# touch liangli123.txt

[root@oldboy ~]# ll liangli123.txt

-rw-----w- 1 root root 0 9月  20 11:56 liangli123.txt

[root@oldboy ~]#

[root@oldboy ~]# umask 043

[root@oldboy ~]# touch f043

[root@oldboy ~]# ll f043

-rw--w-r-- 1 root root 0 9月  20 11:58 f043

[root@oldboy ~]# umask 055

[root@oldboy ~]# touch f055

[root@oldboy ~]# ll f055

-rw--w--w- 1 root root 0 9月  20 11:59 f055

[root@oldboy ~]#

對於目錄的許可權從777開始(不分奇偶)

[root@oldboy ~]# umask 065

[root@oldboy ~]# mkdir d065

[root@oldboy ~]# ll d065

總用量 0

[root@oldboy ~]# ll -d d065

drwx--x-w- 2 root root 4096 9月  20 12:02 d065

上面的修改都是臨時生效的,想要永久生效就需要修改配置文件/etc/profile或者/etc/bashrc

[root@oldbody ~]# sed -n '61,69p' /etc/profile

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

    umask 002

else

    umask 022

fi

 

for i in /etc/profile.d/*.sh ; do

    if [ -r "$i" ]; then

        if [ "${-#*i}" != "$-" ]; then

[root@oldbody ~]# sed -n '57,68p' /etc/bashrc 

                fi

        esac

    }

 

    # By default, we want umask to get set. This sets it for non-login shell.

    # Current threshold for system reserved uid/gids is 200

    # You could check uidgid reservation validity in

    # /usr/share/doc/setup-*/uidgid file

    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

       umask 002

    else

       umask 022

[root@oldbody ~]#

幾乎沒有什麼需求要修改必須要修改umask的,預設的umask是系統安全的臨界點,是最合適的

若要修改的話,將umask 033放在配置文件的最後一行即可


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • <Button Content="Button" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"> ...
  • .Net平臺下相容.NET Standard 2.0,一個實現以Lambda表達式轉轉換標準SQL語句,使用強類型操作數據的輕量級ORM工具,在減少魔法字串同時,通過靈活的Lambda表達式組合,實現業務數據查詢的多樣性。 ...
  • DotNetty網路通信框架學習 目錄: 一.DotNetty網路通信框架學習之初視Netty 二.DotNetty網路通信框架學習之源碼分析 ...
  • 0.背景 在項目開發之中,前期可能主要以保證任務完成為主,對於性能優化主要在於開發完成之後再來進行。可能在測試的時候發現部分介面的代碼執行時間過長,但是又毫無頭緒,這個時候你就需要性能分析工具來協助你排查問題了。 常規性能分析藉助於 Visual Studio 強大的性能測試工具就可以進行分析,但是 ...
  • 昨天晚上寫代碼的時候偶然發現 DateTime 里出現了星期幾,當時一陣凌亂,去網上百度沒有詳細解決辦法,很多人說可以用用 ToString 解決。 也有部分人說可以修改系統時間的顯示,我打算試一下看看行不行。 DateTime 的時間上帶有星期,我去系統時間里發現。 把短日期修改後 再看代碼,星期 ...
  • DotNetty網路通信框架學習之源碼分析 有關DotNetty框架,網上的詳細資料不是很多,有不多的幾個博友做了簡單的介紹,也沒有做深入的探究,我也根據源碼中提供的demo做一下記錄,方便後期查閱。 github地址:https://github.com/Azure/DotNetty 源碼的src ...
  • 1.什麼是docker: 可以理解為一個可移植的集裝箱容器,開發者可以打包他們的應用以及依賴包到一個可移植的容器中。 2.docker安裝及使用(ubuntu16.04) (1)首先通過apt-get命令安裝docker: sudo apt-get install docker.io (2) doc ...
  • 一、書籍介紹 入門書籍:Linux系統命令及Shell腳本實踐指南,該書需要細讀以及實操。 進階書籍:鳥哥的 Linux 私房菜 基礎篇 第四版,該書建議在入門後根據實際需要選擇性翻閱。 二、Linux常用工具 secureCRT:windows下的遠程連接Linux的ssh客戶端,個人傾向於這個工 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...