linux:基本指令操作常见指令操作及总结

Posted 宁海没有七号公园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux:基本指令操作常见指令操作及总结相关的知识,希望对你有一定的参考价值。

linux常见命令行操作及总结

正文开始@Assassin

一些有趣的命令:

① 小火车 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 file1..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 dira..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 dira..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指定每屏显示的行数
-lmore在通常情况下把 ^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显示当年的日历

① 显示当前月份的日历:

② 显示近期三个月的日历(当前月,上一个月和下一个月):
linux基础-常见指令及权限理解

❤️万字总结《Linux系统常用命令》❤️——常用的Linux操作指令详解及案例!(建议收藏)

git指令总结及常见问题积累与解决方案

Linux编程一Linux常见指令和权限理解(思维导图总结)

Linux编程一Linux常见指令和权限理解(思维导图总结)

Linux编程一Linux常见指令和权限理解(思维导图总结)