转载文章 文章链接: https://subingwen.cn/linux/file-commands/
cd 命令
在Linux终端中如果想要进行工作路径的切换, 需要使用cd命令。在进行目录的切换的时候, 我们可以使用相对路径也可以使用绝对路径。
进入指定目录
进入家目录
每个用户(普通用户和root)都有一个属于自己的目录, 比如:
robin是普通用户, 家目录: /home/robin
luffy是用户, 家目录: /home/luffy
root是管理员用户, 家目录: /root
按照上边的格式来表示家目录书写起来比较麻烦, 有一种相对简单的写法就是使用 ~ 表示。如果是使用cd命令切换到家目录, 后边可以什么路径都不加, 这样也可以进入到当前用户的家目录。综上所述也就是通过cd进入到当前用户的家目录一共有三种不同的方式。
1 2 3 $ cd $ cd ~ $ cd /home/用户名
在临近的两个目录之间切换
如果我们要频繁的在两个路径之间切换, 也有相关的快捷操作, 尤其是对于比较长的路径, 可以是这简直是一个福利:
1 2 3 4 # 通过cd 进入到目录1: /usr/include/c++/7.5.0/ext/pb_ds/detail/list_update_map_/ # 通过cd 进入到目录2: /home/luffy/get/onepiece/itis/a/goldfish # 频繁在两个目录之间切换 $ cd -
ls 命令
ls 就是 list, 打印指定的文件信息, 如果是目录, 显示对应目录中有哪些子文件, 语法格式如下:
1 2 3 $ ls [args] $ ls [args] 目录名 $ ls [args] 文件名
显示所有文件
给 ls添加 -a参数(就是 all 的意思)就可以显示指定目录中是所有文件了, 因为默认情况下具有隐藏属性的文件是不会显示出来的。那么在Linux中什么样是文件才能被隐藏呢?起始很简单只需要在文件名前边加一个点(.)文件就具有隐藏属性了, 例如: .demo, .a.txt
1 2 3 4 5 6 7 8 # 查看root家目录下所有非隐藏文件 [root@VM-8-14-centos ~]# ls ace luffy # 查看root家目录下所有文件 (隐藏 + 非隐藏) [root@VM-8-14-centos ~]# ls -a . ace .bash_logout .bashrc .config .lesshst .pip .pydistutils.cfg .. .bash_history .bash_profile .cache .cshrc luffy .pki .ssh .viminfo
显示文件详细信息
给 ls添加 -l参数(就是 list 的意思)我们就可以看到文件的详细信息了, 里边的信息量还是非常大的, 其中包括: 文件类型, 文件所有者对文件的操作权限, 文件所属组用户对文件的操作权限, 其他人对文件的操作权限, 硬链接计数, 文件所有者, 文件所属组, 文件大小, 文件的修改日期, 文件名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 # 显示文件的详细信息 robin@OS:~$ ls -l total 204 -rw-rw-r-- 1 robin robin 268 Mar 22 17:32 a.c drwxrwxr-x 2 robin robin 4096 Aug 4 2019 config -rw-r--r-- 1 robin robin 129487 Dec 25 11:28 english.txt drwxrwxr-x 4 robin robin 4096 Jan 15 17:48 libevent drwxrwxr-x 17 robin robin 4096 Apr 13 22:42 Linux drwxrwxr-x 8 robin robin 4096 Feb 5 16:57 luffy -rw-r--r-- 1 robin robin 2223 Mar 2 14:39 main.cpp -rw-rw-r-- 1 robin robin 2167 Dec 1 22:41 mysql_test.c drwxrwxr-x 9 robin robin 4096 Mar 26 19:19 network -rw-r--r-- 1 robin robin 1406 Mar 2 20:18 occi.cpp drwxrwxr-x 3 robin robin 4096 Oct 30 12:09 oradiag_robin drwxrwxr-x 11 robin robin 4096 Mar 26 09:40 package drwxrwxr-x 2 robin robin 4096 Dec 29 17:11 process drwxrwxr-x 17 robin robin 4096 Mar 29 22:31 projects -rw-r--r-- 1 robin robin 1816 Jan 6 09:37 sidtime.c drwxrwxr-x 2 robin robin 4096 Mar 22 11:31 socket -rw-r--r-- 1 robin robin 583 Oct 18 17:21 test.c -rw-r--r-- 1 robin robin 2015 Mar 1 17:05 test.cpp -rw-rw-r-- 1 robin robin 2218 Dec 2 17:02 test_mysql.c drwxrwxr-x 5 robin robin 4096 Jan 13 17:35 udp # 文件详细信息介绍 d rwx rwx r-x 5 robin robin 4096 Jan 13 17:35 udp | | | | | | | | | | 文件 文件所 文件所 其他人 硬链接 文件 文件 文件大小 文件修改时间 文件名 类型 有者权限 属组权限 权限 计数 所有者 所属组
文件类型
在Linux操作系统中, 一共有7中文件类型, 这7中类型是根据文件属性进行划分的, 而不是根据文件后缀划分的。
-: 普通的文件, 在Linux终端中没有执行权限的为白色, 压缩包为红色, 可执行程序为绿色字体
d: 目录(directory), 在Linux终端中为蓝色字体, 如果目录的所有权限都是开放的, 有绿色的背景色
l: 软链接文件(link), 相当于windows中的快捷方式, 在Linux终端中为淡蓝色(青色)字体
c: 字符设备(char), 在Linux终端中为黄色字体
b: 块设备(block), 在Linux终端中为黄色字体
p: 管道文件(pipe), 在Linux终端中为棕黄色字体
s: 本地套接字文件(socket), 在Linux终端中为粉色字体
用户类型
在Linux中有三大类用户: 文件所有者, 文件所属组用户, 其他人, 我们可以对同一个文件给这三种人设置不同的操作权限, 用于限制用户对文件的访问。
文件所有者
Linux中的所有的文件都有一个所有者, 就是文件的主人
文件所属组
文件的主人属于哪个组, 这个文件默认也就属于哪个组
用户组中可以有多个用户, 这些组中的其他用户和所有者的权限可以是不一样的
其他人
这个用户既不是文件所有者也不是文件所属组中的用户,就称之为其他人
其他人对文件也可以拥有某些权限
文件权限
Linux中不同的用户可以对文件拥有不同的操作权限, 权限一共有四种: 读权限, 写权限, 执行权限, 无权限。
读权限:使用 r表示, 即: read
写权限:使用 w表示, 即: write
执行权限:使用 x表示, 即: excute
没有任何权限:使用-表示
1 2 3 4 5 shell - rwx rw- r-- 1 robin robin 2218 Dec 2 17:02 app | | | | 文件类型 文件所有 文件所属 其他人权限 者权限 组权限
从上边的例子中可以看出:
文件所有者对文件有读、写、执行权限
文件所属组用户对文件有 读、写权限, 没有执行权限
其他人对文件有 读权限, 没有写、执行权限
硬链接计数
硬链接计数是一个整数,如果这个数为N(N>=1),就说明在一个或者多个目录下一共有N个文件, 但是这N个文件并不占用多块磁盘空间, 他们使用的是同一块, 如果通过其中一个文件修改了磁盘数据, 那么其他文件中的内容也就变了。每当我们给给磁盘文件创建一个硬链接(使用 ln),磁盘上就会出现一个新的文件名,硬链接计数加1,但是这新文件并不占用任何的磁盘空间,文件名还是映射到原来的磁盘地址上。
下图中为大家展示了给文件创建硬链接, 和直接进行文件拷贝的区别, 创建硬链接只是多了一个新的文件名, 拷贝文件不仅多了新的文件名在磁盘上数据也进行了拷贝
其他属性
关于ls -l得到的其他属性相对比较简单, 最后再给大家介绍一下:
其他参数 单位显示
在查看文件大小的时候, 如果文件比较大对应的数组自然也就很大, 我们还需要基于字节进行相关的换算, 不能直观得到我们想要的结果, 如果数学不好, 我们可以使用一个参数 -h (human)(就是命令说人话)。
1 2 3 4 5 6 7 # 直接查看文件大小 [root@VM-8-14-centos ~]# ls -l ipc.tar.gz -rw-r--r-- 1 root root 122962 Apr 25 2020 ipc.tar.gz # 添加 -h 参数查看文件大小 [root@VM-8-14-centos ~]# ls -lh ipc.tar.gz -rw-r--r-- 1 root root 121K Apr 25 2020 ipc.tar.gz
显示目录后缀
在查看文件信息的时候, 处理通过文件类型区分该文件是不是一个目录之外, 还可以通过一个参数 -F在目录名后边显示一个/, 这样就可以直接区分出来了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # 直接查看文件信息 [root@VM-8-14-centos ~/file]# ls -l total 8 drwxr-xr-x 2 root root 4096 Jan 25 14:29 dir -rw-r--r-- 1 root root 0 Jan 25 14:49 haha.tar.gz -rwxrwxrwx 1 root root 0 Jan 25 14:49 hello lrwxrwxrwx 1 root root 15 Jan 25 14:30 link -> /root/file/test prw-r--r-- 1 root root 0 Jan 25 14:24 pipe-2 drwxrwxrwx 2 root root 4096 Jan 25 15:20 subdir -rw-r--r-- 1 root root 0 Jan 25 14:23 test # 添加了 -F 参数查看文件信息 [root@VM-8-14-centos ~/file]# ls -lF total 8 drwxr-xr-x 2 root root 4096 Jan 25 14:29 dir/ -rw-r--r-- 1 root root 0 Jan 25 14:49 haha.tar.gz -rwxrwxrwx 1 root root 0 Jan 25 14:49 hello* lrwxrwxrwx 1 root root 15 Jan 25 14:30 link -> /root/file/test prw-r--r-- 1 root root 0 Jan 25 14:24 pipe-2| drwxrwxrwx 2 root root 4096 Jan 25 15:20 subdir/ -rw-r--r-- 1 root root 0 Jan 25 14:23 test
创建删除目录
cp 命令
cp 就是copy, 拷贝, 使用这个命令可以拷贝文件也可以拷贝目录
拷贝文件 => 文件不存在得到新文件, 文件存在就覆盖
1 2 3 4 5 6 7 # `语法: cp 要拷贝的文件 得到的文件` # `场景1: 文件A, 将A拷贝一份得到文件B` $ cp 文件A 文件B# `场景2: 文件A存在的, 文件B也是存在的, 执行下边的拷贝 ==> 文件A覆盖文件B` $ cp 文件A 文件B
拷贝目录 ==> 目录不存在得到新目录, 该目录被拷贝到存在的目录中
1 2 3 4 5 6 7 8 9 10 # 拷贝目录需要参数 -r # 场景1: 目录A, 通过拷贝得到不存在的目录B $ cp 目录A 目录B -r# 场景2: 目录A存在的, 目录B也是存在的, 执行下边的拷贝 ==> 目录A会被拷贝并将其放到目录B中 $ cp 目录A 目录B -r# 场景3: 把A目录里的某一个或者多个文件拷贝到B目录中 $ cp A/a.txt B $ cp A/* B -r
mv 命令
mv 就是move, 这个Linux命令既能移动文件所在目录也可以给文件改名。
文件的移动
1 2 3 4 # 语法: mv 要移动的文件 目录 # 有一个文件A, 移动到目录B中 # 其中A可以是文件也可以是目录, B必须是目录而且必须是存在的 $ mv A B
文件改名
1 2 3 # 语法: mv 要改名的文件 新名字(原来是不存在的,这点很重要) # 其中A可以是文件也可以是目录,并且是存在的, B原来是不存在的 $ mv A B
文件覆盖
1 2 3 4 # 语法: mv 存在文件A 存在的文件B # 其中A是文件(非目录)并且是存在的, B也是一个文件(非目录)并且也存在 # A文件中的内容覆盖B文件中的内容, A文件被删除, 只剩下B文件 $ mv A B
查看文件内容
如果想要查看文件内容方式有很多, 最常用的是vim, 下面介绍一下vim以外的一些的一些方式:
cat
该命令可以将文件内容显示到终端, 由于终端是有缓存的, 因此能显示的字节数也是受限制的。 如果文件太大数据就不能完全显示出来了,因此该命令适合查看比较小的文件内容。
more
该命令比cat要高级一点, 我们可以以翻屏的方式查看文件中的内容,使用方式如下:
1 2 3 4 5 6 $ more 文件名 # 快捷键 - 回车: 显示下一行 - 空格: 向下滚动一屏 - b: 返回上一屏 - q: 退出more
less
该命令和more命令差不多, 我们可以以翻屏的方式查看文件中的内容,使用方式如下:
1 2 3 4 5 6 7 $ less 文件名 # 快捷键 - b: 向上翻页 - 空格: 向后翻页 - 回车: 显示下一行 - 上下键: 上下滚动 - q:退出
head
使用该命令可以查看文件头部的若干行信息, 使用方式如下:
1 2 3 4 # 默认显示文件的前10行 $ head 文件名# 指定显示头部的前多少行 $ head -行数 文件名
tail
使用该命令可以查看文件尾部的若干行信息, 使用方式如下:
1 2 3 4 # 默认显示文件的后10行 $ tail 文件名# 指定显示尾部的最后多少行 $ tail -行数 文件名
链接的创建
链接分两种类型: 软连接和硬链接。软连接相当于windows中的快捷方式,硬链接前边也已经介绍过了文件并不会进行拷贝,只是多出一个新的文件名并且硬链接计数会加1。
软连接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 语法: ln -s 源文件路径 软链接文件的名字(可以带路径) # 查看目录文件 [root@VM-8-14-centos ~/luffy]# ll total 8 drwxr-xr-x 3 root root 4096 Jan 25 17:27 get -rw-r--r-- 1 root root 37 Jan 25 17:26 onepiece.txt # 给 onepiece.txt 创建软连接, 放到子目录 get 中 [root@VM-8-14-centos ~/luffy]# ln -s /root/luffy/onepiece.txt get/link.lnk [root@VM-8-14-centos ~/luffy]# ll get total 4 lrwxrwxrwx 1 root root 24 Jan 25 17:27 link.lnk -> /root/luffy/onepiece.txt drwxr-xr-x 2 root root 4096 Jan 24 21:37 onepiece
硬链接
1 2 3 4 5 6 7 8 9 10 11 # 语法: ln 源文件 硬链接文件的名字(可以带路径) # 创建硬链接文件, 放到子目录中 [root@VM-8-14-centos ~/luffy]# ln onepiece.txt get/link.txt # 查看链接文件和硬链接计数, 从 1 --> 2 [root@VM-8-14-centos ~/luffy]# ll get total 8 lrwxrwxrwx 1 root root 24 Jan 25 17:27 link.lnk -> /root/luffy/onepiece.txt -rw-r--r-- 2 root root 37 Jan 25 17:26 link.txt drwxr-xr-x 2 root root 4096 Jan 24 21:37 onepiece
简单说一下软硬连接的区别:
硬链接:两个路径指向同一个数据块,即文件系统中的同一个索引,这两个硬链接是对等的
软连接:软连接的文件内容是一个硬链接的路径
文件属性
文件属性相关的命令主要是修改用户对文件的操作权限, 文件所有者, 文件所属组的相关信息。
修改文件文件权限
文件权限是针对文件所有者, 文件所属组用户, 其他人这三类人而言的, 对应的操作指令是chmod。设置方式也有两种,分别为文字设定法和数字设定法。
文字设定法是通过一些关键字r, w, x, -来描述用户对文件的操作权限。
数字设定法是通过一些数字 0, 1, 2, 4, 5, 6, 7 来描述用户对文件的操作权限。
文字设定法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 # chmod # 语法格式: chmod who [+|-|=] mod 文件名 - who: - u: user -> 文件所有者 - g: group -> 文件所属组用户 - o: other -> 其他 - a: all, 以上是三类人 u+g+o - 对权限的操作: +: 添加权限 -: 去除权限 =: 权限的覆盖 - mod: 权限 r: read, 读 w: write, 写 x: execute, 执行 -: 没有权限 # 将文件所有者权限设置为读和执行, 也就是权限覆盖 robin@OS:~/Linux$ chmod u=rx b.txt robin@OS:~/Linux$ ll b.txt -r-xrw-r-- 2 robin robin 2929 Apr 14 18:53 b.txt* # 给其他人添加写和执行权限 robin@OS:~/Linux$ chmod o+wx b.txt robin@OS:~/Linux$ ll b.txt -r-xrw-rwx 2 robin robin 2929 Apr 14 18:53 b.txt* # 给文件所属组用户去掉读和执行权限 robin@OS:~/Linux$ chmod g-rx b.txt robin@OS:~/Linux$ ll b.txt -r-x-w-rwx 2 robin robin 2929 Apr 14 18:53 b.txt* # 将文件所有者,文件所属组用户,其他人权限设置为读+写+执行 robin@OS:~/Linux$ chmod a=rwx b.txt robin@OS:~/Linux$ ll b.txt -rwxrwxrwx 2 robin robin 2929 Apr 14 18:53 b.txt*
数字设定法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 # 语法格式: chmod [+|-|=] mod 文件名 - 对权限的操作: +: 添加权限 -: 去除权限 =: 权限的覆盖, 等号可以不写 - mod: 权限描述, 所有权限都放开是 7 - 4: read, r - 2: write, w - 1: execute , x - 0: 没有权限 # 分解: chmod 0567 a.txt 0 5 6 7 八进制 文件所有者 文件所属组用户 其他人 r + x r + w r+w+x # # 查看文件 c.txt 的权限 robin@OS:~/Linux$ ll c.txt -rwxrwxrwx 2 robin robin 2929 Apr 14 18:53 c.txt* # 文件所有者去掉执行权限, 所属组用户去掉写权限, 其他人去掉读+写权限 robin@OS:~/Linux$ chmod -123 c.txt robin@OS:~/Linux$ ll c.txt -rw-r-xr-- 2 robin robin 2929 Apr 14 18:53 c.txt* # 文件所有者添加执行权限, 所属组用户和其他人权限不变 robin@OS:~/Linux$ chmod +100 c.txt robin@OS:~/Linux$ ll c.txt -rwxr-xr-- 2 robin robin 2929 Apr 14 18:53 c.txt* # 将文件所有者,文件所属组用户,其他人权限设置为读+写, 没有执行权限 robin@OS:~/Linux$ chmod 666 c.txt robin@OS:~/Linux$ ll c.txt -rw-rw-rw- 2 robin robin 2929 Apr 14 18:53 c.txt
修改文件所有者
默认情况下, 文件是通过哪个用户创建出来的, 就属于哪个用户, 这个用户属于哪个组, 文件就属于哪个组。如果有特殊需求,可以修改文件所有者,对应的操作命令是chown。因为修改文件所有者就跨用户操作, 普通用户没有这个权限, 需要借助管理员权限才能完成该操作。
普通用户借助管理员权限执行某些shell命令, 需要在命令前加关键字sudo, 但是普通用户默认是没有使用 sudo的资格的, 需要修改 /etc/sudoers 文件 。
普通用户添加sudo权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # 语法1-只修改所有者: $ sudo chown 新的所有者 文件名# 语法2-同时修改所有者和所属组: $ sudo chown 新的所有者:新的组名 文件名# 查看文件所有者:b.txt 属于 robin 用户 robin@OS:~/Linux$ ll b.txt -rw-rw-rw- 2 robin robin 2929 Apr 14 18:53 b.txt # 将 b.txt 的所有者修改为 luffy robin@OS:~/Linux$ sudo chown luffy b.txt [sudo] password for robin: robin@OS:~/Linux$ ll b.txt -rw-rw-rw- 2 luffy robin 2929 Apr 14 18:53 b.txt # 修改文件所有者和文件所属组 # 查看文件所有者和所属组 robin@OS:~/Linux$ ll b.txt -rw-rw-rw- 2 luffy robin 2929 Apr 14 18:53 b.txt # 同时修改文件所有者和文件所属组 robin@OS:~/Linux$ sudo chown robin:luffy b.txt robin@OS:~/Linux$ ll b.txt -rw-rw-rw- 2 robin luffy 2929 Apr 14 18:53 b.txt
修改文件所属组
普通用户没有修改文件所属组的权限, 如果需要修改需要借助管理员权限才能完成,需要使用的命令是chgrp。当然了这个属性的修改也可以使用chown命令来完成。
1 2 3 4 5 6 7 8 9 10 11 # 只修改文件所属的组, 普通用户没有这个权限, 借助管理员的权限 # 语法: sudo chgrp 新的组 文件名 # 查看文件所属组信息 robin@OS:~/Linux$ ll b.txt -rw-rw-rw- 2 robin luffy 2929 Apr 14 18:53 b.txt # 修改文件所属的组 robin@OS:~/Linux$ sudo chgrp robin b.txt robin@OS:~/Linux$ ll b.txt -rw-rw-rw- 2 robin robin 2929 Apr 14 18:53 b.txt
其他命令 tree命令
该命令的作用是以树状结构显示目录, tree工具默认是没有的, 需要手动安装, 系统版本不同安装方式也不尽相同:
ubuntu: sudo apt install tree
centos: sudo yum install tree
如果是基于管理员用户安装软件,不需要加sudo。该命令有一个常用参数 -L, 即 (layer) 显示目录的层数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 # 语法格式 $ tree [-L n] $ tree 目录名 [-L n] # 只显示1层 [root@VM-8-14-centos ~]# tree -L 1 . |-- ace |-- file |-- ipc.tar.gz |-- link.lnk -> /root/luffy/onepiece.txt `-- luffy # 显示2层目录 [root@VM-8-14-centos ~]# tree -L 2 . |-- ace | `-- brother |-- file | |-- dir | |-- haha.tar.gz | |-- hello | |-- link -> /root/file/test | |-- pipe-2 | |-- subdir | `-- test |-- ipc.tar.gz |-- link.lnk -> /root/luffy/onepiece.txt `-- luffy |-- get `-- onepiece.txt 显示详细信息
pwd命令
pwd命令用户当前所在的工作目录, 没有参数, 直接执行该命令即可。
1 2 3 # 查看当前用户在哪个目录中, 所在的目录一般称之为工作目录 [root@VM-8-14-centos ~/luffy/get/onepiece]# pwd /root/luffy/get/onepiece # 当前工作目录
touch命令
使用touch命令可以创建一个新的空文件, 如果指定的文件是已存在的, 只会更新文件的修改日期, 对内容没有任何影响。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # 语法: touch 文件名 # 查看目录信息 [root@VM-8-14-centos ~/luffy]# ll total 8 drwxr-xr-x 3 root root 4096 Jan 25 17:38 get -rw-r--r-- 2 root root 37 Jan 25 17:26 onepiece.txt # 创建一个新的文件 robin.txt [root@VM-8-14-centos ~/luffy]# touch robin.txt # 再次查看目录中的文件信息, 发现 robin.txt是空的, 大小为 0 [root@VM-8-14-centos ~/luffy]# ll total 8 drwxr-xr-x 3 root root 4096 Jan 25 17:38 get -rw-r--r-- 2 root root 37 Jan 25 17:26 onepiece.txt -rw-r--r-- 1 root root 0 Jan 25 17:54 robin.txt # touch 后的参数指定一个已经存在的文件名[root@VM-8-14-centos ~/luffy]# touch onepiece.txt # 继续查看目录中的文件信息, 发现文件时间被更新了: 37 Jan 25 17:26 --> 37 Jan 25 17:54 [root@VM-8-14-centos ~/luffy]# ll total 8 drwxr-xr-x 3 root root 4096 Jan 25 17:38 get -rw-r--r-- 2 root root 37 Jan 25 17:54 onepiece.txt -rw-r--r-- 1 root root 0 Jan 25 17:54 robin.txt
which命令
which命令可以查看要执行的命令所在的实际路径, 命令解析器工作的时候也会搜索这个目录。需要注意的是该命令只能查看非内建的shell指令所在的实际路径, 有些命令是直接写到内核中的, 无法查看。
我们使用的大部分shell命令都是放在系统的/bin或者/usr/bin目录下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 由于使用的Linux版本不同, 得到的路径也会有不同 [root@VM-8-14-centos ~]# which ls alias ls='ls --color=auto' /usr/bin/ls [root@VM-8-14-centos ~]# which date /usr/bin/date [root@VM-8-14-centos ~]# which cp alias cp='cp -i' /usr/bin/cp [root@VM-8-14-centos ~]# which mv alias mv='mv -i' /usr/bin/mv [root@VM-8-14-centos ~]# which pwd /usr/bin/pwd 显示详细信息
重定向命令
关于重定向使用最多的是就是输出重定向, 顾名思义就是修改输出的数据的位置, 通过重定向操作我们可以非常方便的进行文件的复制, 或者文件内容的追加。输出重定向使用的不是某个关键字而是符号 >或者>>。
>: 将文件内容写入到指定文件中, 如果文件中已有数据, 则会使用新数据覆盖原数据
>>: 将输出的内容追加到指定的文件尾部
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # 输出的重定向举例: printf 默认是要将数据打印到终端, 可以修改默认的输出位置 => 重定向到某个文件中 # 关键字 > # 执行一个shell指令, 获得一个输出, 这个输出默认显示到终端, 如果要将其保存到文件中, 就可以使用重定向 # 如果当前目录下test.txt不存在, 会被创建, 如果存在, 内容被覆盖 $ date > test.txt# 日期信息被写入到文件 test.txt中 robin@OS:~/Linux$ cat test.txt Wed Apr 15 09:37:52 CST 2020 # 如果不希望文件被覆盖, 而是追加, 需要使用 >> in@OS:~/Linux$ date >> test.txt # 日期信息被追加到 test.txt中 robin@OS:~/Linux$ cat test.txt Wed Apr 15 09:37:52 CST 2020 Wed Apr 15 09:38:44 CST 2020 # 继续追加信息 robin@OS:~/Linux$ date >> test.txt robin@OS:~/Linux$ cat test.txt Wed Apr 15 09:37:52 CST 2020 Wed Apr 15 09:38:44 CST 2020 Wed Apr 15 09:39:03 CST 2020