1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
touch: 創建一個文件,修改一個文件時間 - 格式:touch [OPTION]... FILE... - 常用選項 -a 只更改文件最近的訪問時間 -m 只更改文件最近的修改時間 -t 指定時間 格式 [[CC]YY]MMDDhhmm[.ss] # touch abc # stat abc Access: 2016-06-16 21:06:56.095545727 +0800 Modify: 2016-06-16 21:06:56.095545727 +0800 Change: 2016-06-16 21:06:56.095545727 +0800 # touch -a -t 05152320 abc # stat abc Access: 2016-05-15 23:20:00.000000000 +0800 Modify: 2016-06-16 21:06:56.095545727 +0800 Change: 2016-06-16 21:07:34.871546823 +0800 # touch -m -t 201405152320 abc # stat abc Access: 2016-05-15 23:20:00.000000000 +0800 Modify: 2014-05-15 23:20:00.000000000 +0800 Change: 2016-06-16 21:07:56.911547446 +0800 mkdir: 創建文件夾 - 格式:mkdir [OPTION]... DIRECTORY... - 常用選項 -m 指定權限 -p 多級創建 -v 顯示過程 [root@c7-1 command]# mkdir -pv a/b/c mkdir: created directory ‘a’ mkdir: created directory ‘a/b’ mkdir: created directory ‘a/b/c’ 創建多級目錄時 指定權限 會在最后一層目錄生效 [root@c7-1 command]# mkdir -pv -m 0777 d/e/f mkdir: created directory ‘d’ mkdir: created directory ‘d/e’ mkdir: created directory ‘d/e/f’ unlink: 刪除一個文件 - 格式: unlink FILE # unlink /home/huazi/.bashrc cp: 復制文件或目錄 cp [OPTION]... FILE... - 常用選項 -a 相當于-dpR 保留鏈接,文件屬性,并遞歸地拷貝目錄。 -d 保留文件的連接數 -p 保留原文件的權限以及時間戳 -r,-R 復制目錄。遞歸復制目錄及其子目錄內的所有內容 -i 交互式,覆蓋文件前詢問用戶 -f 強制移動,需要有-i詢問用戶時使用 # cp -a /etc/ /tmp/test1 復制/etc目錄 到/tmp/test1下 保留/etc/下所有文件的屬性 mv: 移動文件 mv [OPTION]... FILE... 常用選項 -i 交互式,覆蓋文件前詢問用戶 -f 強制移動,需要有-i詢問用戶時使用 # root用戶默認 有cp mv rm 的命令別名帶 -i 選項 # mv a.log b.log 如果 b.log 存在直接覆蓋,不存在正常移動 # mv -i a.log b.log 如果 b.log 存在 會詢問用戶是否覆蓋 n不覆蓋 y覆蓋 root默認mv別名帶-i參數 # mv -if a.log b.log 如果 b.log 存在直接覆蓋,不存在正常移動 rm: 刪除文件 rm [OPTION]... FILE... - 常用選項 -i: 交互式,刪除文件是詢問是否刪除 -f: 強制刪除,需要有-i詢問用戶時使用 -r: 遞歸刪除, # root用戶默認 有cp mv rm 的命令別名帶 -i 選項 # rm -i a.log 刪除 a.log 詢問當前用戶是否刪除 n不刪除 y刪除 root默認mv別名帶-i參數 # rm -if a.log 刪除 a.log -i詢問用戶,-f強制刪除 則直接刪除 。 # rm -rf /tmp/* 刪除 /tmp 下的所有文件 文件夾 跟文件相關命令還有很多,chmod,chown,chgrp,file,stat,cat,uniq,wc,sort,tr,less,more,tail,grep,fgrep,egrep,find.....等
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
命令的狀態返回值 通常可以叫我們來判斷該腳本是否執行成功。 上一條腳本的的返回狀態值 保存在 $? 這個變量中。 # ls / bin boot_ucloud dev home lib64 media opt root selinux swapfile tmp var boot data etc lib lost+found mnt proc sbin srv sys usr # echo $? 0 執行成功 # ls /abc ls: cannot access /abc: No such file or directory # echo $? 2 執行出錯 通常來說 腳本返回狀態值為0時表示腳本執行成功,非0時表示執行過程中遇到問題 返回值是程序員來定義的,你也可以寫成一下代碼 shell腳本 { #!/bin/bash ls / exit 1 } 當執行該腳本后 在看 $?變量里的值時 就是1,當然這是一個叫大家理解返回值的例子。 在自己寫的腳本中設立返回值是個好習慣,成功大家一般都會返回0 二 命令行展開 可以為我工作提高更好的效率 ~: 展開為用戶的主目錄 ~USERNAME:展開為指定用戶的主目錄 {}:可承載一個以逗號分隔的列表,并將其展開為多個路徑 # vim ~/.bashrc 操作當前用戶 家目錄下的.bashrc文件 # vim ~huazi/.bashrc 操作 huazi 用戶家目錄下的.bashrc文件 # cd ~huazi 進入 huazi 的家目錄 # mkdir -p test/{a,b,c} 創建 test 目錄已經該目錄下 a b c三個目錄 # ls test/ a b c # touch a{1..10} 連續創建文件 # ls a1 a10 a2 a3 a4 a5 a6 a7 a8 a9 # mkdir a{1..10} 連續創建目錄 # ls a1 a10 a2 a3 a4 a5 a6 a7 a8 a9
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d [root@c7-1 /]# mkdir /tmp/{a_c,a_d,b_c,b_d} [root@c7-1 /]# ls /tmp/ a_c a_d b_c b_d (2)、創建/tmp/mylinux目錄下的: [root@c7-1 /]# mkdir /tmp/mylinux [root@c7-1 /]# cd /tmp/mylinux/ [root@c7-1 mylinux]# mkdir -pv bin boot/grub dev etc/{rc.d/init.d,sysconfig/network-script} lib/module lib64 proc sbin sys tmp usr/local/{bin,sbin} var/{lock,log,run} mkdir: created directory ‘bin’ mkdir: created directory ‘boot’ mkdir: created directory ‘boot/grub’ mkdir: created directory ‘dev’ mkdir: created directory ‘etc’ mkdir: created directory ‘etc/rc.d’ mkdir: created directory ‘etc/rc.d/init.d’ mkdir: created directory ‘etc/sysconfig’ mkdir: created directory ‘etc/sysconfig/network-script’ mkdir: created directory ‘lib’ mkdir: created directory ‘lib/module’ mkdir: created directory ‘lib64’ mkdir: created directory ‘proc’ mkdir: created directory ‘sbin’ mkdir: created directory ‘sys’ mkdir: created directory ‘tmp’ mkdir: created directory ‘usr’ mkdir: created directory ‘usr/local’ mkdir: created directory ‘usr/local/bin’ mkdir: created directory ‘usr/local/sbin’ mkdir: created directory ‘var’ mkdir: created directory ‘var/lock’ mkdir: created directory ‘var/log’ mkdir: created directory ‘var/run’ [root@c7-1 mylinux]# [root@c7-1 mylinux]# tree /tmp/mylinux/ /tmp/mylinux/ ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-script ├── lib │ └── module ├── lib64 ├── proc ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var ├── lock ├── log └── run 24 directories, 0 files [root@c7-1 mylinux]#
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
- 文件元數據包括 文件的用戶id 文件的組id 文件最近的訪問時間 文件最近的修改時間 文件最近的inode修改時間 文件的大小 文件的鏈接數 文件的權限 文件數據block的位置 stat 命令可以查看 列出文件的元數據的相關信息 # stat /etc/fstab File: `/etc/fstab' Size: 644 Blocks: 8 IO Block: 4096 regular file Device: fc01h/64513d Inode: 393244 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-04-12 16:01:55.498000866 +0800 Modify: 2016-04-12 16:01:55.498000866 +0800 Change: 2016-04-12 16:01:55.498000866 +0800 touch 命令可以修改文件的 最近訪問時間和最近修改時間 - 格式:touch [OPTION]... FILE... - 常用選項 -a 只更改文件最近的訪問時間 -m 只更改文件最近的修改時間 -t 指定時間 格式 [[CC]YY]MMDDhhmm[.ss]
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
如何定義一個命令別名。 alias 命令可以定義命令別名 用法: 查看別名 # alias alias h='ls -lh' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias log_nginx='cd /data/logs/nginx' 建立別名 # alias name=value 刪除別名 # unalias fgrep alias mycd='cd /etc/sysconfig/network-scripts/' alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-eno16777736' 還可以寫到 ~/.bashrc 中 讓當前用戶永久生效 如何在命令中引用另外一個命令的結果。 可以使用 $() 例 # a=$(pwd) 可以使用 `` 例 # a=`pwd` [root@c7-1 ~]# if [ $(wc -l /etc/passwd|cut -d' ' -f1) -gt 20 ]; then echo '> 20'; else echo '< 20'; fi > 20 [root@c7-1 ~]# if [ `wc -l /etc/fstab|cut -d' ' -f1` -gt 20 ]; then echo '> 20'; else echo '< 20'; fi < 20 [root@c7-1 ~]# test $( wc -l /etc/passwd |cut -d' ' -f1 ) -gt 20 && echo ' > 20 ' || echo '< 20' > 20 root@c7-1 ~]# test ` wc -l /etc/fstab |cut -d' ' -f1 ` -gt 20 && echo ' > 20 ' || echo '< 20' < 20
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
ls -ld /tmp/1*[0-9]*[[:lower:]]
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
ls -ld /etc/[0-9]*[^0-9]
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
ls -ld /etc/[^a-z][a-z]*
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch /tmp/tfile-$(date +'%F-%H-%M-%S')
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
cp -r /etc/p*[^0-9] /tmp/mytest1
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
cp -r /etc/*.d /tmp/mytest2
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
cp /etc/[lmn]*.conf /tmp/mytest3
原創文章,作者:banbula,如若轉載,請注明出處:http://www.www58058.com/19508
寫的很好,排版也很漂亮,加油