Linux tutorial 3 - centos Shell

本文介绍了CentOS下的Shell基础知识,包括Shell的功能、元字符、命令格式等,并详细讲解了Linux文件类型、目录结构及常用的文件目录操作命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录


前面了解了centos的安装 和 基本配置,这里看以下shell。

##1. Shell的基本知识
之前有提到过shell命令执行时的查找路径,这种重要的东西,这里再列一遍:(1)用户给出了命令的路径,Shell按给定路径查找,若找到则调入内存执行,若没找到则输出提示信息。(2)用户没有给出命令的路径,Shell在环境变量PATH所指定的路径中依次进行查找,若找到则调入内存执行,没有找到则输出提示信息。

###1.1 Shell具有如下功能
Shell有多种不同的版本,RHEL/CentOS下默认的Shell是bash。
(1)通配符、命令补全、别名机制、命令历史
(2)重定向、管道、命令替换、shell编程等

###1.2 Shell的元字符:

  • * 代表任意字符串
  • ? 代表任意字符
  • / 代表根目录或者作为路径间隔符
  • \ 转义字符
  • $ 变量值置换符
  • ’ 在’…'中间的字符均被当作文字处理,指令、文件名、保留字符等不再具有原来的意义
  • " 在"…"中间的字符会被当作文字处理并允许变量值置换。命令替换,置换…`中命令的执行结果
  • < 输入重定向字符
  • > 输出重定向字符
  • | 管道字符
  • & 后台执行字符,在一个命令之后加上字符"&",该命令就会以后台方式执行
  • ; 分割顺序执行的多个命令
  • () 在子Shell中执行一组命令
  • {} 在当前Shell中执行一组命令
  • ! 执行命令历史记录中的命令
  • ~ 代表登录用户的宿主目录(自家目录)

###1.3 Shell命令一般格式
cmd [-options] [arguments]

  • 单字符参数前使用一个减号,单词参数前使用两个减号
  • 多个单字符参数前可以只使用一个减号

###1.4 目录和文件名的命名规则

  • 大小写敏感
  • 除/之外,所有字符都合法,但最后不要使用空格、制表符、退格、?,@#$&()|;‘’“”<>等
  • 避免使用+或-或.来作为普通文件名的第一个字符,以.开头的文件或目录是隐含的

###1.5 通配符

  • * 匹配任何字符和任何数目的字符
  • ? 匹配单个字符
  • […]匹配任何包含在括号里的单个字符
  • [!..]匹配任何不包含在括号里的单个字符

特别注意:"*“能匹配文件或目录名中的.,但不能匹配首字符是”.“的文件或目录名。要匹配隐含文件应使用”.*"

  • ls /home/*/*.c 列出/home目录下所有子目录中的所有c语言源文件
  • ls [!abc]* 列出当前目录下首字符不是a或b或c的所有文件
  • ls [a-zA-Z]* 列出当前目录下首字符是字母的所有文件

##2 Linux下的文件类型

  • 普通文件(-)
  • 目录(d)
  • 符号链接(l)
  • 字符设备文件(c)
  • 块设备文件(b)
  • 套接字(s)
  • 命名管道(p)

###2.1 硬链接(ln file1 file2,建立文件file1的硬链接file2)

  • 1)文件名是存放在其父目录中的,而非同文件内容本身存储在一起。
  • 2)硬链接文件实际上是在某目录中创建目录项,从而使不止一个目录可以引用到同一个文件。
  • 3)硬链接将两个文件名指向硬盘上的同一个存储空间,对两个文件中任何一个的内容进行修改都会影响到另一个文件。
  • 4)硬链接并不是一种特殊类型的文件,而是在同一个文件系统中允许多个目录项指向同一个文件的一种机制。

###2.2 符号链接(又叫软链接,ln -s file1 file2,建立file1的符号链接文件file2)

  • 1)符号链接将一个文件指向另外一个文件的文件名
  • 2)符号链接文件很小,因为它只记录了要指向的文件名
  • 3)如果被链接的文件被删除,那么该链接就成为死链接

###2.3 设备文件

  • 1)设备是指computer中的外围硬件装置,即除了CPU和内存以外的所有设备。
  • 2)Linux通过设备文件屏蔽了设备的复杂性,用户可以像访问普通文件一样访问设备文件。
  • 3)每个设备至少和一个设备文件相关联,设备文件分为:字符设备(eg:键盘)和块设备(eg:磁盘)
  • 4)Linux下所有设备文件均存放在/dev目录下

###2.4 套接字和命名管道

  • 1)套接字和命名管道是Linux环境下实现进程间通信的机制
  • 2)命名管道(FIFO)文件允许在同一台computer上的两个进程之间进行通信。
  • 3)套接字(socket)允许运行在不同computer上的进程间进行通信。

###2.5 Linux的目录结构
linux环境下,文件是归类存放的。用户可以使用 man hier 命令获取linux文件层次说明。
这里写图片描述

  • 1)bin 存放二进制可执行程序
  • 2)boot 存放用于系统引导时使用的各种文件
  • 3)dev 存放设备文件,用户通过这些文件访问外部设备
  • 4)etc 存放系统配置文件
  • 5)home 存放所有用户文件的根目录,有一个用户就在该目录下有一个与之对应的子目录,在用户登录时就进入其用户名对应的目录(如上图)
  • 6)lib/lib64 存放根文件系统中的程序运行所需要的共享库及内核模块
  • 7)lost+found 存放一些系统检查结果,发现不合法的文件或数据都存放在这里,通常此目录时空的,除非硬盘遭受了不明损坏
  • 8)media 即插即用型存储设备的挂载点自动在这个目录下创建,如CD/DVD等
  • 9)mnt 临时文件系统挂载点目录
  • 10)opt 第三方软件存放目录
  • 11)proc 虚拟文件系统,存放当前内存的映射,主要用于在不重启机器的情况下管理内核
  • 12)root 超级用户目录(见上图)
  • 13)sbin 类似/bin目录,也存放二进制可执行文件,但是只有root才能访问
  • 14)srv 系统对外提供服务的目录
  • 15)tmp 存放各种临时文件
  • 16)usr 存放系统应用程序
  • 17)var 存放随时需要改变的文件,如系统日志

##3. 常用文件目录操作命令
###3.1 ls 显示文件和目录列表

  • ls -a 列表显示当前目录下的文件和目录,包括隐藏文件和目录

  • ls -l 长格式显示结果

  • ls -R 递归

  • ls -dl /usr/local/ 仅显示该目录本身,而不是该目录中的内容
    这里写图片描述

###3.2 pwd 显示当前工作目录
这里写图片描述

###3.3 cd 切换目录
cd 切换到私有目录
cd ~切换到上一次使用cd命令前的目录
cd …返回上一层
cd …/…返回上两层

###3.4 cp复制文件或目录
cp /bin/?sh .使用通配符从/bin目录复制多个文件到当前目录(.)

###3.5 find在文件系统中查找指定的文件
find . -name ‘my*’ 从当前目录下开始查找以my开头的文件
find /home -user “micheal” 从/home目录下开始查找用户属性为micheal的文件

###3.6 mv 移动文件或目录;文件或目录修改名字

###3.7 mkdir 创建目录
mkdir /home/micheal/test以绝对路径创建目录
mkdir /p xx/yy 以相对路径创建目录
###3.8 rm 删除文件或目录
rm -f file{1,3,5}强制删除文件file1、file3和file5
rm -r myusr/ 删除myusr目录及其内容
###3.9 rmdir 删除空目录
###3.10 ln 创建链接文件
###3.11 tree 显示目录树
tree -L 3 /usr/ 显示/usr目录下3级目录树
###3.12 touch 更改存在的文件的时间,不存在则生产一个空文件
touch fiel1 file2 创建两个0字节的文件
touch oldfile 修改已经存在的文件的时间为当前时间
touch -r oldfile newfile参考oldfile的时间属性设置newfile文件的时间

###3.13 GNU/Linux文件有3种类型的时间戳
1)mtime:最后修改时间(ls -lt)
2)ctime:状态改变时间(ls -lc)
3)atime:最后访问时间(ls -lu)
覆盖一个文件会改变所有3个类型的时间,改变文件的权限或拥有者会改变ctime和atime,读文件会改变atime。

上一篇:Linux tutorial 2 - centos 基本配置
下一篇:

### CentOS 7 FTP Server Configuration Example Tutorial #### Update SELinux Boolean Values for FTP Service To ensure that the FTP service operates correctly under Security-Enhanced Linux (SELinux), modify the necessary boolean settings. This allows home directories to be used as FTP roots. ```bash setsebool -P ftp_home_dir on ``` This command updates the SELinux booleans permanently so that changes persist after a reboot[^1]. #### Install Required Packages Before configuring an FTP server, install vsftpd which is one of the most popular FTP servers available: ```bash sudo yum install vsftpd ``` Ensure all packages are up-to-date before proceeding with further configurations. #### Configure Firewall Rules Edit `/etc/sysconfig/iptables-config` using `vi`, ensuring the FTP module loads properly by setting `IPTABLES_MODULES="ip_conntrack_ftp"` within this file. After editing, save and close it[^5]. Then restart iptables or firewalld services depending upon what firewall management tool has been configured on your system. For systems utilizing Firewalld instead of Iptables, add rules allowing passive mode connections through the following commands: ```bash firewall-cmd --permanent --add-service=ftp firewall-cmd --reload ``` These steps permit traffic related specifically to FTP operations while maintaining security policies intact. #### Adjust Nginx Configuration If Necessary If reverse proxying via Nginx is part of the setup requirements, open its main configuration file located at `/etc/nginx/nginx.conf`. Modify relevant sections according to specific needs but generally no direct interaction between these two services exists unless explicitly designed otherwise[^4]. #### Setting Up Users For The FTP Service Create dedicated user accounts intended solely for accessing files over FTP without shell access rights. Follow best practices when creating such users including disabling login shells where possible and restricting their environment strictly to only those areas required for performing tasks associated with managing remote transfers securely. --related questions-- 1. How does modifying SELinux booleans impact overall system security? 2. What alternatives exist besides VSFTPD for running secure FTP services on CentOS 7? 3. Can you provide more details about securing FTP against unauthorized access attempts? 4. Is there any way to integrate SFTP into existing setups rather than traditional FTP protocols? 5. Why might someone choose not to use Nginx alongside an FTP solution despite potential benefits offered from doing so?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值