Linux运维实战第二天:Linux基础命令之文件处理命令

这次博客的主要内容是基础命令,虽然普通的命令没技术含量,但是有技术含量的都是以普通的命令为基础。千里之行始于足下,Let's Go!

Linux中的命令分为内部命令和外部命令两种:

内部命令:是shell程序自身附带的命令 ,随每次启动的SHELL装入并常驻内存;(类似DOS系统的内部命令,是随每次启动的COMMAND.COM装入并常驻内存)

外部命令:在某目录有一个与命令同名的可执行文件

下面总结与文件与目录处理相关的命令的用法及用途:

1、文件处理命令:ls

命令名称:ls

命令英文原意:list

命令所在路径:/bin/ls

执行权限:所有用户

功能描述:显示目录文件

语法:ls  [选项] [文件或目录]

-a: 显示所有文件,包括隐藏文件

image

-l : 以长格式显示文件的详细属性 ,一共17个位置,大家都可以自己数下。

image

从左到右各个字段的含义如下:

第1位表示文件类型,主要的文件类型如下:

-:一般文件

d:目录文件

b:块设备文件

c:字符设备文件

l:链接文件

p:人工管道

234位代表文件属主权限,即文件所有者的权限

567位代表文件属组权限,即文件所属组的权限

8910位代表其他用户的权限

第11位表示文件被硬链接的次数

知识点:

硬连接就像一个文件有多个文件名,

软连接就是产生一个新文件,这个文件指向另一个文件的位置,

硬连接必须在同一文件系统中,而软连接可以跨文件系统

 

第12位表示文件的所属用户

第13位表示文件的所属组

第14位表示文件的大小:

如果是目录,则表示目录自身的大小,目录里的内容是不显示的

一般是以“块”为单位,一个块约等于1K

第15、16位表示文件最近一次被修改的时间:

知识点:

每个文件有三个时间,被称为文件的时间戳

最近一次被访问

最近一次被修改:修改的是文件的内容

最近一次被改变:改变的是文件的属性

第17位表示文件名(目录名)

-A:跟-a相同,但不显示.和..

image

-n:类似于-l,但是以用户及组的id号排序

image

-h:与-l一起使用,文件大小会自动进行单位换算

image

-r:文件名逆序显示

image

-R:递归显示

image

2、文件处理命令:cd

命令名称:cd

命令英文原意:change directory

命令所在路径:shell内置命令

执行权限:所有用户

语法:cd [目录]

功能描述:切换目录

范例:

回用户的家目录:

$ cd ~

image

$ cd 

image

$ cd ~USERNAME :切换至USERNAME的家目录 (注:必须要有相应的权限)

image

提示权限不够哈!用管理员账号操作:

image

$ cd - 在两个目录间来回切换

image

"!$" 把上个命令最后的参数作为输入:

 

[root@rhel5 jjx]# ls    
ab  ad  bin  include  kerberos  lib  sudo  test
[root@rhel5 jjx]# ls test     
ab  ad  cb  cd  exe  sudo     
[root@rhel5 jjx]# cd !$     
cd test
[root@rhel5 test]#  

3、文件处理命令:pwd

命令名称:pwd

命令英文原意:print working directory

命令所在路径:/bin/pwd

执行权限:所有用户

语法:pwd

功能描述:显示当前所在的工作目录

范例: 

[jjx@rhel5 ~]$ pwd      
[jjx@rhel5 ~]$ pwd       
/home/jjx       
[jjx@rhel5 ~]$ ls
ab  ad  bin  include  kerberos  lib  sudo  test
[jjx@rhel5 ~]$ cd test
[jjx@rhel5 test]$ pwd       
/home/jjx/test

4、文件处理命令:mkdir

命令名称:mkdir

命令英文原意:make directories

命令所在路径:/bin/mkdir

执行权限:所有用户

语法:mkdir [选项] [目录名]

功能描述:创建新目录

常用的选项:

-p:如果目录不存在默认创建

-v:显示创建过程

范例:

image

bash支持命令行展开:{}

image

5、文件处理命令:touch

命令名称:touch

命令所在路径:/bin/touch

执行权限:所有用户

语法:touch [文件名]

功能描述:修改文件时间戳,如果文件不存在则创建空文件

范例:

image

相关的命令:用stat命令查看文件的属性:

stat :查看文件的属性

access:访问

modify:修改

change:改变

范例:

image

6、文件处理命令:cp

命令名称:cp

命令英文原意:copy

命令所在路径:/bin/cp

执行权限:所有用户

语法:cp 选项 [源文件或目录] [目的目录]

常用选项:

-r:递归复制

-a:全递归复制,尽可能将档案状态、权限等资料都照原状予以复制,其作用等于dpR选项的组合

-i:交互式(覆盖前提醒确认)

-v:显示命令执行过程

功能描述:复制文件或目录

范例:

 

[jjx@rhel5 ~]$ ls
a_c  a_d  b_c  b_d  bin  include  kerberos  lib  sudo       
[jjx@rhel5 ~]$ mkdir -pv test
mkdir: 已创建目录 “test”       
[jjx@rhel5 ~]$ ls
a_c  a_d  b_c  b_d  bin  include  kerberos  lib  sudo  test
[jjx@rhel5 ~]$ cp -rv a_c/ ./test/       
“a_c/” -> “./test/a_c”       
[jjx@rhel5 ~]$ ls ./test/a_c

7、文件处理命令:mv

命令名称:mv

命令英文原意:move

命令所在路径:/bin/mv

执行权限:所有用户

功能描述:移动文件、更名

语法:mv 选项 [源文件或目录] [目的目录]

常用选项:

-i:交互式(覆盖前提醒确认)

-v:显示命令执行过程

范例:

 

[jjx@rhel5 ~]$ ls
a_d  b_c  b_d  bin  file01.txt  include  kerberos  lib  sudo  test
[jjx@rhel5 ~]$ cp -v file01.txt test/       
“file01.txt” -> “test/file01.txt”       
[jjx@rhel5 ~]$ mv -iv file01.txt test/       
mv:是否覆盖“test/file01.txt”? y       
“file01.txt” -> “test/file01.txt”       

8、文件处理命令:rm

命令名称:rm

命令英文原意:remove

命令所在路径:/bin/rm

执行权限:所有用户

功能描述:删除文件

语法:rm 选项 [文件或目录]

常用选项:

-i:交互式(删除前提醒确认)

-f:强行删除

-r:递归删除目录及其内部的所有文件

范例:

 

[jjx@rhel5 ~]$ ls
a_d  b_c  b_d  bin  include  kerberos  lib  sudo       
[jjx@rhel5 ~]$ rm -rf a_d       
[jjx@rhel5 ~]$ ls
b_c  b_d  bin  include  kerberos  lib  sudo       
[jjx@rhel5 ~]$ 

 

[jjx@rhel5 ~]$ ls
b_c  b_d  bin  include  kerberos  lib  sudo       
[jjx@rhel5 ~]$ rm -ir b_c       
rm:是否删除 目录 “b_c”? y       
[jjx@rhel5 ~]$ ls
b_d  bin  include  kerberos  lib  sudo       
[jjx@rhel5 ~]$ 

注意:使用#rm -rf  命令时要特别小心,操作是不可逆的,使用过程中也没有任何消息提示!

9、文件处理命令:cat(tac)

命令名称:cat(tac)

命令英文原意:concatenate and display files

命令所在路径:/bin/cat

执行权限:所有用户

功能描述:显示文件内容

语法:cat [文件名]

范例:

 

[jjx@rhel5 ~]$ ls
b_d  bin  file01.txt  include  kerberos  lib  sudo       
[jjx@rhel5 ~]$ cat bin/       
cat: bin/: 是一个目录       
[jjx@rhel5 ~]$ cat file01.txt  
This is a test file!       
Hello World!       
Today is Sunday!       
[jjx@rhel5 ~]$ tac file01.txt  
Today is Sunday!       
Hello World!       
This is a test file!       
[jjx@rhel5 ~]$ 

10、文件处理命令:more

命令名称:more

命令所在路径:/bin/more

执行权限:所有用户

功能描述:分页显示文件内容

语法:more [文件名]

基本操作:

空格键:向后翻一屏    
b:向前翻一屏     
enter:向后翻一行     
ctrl+d:向后翻半屏     
ctrl+u:向前翻半屏     
q或Q:退出

范例:

 

[jjx@rhel5 ~]$ more /etc/fstab  
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1       
LABEL=/boot             /boot                   ext3    defaults        1 2       
devpts                  /dev/pts                devpts  gid=5,mode=620 0 0       
tmpfs                   /dev/shm                tmpfs   defaults        0 0       
proc                    /proc                   proc    defaults        0 0       
sysfs                   /sys                    sysfs   defaults        0 0       
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0       
[jjx@rhel5 ~]$ 

 

[jjx@rhel5 ~]$ more /etc/services  
# /etc/services:     
# $Id: services,v 1.42 2006/02/23 13:09:23 pknirsch Exp $     
#     
# Network services, Internet style     
#     
# Note that it is presently the policy of IANA to assign a single well-known     
# port number for both TCP and UDP; hence, most entries here have two entries     
# even if the protocol doesn't support UDP operations.     
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports     
# are included, only the more common ones.     
#     
# The latest IANA port assignments can be gotten from     
#       http://www.iana.org/assignments/port-numbers     
# The Well Known Ports are those from 0 through 1023.     
# The Registered Ports are those from 1024 through 49151     
# The Dynamic and/or Private Ports are those from 49152 through 65535     
#     
# Each line describes one service, and is of the form:     
#  
# service-name  port/protocol  [aliases ...]   [# comment]     
tcpmux          1/tcp                           # TCP port service multiplexer     
tcpmux          1/udp                           # TCP port service multiplexer     
rje             5/tcp                           # Remote Job Entry     
rje             5/udp                           # Remote Job Entry     
echo 7/tcp     
echo 7/udp     
discard         9/tcp           sink null     
discard         9/udp           sink null     
systat          11/tcp          users     
--More--(0%)

 

 

11、文件处理命令:less

命令名称:less

命令所在路径:/bin/less

执行权限:所有用户

功能描述:类似于more命令,但使用 less 可以随意浏览文件

语法:less [文件名]

基本操作:

1、搜索

当使用命令 less file-name 打开一个文件后,可以使用下面的方式在文件中搜索。搜索时整个文本中匹配的部分会被高亮显示。

向前搜索

/ - 使用一个模式进行搜索,并定位到下一个匹配的文本

n - 向前查找下一个匹配的文本

N - 向后查找前一个匹配的文本

向后搜索

? - 使用模式进行搜索,并定位到前一个匹配的文本

n - 向后查找下一个匹配的文本

N - 向前查找前一个匹配的文本

2、全屏导航

ctrl + F - 向前移动一屏

ctrl + B - 向后移动一屏

ctrl + D - 向前移动半屏

ctrl + U - 向后移动半屏

3、单行导航

j - 向前移动一行

k - 向后移动一行

4、 其它导航

G -移动到最后一行

g -移动到第一行

q 或Q-退出 less 命令

 

范例: 

image

敲入G,转到文件尾部:

image

12、文件处理命令:head

命令名称:head

命令所在路径:/bin/head

执行权限:所有用户

功能描述:查看文件的前几行,默认查看前10行

语法:head -num [文件名]

-num 显示文件的前num行

范例:

 

[jjx@rhel5 ~]$ head /etc/services  
# /etc/services:       
# $Id: services,v 1.42 2006/02/23 13:09:23 pknirsch Exp $       
#       
# Network services, Internet style       
#       
# Note that it is presently the policy of IANA to assign a single well-known       
# port number for both TCP and UDP; hence, most entries here have two entries       
# even if the protocol doesn't support UDP operations.       
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports       
# are included, only the more common ones.       
[jjx@rhel5 ~]$ head -20 /etc/services  
# /etc/services:       
# $Id: services,v 1.42 2006/02/23 13:09:23 pknirsch Exp $       
#       
# Network services, Internet style       
#       
# Note that it is presently the policy of IANA to assign a single well-known       
# port number for both TCP and UDP; hence, most entries here have two entries       
# even if the protocol doesn't support UDP operations.       
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports       
# are included, only the more common ones.       
#       
# The latest IANA port assignments can be gotten from       
#       http://www.iana.org/assignments/port-numbers       
# The Well Known Ports are those from 0 through 1023.       
# The Registered Ports are those from 1024 through 49151       
# The Dynamic and/or Private Ports are those from 49152 through 65535       
#       
# Each line describes one service, and is of the form:       
#  
# service-name  port/protocol  [aliases ...]   [# comment]       
[jjx@rhel5 ~]$  
 

13、文件处理命令:tail

命令名称:tail

命令所在路径:/bin/tail

执行权限:所有用户

功能描述:查看文件的后几行,默认查看后10行

语法:tail 选项 [文件名]

常用选项:

-num:显示文件的后num行

-f :动态显示文件内容

范例:

 

[jjx@rhel5 ~]$ tail /etc/services  
nimspooler      48001/udp                       # Nimbus Spooler       
nimhub          48002/tcp                       # Nimbus Hub       
nimhub          48002/udp                       # Nimbus Hub       
nimgtw          48003/tcp                       # Nimbus Gateway       
nimgtw          48003/udp                       # Nimbus Gateway       
com-bardac-dw   48556/tcp                       # com-bardac-dw       
com-bardac-dw   48556/udp                       # com-bardac-dw       
iqobject        48619/tcp                       # iqobject       
iqobject        48619/udp                       # iqobject       
# Local services       
[jjx@rhel5 ~]$ tail -20 /etc/services  
dbbrowse        47557/udp                       # Databeam Corporation       
directplaysrvr  47624/tcp                       # Direct Play Server       
directplaysrvr  47624/udp                       # Direct Play Server       
ap              47806/tcp                       # ALC Protocol       
ap              47806/udp                       # ALC Protocol       
bacnet          47808/tcp                       # Building Automation and Control Networks       
bacnet          47808/udp                       # Building Automation and Control Networks       
nimcontroller   48000/tcp                       # Nimbus Controller       
nimcontroller   48000/udp                       # Nimbus Controller       
nimspooler      48001/tcp                       # Nimbus Spooler       
nimspooler      48001/udp                       # Nimbus Spooler       
nimhub          48002/tcp                       # Nimbus Hub       
nimhub          48002/udp                       # Nimbus Hub       
nimgtw          48003/tcp                       # Nimbus Gateway       
nimgtw          48003/udp                       # Nimbus Gateway       
com-bardac-dw   48556/tcp                       # com-bardac-dw       
com-bardac-dw   48556/udp                       # com-bardac-dw       
iqobject        48619/tcp                       # iqobject       
iqobject        48619/udp                       # iqobject       
# Local services       
[jjx@rhel5 ~]$ 

14、文件处理命令:nano

nano:简单的文本编辑器

命令名称:nano

执行权限:所有用户

功能描述:用文本编辑器打开一个文件进行编辑,若文件不存在则创建新文件

语法:nano [文件名]

范例:

 

[jjx@rhel5 ~]$ ls
b_d  bin  file01.txt  include  kerberos  lib  sudo       
[jjx@rhel5 ~]$ nano file02.txt       
[jjx@rhel5 ~]$ ls
b_d  bin  file01.txt  file02.txt  include  kerberos  lib  sudo       
[jjx@rhel5 ~]$ cat file02.txt  
This is a nano test file!       
[jjx@rhel5 ~]$ 

image

与文件及目录相关的常用命令大体就是如上面所述,下面介绍下与文件处理命令相关的知识。用过DOS的地球人都知道通配符的概念,Linux的SHELL当然也支持通配符并且比DOS更为强大:

bash支持的文件通配符:

*:表示任意长度的任意字符;

?:表示任意单个字符

[]:指定范围内的任意单个字符:

[a-z]:所有的小写字母

[A-Z]:所有的大写字母

[0-9a-zA-Z]:所有的数字和字母

字符集合:

[:digit:]:所有数字,相当于0-9   如:[[:digit:]]

[:lower:]:所有小写字母

[:upper:]:所有大写字母

[:alpha:]:所有的字母

[:alnum:]:相当于[0-9a-zA-Z]

[:space:]:空白字符

[:punct:]:所有标点符号

[^]:脱字符,取反,指定范围外的任意单个字符,如:[^0-9]

范例:

将/etc/目录下以i开头的所有文件复制到./test/目录下:

 

[jjx@rhel5 ~]$ ls
b_d  bin  file01.txt  file02.txt  include  kerberos  lib  sudo  test
[jjx@rhel5 ~]$ cp /etc/i* test/       
cp: 略过目录 “/etc/init.d”       
cp: 略过目录 “/etc/iproute2”       
cp: 略过目录 “/etc/isdn”       
[jjx@rhel5 ~]$ lstest
idmapd.conf  initlog.conf  inittab  inputrc  issue  issue.net       
[jjx@rhel5 ~]$ 

复制/etc/目录下以p开头,中间跟了4个任意字符,并以d结尾的文件至./tmp/a目录中;如果a不存在,先创建出来; 

[jjx@rhel5 ~]$ ls
b_d  bin  file01.txt  file02.txt  include  kerberos  lib  sudo  test  tmp     
[jjx@rhel5 ~]$ ls tmp     
[jjx@rhel5 ~]$ mkdir tmp/a;cp -r /etc/p????d tmp/a     
[jjx@rhel5 ~]$ ls tmp/a     
passwd     
[jjx@rhel5 ~]$  

 

列出./test/下所有以数字和非数字结尾的文件:

 

[jjx@rhel5 test]$ ls ./test
ls: ./test: 没有那个文件或目录     
[jjx@rhel5 test]$ ls
idmapd.conf  initlog.conf  inittab  inputrc  issue  issue.net     
[jjx@rhel5 test]$ ls *[0-9]     
ls: *[0-9]: 没有那个文件或目录     
[jjx@rhel5 test]$ ls *[^0-9]     
idmapd.conf  initlog.conf  inittab  inputrc  issue  issue.net     
[jjx@rhel5 test]$ ls *[^[:digit:]]     
idmapd.conf  initlog.conf  inittab  inputrc  issue  issue.net     
[jjx@rhel5 test]$ ls *[[:alpha:]]     
idmapd.conf  initlog.conf  inittab  inputrc  issue  issue.net     
[jjx@rhel5 test]$  

命令与shell的关系(关于shell的几点说明):

bash允许一次执行多个命令,命令之间用”;"隔开;

理解命令的程序是bash;因此,可以在bash提示符下执行命令;

shell脚本是命令的堆砌,但还有额外的流程控制机制;

命令操作技巧:

 

在打命令和目录的时候,我们一定要用TAB键来补全,这样比较轻松,也能检查命令是否正确。如果不能补全就证明我们敲入的命令有问题

用命令补全,TAB,他会自动加上最后那个/符号,证明这是个目录,如果后面没有/的话,这个可能是目录,也可能是文件

你可能感兴趣的:(linux,基础命令,执行文件)