Loading

hellohelp

Linux shell 命令

Linux shell 命令


在Linux系统中,各个文件夹(目录)都有其特定的用途和含义。以下是一些

1.主要目录的含义:

系统启动和运行相关

  • /bin:存放用户和系统管理员常用的基本命令,如lscpmv等1234。
  • /boot:包含启动Linux系统所需的内核文件、引导加载程序(如GRUB)以及其他启动相关的文件1345。
  • /sbin:存放系统管理员使用的系统管理命令,如rebootfdisk等1234。
  • /dev:包含设备文件,用于访问硬件设备,如硬盘、鼠标、键盘等1346。
  • /lib:存放系统运行所需的共享库文件,这些库文件被/bin和/sbin中的程序调用1347。
  • /etc:存放系统配置文件,如网络配置、用户账户信息、服务配置等1234。

用户和程序相关

  • /home:普通用户的家目录,每个用户在该目录下有一个以用户名命名的子目录,用于存放个人文件234。
  • /root:超级用户(root)的家目录,存放root用户的个人文件1234。
  • /usr:存放用户安装的软件和程序文件,包括可执行文件、库文件、文档等234。
  • /opt:用于安装可选的第三方软件包,这些软件通常不是系统默认安装的234。

临时文件和日志相关

  • /tmp:存放临时文件,系统重启时该目录下的文件通常会被清空1234。
  • /var:存放经常变化的文件,如日志文件、缓存文件、邮件队列等234。

虚拟文件系统

  • /proc:一个虚拟文件系统,提供系统运行时的进程信息、硬件信息等,这些信息在内存中生成,不在硬盘上345。
  • /sys:另一个虚拟文件系统,提供关于系统硬件设备的信息,用于内核与用户空间之间的通信45。

其他

  • /mnt:临时挂载点,用于手动挂载其他文件系统或设备134。
  • /media:用于自动挂载可移动设备,如USB驱动器、光盘等4。
  • /srv:存放由系统提供的服务所需的数据,如Web服务器的数据文件

2. ls

ls -l    # 显示列表同时显示属性l是long的意思  或者用 ll也可以,是他的缩写
ls -a    #显示所有文件包含隐藏文件
ls -la    #显示所有信息和隐藏文件

3.cat、cd、 head、tail,less,more

cd ..     #上次目录
cd ../..  #上次目录的上次目录
cd -      #回到之前用的目录
pwd       #打印当前目录
cat Readme.md   #查看文件内容cantact
head Readme.md  #之查看文件开头
head --lines=2 Read.md    #只看前两行
tail --lines=3 Read.md   #只看后三行
less Read.md             #只看正文
推出查看用 Q
more Read.md             #一行一行向下翻

3.文本编辑器nano和vim

#文本编辑器nano和vi(或者vim),区别nano会提示快捷键
nano Readme.md
vi Readme.md    #要想编辑要按一个i
i
esc   #退出起始命令
:wq     保存并退出   :q不保存退出   :q! 不保存强制退出
file Readme.md   查看文件属性
file eamples    查看文件夹属性

4.where或者which

where gcc  查看文件在哪里,没有where的可以用which
where g++  查看应用程序在哪里

5.echo

echo   abc   #打印abc
eco   “abc hello”  #打印abc hello
h="hello"
echo $h    #打印变量内容
echo “abc$h"    #打印变量内容
echo “abc${h}jk"  #为了避免跟后边连接,可以加中括号

6.for循环

#for 循环
for ff in week*       #week*是以week开头的文件,week??是以week开头后边跟两个字符的文件
do
echo $ff  
done

for ff in week??       #week*是以week开头的文件,week??是以week开头后边跟两个字符的文件
do
echo ${ff#week}       #文件名去掉week,打印相关内容
done

for ff in week??       #week*是以week开头的文件,week??是以week开头后边跟两个字符的文件
do
mv $ff chapter${ff#week}       #文件名week?? 改成chapter??,,,先echo一下会更安全。
done
mv week01 chapter01   #剪切来重命名。
-h 查看帮助,或者--help
man 查看相关命令手册,按q退出当前手册

7./etc目录下查看shell版本

#/etc目录是系统配置文件的存放位置,包含了几乎所有的系统配置文件和应用程序的配置文件
#该目录存储系统配置文件:包括网络配置、用户账户信息、服务配置等
echo $SHELL  查看系统环境变量-查看当前shell版本。
echo $0      查看当前执行的脚本名称
cat /etc/shells 查看etc下所有系统中的shell版本,可能有sh\bash\ash等
退出用exit

8.shell 脚本文件(一般以sh结尾的文件)

vi hello.sh

i

#!/bin/sh      #第一行使用什么解释器

echo "hello shell"
date
whoami

编辑完成后esc :wq 保存退出

chmod a+x hello.sh  #添加执行权限chmod:是change mode的缩写,用于修改文件或目录的权限
# a:表示所有用户,包括文件所有者(user)、所属组(group)和其他用户(others)
#+:表示添加权限
#x:表示执行权限    还有数字模式如chmod 777 hello.sh 是赋予了所有的权限
./hello.sh

9.if语句

if [ 条件1 ]; then
    # 条件1成立时执行的命令
elif [ 条件2 ]; then
    # 条件2成立时执行的命令
else
    # 所有条件都不成立时执行的命令
fi

10.for语句

for (( i=1; i <=10; i++)); do
	echo " $i * 2 = $(expr $i \* 2)"
done
	
for i in {1..10}; do
	echo " $i * 2 = $(expr $i \* 2)"
done

将这些程序放入脚本文件后,在bash命令行中输入

sh  example.sh    #运行脚本文件

11.做一个游戏项目

vi game.sh  # 或者 nano game.sh
#!/bin/bash

echo "请输入你的姓名:"
read name                  #从标准输入(通常是键盘)读取用户输入的内容,并将输入的内容赋值给变量 name
echo "您好,$name"

shell中传参:对应的引用是$1 $2 $3

echo "请输入你的姓名:"
#read name         #从标准输入(通常是键盘)读取用户输入的内容,并将输入的内容赋值给变量 name
name =$1
channel=$2
echo "您好,$name,欢迎来到$channel!"

执行文件

./game.sh 老杨 Geek
或则bash game.sh

12.其他$号命令符

$?	获取上一条命令的退出状态码(0 表示成功,非 0 表示失败)
$#	获取脚本或函数接收的参数个数
$0	获取当前脚本的名称
$1, $2...$9	获取第 1 到第 9 个位置参数
$@	获取所有位置参数(以列表形式)
$*	获取所有位置参数(合并为一个字符串)
$$	获取当前 Shell 的进程 ID(PID)
$!	获取最后一个后台进程的 PID
$_	获取上一个命令的最后一个参数

13.将变量转换为环境变量(全局变量)的方法

export name=老杨    #将普通变量转换为环境变量,脚本文件可以直接用,但结束会话后依然会失效。
# 怎么设置成永久的环境变量呢
推荐将环境变量放到/etc/.bashrc文件当中或者/etc/.profile,然后编辑
将命令export name=老杨 放到最后,退出保存
推出后,需要重新加载文件,命令为:
source .bashrc 或者重新登陆一下。

14.生成随机数游戏

shuf -i 1-10 -n 1   #生成1-10之间的一个随机数
echo $RANDOM   会随机生成一个0-32256的数
echo $((RANDOM % 10 + 1))   生成一个1-10之间的数字

15.shell脚本中的与或非

&&:用于命令间逻辑与(前一条命令成功才执行后一条)
||:用于命令间逻辑或(前一条命令失败才执行后一条)
!:取反条件或命令的退出状态。
-a:在 [ ] 或 test 命令中表示逻辑与(需在同一个条件表达式内)

16.clear 清除屏幕命令

17.50个常用命令

lsb_release -a      #查看版本
pwd                 #当前目录
ls -lah             #查看全部文件全部属性,以人类的方式
vi a.txt           #vim编辑器
cp a.txt ./b.txt   #复制文件到另一个文件
mkdir test        #创建文件夹
mv a.txt ./test/  #移动到test文件夹下
mv a.txt c.txt   #剪切文件
rm c.txt        # 删除文件
history        #查看历史命令
df				#查看磁盘大小
cat a.txt		#查看文件
less a.txt  	#逐行查看文件
type  ls     #查看类型
whoami      #查看当前用户
which     #查看当前位置
man ls    #查看ls操作手册
alias ll="ls -lah"  #别名,如果想永久生效,将内容放到bashrc文件中
cat aa.txt | sort  #对内容排序
cat aa.txt | grep hello  # grep它用于在文件中查找指定的模式或关键字,并将匹配到的行进行输出
wc -l aa.txt    #统计多少行
wc -w aa.txt    #统计多少字数
head aa.txt    #看文件的头
head -n 5 a.txt  #看文件的头5hang
tail -f aa.txt  #看文件的尾巴10行
tail -n 10 aa.txt  #看文件的尾巴10行
id #查看用户id
sudo   #超级用户
chown user aa.txt  #将文件移动到用户user目录下
chmod 444 aa.txt   修改成只读权限
adduser  sss  添加用户sss
passwd sss    为sss添加密码
su sss    #切换到sss用户
wget  www.baidu.com #爬虫下载文件网页等
ps -ef | grep nginx #ps -ef:这部分命令用于显示系统中所有进程的详细信息,包括进程ID(PID)、父进程ID(PPID)、进程状态、启动时间、占用CPU和内存情况等,grep nginx 过滤nginx进程
top   #负载情况、cpu\内存等使用情况
jobs #显示后台进程
fg 2 #显示前台进程2
kill 15816 #杀死进程15816
printenv #打印所有的环境变量
printenv | grep PATH #查找path环境变量
yum install git #安装git,yum.yum:是Yellowdog Updater, Modified的缩写,是CentOS、RedHat等Linux发行版中常用的包管理工具,用于简化软件的安装、更新和卸载过程。install:是yum命令的一个参数,表示要执行安装操作。
ping baidu.com #
tracerouter baidu.com #擦看路由
ip a  #网络信息
ssh user01@localhost   用user01连接本地,localhost可以换成其他电脑ip
locate zip  #查找zip文件,locate用来查找文件和find一杨
find ./ -tye f -name "aa.txt" 查找根目录下文件名字叫aa.txt
gzip vue.js  #gzip命令会生成一个.gz后缀的压缩文件,原文件会被替换掉,压缩单个文件
touch file-{001..010}  创建文件file-001到file-010
tar cf test.tar ./test/  #该命令用于将指定目录./test/及其内容打包成一个单一的.tar文件(tar命令本身只负责归档,不压缩文件)cf表示创建文件
zip -r test.zip ./test/       #该命令用于将指定目录./test/及其内容压缩成一个单一的.zip文件。-r选项代表递归

18.mount基本用法

mount [选项] [设备] [挂载点]
mount            # 显示所有已挂载设备

# 挂载设备到目录(自动检测文件系统类型)
sudo mount /dev/sdb1 /mnt/usb

# 指定文件系统类型(如 NTFS)
sudo mount -t ntfs /dev/sdb1 /mnt/ntfs

# 以只读模式挂载
sudo mount -o ro /dev/sdb1 /mnt/readonly

-t <文件系统类型> 指定文件系统类型(如 ext4、ntfs、vfat、iso9660、nfs 等)

-o <挂载选项> 指定挂载选项(如权限、读写模式等),多个选项用逗号分隔。

-a 挂载 /etc/fstab 文件中定义的所有设备。

-r 或 -o ro 以只读模式挂载。

-w 或 -o rw 以读写模式挂载(默认)。
-l 显示已挂载设备的标签信息。
-v 显示详细输出(调试用)。
--bind 挂载目录到另一个目录(绑定挂载)。
-U 通过 UUID 挂载设备。
-L <标签> 通过文件系统标签挂载设备。

sudo mount --bind /path/to/src /path/to/dest   #绑定挂载(挂载目录到另一个目录)
#编辑 /etc/fstab 文件,添加条目实现开机自动挂载。文件中的配置信息自动挂载磁盘分区或存储设备
命令如下:
# 设备/UUID    挂载点     文件系统类型   挂载选项   备份标记 检查顺序
UUID=1234-ABCD  /mnt/disk  ext4    defaults    0       0
posted @ 2025-06-16 18:23  HordorZzz  阅读(14)  评论(0)    收藏  举报