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.178linux.com/38730
评论列表(1条)
除相关作业外,等学习完bash相关课程后,可以试着总结一下bash的特性,加油