前言
从本篇文章开始我将开始分享Linux常用的命令了。其实刚开始的时候会经常出错,因为你还不熟悉。
这里有两个Linux最常见的报错提示:
- Command not found
找不到命令(我们敲入的命令有误或者该命令还没安装) - No Such file or directory
找不到我们输入的文件或者目录。
这只是我们在后面操作Linux系统时会遇到的两个很常见的问题报错提示,其实大家在后面遇到英文
提示的信息,不要刻意的去忽视,这是用来帮助我们解决问题的很好的提示。而英文大家遇到不会了
就去谷歌翻译,百度翻译查查,总归就是那些单词。
一、目录处理命令
1.1 显示目录文件命令:ls
- 命令名称:ls
- 英文原意:list
- 命令所在路径:/bin/list
- 执行权限:所有用户
- 功能:显示当前目录的文件和目录
- 语法:ls 选项【-ald】【文件或目录】
-a 显示所有文件,包括隐藏文件
-l 详细信息显示
-d 仅显示目录名,而不显示目录下的内容列表
-t 用文件和目录的更改时间排序,可以用第一个显示的文件判断最近修改的文件.
-R 递归显示某个命令下的所有目录和文件
举例:
注意:. (点)开头的文件除非是目录,否则就是隐藏文件
[lance@master ~]$ ll
total 11564
-rw-rw-r--. 1 lance lance 27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance 66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
[lance@master ~]$ ls -dl
drwx------. 4 lance lance 231 Mar 30 14:09 .
[lance@master ~]$ ls -lt
total 11564
-rw-rw-r--. 1 lance lance 27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance 66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
[lance@master ~]$ ls -la
total 11584
drwx------. 4 lance lance 231 Mar 30 14:09 .
drwxr-xr-x. 3 root root 19 Feb 21 20:40 ..
-rw-------. 1 lance lance 1939 Mar 30 12:46 .bash_history
-rw-r--r--. 1 lance lance 18 Aug 3 2016 .bash_logout
-rw-r--r--. 1 lance lance 193 Aug 3 2016 .bash_profile
-rw-r--r--. 1 lance lance 392 Feb 21 22:47 .bashrc
-rw-------. 1 lance lance 0 Mar 28 12:02 .dbshell
-rw-rw-r--. 1 lance lance 27 Mar 30 14:09 lance.txt
-rw-------. 1 lance lance 0 Mar 28 12:02 .mongorc.js
drwxrwxr-x. 2 lance lance 40 Feb 21 22:47 .oracle_jre_usage
-rw-------. 1 lance lance 1588 Mar 28 20:25 .rediscli_history
drwxrwxr-x. 2 lance lance 66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
关于目录或者文件的详细信息的说明:
举例:
-rw-rw-r--. 1 lance lance 27 Mar 30 14:09 lance.txt
第一部分:-rw-rw-r–
第一个字符表示文件类型,文件类型共有一下几种:
1)“d” 表示目录文件(Directory File)
2)“-” 表示常规文件(Regular File)
3)“c” 表示字符设备文件(Character Device File)
4)“b” 表示块设备文件(Block Device File)
5)“s” 表示套接字文件(Sock File)
6)“l” 表示链接文件(Link File)
7)“p” 表示管道文件(Pipe File)
第二、三、四个字符:表示拥有者的读、写、执行权限。
第五、六、七个字符:表示同组人的读、写、执行权限。
第八、九、十个字符:表示其他人的读、写、执行权限。
注意:
“r” 表示“读”权限
“w” 表示“写”权限,对于目录来说表示可生成子目录或者文件的权限
“x” 表示“执行”权限,对于目录来说表示可以查找该目录下的子目录或者文件的权限
“-” 表示没有权限
第二部分:1
如果该文件是目录文件,则该数字表示该目录下的子目录数
如果该文件是普通文件,则该数字表示该文件的硬链接(别名)第三部分:lance
表示该文件的拥有者第四部分:lance
表示该文件的所属组第五部分:27
表示该文件的所占磁盘空间的大小第六部分:Mar 30 14:09
表示该文件的最后一次修改时间第七部分:lance.txt
表示该文件的文件名
1.2 创建目录命令:mkdir
- 命令名称:mkdir
- 英文原意:make directories
- 命令所在路径:/bin/mkdir
- 执行权限:所有用户
- 功能:创建新目录
- 语法:mkdir 【-p】【目录名】
-p 递归创建
举例:
[lance@master ~]$ mkdir createmk
[lance@master ~]$ mkdir oneset/lance
mkdir: cannot create directory ‘oneset/lance’: No such file or directory
[lance@master ~]$ mkdir -p oneset/lance
[lance@master ~]$ mkdir oneset
mkdir: cannot create directory ‘oneset’: File exists
注意:
- 创建的目录已经存在, 那么 Linux 会提示我们 Linux 无法创建它。
- 不带任何参数运行 mkdir 命令会在当前目录下创建目录。
- 不带上-p,如果新建的文件上级目录不存在则不会执行成功这种说法是错误的。
加或者不加上 -p 前面的目录没有得都会依次创建。 - 创建目录的首要条件是, 在想要创建目录的目标路径下你必须具有访问权限。
1.3 切换目录命令:cd
- 命令名称:cd
- 英文原意:change directory
- 命令所在路径:shell 内置命令
- 执行权限:所有用户
- 功能:切换目录
- 语法: cd【目录名】
使用介绍:
切换到指定目录:cd /oneset
回到上一级目录:cd ..
还是在当前目录:cd .
返回上两级目录:cd ../..
返回进入此目录之前所在的目录:cd -
举例:
[lance@master oneset]$ cd lance/
[lance@master lance]$ cd -
/home/lance/oneset
[lance@master oneset]$ cd ..
[lance@master ~]$ cd .
拓展:shell内置命令和外部命令的区别
ls命令和mkdir命令都有命令的所在路径,而cd命令我们说是shell内置命令。这两者便是
Linux内置命令和外部命令。
- 内置命令
内置命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些
命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就
被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,
因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。
- 外部命令
外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的
程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。
通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序
管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,
通常放在/bin,/usr/bin,/sbin,/usr/sbin……等等。可通过“echo $PATH”命令查看外
部命令的存储路径,比如:ls、vi等。
用type命令可以分辨内部命令与外部命令:
[lance@master ~]$ type cd
cd is a shell builtin
[lance@master ~]$ type mkdir
mkdir is /usr/bin/mkdir
内部命令和外部命令最大的区别之处就是性能。内部命令由于构建在shell中而不必创建多余的进程,
要比外部命令执行快得多。因此和执行更大的脚本道理一样,执行包含很多外部命令的脚本会损害
脚本的性能。
1.4 显示当前目录命令:pwd
- 命令名称:pwd
- 英文原意:print working directory
- 命令所在路径:/bin/pwd
- 执行权限:所有用户
- 功能:显示当前目录
- 语法: pwd
举例:
[lance@master softwere]$ pwd
/home/lance/softwere
1.5 删除空目录命令:rmdir
- 命令名称:rmdir
- 英文原意:remove empty directories
- 命令所在路径:/bin/rmdir
- 执行权限:所有用户
- 功能:删除空目录(如果目录下存在文件则不能删除)
- 语法: rmdir 【空目录名】
举例:
注意:由于此命令只能删除空目录,在实际操作中应用的不多,后面我们讲解 rm 命令可以替代。
1.6 复制文件或目录命令:cp
- 命令名称:cp
- 英文原意:copy
- 命令所在路径:/bin/cp
- 执行权限:所有用户
- 功能:显示当前目录
- 语法: cp -rp 【原文件或目录】【目标目录】
-r 复制目录
-p 保留文件属性
举例:
- 把家目录的lance.txt复制到oneset目录下
[lance@master ~]$ ll
total 11564
drwxrwxr-x. 2 lance lance 6 Mar 30 14:36 createmk
-rw-rw-r--. 1 lance lance 27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance 6 Mar 30 15:06 oneset
drwxrwxr-x. 2 lance lance 66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
[lance@master ~]$ cp lance.txt oneset/
[lance@master ~]$ ll oneset/
total 4
-rw-rw-r--. 1 lance lance 27 Mar 30 15:08 lance.txt
- 可以用于复制后文件改名家目录的lance.txt复制到oneset目录下并修改为copylance.txt
[lance@master ~]$ cp lance.txt oneset/copylance.txt
[lance@master ~]$ ll oneset/
total 8
-rw-rw-r--. 1 lance lance 27 Mar 30 15:10 copylance.txt
-rw-rw-r--. 1 lance lance 27 Mar 30 15:08 lance.txt
还可同时复制多个文件,注意复制目录的时候要加 -r选项。加-p属性之后会将原文件的一些属性
比如修改时间等也原封不动的复制过去。如果不加-p属性,那么复制后的文件修改时间为当前系统时间。
1.7 剪切文件或目录命令:mv
- 命令名称:mv
- 英文原意:move
- 命令所在路径:/bin/mv
- 执行权限:所有用户
- 功能:剪切文件、改名
- 语法: mv【原文件或目录】【目标目录】
举例:
[lance@master ~]$ mkdir tmp
[lance@master ~]$ mv oneset/ tmp/
[lance@master ~]$ ll tmp/
total 0
drwxrwxr-x. 2 lance lance 44 Mar 30 15:10 oneset
1.8 删除文件或目录命令:rm
- 命令名称:rm
- 英文原意:remove
- 命令所在路径:/bin/rm
- 执行权限:所有用户
- 功能:剪切文件、改名
- 语法: rm -rf 【文件或目录】
-r 删除目录
-f 强制执行
举例:
[lance@master ~]$ rm test
rm: cannot remove ‘test’: Is a directory
[lance@master ~]$ rm -r test/
[lance@master ~]$ mkdir test1
[lance@master ~]$ ll
total 11564
drwxrwxr-x. 2 lance lance 6 Mar 30 14:36 createmk
-rw-rw-r--. 1 lance lance 27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance 66 Feb 22 00:31 softwere
drwxrwxr-x. 2 lance lance 6 Mar 30 15:22 test1
drwxrwxr-x. 3 lance lance 20 Mar 30 15:15 tmp
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
[lance@master ~]$ rm -rf tmp/ test1/
[lance@master ~]$ ll
total 11564
drwxrwxr-x. 2 lance lance 6 Mar 30 14:36 createmk
-rw-rw-r--. 1 lance lance 27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance 66 Feb 22 00:31 softwere
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
使用-f强制删除目录,不需要输入 y 来确认,这种做法很简单,但是容易误删文件,没有反悔的机会.
二、文件处理命令
2.1 创建空文件命令:touch
- 命令名称:touch
- 命令所在路径:/bin/touch
- 执行权限:所有用户
- 功能:创建空文件
- 语法: touch 【文件名】
举例:
[lance@master ~]$ touch test
[lance@master ~]$ touch test1 test2
[lance@master ~]$ touch "test1 test2"
[lance@master ~]$ ll
total 11564
drwxrwxr-x. 2 lance lance 6 Mar 30 14:36 createmk
-rw-rw-r--. 1 lance lance 27 Mar 30 14:09 lance.txt
drwxrwxr-x. 2 lance lance 66 Feb 22 00:31 softwere
-rw-rw-r--. 1 lance lance 0 Mar 30 15:26 test
-rw-rw-r--. 1 lance lance 0 Mar 30 15:26 test1
-rw-rw-r--. 1 lance lance 0 Mar 30 15:26 test1 test2
-rw-rw-r--. 1 lance lance 0 Mar 30 15:26 test2
-rw-r--r--. 1 lance lance 11833706 Feb 21 21:52 zookeeper-3.3.6.tar.gz
注意:创建文件时,文件名不要有空格,不然就是创建了 两个文件.
如果我们想创建一个文件名为 test1 test2 ,应该用引号括起来(尽量避免文件名包含空格)
2.2 显示文件内容命令(适合内容较少的文件):cat
- 命令名称:cat
- 命令所在路径:/bin/cat
- 执行权限:所有用户
- 功能:显示文件内容(只能显示内容较少的文件)
- 语法: cat【文件名】
-n 显示文件行号
举例:通过不加参数-n和加参数-n来查看效果
[lance@master ~]$ cat lance.txt
i love linux
use vary easy
thank you my love
[lance@master ~]$ cat -n lance.txt
1 i love linux
2 use vary easy
3 thank you my love
注意:此命令只能显示文件内容比较少的文件,如果文件内容很多,
用cat命令是不合适的,视觉效果是屏幕不断滚动更新。
2.3 反向显示文件内容命令(适合内容较少的文件):tac
- 命令名称:tac
- 命令所在路径:/bin/tac
- 执行权限:所有用户
- 功能:显示文件内容(只能显示内容较少的文件)
- 语法: tac【文件名】
举例:
[lance@master ~]$ cat lance.txt
i love linux
use vary easy
thank you my love
[lance@master ~]$ tac lance.txt
thank you my love
use vary easy
i love linux
2.4 分页显示文件内容命令(不能向前翻页):more
- 命令名称:more
- 命令所在路径:/bin/more
- 执行权限:所有用户
- 功能:分页显示文件内容
- 语法: more【文件名】
(空格)或f 翻页(一页一页的往后显示)
(Enter) 换行(一行一行的往后显示)
q 或 Q 退出
举例:查看etc目录下的 services 文件信息:more /etc/services
2.5 分页显示文件内容命令(可以前后翻页):less
- 命令名称:less
- 命令所在路径:/usr/bin/less
- 执行权限:所有用户
- 功能:分页显示文件内容
- 语法: less【文件名】
空格)或f 或PgDn 翻页(一页一页的往后显示)
PgUp向前翻页
(Enter) 换行或向下的箭头(一行一行的往后显示)
向上的箭头(一行一行的往前显示)
q 或 Q 退出
输入/想搜索的字符,然后回车键
举例:查看etc目录下的 services 文件信息:less/etc/services。
主要是最后提到的搜索功能,我们在进入命令之后,输入/想搜索的字符,然后回车键,如下:
回车之后,如下显示:
2.6 显示文件内容命令(指定行数):head
- 命令名称:head
- 命令所在路径:/usr/bin/head
- 执行权限:所有用户
- 功能:显示文件的前面几行
- 语法: head【文件名】
-n 指定显示的行数
不加 -n 默认显示前 20 行数据
举例:显示 etc目录下的 services 文件前面 10 行 head -n 10 /etc/services
[lance@master ~]$ head -n 10 /etc/services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# 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
2.7 反向文件内容命令(文件即时更新后也能动态显示,多用于日志文件显示):tail
- 命令名称:tail
- 命令所在路径:/usr/bin/tail
- 执行权限:所有用户
- 功能:显示文件的后面几行
- 语法: tail【文件名】
-n 指定显示的行数
-f 动态显示文件末尾内容(即文件实时变化,那么显示内容也会随之变化)
举例:显示 etc目录下的 services 文件后面 20 行 tail -n 20 -f /etc/services
我们也可以使用tailf -n 20 /etc/services
注意:如果我们想结束加上 -f显示的tail命令,通过 Ctrl+C。
三、总结
本篇文章主要讲解了Linux系统中的文件和目录处理命令显示目录文件信息 ls 这是我们最常用的,
然后创建目录命令 mkdir,切换目录命令 cd,显示当前目录 pwd,删除空目录命令 rmdir,这个
命令用的不多,如果我们想删除目录可以用 rm 命令,注意 rm 如果加上 -f 参数,那将没有提示,
直接将文件从系统中删除,需要特别注意,以免删除系统文件。然后我们接着介绍了复制文件或目录
命令 cp,剪切文件或目录命令 mv,注意mv命令在剪切后可以直接更改文件或目录名称。
之后就介绍了几个文件处理的命令,创建空文件 touch,显示文件内容的命令有很多,我们也不需要
记住那么多,首先less命令能显现文件内容比较多的文件,而且能前后翻页显示。再就是如果我们需
要动态监视文件内容的变化,比如某个日志文件,我们可以通过 tail 加上-f参数动态显示文件末尾
的内容。