Loading
0

Linux系统常见的基础命令使用方法及详解

技术小学生微信公众号
腾讯云服务器大促销。
华为服务器

Linux系统命令介绍

Linux默认安装后有上千个系统命令之多,包含了常用命令和管理员命令,但最常用的不超过20个命令,以下整理了最常用的系统命令和案例。除以下20个命令外我们还可以通过“man”命令,即帮助手册来查询其它的命令使用方法和案例。

ls 查看命令

ls(list directory contents) 显示文件及文件目录 ls--(list) , ls命令的常用参数:

  • -a 常用参数和意义
  • -l 显示目录下所有文件包括隐藏文件
[djangowang@localhost ~]# ls -al
total 188
drwxr-x--- 14 root root 4096 Oct 25 21:53 .
drwxr-xr-x 25 root root 4096 Nov 10 21:04 ..
-rw------- 1 root root 1069 Oct 25 21:41 anaconda-ks.cfg
-rw------- 1 root root 31 Oct 25 21:46 .bash_history
-rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout

每一列的含义

含义 案例
第一列 文件权限和属性 drwxr-x---
第二列 硬链接(hard link)。对于新建的目录,其硬链接计数为2,分别是.和.. 数值
第三列 文件所属用户 root
第四列 文件所属组 root
第五列 文件大小(单位字节) 4096(4k)
第六列 文件最后修改时间 Oct 25 21:41
第七列 文件名 anaconda-ks.cfg

注:文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,而是一次性连续读取多个扇区,即一次性读取一个“块”。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个扇区组成一个“块”。文件数据存储在块中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等,这种存储文件元信息的区域就叫做inode。每个inode节点中都有一个链接计数器,只有链接计数为零时才会删除,这就是为什么,”解除一对文件链接“并不意味着释放改文件块的原因。

cd 命令

用户目录的切换。 cd命令的常用参数:

  • (-)回到刚刚去的目录
  • 返回宿主目录
  • 去上一级目录
[djangowang@localhost ~]# cd  /etc    # 进入/etc目录 
[djangowang@localhost ~]# cd  ~    # 返回宿主目录  

mkdir命令

mkdir(make directories)创建目录结构。mkdir命令的常用参数:

  • -p 递归创建目录
[djangowang@localhost ~]# mkdir test
[djangowang@localhost ~]# ls
test
[djangowang@localhost ~]# mkdir -p .a/b/c/d
[djangowang@localhost ~]# tree
.
`-- a
    `-- b
        `-- c
            `-- d

注:tree命令是一个独立的系统命令,我们可以通过“yum install tree”来安装它。

pwd 命令

pwd(print name of current/working directory)查看路径。

[djangowang@localhost ~]# pwd
/root

mv 命令

mv( move or rename files) 移动 & 改名命令 。 mv命令的常用参数:

  • -i 覆盖前先询问用户
  • -b :若需覆盖文件,则覆盖前先行备份。
[djangowang@localhost ~]# mv test  test1
[djangowang@localhost ~]# ls
test1

移动目录,(mv filename target )。

[djangowang@localhost ~]# mv  test1   /etc

find 命令

find(find - search for files in a directory hierarchy)查找命令,find命令的常用参数:

  • find -name # 查找文件名
  • find -type # 查找文件类型 (f 文件、d 目录、c 字符设备、l链接、s socket)
  • find -exec # 执行系统命令
  • find -mtime # 创建文件的时间
[djangwang@localhost ~]# find .  -name "*.conf"    # 查找当前目录下,以conf结尾文件
./pam_smb.conf
./java/java.conf
./nsswitch.conf
./gconf/2/evoldap.conf
./alsa/alsa.conf
./alsa/pcm/side.conf
./alsa/pcm/front.conf
...

查找20天前的日志并删除。

[djangwang@localhost ~]# find /var/log -type f -mtime +20 | xargs rm -f 

将/etc目录下的*.conf文件,备份到/tmp目录下一份。

[djangwang@localhost ~]# find /etc/  -type f -name "*.conf"  -exec cp {} /tmp/ \;

如果要放在Crontab中定时运行,推荐更严禁的书写方式。

[djangwang@localhost ~]# [ -d /var/logs ] && find /var/log -type f -mtime +20 | xargs rm -f 

其中“[ -d /var/logs ] ” 判断目录是否存在,如果存在再执行find命令,防止目录不存在find命令从根目录开始删除。

cp 命令

cp(copy files and directories) 复制命令,cp命令的常用参数:

  • -R # 复制目录
[djangowang@localhost ~]# cp  -R ./test  ./test1
[djangowang@localhost ~]# ls
test1  test

cat 命令

cat(concatenate files and print on the standard output)显示文件内容命令,cat命令的常用参数:

  • -A # 显示特殊字符
  • -n # 显示行号
[djangowang@localhost ~]# cat -n /etc/passwd
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     ...

wc 命令

wc(print newline, word, and byte counts for each file) 统计命令,wc命令的常用参数:

  • -l # 显示多少行
  • -w # 显示多少单词
  • -c # 显示字数
[djangowang@localhost ~]# wc -l /etc/passswd
[djangowang@localhost ~]# 35

sort命令

sort(sort lines of text files)排序命令,sort命令的常用参数:

  • -n # 数学形式排序(默认按首字母的ASCII排序)
  • -r # 倒序排列
[djangowang@localhost ~]# for i in `seq 1 10`;do echo $i >> sort.txt ;done    # 写入测试数据
[djangowang@localhost ~]# sort -r sort.txt

sort命令通常与uniq命令连用。 以下是统计Nginx日志每日访问的独立IP的次数。

  • -c或--count # 在每列旁边显示该行重复出现的次数
[djangowang@localhost ~]# cat access.log | awk '{print $1}' | sort -n | uniq -c 
206 49.234.146.32
238 63.143.42.246
575 193.112.218.224
....

grep 命令

grep (print lines matching a pattern)在文中查找命令,grep命令的常用参数:

  • -l "查找内容" # 显示要查找内容的文件名
  • -n "查找内容" # 显示行号
  • -数字 "查找内容" # 显示查找内容的上下行内容
[djangowang@localhost ~]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
...

正则表达式

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。使用grep命令会经常用到正则匹配,譬如匹配ifconfig命令输出IP地址。关于grep命令的正则匹配常用参数:

  • -E # 它会以扩展的正则表达式的模式来解释模式
  • -o # 只显示正则显示的内容
[djangowang@localhost ~]# ifconfig | grep -Eo "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
172.17.0.1
255.255.0.0
0.0.0.0
172.16.16.2
255.255.240.0
172.16.31.255
127.0.0.1
255.0.0.0

正则表达式。

限定符 描述
. 匹配任意的一个字符。
? 匹配前面的子表达式,最多一次。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
{N} 匹配前面的子表达式 N 次。
{N,} 匹配前面的子表达式 N 次到多次。
{N,M} 匹配前面的子表达式 N 到 M 次,至少 N 次至多 M 次。
- 只要不是在序列开始、结尾或者序列的结束点上,表示序列范围。
^ 匹配一行开始的空字符串;也表示字符不在要匹配的列表中。
$ 匹配一行末尾的空字符串。
\b 匹配一个单词前后的空字符串。
\B 匹配一个单词中间的空字符串。
\< 匹配单词前面的空字符串。
\> 匹配单词后面的空字符串。

cut 命令

cut (remove sections from each line of files)切割命令,cut命令的常用参数:

  • -d "分隔符" # 查找文件内容
  • -f "列名" # 常与-d参数连用,用些分列显示列名
  • -c "数字" # 显示截取后的内容
[djangowang@localhost ~]# cut -d : -f1 /etc/passwd
root
bin
daemon
...

du命令

du ( estimate file space usage) 查看系统文件或目录大小。du命令的常用参数:

  • -s # --summarize ,显示汇总统计信息
  • -h # 以 K,M,G 为单位,提高信息的可读性
[djangowang@localhost ~]# du -sh *
12K	bakup
5.5M	exa
1.9M	get-pip.py

rm命令

rm (remove files or directories) 删除文件或目录。它还有一个相同的命令就是rmdir(remove empty directories)用于删除空目录,但我们一般用rm命令可以完全替代它。命令的常用参数:

  • -r # 递归删除,可以删除文件夹下所有文件
  • -f # 强制删除
  • -i # 删除前确认
[djangowang@localhost ~]# rm -rf  /data1/tmp/* 

注:rm属于高危操作,需要谨慎。与Windows不同Linux下并没有回收站,所以删除任何文件前最好先将它移动到一个空目录,类似Windows回收,待过一段时间再统一清理这个目录的内容。关于Linux为什么没有回收站——这句话摘录自“Unix编程艺术”,Unix面向更加专业的用户 ,Unix的开发者喜欢清晰、简单的操作,用户告诉做什么就做什么,即便用户使用的命令等价于“向我开枪”的命令。而这样做Unix的开发本能辩解的就是:保护用户避免自我损害,应该是GUI或应用程序级别的事,而非操作系统

touch 命令

touch (touch - change file timestamps) 用于创建文本文件或修改文件的时间。

[djangowang@localhost ~]# touch test
[djangowang@localhost ~]# ls
test

查看文件内容命令

more (more - file perusal filter for crt viewing) 适用于查看文件内容比较多的场景。

[djangowang@qlocalhost ~]# more /etc/passwd

less (less - opposite of more)用于查看文件不多,需要浏览的场景。

[djangowang@qlocalhost ~]# less /etc/passwd

tail (tail - output the last part of files)用于查看文件内容行位,且文件会不断的追加的场景。

  • -f # 动态查看文件追加的内容
  • -n # 可以查看文件末尾多少行
[djangowang@qlocalhost ~]# tail -f /var/log/messages
[djangowang@qlocalhost ~]# tail -n 20  /var/log/messages

head(head - output the first part of files) 查看文件头部的内容。

  • -n # 可以查看文件头部的多少行
[djangowang@qlocalhost ~]# head -n 20  /var/log/messages

man

man ( an interface to the on-line reference manuals) 帮助手册

[djangowang@localhost ~]# man ls 

命令自动补全

Linux系统命令比较多,部分命令比较长且难记,这里我们只要对他有一个模糊记忆,譬如只记录他以什么字母开头,并通过Linux系统快捷键(tab)自动补全功能,来逐步筛选你模糊记忆中的命令。

本章小结

本章从Linux常用的基础命令开始讲起,根据笔者的工作经历整理了最常用的命令和参数,并根据从简单到负责的顺序来介绍它。Linux命令有1000多个,每个命令有平均有5个左右参数,所以要记忆的知识点大概有5000多,我们不可能完全记忆它们,这时就需要帮助手册协助我们来查询这些命令的使用方法。Linux命令部分命令比较长不太容易记忆,Linux还提供了命令自动补全的快捷键来协助我们更好的掌握它们。下一章我们将会介绍常用的编辑器vim,为后续修改系统配置文件时作为铺垫。

习题

1.查找 /etc/passwd 文件中包含root的行,并显示第一行内容。
2.在根目录下创建 /data1/webroot/nginx 的目录结构。
3.如果通过grep命令查找出的关键字,并高亮显示关键字。
4. 查看文件的命令都有哪些,它们有什么区别?

技术小学生微信公众号
华为服务器
腾讯云服务器大促销。

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-3-36085-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?

最后编辑于:2021-06-20 16:09:49作者:

上一篇:Linux系统安全加固及入侵排查方法
下一篇:iptables防火墙详细使用方法