一、Linux上的文件管理類命令都有哪些,其經常使用的使用方法及其相關示例演示。node
文件管理類命令:cp,mv,rmpython
1)cp:複製文件或目錄linux
用法:cp [OPTION]... [-T] SOURCE DESTshell
cp [OPTION]... SOURCE... DIRECTORYcentos
cp [OPTION]... -t DIRECTORY SOURCE...bash
注意事項:app
SOURCE是文件:ssh
若是目標文件不存在,新建目標文件,並將源文件中的內容填充到目標文件中ide
若是目標存在且爲文件,將源文件中的內容覆蓋至目標文件中post
若是目標存在且爲目錄,在目標目錄下創建與原文件同名的文件,並將源文件中內容填充到新的文件中去
SOURCE是多個文件,目標必須存在,且爲目錄,其它狀況均會出錯
SOURCE是目錄:必須使用-r選項
若是目標目錄不存在,則會建立指定目錄,賦值源目錄中全部文件至目標目錄中
若是目標是目錄,在源目錄中的文件所有分複製到目標目錄中
經常使用選項:
-a, --archive 等於-dR --preserve=all
-d 等於--no-dereference --preserve=links
-f, --force 若是目標文件沒法打開則將其移除並重試(當 -n 選項存在時則不需再選此項)
-i, --interactive 覆蓋前詢問(使前面的 -n 選項失效)
-L, --dereference 老是跟隨符號連接
-n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
-P, --no-dereference 不跟隨源文件中的符號連接
-p 等於--preserve=模式,全部權,時間戳
--preserve[=屬性列表] 保持指定的屬性(默認:模式,全部權,時間戳),若是可能保持附加屬性:環境、連接、xattr 等
-R, -r, --recursive 複製目錄及目錄內的全部項目
實例
[root@localhost /]# cp etc/fstab /tmp/123//複製文件,123文件不存在測建立文件 [root@localhost /]# cat tmp/123 [root@localhost /]# cp -a /etc/system-release /tmp/12/ # # /etc/fstab # Created by anaconda on Fri Aug 12 06:53:38 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=ab5f2947-2e09-4c7d-9c36-80c29e6391a4 /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 [root@localhost /]# cp /etc/host.conf /etc/fstab /tmp/mylinux///複製多個文件到mylinux中 [root@localhost /]# cp -a /etc/system-release /tmp/12///複製連接文件 -a選項複製文件的全部屬性和連接符號,可是連接地址是相對路徑,連接指向會出錯 [root@localhost /]# ll /tmp/12/ 總用量 0 lrwxrwxrwx. 1 root root 14 8月 13 19:49 123 -> centos-release lrwxrwxrwx. 1 root root 14 8月 12 06:54 system-release -> centos-release
2)mv:移動文件或目錄
用法:mv [選項]... [-T] 源文件 目標文件
或:mv [選項]... 源文件... 目錄
或:mv [選項]... -t 目錄 源文件...
經常使用選項:
-f, --force 覆蓋前不詢問
-i, --interactive 覆蓋前詢問
-n, --no-clobber 不覆蓋已存在文件
實例
[root@localhost 12]# ls 123 system-release [root@localhost 12]# mv 123 ../a_c/ //將123文件複製到a_c目錄下 [root@localhost 12]# mv system-release 321//將文件system-release重命名 [root@localhost 12]# ls 321 [root@localhost tmp]# mv 12/ b_c///複製目錄 [root@localhost tmp]# cd b_c [root@localhost b_c]# ls 12
3)rm:刪除文件或目錄
用法:rm [選項]... 文件...
經常使用選項:
-f 強制刪除
-i 交互式
-r 刪除目錄
實例
[root@localhost b_c]# rm -rf 12 //強制刪除12目錄
二、bash的工做特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
1.命令歷史:history
環境變量:
HISTSIZE:命令歷史記錄的條數
HISTFILE:~/.bash_history
HISTFILESIZE:命令歷史文件記錄歷史的條數
調用歷史命令的方式:
!#:重複執行第#條指令
!!:執行上一條命令
!string 調用最近以string開頭的命令
!$:調用上一條命令的最後一個參數
ESC,.:調用上一條命令的最後一個參數
控制命令歷史的記錄方式:
環境變量:HISTCONTROL
ignoredups:忽略連續且重複的命令,系統默認
ignorespace:忽略全部以空白開頭的命令;
ignoreboth:上述兩個同時生效
修改環境變量的方式:export 變量名="值"
變量賦值:把賦值符號後面的數據存儲與變量名指向內存空間,至對當前shell有限
2.命令補全:TAB鍵補全命令,
3.路徑補全
4.命令展開
~:展開爲用戶的主目錄
~USERNAME:展開爲指定用戶的主目錄
[root@localhost /]# cd ~ [root@localhost ~]# [root@localhost ~]# cd ~jun_shao/ [root@localhost jun_shao]# ~jun_shao/
5.命令的執行結果狀態:成功和失敗,0表示成功,1-255表示失敗
bash使用特殊變量$?保存最近一條命令的執行狀態結果
獲取方式 echo $?
程序執行的有兩類結果:程序的返回值和程序的執行狀態結果
[root@localhost /]# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [root@localhost /]# echo $? 0
6.bash的快捷操做
ctrl+L:清屏,至關於clear
ctrl+i:跳轉值命令首部
ctrl+e:跳轉至命令尾部
ctrl+c:取消命令執行
ctrl+U:刪除命令首至光標所在處的內容
ctrl+K:刪除光標所在處至命令行尾部的全部內容
三、請使用命令行展開功能來完成如下練習:
(1)、建立/tmp目錄下的:a_c, a_d, b_c, b_d
[jun_shao@localhost tmp]$ mkdir /tmp/{a,b}_{c,d} [jun_shao@localhost tmp]$ ls a_c sensitive-info.log a_d ssh-jCe06sIOI6xg anaconda.log ssh-UauJ16N50KP7 b_c storage.log b_d systemd-private-6d69e0cd5d82468ab85eff756bc26a69-colord.service-cH1SDQ hogsuspend systemd-private-6d69e0cd5d82468ab85eff756bc26a69-cups.service-dE9Cpn hsperfdata_jun_shao systemd-private-6d69e0cd5d82468ab85eff756bc26a69-rtkit-daemon.service-RjUF2H hsperfdata_root systemd-private-6d69e0cd5d82468ab85eff756bc26a69-systemd-hostnamed.service-LisN5B ifcfg.log systemd-private-af9b870d5246476e8ba1feb08891b3d0-colord.service-RDVwUr june systemd-private-af9b870d5246476e8ba1feb08891b3d0-cups.service-vUZ9Sj ks-script-ZiDgee systemd-private-af9b870d5246476e8ba1feb08891b3d0-rtkit-daemon.service-UT40FH packaging.log tracker-extract-files.1000 program.log yum.log
(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@localhost mylinux]# 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@localhost mylinux]# tree . ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib │ └── modules ├── lib64 ├── lock ├── log ├── proc ├── run ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var
四、文件的元數據信息有哪些,分別表示什麼含義,如何查看?如何修改文件的時間戳信息。
1)文件的元數據信息:
文件的大小
文件的全部者
文件的權限
access time:訪問時間,atime
modify time:修改時間,mtime
change time:改變時間,ctime
2)使用stat命令查詢文件的元數據信息
[root@localhost /]# stat /tmp/mylinux/ 文件:"/tmp/mylinux/" 大小:4096 塊:8 IO 塊:4096 目錄 設備:fd00h/64768dInode:206503646 硬連接:17 權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:user_tmp_t:s0 最近訪問:2016-08-13 02:40:09.054684514 +0800 最近更改:2016-08-13 02:40:02.371740577 +0800 最近改動:2016-08-13 02:40:02.371740577 +0800 建立時間:-
3)修改文件的時間戳信息:touch命令
用法:touch [選項]... 文件...
經常使用選項:
-a,只更改訪問時間
-c, --no-create 不建立任何文件
-d, --date=字符串 使用指定字符串表示時間而非當前時間
-m 只更改修改時間
-t STAMP,[[cc]YY]MMDDhhmm[.ss]修改時間戳爲指定時間
access time:訪問時間,atime
modify time:修改時間,mtime
change time:改變時間,ctime
[root@localhost /]# touch -t 1510101010.10 tmp/mylinux///修改時間戳爲指定日期 [root@localhost /]# stat /tmp/mylinux/ 文件:"/tmp/mylinux/" 大小:4096 塊:8 IO 塊:4096 目錄 設備:fd00h/64768dInode:206503646 硬連接:17 權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:user_tmp_t:s0 最近訪問:2015-10-10 10:10:10.000000000 +0800 最近更改:2015-10-10 10:10:10.000000000 +0800 最近改動:2016-08-13 15:27:55.012235506 +0800 建立時間:- [root@localhost /]# touch -a tmp/mylinux/ [root@localhost /]# stat /tmp/mylinux/ 文件:"/tmp/mylinux/" 大小:4096 塊:8 IO 塊:4096 目錄 設備:fd00h/64768dInode:206503646 硬連接:17 權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:user_tmp_t:s0 最近訪問:2016-08-13 15:28:31.722939290 +0800 最近更改:2015-10-10 10:10:10.000000000 +0800 最近改動:2016-08-13 15:28:31.722939290 +0800 建立時間:- [root@localhost /]# stat /tmp/mylinux/ 文件:"/tmp/mylinux/" 大小:4096 塊:8 IO 塊:4096 目錄 設備:fd00h/64768dInode:206503646 硬連接:17 權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:user_tmp_t:s0 最近訪問:2016-08-13 15:28:31.722939290 +0800 最近更改:2016-08-13 15:39:49.605469563 +0800 最近改動:2016-08-13 15:39:49.605469563 +0800 建立時間:-
五、如何定義一個命令的別名,如何在命令中引用另外一個命令的執行結果?
命令別名(alias):經過alias命令實現:shell的內嵌命令
1)alias:顯示當前shell進程中全部可用的命令別名
2)alias NAME='VALUE':定義別名NAME,其至關於執行命令VALUE
注意:在明行中定義的別名,僅對當前shell進程有效,若是想永久有效,要定義在配置文件中
僅對當前用戶:~/.bashrc
對全部用戶有效:/etc/bashrc
注意:編輯配置給出的新配置不會當即生效
bash進程從新讀取配置文件:source /path/to/config_file 或 ./ path/to/config_file
3)撤銷別名:unalias [-a] name [name...]
注意:若是別名和原命令想同,則執行原命令,如:\COMMAND
實例
[root@localhost ~]# alias net='cd /etc/sysconfig/network-scripts/'//定義別名,僅對當前shell有效 [root@localhost ~]# net [root@localhost network-scripts]# [root@localhost ~]# nano .bashrc //編輯配置文件,對當前用戶有效 [root@localhost ~]# source .bashrc //從新讀取配置文件,是新建的別有有效 [root@localhost ~]# alias cp="cp -r"//定義與系統自帶的相同的命令 [root@localhost ~]# cp /etc/sysconfig/ /tmp/b_c/ [root@localhost ~]# \cp /etc/fstab /tmp/b_c///使用\cp執行原來的命令 [root@localhost ~]# unalias -a cp//撤銷別名
六、顯示/var目錄下全部以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(能夠有其它字符)的文件或目錄。
[jun_shao@localhost ~]$ ls -d /var/l*[0-9]*[[:lower:]] /var/l121231sdfasd /var/l2dc
七、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[jun_shao@localhost ~]$ ls -d /tmp/[0-9]*[^0-9] /tmp/111223@ /tmp/111223b /tmp/111223c
八、顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其它任意長度任意字符的文件或目錄。
[jun_shao@localhost tmp]$ ls /etc/[^[:alpha:]][[:alpha:]]*
九、在/tmp目錄下建立以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-08-06-09-32-22。
[root@localhost /]# touch /tmp/`echo tfile-$(date +%Y-%m-%d-%H-%M-%S)` [root@localhost /]# ls /tmp/ 111223@ mytest3 111223b packaging.log 111223c program.log 11c sensitive-info.log 1c2 ssh-jCe06sIOI6xg 20160813_141413.txt ssh-UauJ16N50KP7 a_c storage.log a_d systemd-private-6d69e0cd5d82468ab85eff756bc26a69-colord.service-cH1SDQ anaconda.log systemd-private-6d69e0cd5d82468ab85eff756bc26a69-cups.service-dE9Cpn b_c systemd-private-6d69e0cd5d82468ab85eff756bc26a69-rtkit-daemon.service-RjUF2H b_d systemd-private-6d69e0cd5d82468ab85eff756bc26a69-systemd-hostnamed.service-LisN5B hogsuspend systemd-private-af9b870d5246476e8ba1feb08891b3d0-colord.service-RDVwUr hsperfdata_jun_shao systemd-private-af9b870d5246476e8ba1feb08891b3d0-cups.service-vUZ9Sj hsperfdata_root systemd-private-af9b870d5246476e8ba1feb08891b3d0-rtkit-daemon.service-UT40FH ifcfg.log tfile-2016-08-13-16-47-00 june tfile-2016-08-13-16-47-12 ks-script-ZiDgee tfile-date l121231sdfasd tfile-date +%Y-%m-%d-%H-%M-%S l2dc tracker-extract-files.1000 mylinux +%Y-%m-%d-%H-%M-%S mytest1 yum.log mytest2 yum_save_tx.2016-08-13.14-01.B9WFE2.yumtx
十、複製/etc目錄下全部以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@localhost /]# cp -an /etc/p[^0-9]* /tmp/mytest1/ [root@localhost /]# ls /tmp/mytest1/ pam.d passwd- pkcs11 pm popt.d prelink.conf.d profile.d purple pam_pkcs11 pbm2ppa.conf pki pnm2ppa.conf postfix printcap protocols python passwd pinforc plymouth polkit-1 ppp profile pulse
十一、複製/etc目錄下全部以.d結尾的文件或目錄至/tmp/mytest2目錄中。
[root@localhost /]# cp -an /etc/*.d /tmp/mytest2/ [root@localhost /]# ls /tmp/mytest2 auto.master.d dracut.conf.d logrotate.d profile.d rc.d sudoers.d bash_completion.d exports.d modprobe.d rc0.d reader.conf.d sysctl.d binfmt.d gdbinit.d modules-load.d rc1.d request-key.d tmpfiles.d cgconfig.d grub.d my.cnf.d rc2.d rsyslog.d usb_modeswitch.d chkconfig.d init.d oddjobd.conf.d rc3.d rwtab.d xinetd.d cron.d ipsec.d pam.d rc4.d sane.d yum.repos.d depmod.d ld.so.conf.d popt.d rc5.d setuptool.d dnsmasq.d libibverbs.d prelink.conf.d rc6.d statetab.d
十二、複製/etc/目錄下全部以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
[root@localhost /]# cp -an /etc/[lmn]*.conf /tmp/mytest3 [root@localhost /]# tree /tmp/mytest3 /tmp/mytest3 ├── ld.so.conf ├── libaudit.conf ├── libuser.conf ├── locale.conf ├── logrotate.conf ├── man_db.conf ├── mke2fs.conf ├── mtools.conf ├── nfsmount.conf ├── nsswitch.conf ├── ntp.conf └── numad.conf