1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
A.wc命令:
功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出
语法:wc [选项]文件…
参数:
-c:统计字节数。
-l:统计行数。
-m:统计字符数。这个标志不能与 -c 标志一起使用。
-w:统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L:打印最长行的长度。
案例:
[root@wangtao tmp]# wc /etc/fstab
15 78 805 /etc/fstab
[root@wangtao tmp]# wc -c /etc/fstab
805 /etc/fstab
[root@wangtao tmp]# wc -m /etc/fstab
805 /etc/fstab
[root@wangtao tmp]# wc -w /etc/fstab
78 /etc/fstab
——————————————————————————————————————-
B.cut命令:
功能:以某种方式按照文件的行进行分割
语法:cut [option] files
参数:
-b:按字节选取 忽略多字节字符边界,除非也指定了 -n 标志
-c:按字符选取
-d:自定义分隔符,默认为制表符;-f 与-d一起使用,指定显示哪个区域
案例:
cat /etc/passwd | cut -b1-3 #取每行的第1-3字字节
cat /etc/passwd | cut -b1-3,5-7,8 #取每行的第1-3,5-7,8的字节(后面的数字会先进行从小到大的排列) 需要事先知道具体字节,很容易出错。
cat /etc/passwd | cut -c1,3 #按字符选取,适用于中文
cat /etc/passwd | cut -d : -f 3 #以:分割,取第三段cat /etc/passwd | cut -d '' #以空格进行分割,且是一个空格。
————————————————————————
C.sort命令:
功能:将文本文件内容加以排序
语法:sort
[OPTION]… [FILE]…
参数:
-r:降序
-f:忽略字符大小写
-t:指明分隔符
-k:以指定字段为标准排序
-n:以数值大小排序
-u:相同的内容,只取一次
案例:
[root@wangtao tmp]# cat wangtao.txt
1
2
3
4
5
6
[root@wangtao tmp]# sort -r wangtao.txt
6
5
4
3
2
1
[root@wangtao tmp]# sort wangtao.txt
1
10
11
19
2
5
[root@wangtao tmp]# sort -n wangtao.txt
1
2
5
10
11
19
[root@wangtao tmp]# cat wangtao.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?
[root@wangtao tmp]# sort -n -k 2 -t : wangtao.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
———————————————————
D.uniq命令
功能:报告或删除文件中重复的行
语法:uniq
[OPTION]… [INPUT [OUTPUT]]
参数:
-c:在输出行前面加上每行在输入文件中出现的次数。
-d:仅显示重复行。
-u:仅显示不重复的行
案例:
[root@wangtao tmp]# cat wangtaoc.txt
apples
apples
peaches
pears
bananas
cherries
cherries
[root@wangtao tmp]# uniq wangtaoc.txt
apples
peaches
pears
bananas
cherries
[root@wangtao tmp]# uniq -c wangtaoc.txt
2 apples
1 peaches
1 pears
1 bananas
2 cherries
[root@wangtao tmp]# uniq -u wangtaoc.txt
peaches
pears
bananas
——————————————–
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
A.命令的执行结果状态
–成功
–失败
–0:成功
–1-255:失败
bash使用特殊变量$?保存最近一条命令的执行状态结果,查看命令执行是对还是错
[root@wangtao tmp]# mkdir /aaaaaa/aaa
mkdir: cannot create directory `/aaaaaa/aaa': No such file or directory
[root@wangtao tmp]# echo $?
1
[root@wangtao tmp]# mkdir -p /aaaaa/aaa
[root@wangtao tmp]# echo $?
0
程序执行有两类结果:
程序的返回值;
程序的执行状态结果;
———————————————
B.命令行展开总结:
~:展开为用户的主目录
~username:展开为指定用户的主目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
案例:/tmp/{a,b}相当于/tmp/a,/tmp/b
———————————————
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, 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
答案:
(1)mkdir -p /tmp/{a,b}_{c_d}
(2)mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/networkscripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
————————————
4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
[root@wangtao ~]# ls -l
total 0
-rw-r–r–. 1 root root 0 Jul 5 13:33 install.log
访问权限 inode 文件拥有者 创建时间 数据文件
修改时间戳信息:
touch -t 201607052234.50 install.log
————————————-
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
[root@wangtao ~]# alias
alias cp='cp -i'
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@wangtao ~]# alias list='ls'
[root@wangtao ~]# list
install.log
使用别的命令表示ls -l的命令
[root@wangtao ~]# alias cp='ls -l'
[root@wangtao ~]# cp
total 0
-rw-r–r–. 1 root root 0 Jul 5 13:33 install.log
—————————————-
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ls /var/l*[[:digit:]]*[[:lower:]]
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ls /etc/[[:digit:]]*[^[:digit:]]
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
ls /etc/[^[:alpha:]][[:alpha:]]*
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
cp -a /etc/p*[^0-9] /tmp/mytest1
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
cp -a /etc/*.d /tmp/mytest2
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
cp -a /etc/[l,m-n]*.conf /tmp/mytest3
原创文章,作者:北京-兔锅,如若转载,请注明出处:http://www.178linux.com/21942