玩转Linux系统还是要从基础命令开始,基础命令是你大牛发展之路的第一步,扎实的基本命令操作功底才能在工作中游刃有余,下面我们就来看看吧。
路径切换说明
Linux中分绝对路径和相对路径,绝对路径一定是从/开始写的,还可能使用路径符号。路径符号如下:
. :表示当前目录.. :表示上一层目录- :表示上一次使用的目录~ :表示用户的家目录
切换路径用cd命令,显示当前所在目录用pwd命令。若当前所在目录为链接目录,使用pwd显示的将是链接自身,使用-P选项将定位到链接的原始目录。获取文件名使用basename命令,获取目录名使用dirname命令。如下:
test@DESKTOP-AR8TSM0:~$ basename 1.sh1.shtest@DESKTOP-AR8TSM0:~$ ln -s /tmp tmptest@DESKTOP-AR8TSM0:~$ dirname tmp.test@DESKTOP-AR8TSM0:~$ cd tmp;pwd;pwd -P/home/test/tmp/tmptest@DESKTOP-AR8TSM0:~/tmp$
查看文件
ls命令列出目录中的内容,和dir命令完全等价。tree命令按树状结构递归列出目录和子目录中的内容,ls命令使用-R选项时也可以实现,但是可视效果不太友好。tree命令需要我们去安装,使用apt或者yum去安装。ls命令选项如下:
# 这里只显示常见选项-a:全部显示包含隐藏文件-l:列出文件的详细信息-r:按照英文字母倒叙排列-t:按照时间新旧排列rt:一块使用则是按照时间旧新和字母正向排序--full-time:显示详细时间信息-F:对不同类型的文件加上不同标识符以作区分,对目录加的文件也是/
ll其实就是ls的选择组合来的,系统指定好的命令,如下:
test@DESKTOP-AR8TSM0:~$ alias llalias ll='ls -alF'
查看文件的时间戳
文件的时间属性有三种:atime、ctime、mtime。atime是access time,文件被访问时间。mtime是modify time,是文件的内容修改时间。ctime是change time,文件的变化时间,文件的元数据发生变化。比如权限,所有者等。具体怎么改变,咱不讨论,有兴趣自己测试,这里看下如何查看这三个时间。使用stat命令和ls命令查看,如下:
test@DESKTOP-AR8TSM0:~$ stat 1.c File: 1.c Size: 6820 Blocks: 16 IO Block: 4096 regular fileDevice: 2h/2dInode: 2251799813736893 Links: 1Access: (0775/-rwxrwxr-x) Uid: ( 1000/ test) Gid: ( 1000/ test)Access: 2020-04-02 14:29:51.375759500 +0800Modify: 2020-04-02 15:10:23.725415900 +0800Change: 2020-04-02 15:10:23.725415900 +0800 Birth: -test@DESKTOP-AR8TSM0:~$ ls -l 1.c # 默认mtime-rwxrwxr-x 1 test test 6820 Apr 2 15:10 1.ctest@DESKTOP-AR8TSM0:~$ ls -l 1.c --time=atime # atime-rwxrwxr-x 1 test test 6820 Apr 2 14:29 1.ctest@DESKTOP-AR8TSM0:~$ ls -l 1.c --time=ctime # ctime-rwxrwxr-x 1 test test 6820 Apr 2 15:10 1.ctest@DESKTOP-AR8TSM0:~$ test@DESKTOP-AR8TSM0:~$ ls -l 1.c # 默认mtime-rwxrwxr-x 1 test test 6820 Apr 2 15:10 1.ctest@DESKTOP-AR8TSM0:~$ ls -lu 1.c # atime-rwxrwxr-x 1 test test 6820 Apr 2 14:29 1.ctest@DESKTOP-AR8TSM0:~$ ls -lc 1.c # ctime-rwxrwxr-x 1 test test 6820 Apr 2 15:10 1.ctest@DESKTOP-AR8TSM0:~$
文件、目录的创建与删除
创建目录mkdir,用法:
mkdir [-mp] 目录名 -m:表示创建目录时直接设置权限 -p:表示递归创建多层目录
创建文件touch,用法:
touch file_name
删除文件/目录rm,用法:
rm [-rfi] file_name-r:表示递归删除,删除目录时需要加此参数 -i:询问是否删除(yes/no) -f:强制删除,不进行询问
查看文件类型file命令
简单查看文件类型的命令file,查看文件是属于二进制文件还是ASCII文件,用法:
file your_file_name
文件、目录的复制和移动
cp命令,用法如下:
cp [-apdriulfs] src dest选项说明: -p: 文件的属性(权限、属组、时间戳-r或-R:递归复制,常用于复制非空目录。 -d:复制的源文件如果是链接文件,则复制链接文件而不是指向的文件本身。即保持链接属性,复制快捷方式本身。如果不指定-d,则复制的是链接所指向的文件。 -a:a=pdr三个选项。归档拷贝,常用于备份。 -i:复制时如果目标文件已经存在,询问是否替换。 -u:(update)若目标文件和源文件同名,但属性不一样(如修改时间,大小等),则覆盖目标文件。 -f:强制复制,如果目标存在,不会进行-i选项的询问和-u选项的考虑,直接覆盖。 -l:在目标位置建立硬链接,而不是复制文件本身。 -s:在目标位置建立软链接,而不是复制文件本身(软链接或符号链接相当于windows的快捷方式)。
scp命令,scp是基于ssh的安全拷贝命令,实现的是在host与host之间的拷贝,可以是本地到远程的、本地到本地的,甚至可以远程到远程复制。用法如下:
scp [-12BCpqrv] [-l limit] [-P port] [[user@]host1:]file1 ... [[user@]host2:]file2选项说明:-1:使用ssh v1版本,这是默认使用协议版本-2:使用ssh v2版本-C:拷贝时先压缩,节省带宽-l limit:限制拷贝速度,Kbit/s.-P port:指定目标主机上ssh端口,默认是22端口-p:拷贝时保持源文件的mtime,atime,owner,group,privileges-r:递归拷贝,用于拷贝目录-v:输出详细信息# 拷贝本地到远程目录scp /home/a.txt root@192.168.6.2:/home/tmp/ #拷贝远程到本地scp root@192.168.6.2:/home/a.txt /home/ #远程到远程的拷贝scp root@192.168.6.2:/home/a.txt root@192.168.6.3:/home/
mv命令,用来移动文件和目录,还可以用于重命名文件或目录,用法如下:
mv [-iuf] src dest # 移动单个文件或目录mv [-iuf] src1 src2 src3 dest_dir # 移动多个文件或目录选项说明:-f:如果目标文件已存在,则强制覆盖文件-i:如果目标文件已存在,则提示是否要覆盖-n:如果目标文件已存在,则不覆盖已存在的文件-u:(update)果源文件和目标文件不同,则移动,否则不移动
查看文件内容
cat命令,用法如下:
cat [OPTION]... [FILE]...选项说明-n:显示所有行的行号-b:显示非空行的行号-E:在每行行尾加上$符号-T:将TAB符号输出为"^I"-s:压缩连续空行为单个空行
tac命令,与cat相反,反向打印文本内容-将每个文件写入标准输出,最后一行在最前边,用法如下:
cat [OPTION]... [FILE]...没有文件,或者当文件是-,读取标准输入-b, --before 将分隔符放在文件记录前 -r, --regex 将分隔符解释为正则表达式-s, --separator=STRING 使用字符串作为分隔符,而不是新行--help 展示这个帮助和退出--version 输出版本信息和退出
head命令,显示文件开头,默认显示10行,用法如下:
-n行数:指定显示的行数-c字符数:指定显示的字符数-v:显示文件名头信息-q:不显示文件名头信息,默认操作
tail命令,和head相反,显示后面的行,默认是后10行,用法如下:
-n行数:指定显示的行数-c字符数:指定显示的最后几个字符数-v:显示文件名头信息-q:不显示文件名头信息,默认操作-f:循环读取-s:--sleep-interval=S,结合f选项表示循环间隔时间,默认1s循环+num:从num行显示正向显示
more命令,分页显示内容,空格翻页,enter下翻一行,q退出,用法如下:
-num:指定显示行数+num:从指定行数开始显示-c:不滚屏显示,每次刷新屏幕-p:类似-c-d:显示继续和退出的提示操作-s:将多空行压缩为一个空行-u:禁止下划线+/string:搜索string并显示
less命令,类似于more命令,自行查看man手册。
diff命令,比较文件内容,用法如下:
diff file1 file2
文件查找类命令
which命令,显示命令或脚本的全路径,默认也会将命令的别名显示出来,用法如下:
which your_file|命令
whereis命令,找出二进制文件、源文件和man文档文件,用法如下:
-b:只显示二进制文件-B:只在指定目录下查找二进制文件-m:只显示man手册-M:只在指定目录下查找man手册-s:只显示源文件-S:只在指定目录下查找源文件-f:不显示路径只显示文件名,使用B|M|S参数必带此选项-l:显示whereis的搜索路径