「Linux命令基础」Shell常见命令

Shell是什么

Linux中的Shell命令,就像使用者和计算机对话的"翻译官",只需要掌握一些基本的命令语法,就能让计算机乖乖听话,执行命令。

严格来说,Shell是用户与Linux内核沟通的接口。当输入ls查看文件时,Shell会把这个简单单词转换成复杂的系统调用。

常见的Shell

在Linux 系统中,常见的Shell 解释器有多种,它们各自具备不同的功能和特性,以满足不同用户的需求。例如:

  • bash:最流行的Shell,Bash 是 Linux 操作系统默认的 Shell 解释器。
  • sh:是早期Unix系统的标准 Shell。现在大多数情况下已经被bash 取代,但在某些环境中仍然存在。
  • zsh:是一种非常强大且可高度定制的 Shell,它结合了许多其他 Shell 的优秀特性,并加入了自己的创新功能。提供了智能补全、拼写校正、模块化支持等功能,适合高级用户和开发者使用。
  • ksh:一种专为提高效率而设计的 Shell。因为其性能优越而在商业环境中得到应用。
  • cshtcshcsh类似于 C 编程语言的语法结构。tcsh则是对 csh的扩展,提供了更好的交互式编辑和其他增强功能。
  • fish:注重用户体验,它的特点包括语法高亮显示、Web 配置界面以及对新手友好的提示信息等。

这些 Shell 各具特色,选择哪一种取决于个人偏好及具体应用场景。对于大多数 Linux 用户来说,bash 通常是首选。

相关示例 示例:①检查当前使用的shell;②列出系统中安装的所有可用shell。

bash 复制代码
echo $SHELL # ①检查当前使用的shell
# 运行结果:`/bin/bash`

cat /etc/shells # ②列出系统中安装的所有可用shell
# 运行结果
# /bin/sh
# /bin/bash
# /usr/bin/sh
# /usr/bin/bash

Shell命令的语法规则

Shell命令有自己的语法规则。基本格式可以拆解为:

css 复制代码
命令名 [选项] [参数1] [参数2]......

语法规则说明:

  • 命令名、选项和参数之间都用空格间隔,连续的空格会被shell解释为单个空格。
  • 命令名由小写的英文字母构成,其往往是表示相应功能的英文单词或单词的缩写。
  • \[\]表示可选内容。
  • 选项以"-"开始,多个选项可用一个"-"连起来,例如"ls -l -a"可用"ls -la"表示。
  • 参数是命令的操作对象,如文件、目录、用户和进程等。

相关示例 示例:①查看当前目录内容;②查看详细信息;③查看指定目录(/home)详细信息

bash 复制代码
ls # ①查看当前目录内容(不带任何选项和参数)
# 运行结果
# anaconda-ks.cfg 

ls -l # ②查看详细信息(-l是选项)
# 运行结果
# -rw-------. 1 root root 1228 8月  26 2021 anaconda-ks.cfg

ls -l /home # 查看指定目录(/home)详细信息,/home是参数
# 运行结果
# 总用量 0

ls -la
# 运行结果
# 总用量 36
# dr-xr-x---.  3 root root  180 8月  26 2021 .
# dr-xr-xr-x. 17 root root  244 12月  7 2024 ..
# -rw-------.  1 root root 1228 8月  26 2021 anaconda-ks.cfg
# -rw-------.  1 root root 1073 12月  6 2024 .bash_history
# -rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
# -rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
# -rw-r--r--.  1 root root  176 12月 29 2013 .bashrc
# -rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
# drwxr-----.  3 root root   19 8月  26 2021 .pki
# -rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
# -rw-------.  1 root root 1108 8月  26 2021 .viminfo

实用技巧 :选项可以组合使用。比如ls -la相当于同时使用了-l(长格式)和-a(显示所有)两个选项。

命令使用技巧

  • 历史命令重用

    按上下箭头可以翻找之前输入的命令。输入history能看到所有历史命令,用!编号可以直接执行某条历史命令。

  • 命令补全

    输入命令前几个字母后按Tab键,Shell会尝试补全命令或文件名。比如输入tou后按Tab,可能补全为touch。如果匹配多个可能,按两次Tab会显示所有选项。

  • 通配符
    *可以匹配任意字符,比如rm *.txt会删除所有txt文件。?匹配单个字符,rm doc?.txt会匹配doc1.txt但不会匹配doc10.txt。

  • 命令组合

    &&可以连续执行命令,比如:

    bash 复制代码
    mkdir new_folder && cd new_folder

    这表示"先创建文件夹,如果成功就进入该文件夹"。

常见错误及解决方法

  • 权限不足

    执行命令时出现"Permission denied",表示当前用户没有足够的权限访问某个文件或目录;在某些情况下,可能需要切换到具有足够权限的用户(如 root)进行操作。 解决方法有两个:

    • sudo临时获取管理员权限(需要密码)
    • chmod修改文件权限
  • 文件不存在

    当出现"No such file or directory"时,首先需要确认文件或目录的路径是否正确。 解决方法:先用pwd确认当前位置,再用ls查看目录内容。

  • 误删文件

    Linux没有回收站,rm删除的文件很难恢复。建议使用-i选项询问是否确认删除。

    bash 复制代码
    rm -i important.txt

练习题

理论题

  1. 如果想查看/var目录的磁盘使用情况,应该用什么命令?
    A. ls /var
    B. du /var
    C. cd /var
    答案:Bdu(disk usage)命令用于查看磁盘使用情况,ls只是列出文件,cd是切换目录。
  2. 解释这条命令的作用:chmod +x script.sh
    答案:。这条命令给script.sh文件添加可执行权限。"+x"表示给所有者、所属组和其他用户都添加执行权限。

实操题

操作要求 : 使用root用户登录Linux系统。实现如下命令;①在当前目录下创建一个名为"test"的目录;②切换到在"test"的目录;③在"test"的目录中新建两个文件:note1.txt和note2.txt;④用一条命令查看这两个文件的详细信息;⑤删除note1.txt,但让系统在删除前询问确认;⑥再次尝试查看这两个文件的详细信息。 参考命令

bash 复制代码
mkdir test  # ①在当前目录下创建一个名为"test"的目录
cd test # ②切换到在"test"的目录
touch note1.txt note2.txt # ;③在"test"的目录中新建两个文件:note1.txt和note2.txt
ls -l note*.txt # ④用一条命令查看这两个文件的详细信息
rm -i note1.txt # ⑤删除note1.txt,但让系统在删除前询问确认
# rm:是否删除普通空文件 "note1.txt"?y
ls -l note*.txt # ⑥再次尝试查看这两个文件的详细信息,结果只剩下一个文件。
相关推荐
FoldWinCard1 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
零涂毕业设计2 小时前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
tedcloud1233 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质3 小时前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
SakitamaX3 小时前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.3 小时前
Linux系统管理
linux·运维
阿龙的工作记录4 小时前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手4 小时前
Linux的基本指令
linux·运维·服务器
hkj88084 小时前
Ubuntu 切换java版本
java·linux·ubuntu
撩得Android一次心动6 小时前
Linux编程笔记3【个人用】
linux·笔记