例如:注意linux系统里的目录结构是一颗倒立的树
从 根目录(/)下自下而上
举个例子吧:
以老师给的题目为例
1.在根目录下建立china 和world文件夹
2.再者在world目录下建立china Russia Israel Ukraine
3.再在每个目录下建立子目录
注意:ls 命令是可以查看文件夹的
cd .. 这个命令是可以进入上一级目录的(好用,当你不记得自己的目录名字时)
你也可以是使用 cd 上一级目录名
通过这个命令下载tree
如果你是ubantu系统就用 apt install
[root@jumpserver ~]# cd / 进入根目录
[root@jumpserver /]# cd ~ 进入家目录
虚拟机关机命令
init 0
提示:主要写了一些常用的命令
例如:
[root@localhost /]# ls
[root@localhost /]# cd world #表示进入world文件夹
[root@localhost changsha]# pwd #表示查看changsha这个文件夹的路径(目录)
[root@localhost china]# yum install tree -y
#表示下载东西 yum命令实现 install# 安装 后面接的是文件名 -y(表示不在询问)
#询问的话:y yes
#n no
#d download 下载
ip add 查看ip地址
cat 查看文件内容
touch wang.txt
#创建另一个名字为wang的空文件
例子:
[root@jumpserver ouyang]# file changsha.txt 查看文件的类型
changsha.txt: empty
rm
rm - remove files or directories ---》非常危险的命令
-r
-r, --recursive
remove directories recursively --》株连九族
-f
-f, --force 强制删除,不给予提醒
ignore nonexistent files and arguments, never prompt
prompt 提醒、提示
linux系统里以.开头的文件是隐藏文件
[root@localhost world]# ls -l
total 0
drwxr-xr-x. 3 root root 21 Nov 19 22:53 china
drwxr-xr-x. 2 root root 6 Nov 19 22:51 Israel
drwxr-xr-x. 3 root root 20 Nov 19 22:54 Russia
drwxr-xr-x. 3 root root 18 Nov 19 22:54 Ukraine
-rw-r--r--. 1 root root 0 Nov 19 23:52 wang.txt
d 代表文件的类型是目录 directory
- 代表是普通的文件
rwxr-xr-x 代表文件的权限
r 读 read
w 写 write
x 执行 execute 执行理解为运行
- 没有权限
rwx 用户 user
r-x 组 group
r-x 其他人 others
#file命令
[root@localhost world]# file
Usage: file [-bchikLlNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
[-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
file -C [-m magicfiles]
file [--help]
[root@localhost world]# file wang.txt
wang.txt: empty
#输出命令
echo 是输出字符串或者变量的值得命令,类似于c语言里的printf
在屏幕上输出内容(字符串)
[root@jumpserver gaohui]# echo "hello,world"
hello,world
#查看文件大小
du 是统计文件或者文件夹的大小
"du"是"disk usage"的缩写,用于显示文件或目录所占用的磁盘空间大小
du -sh # 表示汇总人类可读的文件
#通配符
*通配任意字符
?通配一个字符
位置也会影响
例子:?wlb 这个会在wlb前面通配一个字符
wlb 这个会在wlb的后面通配一个字符
同理*wlb 也是在wlb前面通配任意个字符
touch 生成空文件
mv 剪切(移动)和重命名
which #查看命令地址,
path变量
变量: variable
局部变量
全局变量(环境变量)
环境: environment --》全局
预定义: 操作系统安装好就预先定义好的变量--》大写的
varname=value
例如:
1.第一提示符内容:[root@localhost world]#
使用set查看所有变量:PS1='[\u@\h \W]\$ '
\ u 是用户名\h 主机名 \W 工作目录名 \$ 分割提示图[]
2.设置主机名
[root@localhost world]# hostnamectl set-hostname wangyalin
[root@localhost world]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
切换用户 su - 用户名
[root@localhost world]# su - root
显示改好后的主机名
[root@wangyalin ~]#
3.添加用户
useradd wyl
[root@wangyalin ~]# useradd wyl
设置好密码后就用su来切换
注意:sudo#给普通用户夹root权限,相当于古代的钦差大臣
[root@wangyalin ~]# id wyl
uid=1000(wyl) gid=1000(wyl) groups=1000(wyl)
查看是否存在这个用户,显示用户的信息 --》判断用户是否存在
uid=1005(zhujunxue) gid=1005(zhujunxue) 组=1005(zhujunxue)
uid user id 用户的id号
id 标识符
身份证 id card
gid group id 组id
4.用户管理的命令
useradd 添加用户
su 切换用户
ecit 退出用户
5.文件和文件夹操作类
mkdir #建立文件夹
touch#建立空文件
file# 查看文件
pwd#查看文件路径
alias# 查看linux系统有哪些别名
定义别名
1.命令的简称
2.自己造一个命令
自己定义的别名的名字,不能和linux系统里已经有的命令冲突,如果冲突,会导致已有的命令不能使用
root@wangyalin /]# alias mk='mkdir -p'
[root@wangyalin /]# mk wang
[root@wangyalin /]# ls
bin dev lib mnt root srv tmp wang
boot etc lib64 opt run sys usr world
china home media proc sbin test var
unalias#取消别名
1.vim是vi的升级款
2.bash 是linux里的命令解释器
-c 是选项,后面可以指定告诉bash需要执行的命令
sudo bash -c "cat << EOF > /etc/apt/sources.list && apt update
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF"
command1 && command2 command1命令执行成功就执行command2
3.ln 创建链接文件(快捷方式)
link
ln - make links between files
-s 软链接(符号链接)
symbol
-s, --symbolic
-f, --force
remove existing destination files
make symbolic links instead of hard links
软链接: 删除源文件会导致链接文件不能使用 --》快捷方式,文件和文件夹都可以创建
硬链接: 删除源文件会,链接文件可以使用,不能给文件夹创建
[root@fengdeyong test]# ln -s wangyalin.txt wyl.txt 创建链接文件wyl.txt指向wangaylin.txt
源文件 链接文件
======
1.文件链接
2.文件夹链接
ll
执行"ll"命令的示例输出,该命令用于列出指定目录中的文件和子目录,并且会显示每个文件/目录的详细信息。
pwd 查看文件/文件夹的路径
pwd -P 显示链接文件真正的物理路径
-P, --physical
4.| 管道符号: 作用将前面一个命令的输出送给后面一个命令作为输入 --》中间人
管道 pipe:是进程和进程之间通信的一种方式,命令在运行的时候,就是产生一个进程
5.在xshell编程,赋值变量是一定不能在‘=’左右有空格
[root@wangyalin wang]# x = 1
bash: x: command not found
这是因为他会认为你这个x是一个命令
6.输出变量[root@wangyalin wang]# sg=wangyalin
[root@wangyalin wang]# echo sg
sg
[root@wangyalin wang]# echo $sg
wangyalin
[root@wangyalin wang]#
echo 用于输出内容
$接变量名就是引用变量的值
7.PATH
PATH变量里定义的是存放可执行文件的目录的名字,从左边的目录开始查找,找到了,就不往后面查找,如果没有找到,就从第2个目录里查找,以此类推
[root@wangyalin wang]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
8.破坏PATH变量会导致linux系统找不到命令,解决方法:定义一个正确的路径
用老师这个为例子:
[root@fengdeyong bin]# which fengdeyong
/usr/bin/which: no fengdeyong in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
[root@fengdeyong bin]# PATH=FENGDEYONG
[root@fengdeyong bin]# ls
-bash: ls: 未找到命令
永久修改PATH变量
[root@fengdeyong ~]# vim /root/.bash_profile
root@wangyalin ~]# echo $PATH
/test:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
9.修改配置文件后,让其生效的方法:
1.重新登录
[root@fengdeyong ~]# su - root 重新登录就会生效
上一次登录:六 11月 18 14:43:01 CST 2023pts/3 上
[root@fengdeyong ~]# echo $PATH
/test:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@fengdeyong ~]#
2.执行脚本文件
[root@fengdeyong ~]# source /root/.bash_profile 在当前终端里执行脚本/root/.bash_profile --》在当前终端里执行,在父进程里执行
[root@fengdeyong ~]#
[root@fengdeyong ~]# PATH=/test:$PATH 临时立马生效
[root@fengdeyong ~]# echo $PATH
/test:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@fengdeyong ~]# :
10.import 导入
export 导出,输出 --》输出这个变量为全局变量(环境变量)
export PATH
父进程里的变量是局部变量,在产生子进程的时候,子进程不能使用
这里还有单双引号的区别: 单引号是直接输出引号里的值,而双引号是可以引用地址的
[root@wangyalin ~]# sg=123
[root@wangyalin ~]# mn=456
[root@wangyalin ~]# ls
anaconda-ks.cfg hello.sh
[root@wangyalin ~]# bash hello.sh
hello.sh: line 1: echo $sg: command not found
$mn
hello,world
[root@wangyalin ~]# vim
[root@wangyalin ~]# bash hello.sh
hello,world
#这里显示不出来sg mn 的值
需要用到export命令
[root@wangyalin ~]# export sg mn
[root@wangyalin ~]# bash hello.sh
123
456
hello,world
[root@wangyalin ~]# source hello.sh
案例:
编写一个自己的c语言程序,然后去执行它
1.编写myhello.c文件
[root@wangyalin myapp]# vim myhello.c
[root@wangyalin myapp]# ls
myhello.c
[root@fengdeyong myapp]# gcc -o myhello myhello.c 将myhello.c文件编译成myhello二进制文件
-o 指定输出的二进制文件的名字 output file
[root@wangyalin myapp]# ./myhello
I am wangyalin
hello,world
2.适应世界(顺应PATH变量)
[root@fengdeyong myapp]# PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin#老师把他的变量改回
[root@fengdeyong myapp]# ls
myhello myhello.c
[root@wangyalin myapp]# cp myhello /bin 将我们编写的程序二进制文件复制到/bin
[root@fengdeyong myapp]# which myhello
/bin/myhello
[root@wangyalin myapp]# myhello#相当于执行这个命令
I am wangyalin
hello,world
find
find 可以到整个linux系统里去寻找文件或者文件夹
请查找出/test目录下文件名里以.log结尾的文件,大小大于10M文件 ,并且复制到/backup目录下
mkdir /backup
find /test
[root@fengdeyong test]# touch feng{1..100}.log
find /test -name "*.log" -size +10M -type f -exec cp {} /backup \;
[root@fengdeyong test]# find /test -name "*.log" -size +10M -type f -exec rm -rf {} \;
[root@fengdeyong test]# find /test -name "*.log" -size +10M -type f -exec mv {} /backup \;
{} 代表前面的find查找到的文件--》类似于一个占位符
\; 代表find命令的结束
exec 是执行命令 execute
[root@fengdeyong test]# find /test -name "*.log" -size -10M -type f -ok rm -rf {} \;
< rm ... /test/feng1.log > ? y
< rm ... /test/feng2.log > ? y
< rm ... /test/feng3.log > ? ^C
[root@fengdeyong test]# find /test -name "*.log" -size -10M -type f -exec rm -rf {} \;
精准匹配
模糊匹配
[root@fengdeyong myapp]# find / -name "*hello*"
find命令
用途:用于查找文件或目录
格式:find [查找范围] [查找条件] [动作]
常用查找条件
-name:按文件名称查找
-iname:按文件名称查找,不区分大小写
-size: 按文件大小查找
+10k 大于10k k--》M-->G
-10k
-user: 按文件属主查找
root
wang
-type: 按文件类型查找
f 普通的文件 file
d 文件夹 directory
l 链接文件 link
p 管道文件 pipe
c 字符设备文件 character
b 块设备文件 block
s socket文件
-perm :按文件权限查找
-mtime :按文件更改时间查找
修改文件的时间 modify time
+7 7天前修改了文件内容 n*24小时 --》以天为单位
-7 7天内修改了文件内容
-mmin 修改时间以分钟为单位统计 modify minute
+20 20分钟以前
-20 20分钟以内
-newer:按比某个文件更新的查找
12.逻辑非 -not !
.逻辑与 -a and
逻辑或 -o or
优先级由上至下
13 查看文件的状态信息
[root@wangyalin myapp]# stat myhello
File: ‘myhello’
Size: 8360 Blocks: 24 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 17305377 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-11-20 06:24:36.643336172 -0500
Modify: 2023-11-20 06:24:13.918666624 -0500
Change: 2023-11-20 06:24:13.918666624 -0500
Birth: -