因为最近一年的工作都是使用windows系统下使用的,之前学习用过一段时间的Linux,但是没有系统的学习学习,所以打算再系统的学习下相关知识,总结一些常用的命令统计下来。
如果有想学一点基础也没有的,或者么有Linux系统环境,建议使用window电脑装个双系统,安装个Ubuntu就可以,刚开始也可以去B站去搜索一些教程或者看些菜鸟教程,也是很不错的选择,一点没有接触的建议先去找些视频看些,再去看文档比较接收的快,我之前也找了些视频看的基础讲解。
最近学习一些知识,涉及到linux,发现好多不知道咋用的了,主要因为一个项目,然后各种测试,装系统,网上搜索安装docker方法,结果我的window就是不支持,因为我的window系统删减版的,没有Hyper,公司电脑也装不上,也不想重装系统(重装代价比较大,使用虚拟机测试可以测试测试),所以家里测试装了一个Ubuntu16.04,因为之前装过一次,但是后来因为系统重装加上好久没有再安装使用了,发现16.04找了各种安装命令都无果。后来换了几个版本的Ubuntu,最终安装一个18.04版本的弄好docker了(但是还不会docker),等复习下一个知识就打算学习下docker。回头单独写个window10安装双系统的步骤和注意事项(计划放在十一期间把)。
日后有需要常用的再扩展增加博客中,如果看到这个博客的你有其他常用命令欢迎留言赐教,我也学习学习增加到博客中,欢迎一起学习沟通和交流。
我感觉比较重要吧,很多时候都会用到。
比如我执行一个python脚本,这样后台执行,你可以测试写入本地的文件,前面加入nohup 是为了你关闭窗口时,防止程序退出。
nohup python3 main_threading_spider.py &
ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
语法
ls [-alrtAFR] [name...]
参数 :
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
实例
列出根目录()下的所有目录:
cd /
ls
显示:
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
显示当前目录下所有文件的权限等:
ls -l
cd命令用于切换当前工作目录至 dirName(目录参数)。
其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,"~" 也表示为 home 目录 的意思,"." 则是表示目前所在的目录,"…" 则表示目前目录位置的上一层目录,"/" 表示为根目录。
语法:
cd [dirName]
dirName:要切换的目标目录。
实例:
跳到 /usr/bin/ :
cd /usr/bin
跳到自己的 home 目录 :
cd ~
pwd命令用于显示工作目录。
执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。
语法
pwd [--help][--version]
参数说明:
--help 在线帮助。
--version 显示版本信息。
实例
查看当前所在目录:
$pwd
结果,这是在home目录下:
/home/zhao
df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。
语法:
df [选项]... [FILE]...
文件-a, --all 包含所有的具有 0 Blocks 的文件系统
文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
文件-i, --inodes 列出 inode 资讯,不列出已使用 block
文件-k, --kilobytes 就像是 --block-size=1024
文件-l, --local 限制列出的文件结构
文件-m, --megabytes 就像 --block-size=1048576
文件--no-sync 取得资讯前不 sync (预设值)
文件-P, --portability 使用 POSIX 输出格式
文件--sync 在取得资讯前 sync
文件-t, --type=TYPE 限制列出文件系统的 TYPE
文件-T, --print-type 显示文件系统的形式
文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
文件-v (忽略)
文件--help 显示这个帮手并且离开
文件--version 输出版本资讯并且离开
实例:
1、显示文件系统的磁盘使用情况统计:
$df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 1732892 0 1732892 0% /dev
tmpfs 1744332 0 1744332 0% /dev/shm
tmpfs 1744332 252 1744080 1% /run
tmpfs 1744332 0 1744332 0% /sys/fs/cgroup
/dev/vda1 61775868 23733920 34880860 41% /
第一列指定文件系统的名称,第二列指定一个特定的文件系统1K-块1K是1024字节为单位的总内存。用和可用列正在使用中,分别指定的内存量。
使用列指定使用的内存的百分比,而最后一栏"安装在"指定的文件系统的挂载点
2、df也可以显示磁盘使用的文件系统信息:
$df software/
software是当前文件目录,然后这个结果其实就是上面的最后一行数据,当前磁盘使用了41%。
3、显示所有的信息:
$df --total
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 1732892 0 1732892 0% /dev
tmpfs 1744332 0 1744332 0% /dev/shm
tmpfs 1744332 252 1744080 1% /run
tmpfs 1744332 0 1744332 0% /sys/fs/cgroup
/dev/vda1 61775868 23735020 34879760 41% /
total 68741756 23735272 41845396 37% -
我们看到输出的末尾,包含一个额外的行,显示总的每一列。
4、-h选项,通过它可以产生可读的格式df命令的输出:
$df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.7G 0 1.7G 0% /dev
tmpfs 1.7G 0 1.7G 0% /dev/shm
tmpfs 1.7G 252K 1.7G 1% /run
tmpfs 1.7G 0 1.7G 0% /sys/fs/cgroup
/dev/vda1 59G 23G 34G 41% /
du命令用于显示目录或文件的大小。
du会显示指定的目录或文件所占用的磁盘空间。
语法
du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]
参数说明:
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或--dereference-args 显示指定符号连接的源文件大小。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-k或--kilobytes 以1024 bytes为单位。
-l或--count-links 重复计算硬件连接的文件。
-L<符号连接>或--dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
-m或--megabytes 以1MB为单位。
-s或--summarize 仅显示总计。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
--max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
--help 显示帮助。
--version 显示版本信息。
实例
1、显示目录或者文件所占空间:
$du
只显示当前目录下面的子目录的目录大小和当前目录的文件总数量,最下面的13880572为当前目录的总文件数量
太多了截图一点结尾。这个命令会把目录下所有的文件都显示出来。
2、不全部显示,只显示总数量
du -s
$du -s
13880572 .
3、显示总数量的大小
du -s -h
$du -s -h
14G .
4、显示当前目录或者文件的大小
du -s -h software/
$du -s -h software/
172M software/
mkdir命令用于建立名称为 dirName 之子目录。
语法
mkdir [-p] dirName
参数说明:
-p 确保目录名称存在,不存在的就建一个。
实例:
1、在当前工作目录下,建立一个名为 zhao的子目录 :
mkdir zhao
2、在工作目录下的 zhao2 目录中,建立一个名为 zhao1 的子目录。 若 zhao2 目录原本不存在,则建立一个。(注:本例若不加 -p,且原本 BBB目录不存在,则产生错误。)
不加p报错
$mkdir ./zhao2/zhao1
mkdir: cannot create directory ‘./zhao2/zhao1’: No such file or directory
加-p创建成功
$mkdir -p ./zhao2/zhao1
stat命令用于显示inode内容。
stat以文字的格式来显示inode的内容。
语法
stat [文件或目录]
实例
查看当前目录下 zufang2.txt 文件的inode内容内容,可以用以下命令:
$stat zufang2.txt
File: ‘zufang2.txt’
Size: 14202 Blocks: 32 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 2359881 Links: 1
Access: (0664/-rw-rw-r--) Uid: (1329303/wb-zjf497303) Gid: ( 100/ users)
Access: 2019-09-30 09:32:33.240221082 +0800
Modify: 2019-09-30 09:32:24.775983506 +0800
Change: 2019-09-30 09:32:24.779983619 +0800
Birth: -
Linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。
如:ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 )
注意: >输出重定向会覆盖原来的内容,>>输出重定向则会追加到文件的尾部。
clear作用为清除终端上的显示(类似于DOS的cls清屏功能),
也可使用快捷键:Ctrl + l ( “l” 为字母 )。
cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容。
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。
语法格式
cat [-AbeEnstTuv] [--help] [--version] fileName
参数说明:
-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行结束处显示 $。
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-A, --show-all:等价于 -vET。
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
实例:
把 zufang.txt的文档内容加上行号后输入 zufang2.txt 这个文档里:
cat -n zufang.txt > zufang2.txt
把 zufang.txt 和zufang2.txt的文档内容加上行号(空白行不加)之后将内容附加到 zufang3.txt 文档里:
cat -b zufang.txt zufang2.txt >> zufang3.txt
清空 /etc/test.txt 文档内容:
cat /dev/null > /etc/test.txt
cat 也可以用来制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:
cat /dev/fd0 > OUTFILE
Linux chattr命令用于改变文件属性。
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除
语法
chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
参数
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号> 设置文件或目录版本。
-V 显示指令执行过程。
+<属性> 开启文件或目录的该项属性。
-<属性> 关闭文件或目录的该项属性。
=<属性> 指定文件或目录的该项属性。
实例
用chattr命令防止系统中某个关键文件被修改:
chattr +i zufang.txt
lsattr zufang.txt
会显示如下属性
chattr: Operation not permitted while setting flags on zufang.txt
--------------e---- zufang.txt
chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。
语法
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
实例:
将文件 zufang.txt 设为所有人皆可读取 :
chmod ugo+r zufang.txt
将文件 zufang.txt 设为所有人皆可读取 :
chmod a+r zufang.txt
将文件 zufang.txt 与 zufang2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w zufang.txt zufang2.txt
将 zufang3.txt 设定为只有该文件拥有者可以执行 :
chmod u+x zufang3.txt
将目前目录下的所有文件与子目录皆设为任何人可读取 :
chmod -R a+r *
此外chmod也可以用数字来表示权限如 :
chmod 777 file
chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
chmod a=rwx file
chmod 777 file
效果相同
chmod ug=rwx,o=x file
chmod 771 file
效果相同
file命令用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。
语法
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]
参数:
-b 列出辨识结果时,不显示文件名称。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L 直接显示符号连接所指向的文件的类别。
-m<魔法数字文件> 指定魔法数字文件。
-v 显示版本信息。
-z 尝试去解读压缩文件的内容。 [文件或目录…] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
实例
显示文件类型:
file zufang.txt
zufang.txt: UTF-8 Unicode (with BOM) text, with CRLF line terminators
不显示文件名称
file -b zufang.txt
UTF-8 Unicode (with BOM) text, with CRLF line terminators
显示MIME类别
file -i zufang.txt
zufang.txt: text/plain; charset=utf-8
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
参数说明 :
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-maxdepth n 代表的做大往下找的深度(最多进入n层子文件夹去查找)
-exec<执行指令> \;:假设find指令的回传值为True,就执行该指令;记得命令后面要配合`\;`
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
实例
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} \;
more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。
语法
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
参数:
-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示 fileNames 欲显示内容的文档,可为复数个数
快捷键:
按Space键:显示文本的下一屏内容。
按Enier键:向下n行,需要定义。默认为1行。
按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
按H键:显示帮助屏,该屏上有相关的帮助信息。
按B键:显示上一屏内容。
按Q键:退出rnore命令
Ctrl+F 向下滚动一
Ctrl+B 返回上一
= 输出当前行的行
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
mv命令用来为文件或目录改名、或将文件或目录移入其它位置。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
注意事项:
如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
语法:
mv [options] source dest
source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
参数:
-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f: 在mv操作要覆盖某已有的目标文件时不给任何指示;
实例:
将文件 aaa 更名为 bbb :
mv aaa bbb
将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。
mv info/ logs
再如将/usr/student下的所有文件和目录移到当前目录下,命令行为:
mv /usr/student/* .
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:
使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
语法
rm [options] name...
参数:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
案例:
删除当前目录下的所有文件及目录,并且是直接删除,无需逐一确认命令行为:
(使用前注意是否需要删除或者备份一份?无法恢复)
rm -rf 要删除的文件名或目录
删除文件名 test.txt:
rm -rf test.txt
删除目录 test,不管该目录下是否有子目录或文件,都直接删除:
rm -rf test/
cp主要用于复制文件或目录。
语法
cp [options] source dest
参数说明:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
实例
使用指令"cp"将当前目录"test/"下的所有文件复制到新目录"newtest"下,输入如下命令:
cp –r test/ newtest
注意:用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。
whereis命令用于查找文件。
该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。
该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。
语法
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
参数:
-b 只查找二进制文件。
-B<目录> 只在设置的目录下查找二进制文件。
-f 不显示文件名前的路径名称。
-m 只查找说明文件。
-M<目录> 只在设置的目录下查找说明文件。
-s 只查找原始代码文件。
-S<目录> 只在设置的目录下查找原始代码文件。
-u 查找不包含指定类型的文件。
实例
使用指令"whereis"查看指令"bash"的位置,输入如下命令:
whereis bash
上面的指令执行后,输出信息如下所示:
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz
whereis python2.7
上面的指令执行后,输出信息如下所示:
python2: /usr/bin/python2.7 /usr/bin/python2.7-config /usr/bin/python2 /usr/lib/python2.7 /usr/lib64/python2.7 /usr/include/python2.7 /usr/local/python2.7 /usr/share/man/man1/python2.1.gz
linux链接文件类似于Windows下的快捷方式。
链接文件分为软链接和硬链接。
软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
硬链接:硬链接只能链接普通文件,不能链接目录。
使用格式:
ln 源文件 链接文件
ln -s 源文件 链接文件
如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。
注意:
如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。
选项:
-b或--backup:删除,覆盖目标文件之前的备份;
-d或-F或——directory:建立目录的硬连接;
-f或——force:强行建立文件或目录的连接,不论文件或目录是否存在;
-i或——interactive:覆盖既有文件之前先询问用户;
-n或--no-dereference:把符号连接的目的目录视为一般文件;
-s或——symbolic:对源文件建立符号连接,而非硬连接;
-S<字尾备份字符串>或--suffix=<字尾备份字符串>:用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它;
-v或——verbose:显示指令执行过程;
-V<备份方式>或--version-control=<备份方式>:用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串;
--help:在线帮助;
--version:显示版本信息。
参数:
源文件:指定连接的源文件。如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件;
目标文件:指定源文件的目标连接文件。
实例
将目录/usr/mengqc/mub1下的文件m2.c链接到目录/usr/zhao下的文件a2.c
cd /usr/mengqc
ln /mub1/m2.c /usr/zhao/a2.c
在执行ln命令之前,目录/usr/zhao中不存在a2.c文件。执行ln之后,在/usr/zhao目录中才有a2.c这一项,表明m2.c和a2.c链接起来(注意,二者在物理上是同一文件),利用ls -l命令可以看到链接数的变化。
在目录/usr/zhao下建立一个符号链接文件abc,使它指向目录/usr/mengqc/mub1
ln -s /usr/mengqc/mub1 /usr/zhao/abc
执行该命令后,/usr/mengqc/mub1代表的路径将存放在名为/usr/zhao/abc的文件中。
which命令用于查找文件。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
语法
which [文件...]
参数:
-n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息。
实例
使用指令"which"查看指令"python"的绝对路径,输入如下命令:
which python
返回结果:
/usr/bin/python
grep 命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
语法
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
参数:
-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --revert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。
实例
1、在当前目录中,查找后缀有 txt字样的文件中包含zhihu 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep zhihu *txt
2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/pki/ 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/pki/
3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
查找文件名中包含 zu的文件中不包含每天 的行,此时,使用的命令为:
grep -v 每天 *zu*
Linux wc命令用于计算字数、行数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
语法
wc [-clw][--help][--version][文件...]
参数:
c或--bytes或--chars 只显示Bytes数。
-l或--lines 只显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息
实例
在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。使用的命令为:
1、使用cat查看文本内容:
cat name.txt
wc name.txt
结果截图:
其中,返回有四个参数:2代表有2行,7代表有7个单词数,44代表字节。name.txt就是文件名。
中文如果在一起,就被识别为一个单词。
更改后:
结果依然是7个单词。
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
语法
sort(选项)(参数)
选项
-b:忽略每行前面开始出的空格字符;
-c:检查文件是否已经按照顺序排序;
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
-f:排序时,将小写字母视为大写字母;
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
-m:将几个排序号的文件进行合并;
-M:将前面3个字母依照月份的缩写进行排序;
-n:依照数值的大小排序;
-o<输出文件>:将排序后的结果存入制定的文件;
-r:以相反的顺序来排序;
-t<分隔字符>:指定排序时所用的栏位分隔字符;
+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
参数
文件:指定待排序的文件列表。
实例:
a#10#1#1
c#30#3#3
d#40#4#4
b#20#2#2
e#50#5#5
e#50#5#5
1、直接sort默认排序。
$sort sort.txt
a#10#1#1
b#20#2#2
c#30#3#3
d#40#4#4
e#50#5#5
e#50#5#5
2、忽略相同行使用-u选项或者uniq
$sort -u sort.txt
a#10#1#1
b#20#2#2
c#30#3#3
d#40#4#4
e#50#5#5
$uniq sort.txt
a#10#1#1
c#30#3#3
d#40#4#4
b#20#2#2
e#50#5#5
3、sort的-n、-r、-k、-t选项的使用:
将第二列(按#为分隔符)列按照数字从小到大顺序排列:
$sort -nk 2 -t# sort.txt
a#10#1#1
b#20#2#2
c#30#3#3
d#40#4#4
e#50#5#5
e#50#5#5
将第3列(按#为分隔符)列按照数字从小到大顺序排列:
$sort -nk 3 -t# sort.txt
a#10#1#1
b#20#2#2
c#30#3#3
d#40#4#4
e#50#5#5
e#50#5#5
新建sort2.txt:
$cat sort2.txt
#10#3.5
c#30#2.1
d#40#7.8
b#20#5.6
e#50#1
e#50#8
按最后一列从小到大排序:
$sort -nk 3 -t# sort2.txt
e#50#1
c#30#2.1
#10#3.5
b#20#5.6
d#40#7.8
e#50#8
按最后一列从大到小排序:
-n是按照数字大小排序,-r是以相反顺序,-k是指定需要爱排序的栏位,-t指定栏位分隔符为冒号
$sort -nrk 3 -t# sort2.txt
e#50#8
d#40#7.8
b#20#5.6
#10#3.5
c#30#2.1
e#50#1
tar命令用于备份文件。
tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
语法
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F