-
Linux上的文件管理類命令有哪些,其常用的使用方法及相關示例演示
more: more命令非常簡單,只用more file即可,但是more命令有一個特點,就是翻屏至文件尾部后自動退出
less: less命令就是在使用man時是一樣的,因為man手冊就是調用less來查看的
head: head命令用來查看文件的前#行,#默認為10
head -n 20 /etcrc.d//init.d//functions -n 20也可以寫成-20
[root@dhcp-10-129-6-166 ~]# head -n 10 /etc/rc.d/init.d/functions
# -*-Shell-script-*-
#
# functions This file contains functions to be used by most or all
# shell scripts in the /etc/init.d directory.
#TEXTDOMAIN=initscripts
# Make sure umask is sane
umask 022
[root@dhcp-10-129-6-166 ~]# ^C -
bash的工作特性之命令執行返回值和命令行展開所涉及的內容及其示例
bash的工作特性之命令執行返回值
每當我們在Linux系統上執行了一條命令,不單單會有命令結果的返回值,還有一種叫做命令執行返回值,也可以理解為命令的執行結果狀態的返回值。
舉個栗子:
我們使用man ls來看一下ls的man文檔中下面一段
Exit status:
0 if OK,
1 if minor problems (e.g., cannot access subdirec-tory),
2 if serious trouble (e.g., cannot access com-mand-line argument).
這里的0, 1, 2就是所謂的命令執行返回值,0代表一切都ok,從1-225都表示出現了不同的問題,當然,每個程序的每一個錯誤的執行返回值所代表的錯誤不一定相同,但是1-255都是均代表不是正常的返回值,只有0才是完全正確的執行返回值。
那我們怎么查看命令執行的返回值呢?
$?代表上一條命令執行的返回值,我們使用echo $?就可以在標準輸出上輸出狀態返回值了,看下面的栗子:
先執行錯誤的命令 ls-H,然后使用echo $?得到了127這個錯誤的執行返回值,之后再執行ls -l,使用echo $?查看,得到了0的正確的狀態返回值,這里再強調一下,$?變量是針對上一條命令的執行狀態返回值,只是上一條命令。
[root@dhcp-10-129-6-166 ~]# ls-H
-bash: ls-H: 未找到命令
[root@dhcp-10-129-6-166 ~]# echo $?
127
[root@dhcp-10-129-6-166 ~]# ls -l
total 4
drwxr-xr-x. 2 root root 26 Dec 13 00:55 1
-rw-r–r–. 1 root root 0 Dec 1 23:51 FILE1
-rw-r–r–. 1 root root 0 Dec 1 23:51 File1
drwxr-xr-x. 3 root root 27 Dec 2 00:44 L1
drwxr-xr-x. 2 root root 6 Dec 2 00:49 L11
-rw——-. 1 root root 1046 Dec 1 22:08 anaconda-ks.cfg
-rw-r–r–. 1 root root 0 Dec 1 23:51 file1
[root@dhcp-10-129-6-166 ~]# echo $?
0
[root@dhcp-10-129-6-166 ~]#
bash特性之命令行展開
命令行展開機制中有這么幾個機制:~, {}
~可以展開為當前登錄用戶的家目錄
栗子:root用戶登錄,在非家目錄使用cd ~會cd到root的家目錄
{}可承載一個以,逗號分隔的路徑列表,并能夠將其展開為路徑
栗子: 使用命令 mkdir /tmp/yourdad/{you, yourbrother} -pv,會生成 /tmp/yourdad/you 和目錄/tmp/yourdad/yourbrother.
-
請使用命令行展開功能來完成以下練習
A 創建/tmp目錄下的 a_c, a_d, b_c和b_d
[root@dhcp-10-129-6-166 1]# pwd
/root/1
root@dhcp-10-129-6-166 1]# cd /tmp
[root@dhcp-10-129-6-166 tmp]# mkdir {a,b}_{c,d}
[root@dhcp-10-129-6-166 tmp]# ll
總用量 0
drwxr-xr-x. 2 root root 6 12月 13 05:12 a_c
drwxr-xr-x. 2 root root 6 12月 13 05:12 a_d
drwxr-xr-x. 2 root root 6 12月 13 05:12 b_c
drwxr-xr-x. 2 root root 6 12月 13 05:12 b_d
B 創建/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@dhcp-10-129-6-166 tmp]# mkdir -p mylinux/{b{in,oot/grub},dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib{64,/modules},proc,s{bin,ys},tmp,usr/local/{s,}bin,var/{lo{ck,g},run}}
[root@dhcp-10-129-6-166 tmp]# tree
.
└── 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
25 directories, 0 files
[root@dhcp-10-129-6-166 tmp]#
4. 文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息
元數據的英文稱為metadata, metadate不同于data,它不是文件的內容,而是文件的屬性
使用stat FILE來查看文件看到的就成為metadata, metadata包含很多的信息,文件的大小,inode, blocks數量,等等
還有最重要的就是文件的三個time stamp,即時間戳。
文件的時間戳有3種,acccess time stamp, change time stamp和modify time stamp
access time stamp為最近訪問時間,例如查看文件這種操作,就會改變文件的access time stamp
modify time stamp為最近修改時間,修改了文件的內容,就會改變文件的modify timestamp
change time stamp為最近改變時間 ,access time stamp或者modify time stamp更改都會聯動導致change time stamp的改變
如何查看文件的元數據信息呢?使用stat命令即可
[root@dhcp-10-129-6-166 ~]# stat /etc/rc.d/init.d/functions
File: '/etc/rc.d/init.d/functions'
Size: 13948 Blocks: 32 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33970102 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:bin_t:s0
Access: 2016-12-13 00:45:16.340999869 +0800
Modify: 2015-09-16 19:51:07.000000000 +0800
Change: 2016-12-01 21:52:39.201992295 +0800
Birth: –
[root@dhcp-10-129-6-166 ~]#
如何更改文件的時間戳呢?使用touch命令即可
touch [OPTION] FILE
-c: 指定的文件路徑不存在時會自動創建文件
-a:僅修改access time stamp
-m:僅修改modify time stamp
-t STAMP [[CC]YYMMDDhhmm[.ss]
此處未完待續…..
==========================================憤怒的分割線============================================
此時此刻,我的心情是非常想把眼前這臺Mac給砸了的,但是我不敢,我更舍不得,辛辛苦苦寫的博客,不知道手殘按了什么,呼啦啦一下就特么沒了,沒了你知道嗎?說出來你可能不信,這篇作業我寫了快兩個點了,就差前面兩道題了,結果就特么這么沒了…..我傷心的拿出了手機,下了一首劉歡的從頭再來,鼓勵我,攙扶著我寫了這段分割線……明天再繼續吧,心如在,夢就在,天地之間還有真愛,看成敗,人生豪邁,只不過是從頭再來。。。。。
==========================================分割線走了==============================================
==========================================分割線又來了============================================
上午終于抽出時間補上了后面的作業,下午再做前面的吧
==========================================分割線又走了============================================
5. 如何定義一個命令的別名,如何在命令中引用另一個名字的執行結果?
如何定義一個命令的別名:
alias的用法:alias [-p] [name[=value] …]
舉個栗子,如果要為命令取別名使用alias NAME=COMMAND [OPTION]
[root@dhcp-10-129-6-166 ~]# alias la='ls -a'
將ls -a 這條命令起個別名叫 la
舉個栗子:
[root@dhcp-10-129-6-166 ~]# alias cp
alias cp='cp -i'
[root@dhcp-10-129-6-166 ~]#
上面的栗子說的是,當我們使用root用戶運行cp命令時,實際上cp命令是"cp -i"這條命令的別名
如何在命令中引用另一個名字的執行結果
引用命令的執行結果可以使用$和`
栗子:使用$來引用命令的執行結果,在root 家目錄下本來沒有文件,使用touch $(ls /)命令,會在root家目錄下創建ls /命令所顯示出來的所有目錄
[root@dhcp-10-129-6-166 ~]# pwd
/root
[root@dhcp-10-129-6-166 ~]# ls
[root@dhcp-10-129-6-166 ~]# touch $(ls /)
[root@dhcp-10-129-6-166 ~]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@dhcp-10-129-6-166 ~]#
栗子2:使用“來引用命令的執行結果, 執行ls命令,在/tmp目錄下本來沒有文件,使用touch `echo $?` ,會在/tmp目錄下創建一個文件名為0的文件
[root@dhcp-10-129-6-166 ~]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@dhcp-10-129-6-166 ~]# touch /tmp/`echo $?`
[root@dhcp-10-129-6-166 ~]# ls /tmp
0 mytest1 mytest2 mytest3 tfile-2016-12-13-18-57-48
[root@dhcp-10-129-6-166 ~]#
6. 顯示/var目錄下所有以1開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文件或目錄
[root@dhcp-10-129-6-166 ~]# touch /var/1a9{a,9,@}{a,A,$}
[root@dhcp-10-129-6-166 ~]# ls /var/1a9*
/var/1a99$ /var/1a99a /var/1a9@A /var/1a9a$ /var/1a9aa
/var/1a99A /var/1a9@$ /var/1a9@a /var/1a9aA
[root@dhcp-10-129-6-166 ~]# mkdir /var/1a9FF{a,9,@}{a,A,$}
[root@dhcp-10-129-6-166 ~]# ls /var/1a9FF*
/var/1a9FF9$:
/var/1a9FF9A:
/var/1a9FF9a:
/var/1a9FFa$:
/var/1a9FFaA:
/var/1a9FFaa:
[root@dhcp-10-129-6-166 ~]# ls -R /var/1*[0-9]*[a-z]
/var/1a99A /var/1a9@A /var/1a9aA
/var/1a99a /var/1a9@a /var/1a9aa
/var/1a9FF9A:
/var/1a9FF9a:
/var/1a9FFaA:
/var/1a9FFaa:
[root@dhcp-10-129-6-166 ~]#
7. 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
[root@dhcp-10-129-6-166 ~]# ls /etc/[0-9]*[^0-9]
ls: cannot access /etc/[0-9]*[^0-9]: No such file or directory
[root@dhcp-10-129-6-166 ~]#
8. 顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其他任意長度任意字符的文件或目錄
[root@dhcp-10-129-6-166 ~]# ls -R /etc/[^[:alpha:]][[:alpha:]]*
ls: cannot access /etc/[^[:alpha:]][[:alpha:]]*: No such file or directory
9. 在/tmp目錄下創建以tfile開頭,后面跟當前日期和時間的文件,文件名如(tfiel-2016-05-27-09-32-22)
[root@dhcp-10-129-6-166 tmp]# touch tfile-$(date +%Y-%m-%D-%H-%M-%S)
touch: cannot touch 'tfile-2016-12-12/13/16-18-56-53': No such file or directory
[root@dhcp-10-129-6-166 tmp]# touch 1
[root@dhcp-10-129-6-166 tmp]# ll
total 0
-rw-r–r–. 1 root root 0 Dec 13 18:57 1
[root@dhcp-10-129-6-166 tmp]# rm 1
rm: remove regular empty file '1'? y
[root@dhcp-10-129-6-166 tmp]# touch tfile-$(date +%Y-%m-%d-%H-%M-%S)
[root@dhcp-10-129-6-166 tmp]# ll
total 0
-rw-r–r–. 1 root root 0 Dec 13 18:57 tfile-2016-12-13-18-57-48
[root@dhcp-10-129-6-166 tmp]#
10.復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
[root@dhcp-10-129-6-166 ~]# cp -r /etc/p*[^0-9] /tmp/mytest1
[root@dhcp-10-129-6-166 ~]# ls /tmp/mytest1
pam.d pki popt.d prelink.conf.d profile.d
passwd plymouth postfix printcap protocols
passwd- pm ppp profile python
[root@dhcp-10-129-6-166 ~]#
11.復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
[root@dhcp-10-129-6-166 ~]# cp -r /etc/*.d /tmp/mytest2
[root@dhcp-10-129-6-166 ~]# ls /tmp/mytest2
bash_completion.d ld.so.conf.d rc.d rwtab.d
binfmt.d logrotate.d rc0.d statetab.d
chkconfig.d modprobe.d rc1.d sudoers.d
cron.d modules-load.d rc2.d sysctl.d
depmod.d my.cnf.d rc3.d tmpfiles.d
dnsmasq.d pam.d rc4.d xinetd.d
dracut.conf.d popt.d rc5.d yum.repos.d
grub.d prelink.conf.d rc6.d
init.d profile.d rsyslog.d
[root@dhcp-10-129-6-166 ~]#
12.復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中
[root@dhcp-10-129-6-166 ~]# mkdir /tmp/mytest3
[root@dhcp-10-129-6-166 ~]# cp -r /etc/{l,m,n}*.conf /tmp/mytest3
[root@dhcp-10-129-6-166 ~]# ls /tmp/mytest3
ld.so.conf libuser.conf logrotate.conf mke2fs.conf
libaudit.conf locale.conf man_db.conf nsswitch.conf
[root@dhcp-10-129-6-166 ~]#
原創文章,作者:JL,如若轉載,請注明出處:http://www.www58058.com/62929
吐血,哈哈~