命令行界面
Linux中的命令提示符
itcast
: 当前登录的用户@
:英文at,在的意思itcast-virtual-machine
: 主机名- 主机名在
/etc/hosts
这个文件中
- 主机名在
~/test/course/day1
:当前工作目录,~表示宿主目录(家目录或者主目录) > 可通过:echo ~
或者echo $HOME
查看当前用户的宿主目录$
:表示当前用户为普通用户,#表示当前用户为root用户
基础命令
tree命令
- 以树状形式查看,使用该命令需要安装软件tree
sudo apt-get update
sudo apt-get install tree
- 命令使用方法
tree
-- 树形结构显示当前目录下的文件信息
tree 目录
-- 树形结构显示指定目录下的文件信息
ls命令
查看指定目录下的文件信息
使用方法:
ls
--显示当前目录下文件信息
ls 目录或文件名
--显示指定目录下文件信息
相关参数
-l
:以长格式(long)显示文件和目录的列表,包括权限、大小、最后更新的时间等详细信息;-a
:显示所有(All)子目录和文件的信息,包括以“.”号开头的隐藏目录和隐藏文件。-A
:与“-a”效果差不多,只是不包括“.”和“…”这两个目录。-f
:直接列出结果、而不进行排序(ls默认以文件名排序),同时显示以“.”开头的隐藏文件。-F
:根据文件、目录等信息,给予附加数据结构,如:*:代表可执行文件;/:代表目录;=:代表socket文件;|:代表FIFO文件。-i
:将列出inode号码,关于inode会在以后的博文介绍。-n
:列出UID与GID而非使用者与群组的名称。d
:显示目录(directory)本身的属性,而不是显示目录中的内容。-h
:结合-l选项一起使用,可以以人性化的方式显示文件或目录的大小,默认的大小单位为字节(b),使用-h选项后,将显示为KB、MB等单位。-R
:以递归(Recursive)的方式显示指定的目录和它子目录中所有的内容。-r
:将排序结果反向输出,例如:原本文件名由小到大,反向则会由大到小。-S
:以文件大小排序,而不是用文件名排序。-t
:依时间排序,而不是用文件名。–color=never
:不要依据文件特性给予颜色显示;–color=always
:显示颜色–color=auto
:让系统自行依据设置来判断是否给予颜色(该选项为默认选项)。–full-time
:以完整时间模式(包含年、月、日、时、分)输出–time={atime,ctime}
:输出access时间或改变权限属性时间(ctime)而不是内容变更时间(mtime)-a
:列出当前目录下的所有文件.
当前目录..
当前目录的上一级目录- 隐藏文件,以
.
开头的文件名,如.bashrc
- 普通文件
-R
:递归方式列出所有目录中的内容-l
:列出文件的详细信息,7部分内容- 文件类型 (第1个字符)
-
: 普通文件d
: 目录l
: 符号链接,相当于windows中的快捷方式s
: 套接字p
: 管道b
: 块设备c
: 字符设备
- 文件类型 (第1个字符)
- 用户的操作权限 (2~10个字符)
- 文件所有者对文件的操作权限 (2~4个字符)
- 文件所属组用户对文件的操作权限(5~7个字符)
- 其他人对文件的操作权限(8~10个字符)
- 硬链接计数:
- 对于目录来说,链接计数等于该目录下所有的目录总数(含
.
和..
),但是不包含该目录的子目录下的目录文件数量,执行ls -la
命令可以进行查看 - 对于文件来说,指的是该文件所有的硬链接文件数量
- 对于目录来说,链接计数等于该目录下所有的目录总数(含
- 文件所有者:
itcast
- 文件所属组:
itcast
- 文件大小: 36
- 如果是目录: 只表示目录大小,不包含目录中的内容,目录大小为4k
- 如果是文件:表示文件大小
- 文件的创建日期或最后修改时间:10月 13 11:41
- 文件名:
test.log
- 参数之间可以结合使用:
ls -la
: 列出当前目录下所有文件的相信信息,包括隐藏文件ls -ltr
: 列出当前目录下的文件,按照时间逆向排序
下图是ls -l命令截图
文件所有者,所属组,其他人的概念
cd 命令
切换目录(change directory),命令使用方式:cd + 路径
路径可以使用相对路径或者绝对路径
cd /home/itcast
绝对路径(从根目录开始) cd ./itcast/test
相对路径(从当前工作目录开始)
切换到家目录(例如: /home/itcast)
cd
cd \~
cd /home/itcast
cd \$HOME
临近两个目录直接切换
cd -
- 如开始在:
/home/itcast/test/course/day1/test
目录下,执行了cd命令切换到家目录下,然后在执行cd -又回到了/home/itcast/test/course/day1/test
下
- 如开始在:
pwd命令
查看用户当前所处的工作目录,printf working directory
which命令
显示命令所在的目录,如which ls
、 which cp
touch命令
如果文件不存在,创建新文件,如果文件存在,更新文件的最后修改时间。
命令使用方式:touch 文件名
mkdir命令
创建新目录,make directory
创建方式:mkdir 目录名
如果创建多级目录需要添加参数 -p
例 在当前目录下创建目录: mkdir mydir
在宿主目录下创建多级目录: mkdir -p ~/test/hello/world/aa
rmdir命令
删除空目录,,使用方式:rmdir 目录名
rm命令
删除文件: rm 文件名
删除目录: rm -r 目录名
参数:
-r
:-i
:提示用户是否删除文件或目录-f
:强制删除
cp 命令
命令使用方式:cp 源目录或文件 目标目录或文件
cp 要拷贝的文件(file1) file(不存在)
- 创建file,将file1中的内容拷贝到file
cp file1 file(存在)
- file1覆盖file
cp file dir(存在)
- 拷贝file到dir目录
cp -r dir(存在) dir1(存在)
将dir目录拷贝到dir1目录中
包括dir目录
cp -r dir(存在) dir1(不存在)
创建dir1
将dir中的内容拷贝到dir1中,不包括dir目录
cp 拷贝目录也可以用
-a
参数,这样可以保留被拷贝的文件的一些属性信息
mv命令
改名或者移动文件 mv file1 file2
改名
mv file(存在) file1(不存在)
mv dir(存在) dir1(不存在)
mv file(存在) file2(存在)
- file文件覆盖file2文件,file改名为file2
移动()
mv file(文件) dir(存在目录)
- 将file文件移动到dir中
mv dir(目录存在) dir1(目录存在)
- 将dir移动到dir1中,dir就会作为dir1的子目录而存在
cat命令
将文件内容一次性输出到终端。
使用方式: cat 文件名
缺点:终端显示的内容有限,。
可用于文件重定向: cat file1>file2
,相当于cp file1 file2
more命令
文件内容分页显示到终端,但是只能一直向下浏览,不能回退。
使用方式:more + 文件名
相关操作:
显示下一行:回车
显示下一页:空格
退出:
q
(ctrl + c)
less命令
文件内容分页显示到终端,可以自由上下浏览。
使用方式:less 文件名
相关操作:
显示下一行:回车、ctrl + p、键盘向下键
显示上一行:ctrl + n、键盘向上键
显示下一页:空格、PageDown
显示上一页:PageUp
退出:q
head命令
从文件头部开始查看前n行的内容
使用方式:head -n[行数] 文件名
head -20 hello.txt
如果没有指定行数,默认显示前10行内容
tail命令
从文件尾部向上查看最后n行的内容
使用方式:tail -n[行数] 文件名
如果没有指定行数,默认显示最后10行内容
- 一个比较重要的应用:显示日志 :
tail -f test.log
- 一个终端
tail -f test.log
,另一个终端:echo “hello world” >>test.log
- 一个终端
软链接
软连接类似于windows下的快捷方式
如何创建软连接
ln -s 文件名 快捷方式的名字
- 例如:
ln -s aa aa.soft
- 例如:
目录也可以创建软连接
- 例如:
ln -s tmp tmp.link
- 例如:
创建软链接应注意事项
ln创建软连接要用绝对路径,因为如果不使用绝对路径,一旦这个连接文件发生位置变动,就不能找到那个文件了。
软连接文件的大小是: 路径+文件名的总字节数
硬链接
ln 文件名 硬链接的名字
ln test.log test.log.hard
使用硬链接应注意事项
硬链接不能建在目录上
硬连接对绝对路径没有要求
硬连接不能跨文件系统
- 硬链接文件和源文件的inode是相同的,文件系统的inode要求唯一,跨文件系统可能会使inode不同,所以硬链接不能跨文件系统
硬链接的本质
硬连接的本质是不同的文件名所在的inode节点是相同的,相同的inode节点指向了相同的数据块,所以他们的文件内容是一样的,文件内容会同步。
ls -i 文件名
------可以查看文件的i节点stat 文件名
---可以查看i节点信息如下图,file.hard是file的硬链接,这个两个文件指向了同一个inode,同一个inode指向了相同的数据块(文件内容)。
当新创建了一个文件,硬链接计数为1
给文件创建了一个硬链接后,硬链接计数加1
删除一个硬链接后,硬链接计数减1
如果删除硬链接后,硬链接计数为0,则该文件会删除
硬链接应用场合
可以起到同步文件的作用
修改file的内容,会在其余三个硬链接文件上同步.
可以起到保护文件的作用
删除文件的时候,只要硬链接计数不为0,不会真正删除,起到保护文件的作用.
wc
显示文件行数,字节数,单词数
wc -l file
显示文件的总行数wc -c file
显示文件的总字节数wc -w file
显示文件的总单词数wc file
显示文件的总行数,单词数和总字节数
whoami
显示当前登陆的用户名
find命令
按文件名查询:使用参数 -name
命令:
find 路径 -name "文件名"
示例:
find /home -name "\*.c"
按文件类型查询:使用参数 -type
命令:
find 路径 -type 类型
类型
普通文件类型用f表示而不是 -
d
-> 目录l
-> 符号链接b
-> 块设备文件c
-> 字符设备文件s
-> socket文件p
-> 管道文件
查找指定目录下的普通文件:
find 路径 -type f
按文件大小查询:使用参数 -size
命令:
find 路径 -size 范围
范围
大于:+表示 -- +100k
小于:-表示 -- -100k
等于: 不需要添加符号 -- 100k
大小
M 必须大写(10M)
k 必须小写(20k)
c 表示字节数
例子: 查询目录为家目录
等于100k的文件:
find ~/ -size 100k
大于100k的文件:
find ~/ -size +100k
大于50k,小于100k的文件:
find ~/ -size +50k -size -100k
按文件日期
创建日期:-ctime -n/+ n
-n: n天以内
+n: n天以外
修改日期:-mtime -n/+n
访问日期:-atime -n/+n
按深度
-maxdepth n(层数)
- 搜索n层以下的目录,搜索的层数不超过n层
-mindepth n(层数)
- 搜搜n层以上的目录,搜索的层数不能小于n层
高级查找
- 例:查找指定目录下所有目录,并列出目录中文件详细信息
find ./ -type d -exec shell命令 {} \;
find ./ -type d -exec ls -l {} \;
find ./ -type d -ok shell命令 {} \;
find ./ -type d -ok ls -l {} \;
- 注意: {}中间不能有空格
- ok比较安全,特别是在执行rm删除文件的时候
find ./ -type d | xargs shell命令
find ./ -type d | xargs ls -l
grep命令
grep -r(有目录) “查找的内容” 搜索的路径
-r
参数,若是目录,则可以递归搜索-n
参数可以显示该查找内容所在的行号-i
参数可以忽略大小写进行查找-v
参数不显示含有某字符串搜索当前目录下包含hello world字符串的文件
grep -r -n "hello world" ./
------显示行号grep -r -i -n "HELLO world" ./
-------忽略大小小查找
find和grep命令结合使用
先使用find命令查找文件,然后使用grep命令查找哪些文件包含某个字符串
find . -name "*.c" | xargs grep -n "main"