【Linux】基本指令
环境:Ubuntu
- CTRL + C:如果在命令行中出现了异常,可以用他来终止异常
- CTRL + R:快速搜索历史命令
- CTRL + D:退出当前用户,但不退出Xshell
- 上下键:寻找历史命令
- [Tab]按键:快速按两下,具有 命令补全 和 档案补⻬ 的功能

- Alt + Enter :全屏、退出全屏
- clear:清屏
- who am i:查看当前用户
- pwd :显示当前用户所在目录(目录==文件夹)
linux中的路径分隔符是 / ,win是 \ 。路径的最后一个文件(如上图的lesson2),可能是普通文件,也可能是一个目录,我们不确定,但我们能确定最后一个文件之前的全是目录。
1.mkdir、man、tree
- mkdir 文件名:创建目录
- mkdir -p 路径:一次性创建一串路径
- man 命令:man是一个在线手册,可以查看命令的用法(按Q退出)
- tree 指定目录:树形结构展示指定目录的内容
- tree .:树形结构展示当前目录的内容 (tree .. 就是展示上级目录)
2. ls、touch、which、alias
- 文件 = 内容 + 属性 (学习文件:要么对内容操作,要么对属性操作)
- 显示当前我这个用户所处的目录下的文件:ll、ls、ls -l ( - 后面的是选项)
ls 和 ls -l 的区别:
- ls:显示时,默认只会显示文件名属性;
- ls -l:除了会显示文件名,还会显示更多的属性。
ls -l后,显示出来的所有属性的第一个字母为d,就表示这个文件类型是目录。
- ls 指定目录 :查看指定目录下的文件
目录本身也是个文件,如果我们想查看这个目录本身,不想进到这个目录里去,不想看目录里的内容。
- ls -d:查看目录本身的属性
- touch 文件名:新建一个普通文件
- touch 已经存在的文件:更新文件的时间
- which 命令:查找命令,指定目录下去查找指定命令
所以,命令的本质就是一个可执行的普通文件,相当于我们写的C/C++程序,用命令的路径也能执行相关操作。
- ls -a:显示隐藏文件
- ls -a 和 ls 的区别 :ls -a会显示 . 和 ..
可以给ls传递2个选项,并且写法很随意。
- alias 别名=命令:给命令取别名
- ls -al 和 ll 的区别:ll 是 ls -al的别名
- 在linux中,以点开头的文件是隐藏文件。
隐藏文件该可以是目录。
3. cd、stat
- cd + 路径:更改目录
任何一个目录,即便是个空目录,系统都会自带 . 和 .. 目录。
- 一个点 . : 当前目录
- 两个点 .. :上级目录
- cd . :就在当前目录
- cd .. :返回上级目录
如果我们一直回退,一直回退到不能回退。
此时就是回退到只剩下/,这里的/就不再是路径分隔符,而是linux的根目录。
我们可以用ls -d查看这个根目录本身,并且可以发现这个/的属性是以d开头的,证明/是个目录。
Linux的文件结构,是一颗从根目录(也就是/)开始的多叉树。
- 叶子节点:一定是普通文件或者空目录
- 非叶子节点:一定是一个非空目录
任何父节点都有多个孩子,但是任何节点都只有一个父节点,逆向推导“从下往上”的路径具有唯一性。
比如这个路径/root/classcode/lesson2 ,具有唯一性,这种表示方法也叫绝对路径。
假设我们现在在movie这个目录里
我们想去到mydir这个目录里,可以先返回上一级,再进到mydir目录。
这种以 非根目录/ 为参照位置,定位文件,就叫相对路径。
ls查看文件也是能用相对路径和绝对路径。
- cd ~:回到当前用户自己的家目录
- 家目录: 任何用户,用特定的用户名,一登录系统时,就默认在的路径。
- cd -:最近所处的路径
- stat 文件名:显示文件的更多时间和更多属性
可以看到这里有3种时间。
Access:最近被访问的时间
Modify、Change:改动的时间
4. rm、cp
- rmdir:默认只能删除空目录,非空目录不能删,普通文件不能删
- rm 文件名:默认只能删除普通文件
- rm -f 文件名:不要二次确认,直接强制删除(Ubuntu系统没有二次提醒)
- rm -r:可以删除目录
同一目录下的文件不能同名,不同目录下可以同名。
- cp 源文件 目标文件:拷贝普通文件到另一个文件,如果目标文件不存在,会先创建一个文件再拷贝
- cp 源文件 指定路径/文件名:将文件拷贝到指定路径下的文件去(绝对路径或相对路径都可以),文件不存在会先创建
- cp 源文件 指定路径:只有指定路径的话,就会把被拷贝文件原名拷贝到指定路径去。
- cp -r 源目录 目标目录:将原目录拷贝到目标目录。
目标目录不存在时:自动新建目标目录,然后把源目录里的内容拷贝到目标目录
目标目录存在时:直接把源目录整体拷贝进目标目录
5. nano、echo、cat、printf
在Linux系统中,一切皆文件,包括键盘、显示器,系统在启动时,会自动打开如下3个文件:
- printf:打印内容,和C语言里的printf不是一个东西,只是叫法一样
- nano:一个记事本( CTRL+X -> Y(保存) -> Enter 退出记事本)
- echo '内容':把引号里的内容当作字符串打印出来,默认打印到显示器文件(就是向显示器文件写入)
- cat 文件名:显示指定文件里的内容
- cat:默认从键盘文件里读数据,往显示器文件里写入(ctrl+c终止)
- cat -n 文件名:可以打印行号
- cat < 文件名:输入重定向操作,从指定文件里读
cat 文件名 和 cat < 文件名 两个操作虽然结果一样,但不是同一个东西。
- echo '内容' > 文件: 输出重定向操作,将引号里的内容往指定文件里写入
文件不存在:先新创建这个文件,再写入
文件已存在:新写入的内容会覆盖此文件里的旧内容
- echo '内容' >> 文件: 追加重定向操作,将引号里的内容往指定文件里写入,但不会覆盖之前的内容
- > 不存在的文件名:>的左侧什么都没有,可直接新建普通文件
- > 已存在的文件名:>的左侧什么都没有,可直接清空这个文件
- /dev/pts:设备文件
c开头文件:字符文件
- echo 'helloworld' >/dev/pts/0:向自己或别的设备文件输出
这也是重定向操作。
文件类型:区分文件类型不看后缀,但是需要用到文件后缀
- d:目录文件
- -:普通文件,如文本,可执行文件,库,图片,视频...
- c:字符文件,如键盘,显示器,终端,输入的数据具有顺序性
- b:块设备文件,如磁盘(Linux下查看路径 /dev/vda ),不可以直接打开
- l:链接文件
- p:管道文件
区分文件类型不看后缀,但是有的工具需要用到文件后缀(如gcc只认定.c文件)
- mkfifo 文件名:创建管道文件
6.mv、tac、head、tail
- mv 源文件 目标路径:剪切源文件(可以是普通文件也可以是目录)到目标路径
- mv 已存在文件 不存在文件名:对已存在的文件进行重命名
- tac 文件名:反向打印文件里的内容
- more 文件名:文件内容很多时只会显示满屏的内容(Q退出)
- less:和more差不多
- tail -n 文件名:只查看文件的后n行内容
- head -n 文件名:只查看文件的前n行内容
- head -n 文件名 | tail -m:查看 n-m 到 n 行区间的内容
- 这个 | 就是一个管道 ,可以批量化处理指令,管道也是一个文件
7.date、cal、find、grep
- date +[选项]:查日期
- %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
时间戳:Unix时间戳(英⽂为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1⽉1⽇(UTC/GMT的午夜)开始到现在所经过的秒数,不考虑闰秒
- 时间->时间戳:date +%s
- 时间戳->时间:date -d@1508749502
上面的0时间戳显示的时间也能证明时间戳是从1970年1⽉1⽇开始的,早上8点是北京时间。
时间戳可以转换为时间,日志里的时间用时间戳表示的,方便用户区间查找
- cal:看当月的日历
- cal 时间:看具体年月的日历
- find 路径 -name *.c:*表示所有,*.c就是所有以.c结尾的文件,从指定路径开始,按名字查找所有以.c结尾的文件
上面意思就是:从家目录开始按名字找所有以.c结尾的文件。
- grep [选项] ‘搜寻字符串’ ⽂件:在⽂件中搜索字符串,将找到的⾏打印出来(可用来过滤文本)
- -i :忽略⼤⼩写的不同,所以⼤⼩写视为相同
- -n :顺便输出⾏号
- -v :反向选择,亦即显⽰出没有 '搜寻字符串' 内容的那⼀⾏
8.zip/unzip、sz/rz、tar、scp
打包:把几个文件合并,可以防止文件丢失
压缩:减少文件体积,节省存储空间,网络传送时,可以有效减少网络传送的时间。
zip/unzip、tar这两套命令是Linux中最常见的打包压缩命令,zip/unzip工具区分文件后缀,建议把压缩文件后缀设为.zip。
- zip -r 压缩文件名.zip 目标文件:将目标文件压缩
压缩目录的时候就要加上-r选项。
- unzip xxx.zip:解压缩文件,默认解压到当前目录下
- unzip xxx.zip -d 指定路径:将压缩文件解压到指定路径下
Linux和Windows文件互传:
- sz xxx.zip:发送zip文件到Windows系统
指令执行之后就会出现Windows的弹窗
这里直接放到桌面,传送完成后在我们的电脑桌面就会出现这个lesson4.zip
在Windows系统对这个 lesson4.zip 解压缩,内容就是Linux里面的东西。
上面演示的是Linux往Windows传,Windows也能往Linux传。
- rz:直接回车就可以了,接收Windows的文件
这个文件要解压就用unzip解压。
- 除了用rz这个命令,我们还可以直接在Windows里拖拽式的传文件给Linux。
- tar [选项] xxx.tgz 目标文件:把目标文件打包压缩成xxx.tgz
- -c :建⽴⼀个压缩⽂件(create 的意思);
- -x :解开⼀个压缩⽂件!
- -t :查看 tarfile ⾥⾯的⽂件!
- -z :是否同时具有 gzip 的属性?亦即是否需要⽤ gzip 压缩?
- -j :是否同时具有 bzip2 的属性?亦即是否需要⽤ bzip2 压缩?
- -v :压缩的过程中显⽰⽂件!这个常⽤,但不建议⽤在背景执⾏过程!
- -f :使⽤档名(注意:在 f 之后要⽴即接压缩包名称!不要再加参数!)
- -C : 解压到指定⽬录
选项czf意思就是,c创建一个压缩包,并且z要压缩,并且f对这个压缩包命名成lesson4.tgz。
这就是压缩,如果我们要地这个压缩包解压缩,如下。
选项x就是解开压缩包,就是解压缩。
- tar czf xxx.tgz 目标文件:把目标文件打包压缩成xxx.tgz
- tar xzf xxx.tgz:把压缩文件xxx.tgz进行解压缩
- tar xzf xxx.tgz -C 指定路径:把压缩文件xxx.tgz解压缩到指定路径
Linux和Linux文件互传:
- scp 源文件 用户名@公网IP:目标机器的指定路径 :远程拷贝源文件到 用户名@公网IP 下的这台机器中的指定路径里
9.bc、uname、history
- bc:一个简单的计算器(CTRL+Z退出)
- uname:⽤来获取电脑和操作系统的相关信息,可显⽰linux主机所⽤的操作系统的版本、硬件的名称等基本信息。
- -r:查看内核版本
- -a或‒all:详细输出所有信息,查看体系结构(芯片结构)
- 如果不是Ubuntu,-a或‒all展示的依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
- history:展示我们历史上用过的命令
- shutdown [选项]:关机
- -h:将系统的服务停掉后,⽴即关机。
- -r:在将系统的服务停掉之后就重新启动
- -t sec:-t 后⾯加秒数,亦即『过⼏秒后关机』的意思
本篇分享就到这里,我们下篇见~