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)
上一篇 2016-11-06 14:33
下一篇 2016-11-06 16:00

相关推荐

  • Linux文件查找命令find和压缩解压缩

    概述     Linux系统上一切皆文件,那么随着时间的推移和管理的服务器增加,在众多的文件中,如何找到我们需要的文件,这就需要用到文件查找命令了。本章就分享下关于文件查找命令的一些内容和压缩解压缩的相关内容。     具体分为一下几个部分:    …

    Linux干货 2016-08-16
  • 实时文件查找工具–find

    find [option] …[查找路径] [查找条件] [处理动作] 起始路径:指定具体的目标路径,默认为当前目录 查找条件:指定查找标准,可以根据文件名,权限,文件大小等标准进行。默认为指定路径下的所有文件 处理动作:对符合条件的文件做什么操作 1 查找条件: (1)根据文件名查找:  -name “文件名称” 支持使用glob -iname…

    Linux干货 2017-07-02
  • HA专题: 使用pacemaker+corosync实现MySQL高可用

    HA专题: 使用pacemaker+corosync实现MySQL高可用 前言 实验拓扑 实验环境 实验步骤 准备工作 安装HA组件并配置 配置NFS 配置MySQL 配置HA资源 测试 总结 前言 上篇文章我们介绍了使用pacemkaer+corosync实现简单的nginx高可用, 这篇文章我们介绍如何使用pacemaker+corosync实现MySQ…

    Linux干货 2016-04-11
  • 马哥教育网络第21期-第十二周课程练习

    1、请描述一次完整的http请求处理过程; (1) 建立或处理连接:接收请求或拒绝请求 (2) 接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程;并发访问响应模型(Web I/O): //服务器接受客户端的请求 单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应; //一个进程只有一个…

    Linux干货 2016-12-26
  • awk简介

    Awk介绍   报告生成器,格式化文本输出 gawk:模式扫描和处理语言 基本用法: Awk [option]  ‘program’ var=value file Awk [ option]  -F    programfile var =value file   F指明分隔符 Awk [option ]   ‘BEGIN’{ACTION…}  …

    Linux干货 2018-01-02
  • 第1周作业

    第一周作业   1、描述计算机的组成及其功能。 计算机由运算器,控制器,存储器,输入装置和输出装置五大部件组成计算机 运算器,控制器:CPU 存储器:内存和硬盘 输入装置和输出装置:键鼠和显示器   2、按系列罗列Linux的发行版本,并描述不同版本的联系和区别。   linux的发行版本大致分为两大类,一类是商业公司维护的发行…

    Linux干货 2017-08-24

评论列表(1条)

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

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