-
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.178linux.com/62929
评论列表(1条)
吐血,哈哈~