Linux学习笔记(一):从shell开始

本文介绍了Linux初学者如何从shell命令开始,涵盖了文件管理(cp, mv, rm, ln, chattr, lsattr)的常用操作,以及创建文件的不同方法(mkdir, touch, cat, echo, vim)。还讲解了管道符、xargs和GNU计划的相关概念。

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

一、从shell开始

shell是一个程序,把输入的命令传递给操作系统去执行。(shell既是命令行语言、也是程序设计语言)

shell 脚本(shell script)是一种为 shell 编写的脚本程序,是由shell命令组成的执行文件。

sh(Bourne Shell)是一个早期的重要shell,同Version 7 Unix一起发布。

bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell。

bash的目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell。

在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。

shell是一个概念,其内容是指一种应用程序,这个应用程序提供了一个可供用户访问操作系统内核的界面。

而sh、bash之类的是实现shell这个概念的具体的应用程序。

cat /etc/shells		#查看可以使用的shell

usermod -s /bin/bash ‘chanwill’		#修改用户的shell

grep ‘chanwill’ /etc/passwd		#查看对应用户使用的shel

usermod -s 为用户指定新的shell

二、文件管理

cp

复制文件或目录

cp item1 item2		//复制item1到item2,item2会被重写或者新建,使用 -i 命令提示确认信息
cp item1 item2 dir1		//可以复制多个项目到结尾的目录,目录必须存在
cp dir1/* dir2/* dir3/* dir4	//将目录中的所有内容复制到最后的目录中,可以选择多个项目,默认不覆盖

mv

将文件或目录改名或者移入其他位置

mv 1.txt 2.txt		//将原文件名1.txt改为2.txt
mv 1.txt dir		//将文件1.txt移动到目录dir下(目录不存在则文件1.txt改名为dir)
mv dir1 dir2		//将目录dir1移动到目录dir2中,dir2目录不存在则dir1目录名改为dir2

-b 目标文件或目录存在时,覆盖时创建备份

-i 显示详细信息

-n 不覆盖存在的文件和目录

-f 强制移动

rm

rm命令删除之后无法恢复

rm -i -f 1		//-i在删除前逐一确认,-f强制删除无需确认,同时设定这两个参数时删除无需确认
rm -r 1		//递归,目录及子目录内容都删除

ln(软链接和硬链接)

ln(link file)为一个文件在另外一个位置建立一个同步的链接

软链接:

  • 以路径的形式存在,类似于快捷方式
  • 可以跨文件系统对一个不存在的文件名或者目录进行链接
ln -s 1.txt 1		//设置软链接(符号链接)

在这里插入图片描述

硬链接:

  • 以文件副本的形式存在不占用实际空间
  • 只在同一个文件系统中才能创建且不允许给目录创建
  • 给文件创建硬链接,各项属性相同
ln -i -v 1.txt 1	//设置硬链接,-i为交互模式,-v显示具体信息

在这里插入图片描述

chattr

chattr命令用于改变文件或目录的属性(ext2下的文件和目录)

chattr +i	//文件和目录不得任意更动(防止被修改)
chattr +u	//防止文件或者目录意外被删除
chattr +A	//不会更新文件的最后访问时间
chattr +a 	//文件或者目录仅可以加内容,不能删除(适用于日志文件)

+<属性> 开启属性。

-<属性> 关闭属性。

=<属性> 指定属性。

chattr -R -V [+/-/=]属性 [文件或目录]	//-R递归处理,-V显示命令执行过程,属性可多个添加
touch 3.txt | xargs chattr -R -V +i 3.txt	//配合之前的文件和xargs命令设置文件属性

在这里插入图片描述

lsattr

查看文件的属性

lsattr -a	//显示所有文件和目录(隐藏文件)
lsattr -d	//仅显示目录名称。
lsattr -R	//递归处理(所有文件及子目录)
-v  显示文件或目录版本。
-V  显示版本信息。

在这里插入图片描述

三、创建文件的几种姿势

mkdir

mkdir 文件夹名			//创建文件夹

touch

touch 1.txt 2.txt		//同时创建两个文件
touch test{0001..2000}.txt		//批量创建文件
touch 1.txt		//更新文件的时间为当前时间(文件已存在)

>、>>

使用>		//创建文件,直接覆盖原文件内容(没有提示)

使用>>		//创建文件,追加在文件末尾不会覆盖

cat

cat > 文件名		//创建文件,并直接进入编辑,ctrl+z退出

cat >> 文件名		//创建文件,并直接进入编辑,ctrl+z退出

分界符(eof、exit)

cat >> 文件名 <<eof		//eof可以作为一个分界符,遇到下一个分界符时停止

youchanwill
chanwillyou

eof
cat >> 文件名 <<exit		//跟eof同理

youchanwill
chanwillyou

exit

echo、vim

echo 内容 > 文件名

echo 内容 >> 文件名
vi/vim 文件名		//创建后直接进入vim编辑界面

四、管道符和xargs

管道符可以理解为:前一个命令的输出作为下一个命令的输入

xargs

很多命令不支持|管道来传递参数,因此需要xargs来代替管道符的作用(强制传递参数)

somecommand |xargs -item  command

xargs 用作替换工具,读取输入数据重新格式化后输出。

cat 1.txt | xargs 	//xargs命令可以将输入内容以单行输出
cat 1.txt | xargs -n6	//xargs命令中的-n参数可以进行指定多行输出,后面的数字为每行的个数

这里多行输出的前提是内容间有空格分隔,如果是一串连续的字符,命令无作用。

cat 1.txt | xargs -I {} ./test.sh d {} b	

//使用 -I 指定一个替换字符串,这个字符串在 xargs 扩展时会被替换掉。将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。

使用xargs去避免用 rm 删除太多的文件时候,可能得到的错误信息:/bin/rm Argument list too long.

find . -type f -name "*.log" -print0 | xargs -0 rm -f

可以将需要下载的url链接放入同一个文件中,能够使用 xargs下载所有链接

cat url-list.txt | xargs wget -c

五、扩展(GNU计划)

GNU计划,有译为“革奴计划”,是由理查德·斯托曼在1983年9月27日公开发起的自由软件集体协作计划。它的目标是创建一套完全自由的操作系统GNU

GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU’s Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。

GNU通用公共许可证简称为GPL,是由自由软件基金会发行的用于计算机软件的协议证书,使用该证书的软件被称为自由软件。大多数的GNU程序和超过半数的自由软件使用它。(来源百度百科)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值