这次博客的主要内容是基础命令,虽然普通的命令没技术含量,但是有技术含量的都是以普通的命令为基础。千里之行始于足下,Let's Go!
Linux中的命令分为内部命令和外部命令两种:
内部命令:是shell程序自身附带的命令 ,随每次启动的SHELL装入并常驻内存;(类似DOS系统的内部命令,是随每次启动的COMMAND.COM装入并常驻内存)
外部命令:在某目录有一个与命令同名的可执行文件
下面总结与文件与目录处理相关的命令的用法及用途:
1、文件处理命令:ls
命令名称:ls
命令英文原意:list
命令所在路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls [选项] [文件或目录]
-a: 显示所有文件,包括隐藏文件
-l : 以长格式显示文件的详细属性 ,一共17个位置,大家都可以自己数下。
从左到右各个字段的含义如下:
第1位表示文件类型,主要的文件类型如下:
-:一般文件
d:目录文件
b:块设备文件
c:字符设备文件
l:链接文件
p:人工管道
234位代表文件属主权限,即文件所有者的权限
567位代表文件属组权限,即文件所属组的权限
8910位代表其他用户的权限
第11位表示文件被硬链接的次数
知识点:
硬连接就像一个文件有多个文件名,
软连接就是产生一个新文件,这个文件指向另一个文件的位置,
硬连接必须在同一文件系统中,而软连接可以跨文件系统
第12位表示文件的所属用户
第13位表示文件的所属组
第14位表示文件的大小:
如果是目录,则表示目录自身的大小,目录里的内容是不显示的
一般是以“块”为单位,一个块约等于1K
第15、16位表示文件最近一次被修改的时间:
知识点:
每个文件有三个时间,被称为文件的时间戳
最近一次被访问
最近一次被修改:修改的是文件的内容
最近一次被改变:改变的是文件的属性
第17位表示文件名(目录名)
-A:跟-a相同,但不显示.和..
-n:类似于-l,但是以用户及组的id号排序
-h:与-l一起使用,文件大小会自动进行单位换算
-r:文件名逆序显示
-R:递归显示
2、文件处理命令:cd
命令名称:cd
命令英文原意:change directory
命令所在路径:shell内置命令
执行权限:所有用户
语法:cd [目录]
功能描述:切换目录
范例:
回用户的家目录:
$ cd ~
$ cd
$ cd ~USERNAME :切换至USERNAME的家目录 (注:必须要有相应的权限)
提示权限不够哈!用管理员账号操作:
$ cd - 在两个目录间来回切换
"!$" 把上个命令最后的参数作为输入:
[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:显示创建过程
范例:
bash支持命令行展开:{}
5、文件处理命令:touch
命令名称:touch
命令所在路径:/bin/touch
执行权限:所有用户
语法:touch [文件名]
功能描述:修改文件时间戳,如果文件不存在则创建空文件
范例:
相关的命令:用stat命令查看文件的属性:
stat :查看文件的属性
access:访问
modify:修改
change:改变
范例:
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 命令
范例:
敲入G,转到文件尾部:
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 ~]$
与文件及目录相关的常用命令大体就是如上面所述,下面介绍下与文件处理命令相关的知识。用过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,他会自动加上最后那个/符号,证明这是个目录,如果后面没有/的话,这个可能是目录,也可能是文件