linux常见命令行操作及总结
正文开始@Assassin
目录:
- linux常见命令行操作及总结
- 一些有趣的命令:
- 1. ls指令:
- 2. pwd指令:
- 3. whoami指令:
- 4. cd指令:
- 5. clear指令:
- 6. echo指令:
- 7. touch指令:
- 8. mkdir指令:
- 9. rmdir指令:
- 10. rm指令:
- 11. man指令:
- 12. cp指令:
- 13. mv指令:
- 14. cat指令:
- 15. tac指令:
- 16. more指令:
- 17. less指令:
- 18. head指令:
- 19. tail指令:
- 20. date指令:
- 21. cal指令:
- 22. find指令:
- 23. which指令:
- 24. alias指令:
- 25. grep指令:
- 26. useradd/userdel/groupadd/groupdel指令:
- 27. zip指令:
- 28. unzip指令:
- 29. tar指令:
- 30. file指令:
- 31. bc指令:
- 32. uname指令:
- 33. history指令:
- 34. exit/logout指令:
一些有趣的命令:
① 小火车 sl
[Assassin@Ninghai ~]$ sl
sl 安装:
[Assassin@Ninghai ~]$ sudo yum install -y sl
安装失败的(找不到安装包)可以下载epel第三方源安装,安装完成后再执行sl安装就ok
[Assassin@Ninghai ~]$ sudo yum install -y epel-release
② cowsay动画:
[Assassin@Ninghai ~]$ cowsay Lebron James nb!
cowsay 安装:
[Assassin@Ninghai ~]$ sudo yum install -y cowsay
按理来说,安装了cowsay之后,animalsay 也能用了,animalsay每次的小动物是随机的~~
③ boxes指定动画:
[Assassin@Ninghai ~]$ echo "Stephen Curry is an elementary school student" | boxes -d dog
boxes 安装:
[Assassin@Ninghai ~]$ sudo yum install -y boxes
④ 黑屏显示天气:
[Assassin@Ninghai ~]$ curl http://wttr.in
⑤ elinks终端访问网页:
[Assassin@Ninghai ~]$ elinks www.baidu.com
挺丑的,按 q 退出网页
elinks 安装:
[Assassin@Ninghai ~]$ sudo yum install -y elinks
⑥ lrzsz拖拽式传输文件:
支持小文件之间从windows传输到linux,虽然在xftp前显得很鸡肋,不过很方便:
lrzsz安装:
[Assassin@Ninghai ~]$ sudo yum install -y lrzsz
1. ls指令:
语法: ls [选项] [目录或文件]
功能: 对于目录,该命令列出该目录下的所有子目录与文件;对于文件,该命令会列出文件名及其他有关信息
[Assassin@Ninghai ~]$ ls
ls常用选项:
-a | 显示所有文件及目录 (包括以"."开头的隐藏文件) |
---|---|
-l | 使用长格式列出文件及目录信息 |
-r | 将文件以相反次序显示(默认依英文字母次序) |
-t | 根据最后的修改时间排序 |
-S | 根据文件大小排序 |
-R | 递归列出所有子目录 |
① ls -l:列出文件的详细信息,包括文件的类型,所有者,所属组及相关的权限,文件的大小,文件的创建日期等
[Assassin@Ninghai ~]$ ls -l
小贴士:这里的 ls -l 可以简写为 ll ,因为:
alias是取别名的意思,这里os把 ls -l 取了一个别名 ll,自然也能用 ll 代替 ls -l
alias ll='ls -l --color=auto'
/usr/bin/ls
② ls -a:列出目录下的所有文件,包括以 . 开头的隐含文件,在linux中,以.开头的文件或目录被认为是默认不可见的
[Assassin@Ninghai ~]$ ls -a
可以看到列举出来的文件或文件夹都是以.开头,这些文件不能被直接可见,可以理解为一些重要文件不想被他人直接看到。在Linux当中,每个目录下默认存在两个隐含文件 . 和 . . ( . 代表当前目录 . . 代表上级目录)
③ ls -d:将目录像文件一样显示,而不是显示文件夹的文件
[Assassin@Ninghai ~]$ ls -d /home/Assassin/shell_code/
④ ls -i:输出文件的i节点的索引信息,也就是我们所说的inode信息。linux中不以文件的后缀作为区分文件类型的标准,文件后缀只是为了对比windows方便记忆和识别,而真正区分linux文件的是inode信息
[Assassin@Ninghai ~]$ ls -i
文件名前面的数字就是inode,作为linux文件的唯一标识
⑤ ls -h:以人类能看懂的方式输出信息,-h也就是-human的意思,一般来说是搭配其他参数使用,如 ls -lh
[Assassin@Ninghai ~]$ ls -lh
单纯的 ls -l 输出的文件大小信息是以字节为单位,加上-h后就是我们熟悉的K或者M
⑥ ls -R:递归列出所有子目录下的文件,便于观察文件的分布信息
[Assassin@Ninghai ~]$ ls -R
2. pwd指令:
语法: pwd
功能: pwd即为print working directory,也就是打印工作目录,即显示当前工作目录的绝对路径
显示的路径为绝对路径
3. whoami指令:
语法: whoami
功能: 显示用户当前的身份,相当于 id -un
who are you,who is he等命令都有相似的作用
4. cd指令:
语法: cd [目录名]
功能: 改变工作目录。将当前工作目录改变到指定的目录下。
绝对路径 | 使用绝对路径改变当前工作目录,直接跳转到该路径(绝对路径为从根目录/延伸出来的路径,路径唯一) |
---|---|
相对路径 | 使用相对路径改变当前工作目录,以自身当前所在路径为参照进行路径跳转,路径不唯一 |
– | 仅使用”-“选项时,当前目录将被切换到环境变量"OLDPWD"对应值的目录 ,也就是跳转到上一次所在目录 |
~ | 切换至当前用户工作目录 |
. . | 切换至当前目录位置的上一级目录 |
① cd 绝对路径:直接从根目录 / 一级一级往下走,直到目标目录
[Assassin@Ninghai ~]$ cd /etc/java/security/security.d/
② cd 相对路径:通过当前路径先进入上一级目录,最后再进入py_code
[Assassin@Ninghai ~]$ cd shell_code/
[Assassin@Ninghai shell_code]$ cd ../py_code/
[Assassin@Ninghai py_code]$ pwd
/home/Assassin/py_code
③ cd -:从py_code回到了上次的shell_code
[Assassin@Ninghai py_code]$ cd -
/home/Assassin/shell_code
④ cd ~:回到当前用户的工作目录,从shell_code直接回到了工作目录
[Assassin@Ninghai shell_code]$ cd ~
[Assassin@Ninghai ~]$ pwd
/home/Assassin
⑤ cd . . :回到当前目录的上一级目录,这里是从Assassin工作目录回到上一级的home目录
[Assassin@Ninghai ~]$ cd ..
[Assassin@Ninghai home]$ pwd
/home
5. clear指令:
语法: clear
功能: 清空当前屏幕
clear执行前:
clear执行后:
小贴士:ctrl + L也是清屏功能
6. echo指令:
语法: echo [参数] [字符串]
功能: echo命令用于在终端设备上输出字符串或变量提取后的值
一般使用在变量前加上 符 号 的 方 式 提 取 出 变 量 的 值 , 例 如 : 符号的方式提取出变量的值,例如: 符号的方式提取出变量的值,例如:PATH,然后再用echo命令予以输出,或者直接使用echo命令输出一段字符串到屏幕上,起到给用户提示的作用
[Assassin@Ninghai ~]$ echo $PATH
[Assassin@Ninghai ~]$ echo 'hello linux!'
解析变量的含义或者直接打印出字符串:
7. touch指令:
语法: touch [参数] [文件名]
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。touch命令有两个功能:一是创建新的空文件,二是改变已有文件的时间戳属性。
touch命令会根据当前的系统时间更新指定文件的访问时间和修改时间。如果文件不存在,将会创建新的空文件,除非指定了”-c”或”-h”选项。
注意:在修改文件的时间属性的时候,用户必须是文件的所有者,或拥有写文件的访问权限
常用选项:
-a | 改变档案的读取时间记录 |
---|---|
-m | 改变档案的修改时间记录 |
-r | 使用参考档的时间记录,与 --file 的效果一样 |
-c | 不创建新文件 |
-d | 设定时间与日期,可以使用各种不同的格式 |
-t | 设定档案的时间记录,格式与 date 命令相同 |
- -no-create | 不创建新文件 |
- -help | 显示帮助信息 |
- -version | 列出版本信息 |
① 不带参数创建一个普通文件:
[Assassin@Ninghai temp]$ touch it's_a_test.txt
② 批量创建文件:
[Assassin@Ninghai temp]$ touch file{1..5}.txt
③ 修改文件的access(访问)时间:
[Assassin@Ninghai temp]$ touch -a it_is_a_test.txt
8. mkdir指令:
语法: mkdir [参数] [文件夹名]
功能: 在当前目录下创建一个空目录。mkdir命令是"make directories"的缩写,用来创建目录。
默认状态下,如果要创建的目录已经存在,则提示已存在,而不会继续创建目录。 所以在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 mkdir命令还可以同时创建多个目录。
常用选项:
-p | 递归创建多级目录 |
---|---|
-m | 建立目录的同时设置目录的权限 |
-z | 设置安全上下文 |
-v | 显示目录的创建过程 |
① 不带参数创建一个空目录:
[Assassin@Ninghai temp]$ mkdir emptyDir
② 带有-m参数创建文件夹,设置文件所有者有读、写和执行权限,其他人无权访问:
[Assassin@Ninghai temp]$ mkdir -m 700 test-m-Dir
可以看到test-m-Dir文件夹的所有者有rwx权限,也就是读,写,执行权限,而所属组跟Other没有权限:
③ 批量创建文件夹:
[Assassin@Ninghai temp]$ mkdir dir{a..f}
④ -p 参数递归创建目录,可创建多级目录:
[Assassin@Ninghai emptyDir]$ mkdir -p A/B/C
可以看到创建了A,B,C三级目录
9. rmdir指令:
语法: rmdir [参数] [文件名]
功能: 删除一个空目录,rmdir命令作用是删除空的目录,英文全称:“remove directory”
rmdir命令只能删除空目录。当要删除非空目录时,就要使用带有"-r"选项的rm命令。rmdir命令的"-p"参数可以递归删除指定的多级目录,但是要求每个目录也必须是空目录
-p | 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错 |
---|---|
- - ignore-fail-on-non-empty | 忽略由于删除非空目录时导致命令出错而产生的错误信息 |
-v | 显示命令的详细执行过程 |
① 删除空目录:可以看到emptyDir被干掉了
[Assassin@Ninghai temp]$ rmdir emptyDir/
② 递归删除指定的目录树:当子目录被删除后如果父目录也变成空目录的话,就连同父目录一起删除
[Assassin@Ninghai test-m-Dir]$ rmdir -p A/B/C
可以看到A,B,C三级目录全部被干掉了
③ 显示指令详细执行过程:
[Assassin@Ninghai temp]$ rmdir -v dir{a..f}
可以看到批量创建的a到f文件夹全部被删除,并且-v显示删除信息
10. rm指令:
语法: rm [参数] [文件名或文件夹名]
功能: 删除文件或目录,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除
对于链接文件,只是删除了链接,原有文件均保持不变。 rm是相对来说是一个危险的命令,使用的时候要特别当心,尤其对于小白来说,例如 rm -rf /* 可以将整个操作系统摧毁。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。
常用选项:
-f | 忽略不存在的文件,不会出现警告信息(强制,不询问) |
---|---|
-i | 删除前会询问用户是否操作 |
-r/R | 递归删除 |
-v | 显示指令的详细执行过程 |
① -i,删除前逐一询问确认:
[Assassin@Ninghai temp]$ rm -i demo.txt
② -f,直接删除,不会有任何提示:
[Assassin@Ninghai temp]$ rm -f demo.txt
可以看到没有任何提示信息,强制删除
③ -r/-R,递归删除目录及目录下所有文件:
[Assassin@Ninghai temp]$ rm -r test-m-Dir/
可以看到temp文件夹的目录结构,test-m-Dir中有一个文件夹dir1和一个文件file.cpp,执行 rm -r test-m-Dir后,temp下只剩下demo.txt和rubbish
④ 可以搭配通配符使用,比如搭配 * :
先在当前目录下创建100个file.txt文件,演示用通配符 * 来删除之
[Assassin@Ninghai temp]$ rm file*.txt
所有的带file的文件均被删除:
注意:
rm -rf /* ----禁用,此操作会递归删除操作系统中所有文件
11. man指令:
语法: man [参数] 指令
功能: 查看指令的使用规则
man命令是Linux下最核心的命令之一,man命令并不是男人的意思,它是单词manual的缩写,即使用手册的意思。
man命令会列出一份完整的说明。 其内容包括命令语法、各选项的意义及相关命令 。更为强大的是,不仅可以查看Linux中命令的使用帮助,还可以查看软件服务配置文件、系统调用、库函数等帮助信息。man手册页文件存放在/usr/share/man目录下。
常用选项:
-a | 在所有的man帮助手册中搜索 |
---|---|
-d | 主要用于检查,如果用户加入了一个新的文件,就可以用这个参数检查是否出错 |
-f | 显示给定关键字的简短描述信息 |
-p | 指定内容时使用分页程序 |
-M | 指定man手册搜索的路径 |
-k | 根据关键字搜索联机帮助 |
num | 只在第num章节查找 |
-w | 显示文件所在位置 |
man命令内容组成的介绍:共10章
- 用户命令的使用方法,可以使用的参数等 (可执行程序或shell命令)
- 系统调用,只有系统才能执行的函数
- 库调用,大多是libc函数,如qsort(3)
- 设备和特殊文件
- 文件格式和约定
- 游戏
- 宏命令包和约定
- 系统管理命令,多数只有root可以执行
- 内核程序
- Tcl或Tk指令
比如执行 man ls:
按enter或者space下翻,按q退出man手册:
12. cp指令:
语法: cp [参数] [源文件或目录] [目标文件或目录]
功能: 复制文件或目录
cp即为copy的缩写,其功能为复制文件或目录到指定路径
常用选项:
-f | 若目标文件已存在,则会直接覆盖原文件 |
---|---|
-i | 若目标文件已存在,则会询问是否覆盖 |
-p | 保留源文件或目录的所有属性 |
-r | 递归复制文件和目录 |
-d | 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录 |
-l | 对源文件建立硬连接,而非复制文件 |
-s | 对源文件建立符号连接,而非复制文件 |
-b | 覆盖已存在的文件目标前将目标文件备份 |
-v | 详细显示cp命令执行的操作过程 |
-a | 等价于" -dpr "选项 |
① -f 或 --force 强行复制文件或目录,不论目标文件或目录是否已经存在:
[Assassin@Ninghai temp]$ cp -f test.cpp ..
上级目录中有一个同名的test.cpp文件,cp加上-f参数后,系统不给任何提示,直接强制覆盖操作:
② -i 或 --interactive 覆盖文件之前先询问用户:
[Assassin@Ninghai temp]$ cp -i test.cpp ..
cp加上-i参数后,在上级目录中存在同名文件test.cpp时,os进行了询问是否覆盖:
③ -r 或 -R 递归处理,将指定目录下的文件与子目录一并处理,若源文件或目录的属性不属于目录或符号链接,则一律视为普通文件处理:
[Assassin@Ninghai temp]$ cp -r test ./for_test/
将test文件夹连同子文件递归复制到for_test文件夹中:
同样的,cp指令也能搭配通配符进行批量化操作,这里不再演示~~
13. mv指令:
语法: mv [参数] [源文件或目录] [目标文件或目录]
功能: 移动文件/目录或对其改名
一个有点啥b的提示:
mv与cp的结果不同。mv命令好像文件"搬家",类似windows中的剪切,cp是单纯的复制了,自己也保留了一份。
常用选项:
-i | 若存在同名文件,则向用户询问是否覆盖 |
---|---|
-f | 覆盖已有文件时,不进行任何提示 |
-b | 当文件存在时,覆盖前为其创建一个备份 |
-u | 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作 |
① 将文件file_1重命名为file_2:
[Assassin@Ninghai temp]$ mv file_1 file_2
② 将文件file_2移动到目录test中 :
[Assassin@Ninghai temp]$ mv file_2 ./test
-i,-f参数可以类比cp指令,也是起到操作前是否询问的作用,这里不再演示。
14. cat指令:
语法: cat [参数] [文件]
功能: 查看目标文件的内容
常用选项:
n | 显示行数(空行也编号) |
---|---|
-s | 显示行数(多个空行算一个编号) |
-b | 显示行数(空行不编号) |
-E | 每行结束处显示$符号 |
-T | 将TAB字符显示为 ^I 符号 |
① 查看文件的内容:
vim procbar.cpp:
[Assassin@Ninghai temp]$ cat procbar.cpp
完整显示文件内容:
② -n 查看文件的内容,并显示行数编号:
[Assassin@Ninghai temp]$ cat -n procbar.cpp
将文件中的内容显示对应行号:
③ 查看文件的内容,并输出到另外一个文件中(重定向):
[Assassin@Ninghai temp]$ cat procbar.cpp > procbar.cpp.bak
[Assassin@Ninghai temp]$ cat procbar.cpp.bak
将文件procbar.cpp内容重定向到procbar.cpp.bak副本中:
④ 清空文件的内容:
/dev/null(或称空设备)在类Unix系统中是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF,简单理解为黑洞,里面啥也没有,你写东西进去也会消失:
⑤ 持续写入文件内容,碰到EOF符后结束并保存:
[Assassin@Ninghai temp]$ cat >> filename.txt << EOF
> hello
> i feel good
> shall we take the basketball?
> EOF
15. tac指令:
语法: tac [参数] [文件]
功能: 反向查看目标文件的内容
很明显,cat倒过来就是tac,tac命令就是将文件反向输出,刚好和cat输出相反
常用选项:
-b | 在行前而非行尾添加分隔标志 |
---|---|
-r | 将分隔标志视作正则表达式来解析 |
-s | 使用指定字符串代替换行作为分隔标志 |
[Assassin@Ninghai temp]$ tac filename.txt
16. more指令:
语法: more 文件
功能: 查看目标文件的内容
more命令用于将内容较长的文本文件内容(不能在一屏显示完)进行分屏显示,并且支持在显示时定位关键字,而对于内容较少的文本文件内容则推荐使用cat命令查看
常用选项:
-num | 指定每屏显示的行数 |
---|---|
-l | more在通常情况下把 ^L 当作特殊字符, 遇到这个字符就会暂停,-l选项可以阻止这种特性 |
-f | 计算实际的行数,而非自动换行的行数 |
-p | 先清除屏幕再显示文本文件的剩余内容 |
-c | 与-p相似,不滚屏,先显示内容再清除旧内容 |
-s | 多个空行压缩成一行显示 |
-u | 禁止下划线 |
+num | 从第 num 行开始显示 |
+ /pattern | 在每个文档显示前搜寻该字(pattern),然后从该字串之后开始显示 |
命令内部操作:
- Space键:显示文本的下一屏内容
- Enter键:向下n行,需要定义,默认为1行
- 斜线符\:接着输入一个模式,可以在文本中寻找下一个相匹配的模式
- h键:显示帮助屏
- b键:显示上一屏内容
- q键:退出more命令
- Ctrl+F、空格键:向下滚动一屏
- Ctrl+B:返回上一屏
- =: 输出当前的行号
- :f:输出文件名和当前的行号
- v:调用vi编辑器
- !:调用Shell,并执行命令
[Assassin@Ninghai temp]$ more info.txt
文章为红楼梦~~
17. less指令:
语法: less [参数] [文件]
功能: 既有查看目标文件的内容的功能,又有搜索功能
用less命令显示文件时,PageUp键向上翻页,PageDown键向下翻页,more跟less都是按q退出
less的作用与more十分相似,不同点为less命令允许用户向前或向后浏览文件,而more命令只能向后浏览
常用选项:
-b | 置缓冲区的大小 |
---|---|
-e | 当文件显示结束后,自动离开 |
-f | 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 |
-g | 只标志最后搜索的关键词 |
-i | 忽略搜索时的大小写 |
-m | 显示类似more命令的百分比 |
-N | 显示每行的行号 |
-o | 将less 输出的内容在指定文件中保存起来 |
-Q | 不使用警告音 |
-s | 显示连续空行为一行 |
-S | 在单行显示较长的内容,而不换行显示 |
-x | 将TAB字符显示为指定个数的空格字符 |
命令内部操作:
- b 向后翻一页
- d 向后翻半页
- h 显示帮助界面
- q 退出less 命令
- u 向前滚动半页
- y 向前滚动一行
- 空格键 滚动一页
- 回车键 滚动一行
[Assassin@Ninghai temp]$ less info.txt
文章为红楼梦~~
less常用于给管道符 | 搭配:
① ps查看进程信息并通过less分页显示:
[Assassin@Ninghai temp]$ ps aux | less
② 查看命令历史使用记录并通过less分页显示:
[Assassin@Ninghai temp]$ history | less
18. head指令:
语法: head [参数] [文件]
功能: 用于显示文件的开头至标准输出中,默认head指令打印其相应文件的开头10行
常用选项:
-n | 后面接数字,代表显示几行的意思 |
---|---|
-c | 指定显示头部内容的字符数 |
-v | 总是显示文件名的头信息 |
-q | 不显示文件名的头信息 |
① -n 显示前n行文件内容:
[Assassin@Ninghai temp]$ head -10 procbar.cpp
显示文件的前10行信息:
② -v 显示文件名信息,并显示文件前n行:
[Assassin@Ninghai temp]$ head -v -n 5 procbar.cpp
打印出文件的文件名信息,取前5行:
③ -c 显示文件前n个字符:
19. tail指令:
语法: tail [选项] [文件]
功能: 用于显示文件的末尾至标准输出中,默认tail指令打印其相应文件的末尾10行
常用选项:
-n | 后面接数字,代表显示几行的意思(从文末打印n行) |
---|---|
-c | 指定显示尾部内容的字符数 |
-f | 循环读取,一直变化的文件总是显示固定行数 |
① -n 显示文件的最后n行:
[Assassin@Ninghai temp]$ tail -n 10 procbar.cpp
显示文件的后10行:
② -c 显示文件的最后n个字符:
[Assassin@Ninghai temp]$ tail -c 10 procbar.cpp
显示文件的最后10个字符:
③ -f 一直变化的文件总是显示后n行:
[Assassin@Ninghai temp]$ tail -f 10 procbar.cpp
这里简单介绍一哈管道 |:
管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin),简单来讲就是可以实现连续执行命令,将前一次命令的输出结果作为下一次命令的输入
例如我想只查看info.txt中200行到210行的内容,其他内容都给过滤掉,如下图所示:
可以借助管道 | 来实现:
[Assassin@Ninghai temp]$ head -210 info.txt | tail -11
先将info.txt中前210行内容取出,将其结果通过管道传入到tail中,tail -11取出结果的后11行,也就是200-210共11行数据:
20. date指令:
语法: date [参数] [格式]
功能: 用于显示时间、设置时间、完成时间与时间戳之间的相互转换
%s表示打印出时间戳,date -d @时间戳 可以得到该时间戳对应的时间,%Y表示年份,%m表示月份,%d表示天数,%H表示小时数,%M表示分钟数,%S表示秒数
%X 相当于%H:%M:%S :
%F 相当于%Y-%m-%d:
21. cal指令:
语法: cal [参数] [月份] [年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1~9999),如有两个参数,则表示月份和年份。
常用选项:
-1 | 单月份输出日历 |
---|---|
-3 | 显示最近三个月的日历 |
-s | 将星期天作为月的第一天 |
-m | 将星期一作为月的第一天 |
-j | 显示在当年中的第几天 |
-y | 显示当年的日历 |
① 显示当前月份的日历:
② 显示近期三个月的日历(当前月,上一个月和下一个月):
③ 显示指定年月的日历:
比如2021年1月的日历:
22. find指令:
语法: find [路径] [选项] [查找和搜索的条件]
功能: 用于在文件树中查找文件,并作出相应的处理(可能访问磁盘->效率比较低)
常用选项:
-name | 按名称查找 |
---|---|
-size | 按大小查找 |
-user | 按属性查找 |
-type | 按类型查找 |
-iname | 忽略大小写 |
① -name 按照文件名查找文件:
[Assassin@Ninghai ~]$ find /home/Assassin/temp -name *.txt
-name 参数 搭配通配符查看在指定目录下的.txt文件:
② -size 按照文件大小查找文件:
-size 参数查找符合条件的文件,打印出其路径。
+30M意思是大于30M的文件:
[Assassin@Ninghai ~]$ find /home/Assassin/temp -size +30M
-30M自然是小于30M的文件,30M是查找刚好是30M的文件:
[Assassin@Ninghai ~]$ find /home/Assassin/temp -size -30M
③ -type 参数,查找指定类型的文件:
[Assassin@Ninghai ~]$ find /home/Assassin/temp -type f
[Assassin@Ninghai ~]$ find /home/Assassin/temp -type d
-type f 是查找普通文件类型,- type d 是查找文件夹类型:
23. which指令:
语法: which [命令]
功能: 用于查找某一指令的程序文件所在路径
which一般在PATH中查找,我们所使用的命令行也是放在PATH路径下,添加进PATH的目录下的可执行文件可以直接执行(类比环境变量),不需要额外带路径:
[Assassin@Ninghai ~]$ which ls
echo 查看一下PATH中有哪些目录:
[Assassin@Ninghai ~]$ echo $PATH
可以看到我们熟悉的/usr/bin添加进了PATH中,而我们常用的shell命令一般都放在/usr/bin中,这也是我们在执行 ls 不需要带路径的原因
不妨看看 /usr/bin 中的内容:显然是我们所使用的一些命令,如javac,pwd,alias,python等
[Assassin@Ninghai ~]$ ls /usr/bin
24. alias指令:
语法: alias 别名=‘原名’
功能: 可以用于给指令取别名
alias命令的作用只局限于此次登录的操作,如果想要每次登录都能够使用这些命令别名,则需要将相应的alias命令存放到bash的初始化文件 /etc/bashrc 中
常用选项:
-p | 打印已经设置的命令别名 |
---|
① alias 设置别名:
[Assassin@Ninghai ~]$ alias sb='ls -laih'
② alias -p 查看已经设置好的别名:
[Assassin@Ninghai ~]$ alias -p
25. grep指令:
语法: grep [参数] [搜寻字符串] [文件]
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
-i | 忽略大小写进行搜索 |
---|---|
-n | 列出所有的匹配行并显示行号 |
-v | 显示不包含匹配文本的所有行,反向搜索 |
① grep 无参数查找:
[Assassin@Ninghai temp]$ grep "忘不了" info.txt
② -i 忽略大小写进行查找:
[Assassin@Ninghai temp]$ grep "hello" -i test_for_grep.txt
hello跟Hello都被查找出来:
③ -n 输出行号:
[Assassin@Ninghai temp]$ grep "忘不了" -n info.txt
含有 " 忘不了 " 的行数的行号:
④ -v 反向选择,显示出没有待搜索字符串的行:
[Assassin@Ninghai temp]$ grep "hello" -v test_for_grep.txt
反向搜索,除了hello,其他全部打印出来:
26. useradd/userdel/groupadd/groupdel指令:
useradd:
[root@Ninghai ~]# useradd meiyangyang
创建用户美羊羊:
userdel:
[root@Ninghai ~]# userdel -r meiyangyang
删除用户美羊羊,-r 参数是将 /home 中的meiyangyang目录也一并删除:
groupadd:
[root@Ninghai ~]# groupadd meiyangyang
[root@Ninghai ~]# cat /etc/group
groupdel:
[root@Ninghai ~]# groupdel meiyangyang
[root@Ninghai ~]# cat /etc/group
meiyangyang组已经被删除
27. zip指令:
语法: zip [参数] [压缩文件.zip] [待打包目录或文件]
功能: 将目录或文件打包压缩成zip格式
zip命令可将一个或多个压缩文件及其有关文件的信息(名称、路径、日期、上次修改的时间、保护和检查信息以验证文件完整性)一起打包进一个压缩存档.zip
常用选项:
-q | 不显示指令执行过程 |
---|---|
-r | 递归处理,将指定目录下的所有文件和子目录一并处理 |
-z | 替压缩文件加上注释 |
-v | 显示指令执行过程或显示版本信息 |
① -r 递归压缩:
[Assassin@Ninghai temp]$ zip -r temp.zip ./*
生成一个temp.zip文件
28. unzip指令:
语法: unzip [压缩文件.zip] [参数] [指定目录]
功能: 将压缩文件解压到指定目录当中
常用选项:
-l | 显示压缩文件内所包含的文件 |
---|---|
-v | 执行时显示详细的信息 |
-c | 将解压缩的结果显示到屏幕上,并对字符做适当的转换 |
-n | 解压缩时不要覆盖原有的文件 |
-d | 指定解压的路径,不指定默认为当前目录 |
① -d 解压缩到指定路径:
[Assassin@Ninghai temp]$ unzip temp.zip -d ./test
查看一下test文件夹:
29. tar指令:
语法: tar [参数] [文件或目录]
功能: 打包/解包,不解开压缩包,直接查看里面内容
tar命令可以为linux的文件和目录创建压缩档案。利用tar可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件
常用选项:
-A | 新增文件到以存在的备份文件 |
---|---|
-B | 设置区块大小 |
-c | 建立新的备份文件 |
-C <目录> | 切换工作目录,先进入指定目录再执行压缩/解压缩操作,可用于仅压缩特定目录里的内容或解压缩到特定目录 |
-d | 记录文件的差别 |
-x | 从归档文件中提取文件 |
-t | 列出备份文件的内容 |
-z | 通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz |
-Z | 通过compress指令处理备份文件 |
-f<备份文件> | 指定备份文件 |
-v | 显示指令执行过程 |
-r | 添加文件到已经压缩的文件 |
-u | 添加改变了和现有的文件到已经存在的压缩文件 |
-j | 通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2 |
-v | 显示操作过程 |
-l | 文件系统边界设置 |
-k | 保留原有文件不覆盖 |
-m | 保留文件不被覆盖 |
-w | 确认压缩文件的正确性 |
-p | 保留原来的文件权限与属性 |
-P | 使用文件名的绝对路径,不移除文件名称前的“/”号 |
① 打包并压缩:
[Assassin@Ninghai temp]$ tar -zcvf temp.tgz ./*
② 解压缩:
[Assassin@Ninghai temp]$ tar -zxvf temp.tgz -C test
ls 查看一下 test 中的内容:
③ 不解开压缩包,直接查看里面内容:
[Assassin@Ninghai temp]$ tar -tf temp.tgz
30. file指令:
语法: file [参数] [文件]
功能: 查看文件的更多属性信息
file命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型
file 一般不使用参数,有一说一,参数没啥用,直接file + 文件名就完事
[Assassin@Ninghai temp]$ file procbar.cpp
31. bc指令:
语法: bc
功能: 进行算数运算
bc即 Binary Calculator ,是一种支持任意精度的交互执行的计算器语言,bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,整数就更不用说了
常用选项:
-i | 强制进入交互式模式 |
---|---|
-l | 定义使用的标准数学库 |
-w | 定义使用的标准数学库 |
-q | 打印正常的GNU bc环境信息 |
① bc交互:
② 执行浮点运算和一些高级函数:
32. uname指令:
语法: uname [参数]
功能: 用于获取计算机和操作系统的相关信息
uname命令的英文全称即 Unix name ,用于显示系统相关信息,比如主机名、内核版本号、硬件架构等,如果未指定任何选项,其效果相当于执行 uname -s 命令,即显示系统内核的名字
常用选项:
-a | 显示系统所有相关信息 |
---|---|
-m | 显示计算机硬件架构 |
-n | 显示主机名称 |
-r | 显示内核发行版本号 |
-s | 显示内核名称 |
-v | 显示内核版本 |
-p | 显示主机处理器类型 |
-o | 显示操作系统名称 |
-i | 显示硬件平台 |
① -a 显示系统主机名、内核版本号、CPU类型等信息:
[Assassin@Ninghai temp]$ uname -a
② -r 显示当前系统的内核版本:
[Assassin@Ninghai temp]$ uname -r
33. history指令:
语法: history [参数]
功能: history命令用于显示用户以前执行过的历史命令
history 命令还能对历史命令进行追加和删除等操作
[Assassin@Ninghai temp]$ history 10
显示最近10条执行的记录,不带参数默认把全部信息打印出:
使用 ! n可以快速执行对应的指令:
例如 ! 1098 直接执行了 ls 命令,另外 !! 双感叹号可执行最近一次的操作:
34. exit/logout指令:
语法: exit / logout
功能: 退出终端,退出当前登录用户
[Assassin@Ninghai temp]$ exit
exit 与 logout 功能类似,另外 ctrl + D 也可以退出当前登录:
基本命令就这样,over~