Linux基础 & bash相关

Q1:Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

  • 文件管理类命令:

cd, ls, touch, cp, mv, rm, cat, tac, more, less, tail, head;

  • 详细介绍以上命令:

cd:

在Linux文件系统上,可以使用切换目录命令cd将shell会话切换到另一个目录。

命令格式:

~]# cd DESTINATION

DESTINATION参数可以用可以用两种方式表示:一种是使用绝对文件路径,另一种是使用相对文件路径。

示例:

绝对路径:
[root@radio_freshman /]# cd /test/bash/
[root@radio_freshman bash]# pwd
/test/bash
相对路径:
[root@radio_freshman bash]# cd ../../tmp/
[root@radio_freshman tmp]# pwd
/tmp

ls:

ls命令最基本的形式会显示当前目录下的文件和目录。

命令格式:

~]# ls

参数:

-a:显示包括隐藏在内的,全部的文件和目录显示出来;
-l:产生长列表格式输出,包含了目录中每个文件的更多相关信息;
-F:在目录名后面加了正斜线(/);
-R:递归选项,列出了当前目录下包含子目录中的文件;

示例:

[root@radio_freshman radio]# ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  test
#文件前面有(.)就是隐藏的文件;
[root@radio_freshman test]# ls -l
总用量 56
drwxr-xr-x. 2 root root    6 11月  4 16:03 abc
drwxr-xr-x. 2 root root   21 11月  3 10:31 bash
-rw-r--r--. 1 root root   28 11月  4 15:20 catfile
-rwxr--r--. 1 root root  187 10月 30 18:50 class_exrecise.sh
-rw-r--r--. 1 root root  485 11月  1 00:02 fstable
-rw-r--r--. 1 root root  481 10月 31 22:54 fstable.new
-rw-r--r--. 1 root root   46 10月 31 21:51 fstable.patch
-rw-r--r--. 1 root root  553 11月  5 18:40 group
-rw-r--r--. 1 root root 7507 11月  4 17:01 lastfile
-rw-r--r--. 1 root root 2233 11月  5 11:40 lastfile2
-rw-r--r--. 1 root root  428 11月  5 10:37 man.config
-rwxr--r--. 1 root root  100 10月 30 18:37 myfirst.sh
-rw-r--r--. 1 root root 1160 11月  4 17:09 passwd
-rwxr-xr-x. 1 root root  683 11月  5 10:28 regular_express.txt
-rw-r--r--. 1 root root 3232 11月  4 23:00 rsyslog.conf
-rw-r--r--. 1 root root    0 11月  5 17:15 test
drwxr-xr-x. 2 root root   32 11月  4 22:17 vbird
#这里详细的列出了文件的权限、属主、属组等信息;
[root@radio_freshman litter]# ls -F
abc/  catfile  def/  myfile.6it7  myfile.AAYW  myfile.Bb0o  myfile.NPdr  myfile.RBP6
#最后有正斜线的,如:abc和def都是目录,其他的均为文件;
[root@radio_freshman litter]# ls -R
.:
abc  catfile  def  myfile.6it7  myfile.AAYW  myfile.Bb0o  myfile.NPdr  myfile.RBP6

./abc:
1  2  h

./abc/h:

./def:
3  4  5
#这里递归显示了目录abc和目录def下面的内容;

touch:

用于创建空文件。

命令格式:

~]# touch FILENAME

示例:

[root@radio_freshman test]# touch newfile
[root@radio_freshman test]# ls -l newfile 
-rw-r--r--. 1 root root 0 11月  5 21:47 newfile
#创建了属主为root用户、属组为root的名字为newfile的文件;

cp:

在文件系统中,cp可以将文件或目录从一个位置复制到另一个位置。

命令格式:

~]# cp SOURCE DESTINATION

示例:

[root@radio_freshman /]# cd /test/abc/
[root@radio_freshman abc]# ls
1
[root@radio_freshman abc]# cp ../regular_express.txt /test/abc/
[root@radio_freshman abc]# ls
1  regular_express.txt
#复制前后通过ls命令运行结果作对比,cp复制命令成功;

mv:

在Linux系统中,重命名文件称为移动,mv命令可以将文件和目录移动到另一个位置或者重命名。

命令格式:

~]# mv SOURCE DESTINATION

示例:

[root@radio_freshman abc]# ls
1  regular_express.txt
[root@radio_freshman abc]# mv ../passwd ./
[root@radio_freshman abc]# ls
1  passwd  regular_express.txt
#复制前后通过ls命令运行结果作对比,mv移动文件成功;
[root@radio_freshman abc]# mv ./1 ./2
[root@radio_freshman abc]# ls
2  passwd  regular_express.txt
#这里mv命令执行了修改文件名;

rm:

命令rm用于删除文件。

命令格式:

~]#  rm [OPTION]... FILE...

选项:

-i:删除前询问是否真的删除文件;
-f:强制删除,不询问;
-r:可用于递归删除目录;

示例:

[root@radio_freshman abc]# ls
1  2  3  regular_express.txt
[root@radio_freshman abc]# rm -i 3
rm:是否删除普通空文件 "3"?y
[root@radio_freshman abc]# ls
1  2  regular_express.txt
[root@radio_freshman abc]# touch 4
[root@radio_freshman abc]# ls
1  2  4  regular_express.txt
[root@radio_freshman abc]# rm -f 4
[root@radio_freshman abc]# ls
1  2  regular_express.txt
[root@radio_freshman abc]# tree 2
2
└── 3
    └── 4

2 directories, 0 files
[root@radio_freshman abc]# rm -rf 2
[root@radio_freshman abc]# ls
1  regular_express.txt
#通过tree命令,不难发现目录2内部还有两级目录,用-r选项递归删除了整个目录2;

cat:

cat命令是显示文本文件中所有数据。

命令格式:

~]# cat [OPTION]... [FILE]...

选项:

-n:给显示的内容加上行号;
-b:只给有文本的行加上行号;

示例:

[root@radio_freshman abc]# cat cattesting.file 
this file is for testing command cat.
hello,everyone!

the upper is a blank line.
OK now stop

[root@radio_freshman abc]# cat -n cattesting.file 
     1    this file is for testing command cat.
     2    hello,everyone!
     3    
     4    the upper is a blank line.
     5    OK now stop
     6    
[root@radio_freshman abc]# cat -b cattesting.file 
     1    this file is for testing command cat.
     2    hello,everyone!

     3    the upper is a blank line.
     4    OK now stop

tac:

tac从最后一行开始显示。

命令格式:

~]# tac FILE

示例:

[root@radio_freshman abc]# tac tactesting.file 
OK now stop
to be a excellent ops is a long way to go.
this file is for testing command tac.
[root@radio_freshman abc]# cat tactesting.file
this file is for testing command tac.
to be a excellent ops is a long way to go.
OK now stop
#通过命令cat和命令tac运行结果的比较发现,tac是从最后一行开始显示。

more:

cat命令的主要缺陷是:一旦运行,就无法控制后面的操作。然而,more命令会显示文本文件的内容,会在显示每页数据之后停下来。

命令格式:

~]# more FILE

less:

less的用法比起more更有弹性,在使用more的时候,并没有向前翻页,只能往后看;less可以使用上、下等按键实现往前往后翻看文件。

命令格式:

~]# less FILE

tail:

命令tail只看结尾几行。

命令格式:

~]# tail [OPTION]... [FILE]...

选项:

-n:后面接数字,代表显示几行的意思;

示例:

[root@radio_freshman test]# tail -n 5 passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
radio:x:1000:1000:radio:/home/radio:/bin/bash
user3:x:1001:1001::/home/user3:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin
#仅仅显示了passwd文件的最后5行;

head:

head命令只看头几行。

命令格式:

~]# head [OPTION]... [FILE]...

选项:

-n:后面接数字,代表显示几行的意思。

示例:

[root@radio_freshman test]# head -n 5 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#仅仅显示了passwd文件的前5行;

Q2:bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

  • bash特性之命令执行状态返回值:

成功:0

失败:1-255

命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;

示例:

[root@radio_freshman litter]# ls
abc  catfile  def  myfile.6it7  myfile.AAYW  myfile.Bb0o  myfile.NPdr  myfile.RBP6
[root@radio_freshman litter]# echo $?
0
#返回值为0,则表面ls命令执行成功;
[root@radio_freshman litter]# lss 
-bash: lss: 未找到命令
[root@radio_freshman litter]# echo $?
127
[root@radio_freshman litter]# ls /litterr
ls: 无法访问/litterr: 没有那个文件或目录
[root@radio_freshman litter]# echo $?
2
#同样的是执行失败,返回值分别是127和2,则说明不同的失败原因,返回的值不一样;
  • bash特性之命令行展开:

~:自动展开为用户的家目录,或指定的用户的家目录;

{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;

示例:

[root@radio_freshman ~]# whoami
root
[root@radio_freshman ~]# cd ~
[root@radio_freshman ~]# pwd
/root
#说明了~自动展开为用户的家目录;
[root@radio_freshman def]# ls
1
[root@radio_freshman def]# mkdir -pv ./{a/{c,d},b}
mkdir: 已创建目录 "./a"
mkdir: 已创建目录 "./a/c"
mkdir: 已创建目录 "./a/d"
mkdir: 已创建目录 "./b"
[root@radio_freshman def]# ls
1  a  b
[root@radio_freshman def]# tree
.
├── 1
├── a
│   ├── c
│   └── d
└── b
#通过tree命令可以看出,通过{}展开多个路径创建成功;

Q3:请使用命令行展开功能来完成以下练习:

(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

(2)、创建/tmp/mylinux目录下的:

图片1.png

(1)
    ~]# mkdir -pv /tmp/{a_{c,d},b_{c,d}}
(2)
    ~]# mkdir -pv /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}}

Q4:文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

一般文件包含两类数据,元数据(metadata)和数据(data);

元数据信息包括文件路径、文件大小、文件类型、设备、权限、环境、时间戳;

元数据信息通过stat命令查看;

示例:

~]# stat /test/regular_express.txt 
  文件:"/test/regular_express.txt"
  大小:683           块:8          IO 块:4096   普通文件
设备:fd00h/64768d    Inode:425350      硬链接:1
权限:(0755/-rwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:default_t:s0
最近访问:2016-11-05 10:28:29.964095453 +0800
最近更改:2016-11-05 10:28:24.627095338 +0800
最近改动:2016-11-05 10:28:24.627095338 +0800
创建时间:-

修改文件的时间戳信息:

使用touch命令可以修改时间戳。

命令格式:

touch [OPTION]... FILE...

选项:

-a: 仅修改access time;
-m:仅修改modify time;
说明:一般可以改变atime 和 mtime,因为atime 和 mtime发生变化时,ctime是自动进行的,即 change time是不可以手动更改的。

Q5:如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?

定义命令别名:

使用命令alias定义命令的别名。

命令格式:

~]# alias NAME=’COMMAND [OPTION]’

示例:

~]# alias lm='ls -l | less'

在命令中引用另一个命令的执行结果:

方法: $(COMMAND)

示例:

~]#  touch tfile-$(date +%F-%H-%M-%S)
~]# ls
tfile-2016-11-06-10-13-57
#示例中,引用了date命令的执行结果,通过ls命令不难发现,文件名里含有了时间信息;

Q6:显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

~]# ls /var/ | grep '^l.*[[:digit:]]\{1,\}.*[[:lower:]]$'

Q7:显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

~]# ls /etc/ | grep '^[0-9].*[^0-9]$'

Q8:显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

~]# ls /etc/ | grep '^[^a-zA-Z][a-zA-Z].*'

Q9:在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

~]# touch /tmp/tfile-$(date +%F-%H-%M-%S)

Q10:复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

~]# cp -r /etc/p*[^0-9] /tmp/mytest1

Q11:复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。

~]# cp -r /etc/*.d /tmp/mytest2/

Q12:复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

~]# cp /etc/[lmn]*.conf /tmp/mytest3/

原创文章,作者:N24_VC,如若转载,请注明出处:http://www.178linux.com/57909

(0)
N24_VCN24_VC
上一篇 2016-11-06
下一篇 2016-11-06

相关推荐

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-10 17:22

    总结的不错~最后的几个题目可以多思考几种不同的方法来实现~~继续加油~