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

相关推荐

  • 8.1-用户和组(命令篇)

    1、标准输入输出 我们知道,执行一个shell命令行时通常会自动打开三个标准文件,     即标准输入文件(stdin),通常对应终端的键盘;     标准输出文件(stdout)     标准错误输出文件(stderr),这两个文件都对应…

    Linux干货 2016-08-04
  • linux第五周小结

    不知不觉已经第五周了,好快啊!这周我们主要讲了读命令,查找命令,压缩,解压缩,安装等命令,今天我总结一下查找命令 查找命令主要有:locate和find命令,但我们经常用到的也最实用的当属find,下面我重点总结一下find命令 有时可能需要在系统中查找具有某一特征的文件(例如文件权限、文件属主、文件长度、文件类型等等)。这样做可能有很多原因。可能出于安全性…

    2017-08-13
  • 第五周博客作业

      感觉进入了年底,明显的时间不够,不管怎么说,还是要努力跟上学习的进度,不能给自己松懈找借口!  1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]]\+" /boot/grub/grub.co…

    Linux干货 2017-01-03
  • 关于大型网站技术演进的思考(三):存储的瓶颈(3)

    原文出处: 夏天的森林    存储的瓶颈写到现在就要进入到深水区了,如果我们所做的网站已经到了做数据库垂直拆分和水平拆分的阶段,那么此时我们所面临的技术难度的挑战也会大大增强。 这里我们先回顾下数据库的垂直拆分和水平拆分的定义: 垂直拆分:把一个数据库中不同业务单元的数据分到不同的数据库里。 水平拆分:是根据一定的规则把同一业务…

    Linux干货 2015-03-03
  • 谁说C语言很简单?

    前两天,Neo写了一篇《语言的歧义》其使用C语言讨论了一些语言的歧义。大家应该也顺便了解了一下C语言中的很多不可思异的东西,可能也是你从未注意到的东西。 是的,C语言并不简单,让我们来看看下面这些示例: 为什么下面的代码会返回0?(这题应该很简单吧) int x;   return x == (1&…

    Linux干货 2016-03-20
  • Linux下常用安全策略设置的六个方法

    安全第一”对于linux管理界乃至计算机也都是一个首要考虑的问题。加密的安全性依赖于密码本身而非算法!而且,此处说到的安全是指数据的完整性,由此,数据的认证安全和完整性高于数据的私密安全,也就是说数据发送者的不确定性以及数据的完整性得不到保证的话,数据的私密性当无从谈起! 1. 禁止系统响应任何从外部/内部来的ping请求攻击者一般首先通过ping命令检测此…

    Linux干货 2017-07-31

评论列表(1条)

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

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