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

相关推荐

  • 集中练习7-bash脚本

    集中练习7-bash脚本

    Linux干货 2017-12-05
  • Bash快捷键

    Ctrl + a :移到命令行首Ctrl + e :移到命令行尾Ctrl + f :按字符前移(右向)Ctrl + b :按字符后移(左向)Alt + f :按单词前移(右向)Alt + b :按单词后移(左向)Ctrl + xx:在命令行首和光标之间移动Ctrl + u :从光标处删除至命令行首Ctrl + k :从光标处删除至命令行尾Ctrl + w :…

    Linux干货 2017-03-26
  • 搭建一套LVS-DR模型的高性能集群(LVS-DR+Nginx+Mariadb+Nfs+php-fpm+wordpress)

    架构简介 参加马哥linux培训一周了,自己感觉每天都进步很多,现在来说说这个架构,也是架构师第一周的作业第二题。搭建一套LVS-DR模型的高性能集群,做了两天终于完成并实现了这个架构,我设计的架构图如下所示: 此架构主要是用ipvsadm来实现高性能集群,Realserver(RS1,RS2)安装配置nginx,RS服务器分别配置了一个内网,一个外网。正常…

    Linux干货 2016-12-06
  • 基于pxe部署系统

    一、前言 在生产环境中,我们经常遇到需要部署部署多台服务器。如果我们每部署一台服务器都要拿着系统盘到机房部署,守在服务器面前,那么我们的效率是十分低下的。况且有时候机房并不在我们身边。那么我们可以通过让机房值班人员为每台服务器配置好远程管理卡,运维人员通过远程管理卡,远程登入服务器进行操作。 二、pxe原理 pxe原理是通过服务器上网卡中支持的pxe启动,通…

    Linux干货 2015-09-14
  • 磁盘管理(1)

    1、磁盘结构(机械硬盘) (1)磁盘构成: 磁臂(机械手臂):连接并固定磁头 马达(电机):可以转动盘片,让磁臂上的磁头可以在盘片上读写数据 扇区:最小的物理存储单位,每个扇区为512bytes 磁头:可以读写数据 盘片:主要记录数据 柱面:将扇区组成一个圆就是柱面,柱面是分区的最小单位 (2)磁盘接口 并口:IDE  SCSI&nbsp…

    Linux干货 2016-08-30
  • 学习宣言

    此刻打盹,你将做梦,此刻学习,你将圆梦! 为了财富自由,前进!

    Linux干货 2016-12-28

评论列表(1条)

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

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