Linux shell 命令
Linux shell 命令
目录
在Linux系统中,各个文件夹(目录)都有其特定的用途和含义。以下是一些
1.主要目录的含义:
系统启动和运行相关
- /bin:存放用户和系统管理员常用的基本命令,如
ls
、cp
、mv
等1234。 - /boot:包含启动Linux系统所需的内核文件、引导加载程序(如GRUB)以及其他启动相关的文件1345。
- /sbin:存放系统管理员使用的系统管理命令,如
reboot
、fdisk
等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
-L <标签> 通过文件系统标签挂载设备。
sudo mount --bind /path/to/src /path/to/dest #绑定挂载(挂载目录到另一个目录)
#编辑 /etc/fstab 文件,添加条目实现开机自动挂载。文件中的配置信息自动挂载磁盘分区或存储设备
命令如下:
# 设备/UUID 挂载点 文件系统类型 挂载选项 备份标记 检查顺序
UUID=1234-ABCD /mnt/disk ext4 defaults 0 0