1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示
mkdir: 創建目錄
使用方法:mkdir [OPTION]… DIRECTORY…
常用選項:
-p:按需創建父目錄
-m:創建目錄權限
-v:輸出詳細創建目錄過程
[root@localhost ~]# mkdir -m 700 -pv /users/myDir/u/i/o/p mkdir: created directory ‘/users/myDir’ mkdir: created directory ‘/users/myDir/u’ mkdir: created directory ‘/users/myDir/u/i’ mkdir: created directory ‘/users/myDir/u/i/o’ mkdir: created directory ‘/users/myDir/u/i/o/p’ [root@localhost ~]# ll /users drwxr-xr-x. 3 root root 14 Aug 27 00:57 myDir
rmdir: 刪除目錄
使用方法:rmdir [OPTION]… DIRECTORY…
常用選項:
-p:刪除某目錄后,如果其父目錄存在,則一并刪除
-v:顯示詳細刪除過程
[root@localhost users]# rmdir -pv myDir/u/i/o/p rmdir: removing directory, ‘myDir/u/i/o/p’ rmdir: removing directory, ‘myDir/u/i/o’ rmdir: removing directory, ‘myDir/u/i’ rmdir: removing directory, ‘myDir/u’ rmdir: removing directory, ‘myDir’
head:查看文件的前n行,默認是10行
使用方法:head [OPTION]… [FILE]…
-n #:查看文件的前#行
-#
[root@localhost users]# head -n 2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@localhost users]# head -2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
tail:查看文件的后n行,默認是10行
-n #:查看文件的后#行
-#
[root@localhost users]# tail -n 3 /etc/passwd user4:x:4011:4011::/home/user4:/bin/chroot chrooter:x:4012:4012::/home/chrooter:/bin/bash expand:x:4013:4013::/users/testExpand:/bin/bash [root@localhost users]# tail -3 /etc/passwd user4:x:4011:4011::/home/user4:/bin/chroot chrooter:x:4012:4012::/home/chrooter:/bin/bash expand:x:4013:4013::/users/testExpand:/bin/bash
cp: 拷貝文件
使用方法:
單源復制:cp [OPTION]… [-T] SOURCE DEST
如果目標不存在,則先創建與源文件同名的文件,并復制源文件的數據流至目標文件中
如果目標存在:
如果目標是非目錄文件,則覆蓋此文件
如果目標是目錄文件,怎現在目標目錄下創建與源文件同名的目標文件,并復制源文件數據流至目標文件中
注意:cp命令是默認不支持源文件為目錄文件的
多源復制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
如果目標文件不存在,錯誤
如果目錄文件存在:
如果目標文件不是目錄,錯誤
如果目標文件是目錄,則將源文件一一在目標目錄中創建與源文件同名的文件,并將源文件數據流復制至目標文件中
常用選項:
-i:交互式復制,即復制之前提醒用戶確認
-f:強制覆蓋目標文件
-r, -R:遞歸復制目錄
-d:復制符號鏈接文件本身,而非其指向的源文件
-a:-dR,用戶實現歸檔
[root@localhost init.d]# cp -i functions network README /users/mydir [root@localhost init.d]# ll /users/mydir total 28 -rw-r--r--. 1 root root 13948 Aug 27 01:25 functions -rwxr-xr-x. 1 root root 6630 Aug 27 01:25 network -rw-r--r--. 1 root root 1160 Aug 27 01:25 README [root@localhost init.d]# cp -f functions network README /users/mydir cp: overwrite ‘/users/mydir/functions’? y cp: overwrite ‘/users/mydir/network’? y cp: overwrite ‘/users/mydir/README’? y [root@localhost ~]# cp -r /etc/rc.d /users/mydir [root@localhost ~]# ls /users/mydir functions network rc.d README
mv: 移動文件
使用方法:
單源復制:mv [OPTION]… [-T] SOURCE DEST
多源復制:mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
常用選項:
-i:交互式移動文件,提醒用戶確認
-f:強制移動文件
[root@localhost ~]# mv -v /users/mydir/rc.d /users/mydir1 ‘/users/mydir/rc.d’ -> ‘/users/mydir1/rc.d’
rm: 刪除文件。注意,不要直接刪除文件,而是將文件移到模擬回收站中
使用方法:rm [OPTION]… FILE…
常用選項:
-i:交互式
-f:強制刪除
-r:遞歸刪除
[root@localhost users]# rm -rf myDir [root@localhost users]# ls adc b differentUsers fedora gentoo gentoo2 m me n testExpand www www3
2、Bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示
(1) Bash工作特性之命令執行狀態返回值,其命令執行結果返回值會保存在bash特殊變量$?中:使用 ~]# echo $? 來查看命令執行返回值
執行正確,返回值為0
[root@localhost ~]# mkdir /tmp/testBashCharacter [root@localhost ~]# echo $? 0
執行錯誤,返回非0值
[root@localhost ~]# mmkdir /tmp/testWrongCode bash: mmkdir: command not found... Similar command is: 'mkdir' [root@localhost ~]# echo $? 127
(2) Bash命令行展開
~:自動展開為用戶的家目錄,或指定的用戶的家目錄
{}:可承載一個以逗號為分隔符的路徑列表,并能將其展開為多個并行的路徑
~展開為用戶家目錄示例
[root@localhost ~]# cd /etc/cups [root@localhost cups]# cd ~ [root@localhost ~]# pwd /root [Meng@localhost ~]$ cd /etc/cups [Meng@localhost cups]$ cd ~ [Meng@localhost ~]$ pwd /home/Meng
{}展開為多個并行路徑示例
[root@localhost ~]# mkdir -pv /users/{b,n,m} mkdir: created directory ‘/users/b’ mkdir: created directory ‘/users/n’ mkdir: created directory ‘/users/m’
3、請使用命令展開來完成以下練習
(1) 創建/tmp目錄下的:a_c, a_d, b_c, b_d
[root@localhost ~]# mkdir /tmp/{a,b}_{c,d} [root@localhost ~]# ll /tmp total 696 drwxr-xr-x. 2 root root 6 Aug 25 03:21 a_c drwxr-xr-x. 2 root root 6 Aug 25 03:21 a_d drwxr-xr-x. 2 root root 6 Aug 25 03:21 b_c drwxr-xr-x. 2 root root 6 Aug 25 03:21 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@localhost ~]# 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}}
4、文件的數據元素信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息
(1) 文件的數據元素有:
元數據:metadata,用來描述屬性
數據: data,代表文件的真實數據
timestamp:
Access: 2016-08-12 12:29:57.121317321 +0800
Modify: 2016-08-12 12:29:07.674320672 +0800:數據改變
Change: 2016-08-12 12:29:07.674320672 +0800:元數據改變
(2) 使用命令stat可以查看文件的數據信息
[root@localhost ~]# stat /etc/rc.d File: ‘/etc/rc.d’ Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd00h/64768d Inode: 70860 Links: 10 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:etc_t:s0 Access: 2016-08-27 01:23:06.333072492 +0800 Modify: 2015-11-20 14:21:47.000000000 +0800 Change: 2016-08-07 16:24:31.494986420 +0800
(3) 使用命令touch可以修改文件的時間戳信息,一般用來改變access time和modify time
touch:修改文件access time 和 modify time
使用方法:touch [OPTION]… FILE…
常用選項:
-c:指定的文件路徑不存在時不予創建
-a:僅修改access time
-m:僅修改modify time
-t:指定時間[[CC]YY]MMDDhhmm[.ss]
[root@localhost ~]# touch -a -m 1208081230.23 /users/functions [root@localhost ~]# stat /users/functions File: ‘/users/functions’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 207475418 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2016-08-27 01:59:40.148104233 +0800 Modify: 2016-08-27 01:59:40.148104233 +0800 Change: 2016-08-27 01:59:40.148104233 +0800
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果
(1) alias命令可以定義一個命令的別名,其使用方法是 alias NAME=COMMAND。需要注意的是,命令別名只對當前shell進程有效
如下例所示:
[root@localhost ~]# 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' [root@localhost ~]# alias lsa='ls -al' [root@localhost ~]# lsa /home total 20 drwxr-xr-x. 10 root root 4096 Aug 23 12:55 . dr-xr-xr-x. 18 root root 4096 Aug 22 14:23 .. drwx------. 5 archlinux archlinux 4096 Aug 22 15:01 archlinux drwx------. 5 centos centos 4096 Aug 19 01:51 centos drwx------. 3 4000 4000 74 Aug 22 13:59 gentoo drwx------. 3 gentoo1 gentoo1 74 Aug 22 14:04 gentoo1 drwx------. 15 Meng Meng 4096 Aug 23 10:09 Meng drwx------. 3 user1 user1 74 Aug 23 12:05 user1 drwx------. 3 user2 user2 74 Aug 23 12:49 user2 drwx------. 3 user3 user3 74 Aug 23 12:55 user3
撤銷命令別名:unalias NAME
[root@localhost ~]# unalias lsa [root@localhost ~]# lsa /home bash: lsa: command not found...
(2) 如何在命令中引用另一個命令的執行結果
引用命令的執行結果:$(COMMAND) 或 `COMMAND`
[root@localhost ~]# echo $(pwd) /root [root@localhost ~]# echo $`pwd` $/root
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符),的文件或目錄
[root@localhost ~]# ls -d /var/l*[0-9]*[[:lower:]] /var/l34dD4c
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
[root@localhost log_test]# ls /etc/[0-9]*[^0-9] /etc/8sfsdf
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其他任意長度任意字符的文件或目錄
[root@localhost log_test]# ls /etc/[^[:alpha:]][[:alpha:]]* /etc/8sfsdf
9、在/tmp目錄下創建tfile開頭,后面跟當前日期和時間的文件,文件名形如:tifile-2016-05-27-09-32-22
[root@localhost ~]# mkdir /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S) tfile-2016-08-27-00-51-08
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
[root@localhost ~]# mkdir /tmp/{mytest1,mytest2,mytest3} [root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1 [root@localhost ~]# ls /tmp/mytest1 pam.d passwd passwd- pbm2ppa.conf pcp pcp.conf pcp.env pcp.sh pinforc pki plymouth pm pnm2ppa.conf popt.d postfix ppp prelink.conf.d printcap profile profile.d protocols pulse purple python
11、復制/etc/目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2 auto.master.d cgconfig.d depmod.d exports.d init.d ld.so.conf.d modprobe.d oddjobd.conf.d prelink.conf.d rc1.d rc4.d rc.d rwtab.d statetab.d tmpfiles.d yum.repos.d bash_completion.d chkconfig.d dnsmasq.d gdbinit.d ipsec.d libibverbs.d modules-load.d pam.d profile.d rc2.d rc5.d request-key.d sane.d sudoers.d usb_modeswitch.d binfmt.d cron.d dracut.conf.d grub.d latrace.d logrotate.d my.cnf.d popt.d rc0.d rc3.d rc6.d rsyslog.d setuptool.d sysctl.d xinetd.d
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3中
[root@localhost ~]# cp -r /etc/[lmn]*.conf /tmp/mytest3 [root@localhost ~]# ls /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
原創文章,作者:mxb93,如若轉載,請注明出處:http://www.www58058.com/38730
除相關作業外,等學習完bash相關課程后,可以試著總結一下bash的特性,加油