写点什么

系统入门 -Linux 系统基础命令

作者:Albert Edison
  • 2022 年 8 月 15 日
    四川
  • 本文字数:5851 字

    阅读完需:约 19 分钟

系统入门-Linux系统基础命令
  • 系统目录结构

  • 文件路径定位

  • 目录管理命令

  • 文件管理命令

  • 文件查看命令

  • 文件下载命令

  • 命令查找命令

  • 字符处理命令


系统目录结构

几乎所有的计算机操作系统都是用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件, 而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支所以该结构又被称为“目录树”。


Linux 系统中也沿用了这种文件结构, 所有目录和文件都在 “根目录”下, 目录名为”/“。FHS(文件系统层次标准)定义了在根目录下的主要目录以及每个目录应该存放什么文件。



/etc        系统重要配置文件, 以及常用服务配置文件/var        存放系统引导启动时产生的可变文件,文件通常动态更改的,例如: 缓存目录,日志文件/run        系统启动后, 运行的程序产生的运行时数据, 包括进程的pid文件,锁文件等/home       普通用户的主目录, 普通用户的家目录默认为/HOME/USERNAME/root       超级管理员的主目录, 普通用户无权操作/tmp        存放临时文件, 一般存放超过10天以上都会自动删除,可以更改删除临时文件的期限/boot       存放系统引导时候需要的文件/dev        存放设备文件/usr        安装的软件, 共享库, 重要的子目录有/usr/bin    用户命令目录/usr/sbin   管理员命令目录/usr/local  本地自定义安装的软件
//注意:在Linux7系统中, /bin, /sbin, /lib, /lib64都以软链接的形式链接到/usr/目录下,例如:/bin --> /usr/bin/sbin --> /usr/sbinlib -> usr/liblib64 -> usr/lib64
复制代码

文件路径定位

路径的作用:定位文件具体位置信息


你要在那里创建什么文件?


你要将什么文件复制到什么地方?


你要删除的文件在什么地方?


1、特殊目录: (.)和(..)

在每个目录下, 都会固定存在两个特殊目录, 分别是一个点(.)和两个(..)的目录


一个点代表当的是当前目录, 两个点代表的是当前目录的上层目录


注意: 在 Linux 下所有以点开始的文件都是”隐藏文件”, 对于这类文件, 只使用命令 ls -l 是看不到的, 必须要使用 ls -la 才可以看到,如下所示:


[root@liza ~]# cd /opt/[root@liza opt]# ls rh[root@liza opt]# ls -a.  ..  rh
复制代码

2、绝对路径:

Linux 系统采用了目录树的文件组织结构, 在 Linux 下每个目录或文件都可以从根目录处开始寻找,


比如: /usr/bin 目录。这种从根目录开始的全路径被称为”绝对路径”, 绝对路径一定是以 “/” 开头的,如何确认当前所在的目录, 可以使用 pwd 命令查看:


[root@liza ~]# pwd/root
复制代码

3、相对路径

相对路径, 关键点在于当前在什么路径下


假设当前目录在/usr/local 下, 那么它的上层目录(/usr 目录)可以用../表示, 而/usr/local 的下层目录(src)则可以用./src 表示。所谓的(.)和(..)目录实际上也是属于相对路径


---进入/opt目录[root@liza ~]# cd /opt/[root@liza opt]# ls -latotal 0drwxr-xr-x.  3 root root  16 Jun 21  2020 .     #代表当前目录dr-xr-xr-x. 17 root root 224 Jun 21  2020 ..    #代表上层目录drwxr-xr-x.  2 root root   6 Mar  9  2015 rh
---进入当前目录[root@liza opt]# cd . ---显示当前目录[root@liza opt]# pwd /opt
---进入当前目录的上层目录[root@liza opt]# cd ..---进入上层目录,也就是/目录[root@liza /]# pwd/
复制代码

4、cd 命令常见用法:

.  表示用户所处的当前目录.. 表示上级目录;~  表示当前用户自己的家目录cd -    ---切换上次所在目录cd ~    ---切换至当前用户家目录cd       ---切换至当前用户家目录cd .    ---.代表当前目录,一般在拷贝、移动等情况下使用cd ..   ---切换至当前目录的上级目录
复制代码

目录管理命令

1、目录创建命令 mkdir

[root@liza ~]# mkdir test1[root@liza ~]# mkdir /home/liza/test1 /home/liza/test2[root@liza ~]# mkdir /home/liza/{test3,test4} -v[root@liza ~]# mkdir /home/liza/test5/test5-1 -pv
复制代码

2、以树状显示目录结构命令 tree

-L: 显示目录树的层级


---显示当前目录下的结构tree---显示一级目录tree -L 1 /
复制代码

文件管理命令

Linux 一切皆为文件, 在对 Linux 进行配置时, 很大程度上就是处理文件的过程, 所以掌握文件的相关操作是非常有必要的


下面我们介绍如何对文件进行, 创建、删除、移动、重命名, 以及查看文件内容, 至于如何编辑文件, 在后面具体介绍编辑器的时候在做详细阐述

1、文件创建命令 touch

[root@liza ~]# touch filename[root@liza ~]# touch filename_1 filename_2[root@liza ~]# touch /home/liza/file5 file6[root@liza ~]# touch file{1..10}[root@liza ~]# touch file{a,b,c}[root@liza ~]# touch file{a..z}
复制代码

2、文件时间 stat

[root@liza ~]# stat filename  File: ‘filename’  Size: 0           Blocks: 0          IO Block: 4096   regular empty fileDevice: fd00h/64768d  Inode: 33628136    Links: 1Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)Context: unconfined_u:object_r:admin_home_t:s0Access: 2020-12-31 17:38:26.996929893 +0800Modify: 2020-12-31 17:38:26.996929893 +0800Change: 2020-12-31 17:38:26.996929893 +0800 Birth: -
复制代码


访问时间:atime,查看内容


修改时间:mtime,修改内容


改变时间:ctime,文件属性,比如权限


删除时间:dtime,

3、文件目录复制命令 cp

cp [OPTION]... [-T] SOURCE DESTcp [OPTION]... SOURCE... DIRECTORYcp [OPTION]... -t DIRECTORY SOURCE...
---将name文件复制至/tmp目录中[root@liza ~]# cp /etc/fstab /tmp/fstab_1
---如果复制过想保持原文件名,不修改名称[root@liza ~]# cp /etc/fstab /tmp/fstab
---如果复制过想保持原来的属性, -p保持原文件或目录的属性[root@liza ~]# cp -p /etc/fstab /tmp/fstab_p
---复制目录只需要使用-r参数, 递归复制[root@liza ~]# mkdir name_name[root@liza ~]# cp -r name_name/ /tmp/name_tmp
---将多个文件拷贝同一个目录[root@liza ~]# cp -rv /etc/hosts /etc/hostname /tmp[root@liza ~]# cp -rv /etc/hosts /etc/hostname ./---[root@liza ~]# cp -rv /etc/hosts /etc/hosts.bak[root@liza ~]# cp -rv /etc/{hosts,hosts.bak}[root@liza ~]# cp -rv /etc/hosts{,-org}
复制代码

4、文件目录移动命令 mv

mv [OPTION]... [-T] SOURCE DESTmv [OPTION]... SOURCE... DIRECTORYmv [OPTION]... -t DIRECTORY SOURCE...---移动文件至tmp目录[root@liza ~]# mkdir file[root@liza ~]# mv file /tmp/
---移动文件至tmp目录并修改名称为file_test[root@liza ~]# mkdir file[root@liza ~]# mv file /tmp/file_test
---移动目录至/tmp目录下[root@liza ~]# mv Music/ /tmp/
---移动多个文件或多个目录至同一个目录[root@liza ~]# touch file{1..3}[root@liza ~]# mv file1 file2 file3 /opt/[root@liza ~]# mkdir dir{1..3}[root@liza ~]# mv dir1/ dir1/ dir3 /opt/
复制代码

5、文件目录删除命令 rm

rm [OPTION]... FILE...-r 递归-f 强制删除-v 详细过程
---删除文件, 默认会提醒是否删除文件[root@liza ~]# touch qaqa[root@liza ~]# rm qaqa
---强制删除文件, 不提醒[root@liza ~]# touch qaqa[root@liza ~]# rm -f qaqa
---删除目录,会提醒[root@liza ~]# rm -r dir/---强制删除目录,不提醒[root@liza ~]# rm -rf dir/
---示例1[root@liza ~]# mkdir /home/dir10[root@liza ~]# touch /home/dir10/{file1,file2,.file3}[root@liza ~]# rm -rf /home/dir10/* ---不包括隐藏文件[root@liza ~]# ls /home/dir10/ -a. .. .file3
---示例2[root@liza ~]# touch file{1..10}[root@liza ~]# touch {1..10}.pdf[root@liza ~]# rm -rf file*[root@liza ~]# rm -rf *.pdf
复制代码

文件查看命令

cat  查看文件内容[root@liza ~]# cat /etc/passwd     //-n参数行号 [root@liza ~]# cat -n /etc/passwd[root@liza ~]# cat >> liza.txt <<EOF   ////追加数据> test> EOF
head 查看文件头部内容,默认前十行[root@liza ~]# head /etc/passwd[root@liza ~]# head -n5 /etc/passwd //-n参数指定查看头几行
tail 查看文件尾部内容,默认最后十行[root@liza ~]# tail /etc/passwd[root@liza ~]# tail -f /etc/shadow
more 按空格可翻页查看文件内容,按q可推出[root@liza ~]# more /etc/passwd
less 和more类似[root@liza ~]# less /etc/passwd
复制代码

文件下载命令

wget    //文件下载-O   //指定下载地址,更改名称  -T   //超时时间-q   //安静下载(关闭wget输出)--spider //网络爬虫  [root@liza ~]# wegt http://www.baidu.com
curl //文件下载[root@liza ~]# curl -o http://www.baidu.com
yum install lrzszrz //文件上传sz //文件下载[root@liza ~]# sz filename
复制代码

命令查找命令

locate ---查找文件或者目录[root@liza ~]# llocate /etc/sh  ---搜索etc目录下所有以sh开头的文件[root@liza ~]# llocate -i /etc/sh  ---搜索etc目录下,所有以sh开头的文件,忽略大小写
which ---查找系统PATH变量目录下的命令(绝对路径)[root@liza ~]# lwhich ls
whereis ---查找文件索引数据库下的命令、源文件、man文件。非PATH变量查找,所以查找的面比which要广 -b,-m[root@liza ~]# lwhereis ls[root@liza ~]# lwhereis -b ls
复制代码

字符处理命令

1.使用 sort 排序

很多情况下需要对无序的数据进行排序, 这时就需要用到 sort 排序了


sort [OPTION]… [FILE]…-r:倒序-n:按数字排序-t:指定分隔符(默认空格)-k:指定第几列, 指定几列几字符(指定1,1 3.1,3.3)
复制代码


//演示soft的用法, 首先创建一个文件:[root@liza ~]# cat >> sort.txt <<EOF> b:3> c:2> a:4> e:5> d:1> f:11> EOF
//下面对输出的内容进行排序:[root@liza ~]# sort sort.txt a:4b:3c:2d:1e:5f:11//可观察到, sort文件具有一个特点, 第一个字符是字母, 第三个字符是数字, 中间是用冒号隔开。//这样我们可以使用-t指定分隔符, 使用-k指定用于排序的列了[root@liza ~]# sort -t ":" -k2 sort.txt d:1f:11 //第二行为什么是11?不应该按照顺序排列?c:2b:3a:4e:5//按照排序的方式, 只会看到第一个字符,11的第一个字符是1, 按照字符来排序确实比2小。 //如果想要按照数字的方式进行排序, 需要使用 -n参数。[root@liza ~]# sort -t ":" -n -k2 sort.txtd:1c:2b:3a:4e:5f:11
复制代码


示例


//测试案例,对下面内容进行排序192.168.3.1 00:0F:AF:81:19:1F192.168.3.2 00:0F:AF:85:6C:25192.168.3.3 00:0F:AF:85:70:42192.168.2.20 00:0F:AF:85:55:DE192.168.2.21 00:0F:AF:85:6C:09192.168.2.22 00:0F:AF:85:5C:41192.168.0.151 00:0F:AF:85:6C:F6192.168.0.152 00:0F:AF:83:1F:65192.168.0.153 00:0F:AF:85:70:03192.168.1.10 00:30:15:A2:3B:B6192.168.1.11 00:30:15:A3:23:B7192.168.1.12 00:30:15:A2:3A:A1192.168.1.1 00:0F:AF:81:19:1F192.168.2.2 00:0F:AF:85:6C:25192.168.3.3 00:0F:AF:85:70:42192.168.2.20 00:0F:AF:85:55:DE192.168.1.21 00:0F:AF:85:6C:09192.168.2.22 00:0F:AF:85:5C:41192.168.0.151 00:0F:AF:85:6C:F6192.168.1.152 00:0F:AF:83:1F:65192.168.0.153 00:0F:AF:85:70:03192.168.3.10 00:30:15:A2:3B:B6192.168.1.11 00:30:15:A3:23:B7192.168.3.12 00:30:15:A2:3A:A1//针对第三列的第一个字符,第四列的第一个字符到第三个字符排序才是正确```shell[root@liza ~]# sort -t. -k3.1,3.1nr -k4.1,4.3nr test.txt
复制代码

2.使用 uniq 删除重复内容

如果文件中有多行完全相同的内容, 当前是希望能删除重复的行,同时还可以统计出完全相同的行出现的总次数, 那么就可以使用 uniq 命令解决这个问题(但是必须配合 sort 使用)


uniq [OPTION]… [INPUT [OUTPUT]]


-c 计算重复的行


//演示uniq的用法, 首先创建一个文件:[root@liza ~]# cat >> uniq.txt <<EOF> abc> 123> abc> 123> EOF
//uniq需要和sort一起使用, 先使用sort排序, 让重复内容连续在一起[root@liza ~]# cat uniq.txt |sort123123abcabc
//使用uniq去除相邻重复的行[root@liza ~]# cat uniq.txt |sort|uniq123abc
//使用-c参数, 能统计出文件中每行内容重复的次数[root@liza ~]# cat uniq.txt |sort|uniq -c 2 123 2 abc
复制代码

3、使用 cut 命令截取某一个字段

cut OPTION… [FILE]…


-d:指定分隔符


-f:数字,取第几列 –f3,6 三列和 6 列


-c:按字符取(空格也算)

4、使用 wc 统计

wc - print newline, word, and byte counts for each file显示文件的行、单词与字节统计信息wc [OPTION]… [FILE]…-l:显示文件行数-c:显示文件字节-w:显示文件单词
复制代码


//统计fstab有多少行[root@liza ~]# # wc -l /etc/fstab15 /etc/fstab
显示/etc/services 文件行号[root@liza ~]# wc -l /etc/services 10774 /etc/services
//扩展方法[root@liza ~]# grep -n "." /etc/services | tail -1[root@liza ~]# awk '{print NR $0}' /etc/services | tail -1[root@liza ~]# cat -n /etc/services | tail -1[root@liza ~]# sed '=' /etc/services | tail -2
复制代码



练习如下命令

  • 用普通用户身份登陆虚拟机上完成练习

  • 在用户家目录下创建 6 个文件 song1.mp3 ~ song6.mp3

  • 把上出创建的 songX.mp3 文件移动到 Music 目录下(不存在则创建)

  • 在用户家目录下创建三个目录,分别为 friends,family,work

  • 切换到 friends 目录下,把 Music 目录下的 song1.mp3 ~ song3.mp3 拷贝到当前目录

  • 切换到 family 目录下,把 Music 目录下的 song4.mp3 ~ song6.mp3 移动到当前目录

  • 切换到用户主目录

  • 删除 family 目录

  • 切换到 friends 目录,把目录下的所有文件删除

  • 切换到主目录,把 friends 目录删除.

答案

[root@liza ~]# su - edc[edc@liza ~]$ touch /home/edc/{song1.mp3,song2.mp3,song3.mp3,song4.mp3,song5.mp3,song6.mp3}[root@liza ~]# mv /home/edc/song*.mp3 Music/[root@liza ~]# cp -rv Music/song1.mp3 Music/song2.mp3 Music/song3.mp3 /home/edc/friends/‘Music/song1.mp3’ -> ‘/home/edc/friends/song1.mp3’‘Music/song2.mp3’ -> ‘/home/edc/friends/song2.mp3’‘Music/song3.mp3’ -> ‘/home/edc/friends/song3.mp3’[root@liza ~]# mv Music/song4.mp3 Music/song5.mp3 Music/song6.mp3 /home/edc/family/[root@liza ~]# cd /home/edc/[root@liza edc]# rm -rf family/[root@liza edc]# cd friends/[root@liza friends]# cd ..[root@liza edc]# rm -rf friends/
复制代码




发布于: 刚刚阅读数: 5
用户头像

Albert Edison

关注

目前在某大厂担任后端开发,欢迎交流🤝 2022.03.08 加入

🏅️平台:InfoQ 签约作者、阿里云 专家博主、CSDN 优质创作者 🛫领域:专注于C语言、数据结构与算法、C++、Linux、MySQL、云原生的研究 ✨成就:2021年CSDN博客新星Top9,算法领域优质创作者,全网累计粉丝4W+

评论

发布
暂无评论
系统入门-Linux系统基础命令_Linux_Albert Edison_InfoQ写作社区