1.ls 指令
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-l 列出文件的详细信息。
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-t 以时间排序。
-R 列出所有子目录下的文件。(递归)
1.ls 显示当前目录内容
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# ls
dir1
2.ls /指定目录名 (显示指定目录下的内容)
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# ls /root
dir1
3.ls -l 显示更详细的内容 (可简写成ll)
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# ls -l
drwxr-xr-x 2 root root 4096 Apr 24 16:28 dir1
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# ll
drwxr-xr-x 2 root root 4096 Apr 24 16:28 dir1
4.ls -d 将目录像文件一样显示(不显示里面的内容)
[root@iZ2zecqsv5wjkzeb9qkxhmZ wws]# tree /root
/root
└── qlsf
└── jsj
└── wws
3 directories, 0 files
[root@iZ2zecqsv5wjkzeb9qkxhmZ wws]# ls -l /root
total 4
drwxr-xr-x 3 root root 4096 Apr 24 17:52 qlsf
[root@iZ2zecqsv5wjkzeb9qkxhmZ wws]# ls -ld /root
dr-xr-x---. 6 root root 4096 Apr 24 17:50 /root
5.ls -a 把隐藏文件和目录一同显示出来(前面带 . 的是隐藏的)
ls -al/-la 在显示隐藏的基础上显示详细信息
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc .cache .cshrc dir1 .pip .pydistutils.cfg .ssh .tcshrc
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# ls -la
total 52
dr-xr-x---. 6 root root 4096 Apr 24 16:28 .
dr-xr-xr-x. 20 root root 4096 Apr 24 16:28 ..
-rw------- 1 root root 95 Apr 24 15:42 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwx------ 3 root root 4096 Aug 16 2023 .cache
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
drwxr-xr-x 2 root root 4096 Apr 24 16:28 dir1
drwxr-xr-x 2 root root 4096 Aug 16 2023 .pip
-rw-r--r-- 1 root root 206 Apr 24 15:40 .pydistutils.cfg
drwx------ 2 root root 4096 Aug 16 2023 .ssh
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
提示:
1.详细显示下以d开头的是目录,-r开头的是文件。
2.文件=文件内容+文件属性
2.pwd命令
功能:显示用户当前所在的目录
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# pwd
/root/dir1
windows:\是路径分隔符。
linux:/是路径分隔符。
注意:/root/dir1 最前面的 / 是根目录。
3.cd 指令
功能:改变工作目录。将当前工作目录改变到指定的目录下。(切换到其他目录)
常用选项
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~:进入用户家目
cd -:返回最近访问目录
1.cd .. 返回上级目录
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# tree /root
/root
└── qlsf
└── jsj
└── wws
3 directories, 0 files
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# pwd
/root/qlsf/jsj
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# cd ..
[root@iZ2zecqsv5wjkzeb9qkxhmZ qlsf]# pwd
/root/qlsf
对于任何一个目录它的隐藏目录都有 . 和 .. 这两个隐藏目录是特殊目录。
. :当前目录
.. :上级目录 (对于 / 根目录的 .. 仍是指向自己(当前目录))
[root@iZ2zecqsv5wjkzeb9qkxhmZ qlsf]# ls -la
total 12
drwxr-xr-x 3 root root 4096 Apr 24 17:52 .
dr-xr-x---. 6 root root 4096 Apr 24 17:50 ..
drwxr-xr-x 3 root root 4096 Apr 24 17:53 jsj
2.cd 相对路径 绝对路径
相对路径:(从tm目录到jsj目录)
[root@iZ2zecqsv5wjkzeb9qkxhmZ tm]# tree /root
/root
└── qlsf
├── jsj
│ └── crk
└── tm
4 directories, 0 files
[root@iZ2zecqsv5wjkzeb9qkxhmZ tm]# pwd
/root/qlsf/tm
[root@iZ2zecqsv5wjkzeb9qkxhmZ tm]# cd ../jsj
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# pwd
/root/qlsf/jsj
绝对路径:
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# cd /root/qlsf/tm
[root@iZ2zecqsv5wjkzeb9qkxhmZ tm]# pwd
/root/qlsf/tm
3.cd - 返回最近访问的目录
[root@iZ2zecqsv5wjkzeb9qkxhmZ tm]# tree /root
/root
└── qlsf
├── jsj
│ └── crk
└── tm
4 directories, 0 files
[root@iZ2zecqsv5wjkzeb9qkxhmZ qlsf]# cd /root/qlsf/jsj
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# cd ../tm
[root@iZ2zecqsv5wjkzeb9qkxhmZ tm]# cd -
/root/qlsf/jsj
4. cd ~:进入用户家目
什么是家目录?
用户首次登录所处的默认路径就是他自己的家目录。
Last login: Wed Apr 24 18:38:36 2024 from 118.31.243.171
Welcome to Alibaba Cloud Elastic Compute Service !
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# pwd
/root
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# cd ~
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# pwd
/root
4.touch指令
语法:touch [选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# mkdir dir1
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# cd dir1
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# touch ./test.c //在当前目录建立 ./可省
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# tree /root
/root
├── dir1
│ └── test.c
└── qlsf
├── jsj
│ └── crk
└── tm
5 directories, 1 file
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ls -la
total 8
drwxr-xr-x 2 root root 4096 Apr 24 18:48 .
dr-xr-x---. 7 root root 4096 Apr 24 18:47 ..
-rw-r--r-- 1 root root 0 Apr 24 18:48 test.c
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# pwd
/root/dir1
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# touch ../test.cpp //返回上级目录建立
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# tree /root
/root
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
5.mkdir指令
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
eg:mkdir –p d1/d2/d3 : 递归建立多个目录
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
5 directories, 2 files
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# mkdir -p d1/d2/d3
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── d1
│ └── d2
│ └── d3
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
在d3下面再建目录d4
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# mkdir -p d1/d2/d3/d4
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── d1
│ └── d2
│ └── d3
│ └── d4
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
6.rmdir指令
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir [-p] [dirName]
功能:删除空目录
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── d1
│ └── d2
│ └── d3
│ └── d4
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# rmdir d1/d2/d3/d4 //只能删空目录
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── d1
│ └── d2
│ └── d3
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
7.rm 指令
rm命令可以同时删除文件或目录
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── d1
│ └── d2
│ └── d3
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
8 directories, 2 files
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# rm d1
rm: cannot remove ‘d1’: Is a directory
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# rm -r d1 //递归式删除目录
rm: descend into directory ‘d1’? y
rm: descend into directory ‘d1/d2’? y
rm: remove directory ‘d1/d2/d3’? y
rm: remove directory ‘d1/d2’? y
rm: remove directory ‘d1’? y
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
如果不想让编译器问是否删除就用 -f 强制删除
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── d1
│ └── d2
│ └── d3
│ └── d4
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
9 directories, 2 files
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# rm -rf d1 //强制删除
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
└── test.cpp
通配符
通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# touch t1 t2 t3 //以空格隔开 创建多个文件
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree .
.
├── dir1
│ └── test.c
├── qlsf
│ ├── jsj
│ │ └── crk
│ └── tm
├── t1
├── t2
├── t3
└── test.cpp
5 directories, 5 files
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# rm t* //以通配符来查找开头为t的文件
rm: remove regular empty file ‘t1’? y
rm: remove regular empty file ‘t2’? y
rm: remove regular empty file ‘t3’? y
rm: remove regular empty file ‘test.cpp’? y
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree .
.
├── dir1
│ └── test.c
└── qlsf
├── jsj
│ └── crk
└── tm
热键
1.快速按两次Tab键
对指令 路径补齐
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# who //连按两次Tab 把匹配的指令输出
who whoami
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# whoami //whoa 按Tab进行补齐
root
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# tree /root
/root
├── dir1
│ └── test.c
└── qlsf
├── jsj
│ └── crk
└── tm
5 directories, 1 file
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# pwd
/root/qlsf/jsj
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# rmdir ../ //连按两次Tab 把上级文件名打印
jsj/ tm/
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# rmdir ../tm
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# tree /root
/root
├── dir1
│ └── test.c
└── qlsf
└── jsj
└── crk
2.Ctrl+c 运行时可强制终止
3.Ctrl+r 后输入部分字母查找历史指令
(reverse-i-search)`': //输入tar后 (reverse-i-search)`tar': tar xf dir2.tgz -C dir1
4.Ctrl+d 退出登录另外,也可以用来取代exit
8.man指令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man语法: man [选项] 命令
常用选项
-k 根据关键字搜索联机帮助
num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
[root@iZ2zecqsv5wjkzeb9qkxhmZ jsj]# man pwd
按 q 退出
如果没有给选项 eg: man printf 会从选项1 开始找
补充:nano指令 在文件中写入东西
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# nano test.c //test.c写入代码
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# cat test.c //打印
#include
int main()
{
printf("hello linux");
}
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# gcc test.c -o mytest
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll
total 16
-rwxr-xr-x 1 root root 8360 Apr 24 20:24 mytest
-rw-r--r-- 1 root root 60 Apr 24 20:21 test.c
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ./mytest //加 ./ 才能找到mytset(相对路径)
9.cp指令
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,
则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
//单个文件的拷贝
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll
total 16
-rwxr-xr-x 1 root root 8360 Apr 24 20:24 mytest
-rw-r--r-- 1 root root 60 Apr 24 20:21 test.c
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ./mytest
hello linux[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# cp test.c hello.c //在当前路径复制test.c
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll
total 20
-rw-r--r-- 1 root root 60 Apr 24 20:32 hello.c
-rwxr-xr-x 1 root root 8360 Apr 24 20:24 mytest
-rw-r--r-- 1 root root 60 Apr 24 20:21 test.c
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll ../
total 8
drwxr-xr-x 2 root root 4096 Apr 24 20:32 dir1
drwxr-xr-x 3 root root 4096 Apr 24 19:46 qlsf
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# cp mytest ../ //把mytest 复制到上级路径
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll ../
total 20
drwxr-xr-x 2 root root 4096 Apr 24 20:32 dir1
-rwxr-xr-x 1 root root 8360 Apr 24 20:34 mytest
drwxr-xr-x 3 root root 4096 Apr 24 19:46 qlsf
//对一串目录递归拷贝
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── dir1
│ ├── hello.c
│ ├── mytest
│ └── test.c
├── empty
├── mytest
└── qlsf
└── jsj
└── crk
5 directories, 4 files
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# cp -r qlsf empty //把 qlsf 目录递归拷贝到 empty
[root@iZ2zecqsv5wjkzeb9qkxhmZ ~]# tree /root
/root
├── dir1
│ ├── hello.c
│ ├── mytest
│ └── test.c
├── empty
│ └── qlsf
│ └── jsj
│ └── crk
├── mytest
└── qlsf
└── jsj
└── crk
8 directories, 4 files
10.mv指令
mv命令是move的缩写,可以用来移动文件或者将文件改名。
功能:
1. 在当前路径对一个文件/目录改名目录中。
2. 把当前路径文件/目录剪切到目标路径。常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
//1.在当前路径对一个文件/目录改名
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# touch test.c
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# ll
total 0
-rw-r--r-- 1 root root 0 May 10 16:02 test.c
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# mv test.c test.cpp
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# ll
total 0
-rw-r--r-- 1 root root 0 May 10 16:02 test.cpp
//1.把当前路径文件/目录剪切到上级路径
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# tree ../
../
└── dir2
├── dir3
└── test.cpp
2 directories, 1 file
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# tree ./
./
├── dir3
└── test.cpp
1 directory, 1 file
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# mv test.cpp ../
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# tree ../
../
├── dir2
│ └── dir3
└── test.cpp
//2.如果上级路径中有同名文件/目录 就会问是否覆盖(-f强制覆盖)
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# touch test.cpp
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# ll
total 4
drwxr-xr-x 2 root root 4096 May 10 16:05 dir3
-rw-r--r-- 1 root root 0 May 10 16:10 test.cpp
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# mv test.cpp ../
mv: overwrite ‘../test.cpp’? y
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# ll
total 4
drwxr-xr-x 2 root root 4096 May 10 16:05 dir3
//3.移动到上级路径并改名
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# touch test.c
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# mv test.c ../test
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# tree ../
../
├── dir2
│ └── dir3
├── test
└── test.cpp
11.cat指令 tac指令
语法:cat [选项] [文件]
功能: 查看目标文件的内容
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
tac 逆序输出文件内容
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# nano test.txt
//显示文件内容
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat test.txt
aaaaaaaaaaa
bbbbbbbbbbbb
ccccccccccccc
dddddddddddddd
//-n 每一行都带序号
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat -n test.txt
1 aaaaaaaaaaa
2 bbbbbbbbbbbb
3
4 ccccccccccccc
5
6
7
8 dddddddddddddd
9
//-b 非空带行号
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat -b test.txt
1 aaaaaaaaaaa
2 bbbbbbbbbbbb
3 ccccccccccccc
4 dddddddddddddd
//-s 不输出多行空行
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat -s test.txt
aaaaaaaaaaa
bbbbbbbbbbbb
ccccccccccccc
dddddddddddddd
12.echo指令
echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。(和scanf printf功能相似,从键盘上提取内容,再在显示屏上输出。但自动换行)
命令格式如下:
echo 【选项】 【输出内容】常用选项:
-n 表示输出之后不换行。
-e 支持反斜线控制的字符转换,前面有斜线的字符将作为转义字符,但是需要要有单引号或者双引号包含。
//向显示屏输出
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# echo "helloc world"
helloc world
//-n 不换行
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# echo -n "helloc world"
//-e 支持转义字符 但内容要用“”/''括起来
helloc world[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# echo -e "helloc world\n\n"
helloc world
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# echo -e helloc world\n\n
helloc worldnn
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]#
1.> 输出重定向
我们知道echo会将输入的字符串送往标准输出,但我们想把内容输出到文件当中应该怎么做?
echo "hhh">test.txt 将内容写入文件当中(如果没有会新建文件)
>输出重定向 会把旧的内容清空再写入。
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# ll
total 8
drwxr-xr-x 2 root root 4096 May 10 16:05 dir3
-rw-r--r-- 1 root root 59 May 10 16:28 test.txt
//将内容写入文件当中(如果没有会新建文件)
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# echo "aaaaaaaaaaaaa">test1.txt
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat test1.txt
aaaaaaaaaaaaa
//会把旧的内容清空再写入
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# echo "bbbbbbbbbbbbbbbbb">test1.txt
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat test1.txt
bbbbbbbbbbbbbbbbb
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# ll
total 12
drwxr-xr-x 2 root root 4096 May 10 16:05 dir3
-rw-r--r-- 1 root root 18 May 10 17:19 test1.txt
-rw-r--r-- 1 root root 59 May 10 16:28 test.txt
我们可以利用>来代替touch创建一个新文件(未创建)
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# >test2.txt
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# ll
total 12
drwxr-xr-x 2 root root 4096 May 10 16:05 dir3
-rw-r--r-- 1 root root 18 May 10 17:19 test1.txt
-rw-r--r-- 1 root root 0 May 10 17:21 test2.txt
-rw-r--r-- 1 root root 59 May 10 16:28 test.txt
同样我们也可以用>清空文件(已创建)
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# ll
total 12
drwxr-xr-x 2 root root 4096 May 10 16:05 dir3
-rw-r--r-- 1 root root 18 May 10 17:19 test1.txt
-rw-r--r-- 1 root root 0 May 10 17:21 test2.txt
-rw-r--r-- 1 root root 59 May 10 16:28 test.txt
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat test1.txt
bbbbbbbbbbbbbbbbb
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# >test1.txt
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat test1.txt
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# ll
total 8
drwxr-xr-x 2 root root 4096 May 10 16:05 dir3
-rw-r--r-- 1 root root 0 May 10 17:25 test1.txt
-rw-r--r-- 1 root root 0 May 10 17:21 test2.txt
-rw-r--r-- 1 root root 59 May 10 16:28 test.txt
2.>> 追加重定向
>>可以在原文件的基础上新加内容
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# echo "aaa">test1.txt
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat test1.txt
aaa
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# echo "bbbbb">>test1.txt
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat test1.txt
aaa
bbbbb
3.< 输入重定向
cat 可以从键盘读取,再输出到显示器上。
用<输入重定向从文件读,输出到显示器上。
(用>输出重定向 从键盘读,输出文件上)
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat test1.txt
1213
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat < test1.txt
1213
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat > test1.txt
awdadwa
^C
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir2]# cat test1.txt
awdadwa
ctcl+r 搜索以前指令 (按左右选中)
13.more(了解)
和cat功能相同,但只会打印满屏为止。回车继续向下打印。(按q结束)
14.less指令
功能:查看文件内容
选项:
1.-i 忽略搜索时的大小写
2.-N 显示每行的行号
3.-s 显示连续空行为一行
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# less test
/(要搜索的内容)
15.head tail指令
和cat功能一样,但head输出一开始的内容(默认10行),tail输出最后内容(默认10行)
-n 要显示的行数
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# head test
hello 1
hello 2
hello 3
hello 4
hello 5
hello 6
hello 7
hello 8
hello 9
hello 10
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# tail test
hello 9991
hello 9992
hello 9993
hello 9994
hello 9995
hello 9996
hello 9997
hello 9998
hello 9999
hello 10000
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# head -n5 test
hello 1
hello 2
hello 3
hello 4
hello 5
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# head -5 test
hello 1
hello 2
hello 3
hello 4
hello 5
管道 |
如果我们只想看中间的内容,怎么操作?
管道 | 将前面处理的内容交给后面处理(类似于流水线过程)
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# head -5020 test | tail -20
hello 5001
hello 5002
hello 5003
hello 5004
hello 5005
hello 5006
hello 5007
hello 5008
hello 5009
hello 5010
hello 5011
hello 5012
hello 5013
hello 5014
hello 5015
hello 5016
hello 5017
hello 5018
hello 5019
hello 5020
16.date指令
date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]... [+FORMAT]
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%X : 相当于 %H:%M:%S
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# date +%Y-%m-%d\ %H:%M-%S
2024-05-10 18:51-41
//时间戳
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# date +%s
1715338332
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# date +%Y-%m-%d\ %H:%M-%S -d @1715338332
2024-05-10 18:52-12
17.find指令
功能:查找对应路径下的能匹配的文件。
-name 根据名称匹配
-o 或者
//知道名字 指定搜索
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# find ./ -name "test"
./test
//模糊搜索
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# find ./ -name "t*"
./test1
./test
./test2
./dir2/test1.txt
./dir2/test.txt
./dir2/test2.txt
//-o或者
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# find ./ -name "t*" -o -name dir*
./test1
./test
./test2
./dir2
./dir2/test1.txt
./dir2/test.txt
./dir2/test2.txt
18.which指令
which于查找并显示指定命令的绝对路径。
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
我们可以看到ls指令是在bin路径下的一个文件,也就是指令=文件=可执行程序。
调用/bin路径下的程序可以直接调用。
//把mytest可执行程序mv到/bin路径下 就可以直接调用
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll
total 128
drwxr-xr-x 3 root root 4096 May 10 17:21 dir2
-rwxr-xr-x 1 root root 8360 May 10 19:45 mytest
-rw-r--r-- 1 root root 74 May 10 19:45 mytest.c
-rw-r--r-- 1 root root 108894 May 10 18:02 test
-rw-r--r-- 1 root root 0 May 10 19:15 test1
-rw-r--r-- 1 root root 0 May 10 19:15 test2
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ./mytest
hello linux
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# mv mytest /usr/bin
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll /usr/bin/mytest
-rwxr-xr-x 1 root root 8360 May 10 19:45 /usr/bin/mytest
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# mytest
hello linux
19.alias指令
相当于 typedef 对指令起别名。通过使用别名,可以简化复杂或冗长的命令。
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# which ll
alias ll='ls -l --color=auto'
/usr/bin/ls
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# /bin/ls
dir2 mytest.c test test1 test2
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ls
dir2 mytest.c test test1 test2
可以看到 ll 就是 ls -l 的别名。(--color=auto 作用是添颜色区分文件目录)
注意:别名只在当前会话有效,重新登录后将失效。
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# alias wws='ls -l -a'
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# wws
total 124
drwxr-xr-x 3 root root 4096 May 10 19:46 .
dr-xr-x---. 6 root root 4096 May 10 18:15 ..
drwxr-xr-x 3 root root 4096 May 10 17:21 dir2
-rw-r--r-- 1 root root 74 May 10 19:45 mytest.c
-rw-r--r-- 1 root root 108894 May 10 18:02 test
-rw-r--r-- 1 root root 0 May 10 19:15 test1
-rw-r--r-- 1 root root 0 May 10 19:15 test2
20.grep指令
文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行。
选项:
-i 不区分大小写-v 排除目标
-n 显示行号
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# grep 'qlsf' test1
qlsf
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# grep -i 'qlsf' test1
qlsf
Qlsf
QLsf
QLSf
QLSF
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# grep -in 'qlsf' test1
1:qlsf
2:Qlsf
3:QLsf
4:QLSf
5:QLSF
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# grep -inv 'qlsf' test1
6:aaaaaaaaaaaaaa
7:bbbbbbbbbbbbbb
常用于找进程
21.zip unzip 指令
zip命令的功能是用于压缩文件,解压为unzip。压缩后不覆盖源文件,可以压缩目录。
语法:zip [选项] [参数] [文件]
-r 对目录递归处理
unzip [选项] 压缩包名 源文件或源目录列表
-d<目录> 指定文件解压缩后所要存储的目录。
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll
total 148
drwxr-xr-x 2 root root 4096 May 10 20:35 dir
drwxr-xr-x 4 root root 4096 May 10 20:23 dir2
-rw-r--r-- 1 root root 74 May 10 19:45 mytest.c
-rw-r--r-- 1 root root 108894 May 10 18:02 test
-rw-r--r-- 1 root root 55 May 10 20:08 test1
-rw-r--r-- 1 root root 0 May 10 19:15 test2
-rw-r--r-- 1 root root 23982 May 10 20:19 test.zip
//递归压缩dir2目录
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# zip -r dir2.zip dir2
updating: dir2/ (stored 0%)
adding: dir2/d4/ (stored 0%)
adding: dir2/test1.txt (stored 0%)
adding: dir2/dir3/ (stored 0%)
adding: dir2/test.txt (deflated 64%)
adding: dir2/test2.txt (stored 0%)
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll
total 152
drwxr-xr-x 2 root root 4096 May 10 20:35 dir
drwxr-xr-x 4 root root 4096 May 10 20:23 dir2
-rw-r--r-- 1 root root 947 May 10 20:36 dir2.zip
-rw-r--r-- 1 root root 74 May 10 19:45 mytest.c
-rw-r--r-- 1 root root 108894 May 10 18:02 test
-rw-r--r-- 1 root root 55 May 10 20:08 test1
-rw-r--r-- 1 root root 0 May 10 19:15 test2
-rw-r--r-- 1 root root 23982 May 10 20:19 test.zip
//-d 解压压缩包并放到当前路径下dir目录
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# unzip dir2.zip -d ./dir
Archive: dir2.zip
creating: ./dir/dir2/
creating: ./dir/dir2/d4/
extracting: ./dir/dir2/test1.txt
creating: ./dir/dir2/dir3/
inflating: ./dir/dir2/test.txt
extracting: ./dir/dir2/test2.txt
[root@iZ2zecqsv5wjkzeb9qkxhmZ dir1]# ll ./dir
total 4
drwxr-xr-x 4 root root 4096 May 10 20:23 dir2
22.tar指令(重要):打包/解包,不打开它,直接看内容
tar [-cxtzjvf] 文件与目录 .... 参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?(需不需要压缩)
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!(显示压缩过程)
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!(后加新建文件名)
-C : 解压到指定目录
打包并压缩文件 -czvf 新建文件名 打包压缩文件名
[root@hcss-ecs-d531 ~]# tree . ├── dir1 └── dir2 └── dir3 └── dir4 4 directories, 0 files [root@hcss-ecs-d531 ~]# tar czf dir2.tgz dir2 [root@hcss-ecs-d531 ~]# ll total 12 drwxr-xr-x 2 root root 4096 Aug 13 21:52 dir1 drwxr-xr-x 3 root root 4096 Aug 13 21:54 dir2 -rw-r--r-- 1 root root 141 Aug 13 22:16 dir2.tgz
打开并解压 -xzvf 打开解压文件名 -C 路径 (默认当前路径)
root@hcss-ecs-d531 ~]# tar xzf dir2.tgz -C dir1 [root@hcss-ecs-d531 ~]# ll total 12 drwxr-xr-x 3 root root 4096 Aug 13 22:31 dir1 drwxr-xr-x 3 root root 4096 Aug 13 21:54 dir2 -rw-r--r-- 1 root root 141 Aug 13 22:16 dir2.tgz [root@hcss-ecs-d531 ~]# tree . ├── dir1 │ └── dir2 │ └── dir3 │ └── dir4 ├── dir2 │ └── dir3 │ └── dir4 └── dir2.tgz
23.bc
bc命令可以很方便的进行浮点运算
[root@hcss-ecs-d531 dir1]# echo "1+2+3+4+5.5" | bc 15.5
24.uname –r指令
语法:uname [选项]
功能: uname用来获取电脑和操作系统的相关信息。
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
[root@hcss-ecs-d531 dir1]# uname -a
Linux hcss-ecs-d531 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
25.关机
语法:shutdown [选项] ** 常见选项:**
-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思