慢慢學(8.20--8.26)
1、Linux上的檔案管理類命令都有哪些,其常用的使用方法及其相關示例演示。
1.1 cp命令:copy
- 原始檔;目標檔案
- 單源複製:cp [OPTION]... [-T] SOURCE DEST
- 多源複製:cp [OPTION]... SOURCE... DIRECTORY
- cp [OPTION]... -t DIRECTORY SOURCE...
- 單源複製:cp [OPTION]... [-T] SOURCE DEST
- 如果DEST不存在:則事先建立此檔案,並複製原始檔的資料流至DEST中
- 如果DEST存在:
- 如果DEST是非目錄檔案,則覆蓋目標檔案
- 如果DEST是目錄檔案,則先在DEST目錄下建立與原始檔同名的檔案,並複製其資料流至目標檔案
- 如果source是目錄,則不會執行命令操作,需要加後續引數
- 多源複製:cp [OPTION]... SOURCE... DIRECTORY (DEST必須是目錄)
- 如果DEST不存在:錯誤
- 如果DEST存在:
- 如果DEST是非目錄檔案:依然是錯誤
- 如果DEST是目錄檔案:分別複製每個檔案至目標目錄中,並保持原名
[root@cherry ~]# cp /etc/fstab /tmp/hi.txt (因為hi.txt是已經存在的檔案,所以會有覆蓋的提示)
cp: overwrite ‘/tmp/hi.txt’? y
[root@cherry ~]# cp /etc/issue /tmp/test (因為DEST為目錄,並非檔案,所以會在目錄下建立同名檔案並複製)
[root@cherry ~]# ls /tmp/test/
issue
[root@cherry ~]# cat /tmp/test/issue
\S
Kernel \r on an \m
[root@cherry ~]# cp /var/log /tmp/ (源資料log為目錄而並非檔案,故複製到DEST並不執行操作)
cp: omitting directory ‘/var/log’
- 常用選項:
- -i:互動式複製,即覆蓋之前會提醒使用者確認
- -f:強制覆蓋目標檔案
- -r:遞迴複製目錄(複製目錄及目錄中的內容至目標位置)
- -d:複製符號連結檔案本身,而非指向的原始檔
- -a:-dR --preserve=all,archive,用於實現歸檔做備份
- --preserve=
- mode:許可權
- owenship:屬主和屬組
- timetamps:時間戳
- contest:安全標籤
- xattr:擴充套件屬性
- links:符號連結
- all:上述所有屬性
1.2 mv命令:move
- mv [OPTION]... [-T] SOURCE DEST
- mv [OPTION]... SOURCE... DIRECTORY
- mv [OPTION]... -t DIRECTORY SOURCE...
- 常用選項:
- -i:互動式
- -f:force
- 常用選項:
1.3 rm命令:remove移除,刪除檔案,非常危險!
- rm [OPTION]... FILE...
- 常用選項:
- -i:interactive
- -f:force
- -r:recursive
- 刪除目錄:rm -rf /PATH/TO/DIR
rm -rf /* 非常非常非常危險!
- 注意: 所有不用的檔案建議不要直接刪除,而是移動到某個專用目錄:(模擬回收站)
- 常用選項:
2、bash的工作特性之命令執行狀態返回值和命令列展開所涉及的內容及其示例演示。
2.1 命令的執行狀態結果返回值
- 命令執行的狀態結果:
- bash通過狀態返回值來輸出此結果:
- 成功:0
- 失敗:1--255
- 命令執行完成之後,其狀態返回值儲存於bash的特殊變數 $ ?中(最近一條命令的狀態結果)
- bash通過狀態返回值來輸出此結果:
- 命令正常執行時,有的還會有命令返回值
- 根據命令及其功能不同,結果各不相同
2.2 命令列展開
- ~:自動展開為使用者的家目錄,或指定的使用者的家目錄
- { }:可承載一個以,逗號分割的路徑列表,並能夠將其展開為多個路徑
- 例如:/tmp/{a,b} 相當於 /tmp/a /tmp/b
[root@cherry ~]# ls /tmp
ks-script-i2RpM1
[root@cherry ~]# echo $?
0
[root@cherry ~]# ls /tmpppppp
ls: cannot access /tmuuuu: No such file or directory
[root@cherry ~]# echo $?
2
[root@cherry ~]# luuus /tmp
-bash: lsuuus: command not found
[root@cherry ~]# echo $?
127
3、請使用命令列展開功能來完成以下練習:
- (1)、建立/tmp目錄下的:a_c, a_d, b_c, b_d
[root@cherryyao ~]# mkdir -p /tmp/{a,b}_{c,d}
[root@cherryyao ~]# ll /tmp/
total 100
drwxr-xr-x. 2 root root 4096 Aug 22 03:02 a_c
drwxr-xr-x. 2 root root 4096 Aug 22 03:02 a_d
drwxr-xr-x. 2 root root 4096 Aug 22 03:02 b_c
drwxr-xr-x. 2 root root 4096 Aug 22 03:02 b_d
- (2)、建立/tmp/mylinux目錄下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
[root@cherryyao ~]# mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
[root@cherryyao ~]# tree /tmp/mylinux/
/tmp/mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
4、檔案的後設資料資訊有哪些,分別表示什麼含義,如何檢視?如何修改檔案的時間戳資訊。
4.1 檔案後設資料
[root@cherryyao ~]# stat /tmp/fstab
File: ‘/tmp/fstab’
Size: 501 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 3278555 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-08-22 01:13:14.855864616 +0800
Modify: 1985-07-17 12:30:45.000000000 +0800
Change: 2018-08-22 01:43:26.644852003 +0800
後設資料資訊 | 解釋說明 |
---|---|
File | 檔名 |
size | 檔案的大小 |
blocks | 佔用block的數量 |
io block | block總大小為4096 |
regular file | 定義檔案型別-常規檔案 |
Device | 裝置編號的十六進位制和十進位制 |
Inode | 檔案的Inode值 |
Links | 檔案的硬連結數 |
第一個Access | 檔案的許可權 |
Context | 註釋資訊 |
Access | 訪問時間 |
Modify | 修改時間 |
Change | 改動時間 |
4.2 修改時間戳使用touch命令
- touch [OPTION]... FILE...
- -c:指定的檔案路徑不存在時不予建立
- -a:僅修改access time
- -m:僅修改modify time
- 注意:change time是無法指定修改的
- -t STAMP
- [[CC]YY]MMDDhhmm[.ss]
[root@cherryyao ~]# stat /tmp/fstab
File: ‘/tmp/fstab’
Size: 501 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 3278555 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-08-22 01:13:14.855864616 +0800
Modify: 1985-07-17 12:30:45.000000000 +0800
Change: 2018-08-22 01:43:26.644852003 +0800
Birth: -
[root@cherryyao ~]# touch -a -m -t 198507172145.36 /tmp/fstab
[root@cherryyao ~]# stat /tmp/fstab
File: ‘/tmp/fstab’
Size: 501 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 3278555 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 1985-07-17 21:45:36.000000000 +0800
Modify: 1985-07-17 21:45:36.000000000 +0800
Change: 2018-08-22 03:26:37.542783459 +0800
Birth: -
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
5.1 命令別名
- 命令別名:
- 獲取所有可用別名的定義
- ~]# alias
- 定義別名:
- ~]# alias NAME='COMMAND'
注意:僅對當前shell程式有效
- 撤銷別名:
- ~]# unalias NAME
- 獲取所有可用別名的定義
[root@cherryyao ~]# alias cls=clear
[root@cherryyao ~]# alias
alias cls='clear'
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
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'
5.2 命令引用
- 強引用: ’ ‘
- 其內部的任何字串都全部直接顯示,不做任何的替換
- 弱引用:“ ”
- 雙引號中的變數引用,會做變數的替換,也就是說把雙引號中間的變數替換成原本變數中就儲存的值來顯示輸出
- 命令引用: $()
- 直接輸出命令的執行結果
[root@cherryyao ~]# mktemp /tmp/$(date +%F-%T).XXXXXXXX
/tmp/2018-08-22-03:35:02.zpagRvZN
[root@cherryyao ~]#
[root@cherryyao ~]# mktemp /tmp/$(date +%F-%T).XXXXXXXX
/tmp/2018-08-22-03:35:07.0SLP3mn1
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字元)的檔案或目錄。
[root@cherryyao ~]# ls -ld /var/l*[0-9]*[a-z]
-rw-r--r--. 1 root root 0 Aug 22 03:45 /var/llll45452g.txt
drwxr-xr-x. 2 root root 4096 Aug 22 03:46 /var/lsdg99o
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的檔案或目錄。
[root@cherryyao ~]# ls -ld /etc/[0-9]*[^0-9]
-rw-r--r--. 1 root root 0 Aug 19 22:57 /etc/3abc23y
8、顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其它任意長度任意字元的檔案或目錄。
[root@cherryyao ~]# ls -ld /etc/[^[:alpha:]][a-zA-Z]*
-rw-r--r--. 1 root root 0 Aug 19 22:57 /etc/3abc23y
9、在/tmp目錄下建立以tfile開頭,後跟當前日期和時間的檔案,檔名形如:tfile-2016-05-27-09-32-22。
[root@cherryyao ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
10、複製/etc目錄下所有以p開頭,以非數字結尾的檔案或目錄到/tmp/mytest1目錄中。
[root@cherryyao ~]# mkdir /tmp/mytest1
[root@cherryyao ~]# cp -r /etc/p*[^0-9] /tmp/mytest1
[root@cherryyao ~]# ls /tmp/mytest1
pam.d pki popt.d prelink.conf.d profile.d
passwd plymouth postfix printcap protocols
passwd- pm ppp profile python
11、複製/etc目錄下所有以.d結尾的檔案或目錄至/tmp/mytest2目錄中。
[root@cherryyao ~]# mkdir /tmp/mytest2
[root@cherryyao ~]# cp -r /etc/*.d /tmp/mytest2
[root@cherryyao ~]# ls /tmp/mytest2
bash_completion.d init.d pam.d rc3.d statetab.d
binfmt.d krb5.conf.d popt.d rc4.d sudoers.d
chkconfig.d ld.so.conf.d prelink.conf.d rc5.d sysctl.d
cron.d logrotate.d profile.d rc6.d tmpfiles.d
depmod.d modprobe.d rc0.d rc.d xinetd.d
dracut.conf.d modules-load.d rc1.d rsyslog.d yum.repos.d
grub.d my.cnf.d rc2.d rwtab.d
12、複製/etc/目錄下所有以l或m或n開頭,以.conf結尾的檔案至/tmp/mytest3目錄中。
[root@cherryyao ~]# mkdir /tmp/mytest3
[root@cherryyao ~]# cp -r /etc/[lmn]*.conf /tmp/mytest3
[root@cherryyao ~]# ls /tmp/mytest3
ld.so.conf libuser.conf logrotate.conf mke2fs.conf
libaudit.conf locale.conf man_db.conf nsswitch.conf
相關文章
- 慢慢來
- Python正在慢慢褪色Python
- 慢慢寫 十二重計數法
- 穩定性保障,如何慢慢放量灰度
- 你要默默的學會這些,慢慢的驚豔所有人
- 彆著急,慢慢來2020.12.00日記
- 系統慢慢變壞的邏輯
- 微服務很香--麻辣味,但要慢慢消化微服務
- 慢慢細談Android 面試的細節Android面試
- 前端設計,確定按鈕正慢慢消失前端
- vue專案搭建目錄以及標準(慢慢摸索)Vue
- 寫sql的功夫低啊,得慢慢提高才行SQL
- 傳統服裝產業正慢慢轉向數字化產業
- 使用python繪製月餅,慢慢等待將至的中秋節Python
- CRM為什麼慢慢成為企業必備軟體?
- mac 下程式設計小白不知道的快捷鍵(慢慢完善)Mac程式設計
- 開發一款讓我們慢慢變好的微信小程式微信小程式
- 平時多做這“4項運動”,可以幫助慢性胃炎慢慢好轉!
- 香港——中國加密貨幣發展的試驗區,慢慢又走回了原點?加密
- 一文詳解:專案如何從Docker慢慢演變成了K8s部署DockerK8S
- 一線城市之外,二三線的一對一直播行業慢慢開始展現“虹吸效應”行業
- 海外年收入或破40億,對話三七互娛彭美:做好因地制宜,新品慢慢釋放
- 谷歌母公司:4Q20電話會議實錄 隨著使用者活動的恢復 廣告投入也在慢慢復甦谷歌
- 效能測試,類似註冊這種介面怎麼進行效能測試?是 10 個執行緒執行 5 分鐘,然後慢慢增加使用者,找到效能轉折點嗎?執行緒
- 學學ViewbindingView
- Java學習自學Java
- 深度學習——學習目錄——學習中……深度學習
- Java可以自學嗎?自學能學好嗎?Java
- java好學嗎?初學者怎麼學好?Java
- 機器學習學習中,數學最重要!機器學習
- 【學習筆記】數學筆記
- 《小 學 組 合 數 學》
- 學習ThinkPHP,學習OneThinkPHP
- 沒學歷可以學IT嗎?
- 深度學習學習框架深度學習框架
- 電腦科學哲學(史丹佛大學哲學百科全書)
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- 學java語言之前學什麼利於學習?Java