linux常用命令
本文篇幅较大,下面是目录 Bash快捷键 文件及目录操作命令 权限相关命令 重定向相关与管道命令 挂载文件系统 磁盘管理
Bash快捷键
删除光标到行首的所有字符:
Ctl + U
删除当前光标到前边的最近一个空格之间的字符
Ctl + W
文件及目录操作命令
显示当前所在目录 (绝对路径)
$ pwd
进入某个目录
$ cd [path]
若path缺省,则会进入到用户主目录
列出当前目录下所有的文件
$ ls [选项] [目录或者文件]
说明 对于目录,该命令列出其中所有的子目录和文件,缺省情况下是指向当前目录;对于文件,该命令列出文件名及其相关的文件属性信息。该命令常用选项如下表所示。
常用选项 | 含义 |
---|---|
-a | All。列出目录中全部文件,包含隐藏文件、父目录和当前目录。 |
- l | long。列出目录内容的细节,包括权限、所有者、组群、大小等。 |
-F | File type。在每一个列举项目后添加符号表明其类型。 |
-R | 递归列举当前目录下所有目录的内容。 |
-S | Size。按文件大小排序。 |
显示文本文件
$ cat fileName
注意 fileName需要包含路径,若不指明,则认为是当前目录,若要显示行数,添加-n选项即可。
$ cat fileName -n
查看前5行
$ head -5 fileName
查看后5行
$ tail -5 filename
查看两个文件之间的差异
$ diff filename1 filename2
文件或目录的复制
$ cp [选项] 源文件或目录 目标目录
若指定多个源文件或者目录复制到目标目录,则源文件或源目录之间用空格分隔,常用选项若下表
常用选项 | 含义 |
---|---|
-a | 在备份中尽可能多的保持源文件的结构和属性。 |
- f | 覆盖已经存在的目标文件而不加以提示。 |
- i | 在覆盖目标文件前给出提示并要求用户确认。 |
-r | 若源文件为目录,递归复制该目录下所有子目录和文件。 |
文件或目录的移动(重命名)
$ mv 源文件或者目录 目标文件或目录
当目标目录不存在时,则将源文件或目录重命名;若需要将多个文件夹或者文件移到源文件,可用下面的命令
$ mv 文件1 文件2 文件3 ... -t 目标文件夹
建立新目录
$ mkdir [选项] 目录名
该命令需要用户拥有写的权利
删除文件或者目录
$ rm [选项] 文件或者目录
若需要删除多个文件或者文件夹,则文件或文件夹之间用空格隔开
常用的选项如下
常用选项 | 含义 |
---|---|
-f | 不给出提示,强行删除。 |
- r | 删除文件列表中指定的目录,若无此标志则不删除目录。 |
- i | 提示是否删除。 |
-R | 递归删除目录,删除整个目录及其所有子目录。 |
文件查找
按照名字搜索
$ find . -name "*.txt" # 在当前目录下查找所有txt文件
也可以查找所有非.txt
文件。
$ find . ! -name "*.txt"
按照条件
值 | 说明 |
---|---|
-atime | 访问时间,单位是天 |
-amin | 访问时间,单位是分钟 |
-mtime | 修改时间 ,单位是天(内容发生变动) |
-mmin | 修改时间 ,单位是分钟(内容发生变动) |
-size -n | 大小小于n个字节的文件 |
-size +n | 大小大于n个字节的文件 |
-perm | 按照权限 |
-user | 按用户 |
$ find . -amin -5 -type f # 最近5分钟访问的文件
$ find . -type f -size -1k # 查找低于1kb的文件
$ find . -type f -perm 644 # 查找权限是644的文件, 权限的知识在下面
$ find . -type f -user yalexin # 查找yalexin用户拥有的文件
grep文本搜索
语法:
grep match_patten [参数] fileName
参数 | 说明 |
---|---|
-o | 只输出匹配的文本,如在1,txt 中寻找test :grep "test" -o 1.txt |
-v | 只输出没有匹配的文本 |
-c | 统计匹配的字段在文本中出现的次数。如在1,txt 中寻找a 的个数:grep "a" -c 1.txt |
-n | 打印匹配的行号 |
-i | 忽略大小写,如在1,txt 中寻找a 或者A :grep "a" -i 1.txt |
sort排序
参数 | 说明 |
---|---|
-n | 按数字进行排序 |
-d | 按字典序进行排序 |
-r | 逆序排序 |
-k n | 指定按第N列排序 |
例如,将1.txt
文件中的第一列按照数字,以行为单位逆序排列:
$ sort -nrk 1 1.txt
uniq 消除重复行
不重复显示1.txt
的内容:
$ cat 1.txt | uniq
统计文本中各行出现的次数:
$ cat 1.txt | uniq -c
找出重复行:
$ cat 1.txt | uniq -d
cut切割文本
cut
命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
cut
可以将文件作为数据源,也可以通过管道的方式指定数据源地方
语法:
$ cut 参数 数据
主要参数:
参数 | 说明 |
---|---|
-b | 按字节为单位切割 |
-c | 按字符为单位切割 |
-d | 自定义分隔符,默认为制表符 |
-f | 制定切割的区间 |
-n | 取消分割多字节字符 |
例如:ls -l | cut -c 1-10
可以显示出当前文件夹下所有文件和文件夹的权限。
特别要注意一下,假如我们想要用-b
提取每一行的中文时,要注意,在utf-8
的编码下一个汉字占用3个字节,如果开始和结束位置没有定位正确,切割的结果将会有乱码现象。
paste拼接文本
将两个文本文件的内容拼接。
例如:文件一内容:
1
2
3
4
文件二内容:
文字一
文字二
文字三
文字四
$ paste test1.txt test2.txt
1 文字一
2 文字二
3 文字三
4 文字四
默认是以制表符(Tab)为定界符,可以利用-d
制定定界符,如以空格:paste test1.txt test2.txt -d " "
wc统计工具
统计行数:
$ wc -l fileName
统计单词数
$ wc -w fileName
统计字符数:
$ wc -c fileName
sed文本替换
将第一个匹配的内容替换:
$ sed 's/原内容/新内容/' fileName
全局替换:
$ sed 's/原内容/新内容/g' fileName
默认情况下是显示替换后的内容,对原文件不修改,假如想要修改原文件,加上-i
$ sed 's/原内容/新内容/g' fileName -i
或者将修改后的内容放到新文件中:
$ sed 's/原内容/新内容/g' fileName > newFileName
权限相关命令
权限的含义:Linux系统中的每个文件和目录都有相应的访问许可权限,访问权限分为只读(r),可写(w)和可执行(x)三种。有三种不同类型的用户可对文件或目录进行访问,分别是文件所有者(u),同组用户(g)和其他用户(o)。所有的文件和目录都被创建它们的人所“拥有”,只要你是这个文件的所有者或你登录为根用户,你就拥有了改变所有者、组群和其他人权限的权利。
查看当前文件夹下的文件夹或者文件的权限
$ ls -l
{% asset_img 1.png %}
第一个是说明是文件(-)还是文件夹(d),然后是9个字符,每三个一组,表明了权限属性,分别是所有者、所属组、其他人拥有的权限,
使用文字设定法改变权限
$ chmod [用户身份] [操作符][mode] 文件名 [-R]
可改变用户或同组用户或其它用户对指定文件名的存取权限,在文字设定法中,chmod命令各选项含义如下表
符号 | 含义 | |
---|---|---|
用户身份 | u | user,表示文件或目录的所有者。 |
用户身份 | g | group,表示与文件主同组的用户。 |
用户身份 | o | other,表示其他用户。 |
用户身份 | a | all,表示所有用户。 |
操作符 | + | 增添权限 |
操作符 | - | 删除权限 |
操作符 | = | 赋予给定权限并取消其它所有权限。 |
权限 | r | 读取权 |
权限 | w | 写入权 |
权限 | x | |
-R | 递归修改子目录及文件 |
如给所有者添加执行权限
$ chmod u+x 45
{% asset_img 2.png %}
也可以给多个用户修改权限
$ chmod u+x,g+w 文件名
使用数字法改变权限
首先说明w、x、r、的权值如下
r ---------- 4
w --------- 2
x ---------- 1
因此一组权限的组合可以由下表所示
数字和 | 权限组合 |
---|---|
0 | --- |
1 | --x |
2 | -w- |
3 | -wx |
4 | r-- |
5 | r-x |
6 | rw- |
7 | rwx |
例如我们想给某个文件或文件夹的权限改成rwxr-x-w-,就可以用命令
$ chmod 752 文件名或者文件夹名
如果熟记上面的对应关系,就可以很方便地修改权限了。
重定向与管道命令
Linux默认的标准输入(stdin)是键盘,标准输出(stdout)是显示器。如果需要从非标准输入输出设备进行输入或输出,则需要通过输入输出重定向。
输入重定向
如:命令 < 文件名
将命令(或可执行程序)的标准输入重定向到指定的文件中。
例如:
$ cat < /etc.txt1
表示将/etc.txt1的文件内容作为cat命令的输入,显示到屏幕。
输出重定向
如:命令 > 文件名
将命令(或可执行程序)的标准输出或标准错误输出重定向到指定文件中。
例如
$ ls /etc > /test1/etc.txt
表示将/etc目录下的文件列表输出到文件/text1/etc.txt中。
追加重定向
如: 命令 >> 文件名
表示将一条命令(或可执行程序)的输出结果追加到指定文件的后面。
管道
如: 命令 | 命令
表示将一个命令(或程序)的输出作为另一个命令(或程序)的输入。
挂载文件系统
fdisk命令
fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。
$ fdisk(选项)(参数)
选项 | 功能说明 |
---|---|
-b<分区大小> | 指定每个分区的大小 |
-l | 列出指定的外围设备的分区表状况 |
-s<分区编号> | 将指定的分区大小输出到标准输出上,单位为区块 |
-u | 搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址 |
-v | 显示版本信息 |
参数:指定要进行分区或者显示分区的硬盘设备文件。
挂载命令
命令如下:
$ mount [选项] 设备 存放目录
该命令可以将Linux支持的文件系统挂载到指定的目录。常用选项如下表所示:
常用选项 | 含义 |
---|---|
-a | 挂上/etc/fstab下列出的全部文件系统 |
-t | 指定挂上的文件系统的名称 |
-n | 挂上文件系统时不把文件系统的数据写入/etc/mtab中 |
-w | 将文件系统设定为可读写 |
挂载软盘
命令如下:
$ mount /dev/fd0 /mnt/floppy
事先在/mnt/目录下建立floppy目录,之后将设备号为fd0的软盘挂载到该目录。
挂载U盘
命令如下:
$ mount /dev/sda1 /mnt/usb
在/mnt/目录下建立usb目录,将设备号为sda1的U盘挂载到该目录。
挂载光盘
命令如下:
$ mount /dev/cdrom /mnt/cdrom
在/mnt/目录下建立cdrom目录,将设备名为cdrom的光盘挂载到该目录。
卸载命令
命令如下:
$ umount 设备
该命令可将已经挂载的指定设备进行卸载。某些设备,如光盘,若不卸载将无法取出。
磁盘管理
查看磁盘空间
查看磁盘大小和利用率:
$ df -h
-h
是以易读的方向显现,自动更改单位,即GB/MB/KB,不加该选项则以B为单位显示。
查看当前目录占用空间大小:
$ du -sh
-s
是递归整个目录大小
查看当前文件夹下各个文件的大小:
$ du -sh *
打包和压缩
打包是指将几个文件或目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
-
打包
参数 说明 -c 产生新的包 -f 指定包的文件名 -r 指定新文件加入到包中 -t 列出包中文件 -u 更新包中某个文件 -v 显示进度 例如:打包当前文件夹下所有的
txt
文件并显示进度:$ tar -cvf new.tar *.txt
-
压缩:
$ gzip new.tar
将会生成
new.tar.gz
的文件。
也可以一条命令将文件打包并压缩:
$ tar -cvzf one.tar.gz *.txt
-z
是调用gzip
解压缩和解包
-
解压缩
$ gunzip one.tar.gz
-
解包
$ tar -xf one.tar
这里同样支持一条命令将压缩包解压并解包:
$ tar -xzf one.tar.gz
除了gzip
,还可以用bz2
。用法如下:
类型 | 调用方式 | 对应压缩包文件 |
---|---|---|
gzip | -z | .gz |
bzip2 | -j | .bz2 |
本文由「黄阿信」创作,创作不易,请多支持。
如果您觉得本文写得不错,那就点一下「赞赏」请我喝杯咖啡~
商业转载请联系作者获得授权,非商业转载请附上原文出处及本链接。
关注公众号,获取最新动态!