序言
本篇文章主要讲解了一些linux常用命令,主要讲解模式是,命令介绍、命令参数格式、命令参数、命令常用参数示例。由于linux命令较多,我还特意选了一些日常使用较为频繁的命令进行讲解,但还是免不了文章很长,建议大家收藏起来,用到的时候不会了再来阅读。当然学习linux命令最好的方法是学会使用linux自带的man手册,所有linux命令规范和使用细则都会在该手册中讲解的很清楚,我在书写的过程中也是参考该手册和日常使用情况。
如果还有哪些是大家希望再补充的命令,可以留言给我,我会持续更新该文章,同时也作为我学习和工作的手册。
Linux初级指令
ls ——List
ls 介绍
这是我学Linux的第一个命令,相信也是很多人学习Linux的第一个命令。ls全称list.
列出有关文件的信息(默认为当前目录)。如果没有指定-cftuvSUX或——Sort,则按字母顺序排序。
官方的说的很清楚,默认列出当前目录,所以可以列出其他目录或者路径下的文件信息或者目录信息。
ls还可以列出指定目录下的文件列表。
ls命令参数
- -a 列出指定目录下的所有文件,包括隐藏文件
- -c 使用最后一次更改文件状态以进行排序(-t)或长时间打印(-l)的时间
- -h 与-l选项一起使用时,请使用单位后缀:Byte、Kilobyte、mete、gb、tb和Petabyte,以便使用以2为基数的大小将数字减少到3或更少
- -l 长格式列表。(见下文)。如果输出到终端,则所有文件大小的总和将输出到长清单前面的一行中
- -n 以数字形式显示用户和组id,而不是在长(-l)输出中转换为用户或组名。这个选项默认打开-l选项
- -o 以长格式列出,但省略组id
- -s 显示每个文件实际使用的文件系统块的数量,以512字节为单位,其中部分单元四舍五入为下一个整数值
- -t 在按照字典顺序对操作数排序之前,先按修改的时间排序(最近修改的是first)
- -u 使用最后一次访问的时间,而不是最后一次修改文件进行排序
pwd介绍
打印当前工作目录的完整路径名。
touch (change file timestamps)
touch介绍
将每个文件的访问和修改时间更新为当前时间。除非提供-c或-h,否则将不存在的FILE参数创建为空。
touch命令参数
- -a 或--time=atime或--time=access或--time=use 只更改存取时间。
- -c 或--no-create 不建立任何文档。
- -d 使用指定的日期时间,而非现在的时间。
- -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
- -m 或--time=mtime或--time=modify 只更改变动时间。
- -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
- -t 使用指定的日期时间,而非现在的时间。cat介绍
将FILE或标准输入连接到标准输出。
cat命令参数
- -A, --show-all 等价于 -vET
- -b, --number-nonblank 对非空输出行编号
- -e 等价于 -vE
- -E, --show-ends 在每行结束处显示
- -n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
- -s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
- -t 与 -vT 等价
- -T, --show-tabs 将跳格字符显示为 ^I
- -u (被忽略)
- -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
$tactest
-e等价于-vE
-b,--number-nonblank对非空输出行编号
-A,--show-all等价于-vET
mkdir —— Make Directory
mkdir介绍
如果目录不存在,则创建目录。
mkdir命令参数
- -m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask
- -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
- -v, --verbose 每次创建新目录都显示信息
- --help 显示此帮助信息并退出
- --version 输出版本信息并退出
cd介绍
切换当前目录至指定目录
cd命令没什么参数就是切换目录到指定路径下,较为简单,但是使用评率极高。
rm&rmdir —— Remove Directory
rm介绍
rm实用程序尝试删除命令行上指定的非目录类型文件。 如果文件的权限不允许写入,并且标准输入设备是终端,则会提示用户(在标准错误输出上)进行确认。
rm命令使用时还是需要注意的,他的删除恢复比较麻烦,有些系统会自带-i参数,输入命令之后还有一个确认步骤,有些是直接删掉了,是真删掉,从内存抹掉那种(其实底层是让该文件指针不指向该文件的内存块,内存上的内容原则上是存在的,但是恢复会比较复杂,需要扫描整块内存块才能拿到内容)。不要轻易删掉你写的重要代码,hh。
rm命令参数
- -f, --force 忽略不存在的文件,从不给出提示。
- -i, --interactive 进行交互式删除
- -r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
- -d, --dir 删除空目录
mv —— Move
mv介绍
就是移动目录或者文件到置顶目录下,同时具有重命名的功能。
mv命令参数
- -b :若需覆盖文件,则覆盖前先行备份。
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
- -n:不要覆盖现有文件。 (-n选项将覆盖以前的任何-f或-i选项。)
- -u :若目标文件已经存在,且 source 比较新,才会更新(update)
这个命令在写makefile文件的时候用起来很舒服,可以把编译的结果移到指定目录并重命名。
cp —— Copy
cp介绍
cp实用程序将source_file的内容复制到target_file。 在第二个大纲格式中,每个命名的source_file的内容都复制到目标target_directory。 文件本身的名称不会更改。 如果cp检测到尝试将文件复制到自身的尝试,则复制将失败。
命令参数
- -a, --archive 等于-dR --preserve=all
- --backup[=CONTROL 为每个已存在的目标文件创建备份
- -b 类似--backup 但不接受参数
- --copy-contents 在递归处理是复制特殊文件内容
- -d 等于--no-dereference --preserve=links
- -f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
- -i, --interactive 覆盖前询问(使前面的 -n 选项失效)
- -H 跟随源文件中的命令行符号链接
- -l, --link 链接文件而不复制
- -L, --dereference 总是跟随符号链接
- -n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
- -P, --no-dereference 不跟随源文件中的符号链接
- -p 等于--preserve=模式,所有权,时间戳
- --preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
- 可能保持附加属性:环境、链接、xattr 等
- -R, -r, --recursive 复制目录及目录内的所有项目
echo
echo介绍
echo实用程序将任何指定的操作数写入标准输出,这些操作数由单个空格()字符分隔,后跟换行符(\ n')字符。
这条命令较为简单,常用来打印变量、文本内容到
$PWD 是取当前路径,然后echo到标准输出,一般echo $name 用来查看某个环境变量的值
head&tail
head介绍
此过滤器显示每个指定文件或标准输入(如果未指定文件)的前几行或字节。
如果省略count,则默认为10.如果指定了多个文件,则每个文件的头均由字符串==> XXX <==''组成,其中XXX''为文件名 文件。
tail命令完全和他相反,是从尾部开始展示文本,但是他的参数用法更多。
- -f 循环读取
- -q 不显示处理信息
- -v 显示详细的处理信息
- -c<数目> 显示的字节数
- -n<行数> 显示行数
- --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
- -q, --quiet, --silent 从不输出给出文件名的首部
- -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
tail和head命令经常用来查看日志,像我现在基本每天都会用,我的日志文件没办法用vim或者cat这样去看(因为我负责的业务日志量每天都是几十个G),要么用tail,要么用more&less(下面会讲)。
more&less
more介绍
more每次打开文件不是全部把文件读入内存而是流式读取,不会因为vi|vim某个大文件而造成系统oom。
more&less最重要的一点就是流式读取,支持翻页,像cat命令是全部读取输出到标准输出,如果文件太大会把屏幕刷满的,根本没办法看。
more命令参数
- +n 从笫n行开始显示
- -n 定义屏幕大小为n行
- +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
- -c 从顶部清屏,然后显示
- -d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
- -l 忽略Ctrl+l(换页)字符
- -p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
- -s 把连续的多个空行显示为一行
- -u 把文件内容中的下划线去掉
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件
wc
wc介绍
wc实用程序显示每个输入文件或标准输入(如果未指定文件)中每个输入文件中包含的行数,字数和字节数。 一行定义为由字符分隔的字符串。 最后一个字符之后的字符将不包括在行数中。
这条命令对我来说还是比较深刻的,我刚学习编程不久的时候,我感觉我写的代码很多了,那个时候我就很想知道我写了多少行代码了,一时兴起,说干就干,直接写了个程序去统计了一把,写完之后还感觉自己蛮厉害的,谁知道之后学习到这个wc,然后就觉得自己还是嫩了点,还是要多学习。
wc命令参数
- -c 统计字节数。
- -l 统计行数。
- -m 统计字符数。这个标志不能与 -c 标志一起使用。
- -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
- -L 打印最长行的长度。
date & cal
date介绍