linux学习小结

1.查找ip


安装完虚拟机后进入会提示login:【输入root】passwd【输入 1】输入密码时是没有回显的,不要反复输入,点击回车即可;当有#出现时显示登陆成功。
机房要求无尘,恒温,低温;一台电脑是否可以运行可以没有CPU,但是不能没有GPU.冬天安装机器时内存金手指等电子元件注意不要触碰,防止报废;
先安装vmware,然后添加虚拟机,挂载centos影像,安装成功后进行finalshell远程连接
一.ip a 查看ip指令【ip a 或者 ip addr 】[window中win+r打开cmd 输入ipconfig]
1:lo: 对内通信网卡;
2. ens33: 对外通信网卡 查到:c-1虚拟机的ip为192.168.59.132;c-2虚拟机的ip为192.168.59.133;c-3虚拟机的ip为192.168.59.134

2清屏快捷键方式


1. clear命令
这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了-页,如果向上滚动屏幕还可以看到之前的操作信息。
2、reset命令
这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。值得一提的是reset命令 在你的终端制错乱时非常有用。如输入字符不出现在光标的位置的情况。还有当你敲击回车键时,新提示符并没有出现在新行上,而是出现在老提示符的前面。此时reset命令 就能用来修正这些问题。
3.Ctrl+ l(小写的L)清屏效果同clear命令-样。
4.  printf "\033c"命令 这个命令它才是真正的清空了终端屏幕,它的功能跟DOS里CMD.EXE提供的CLS效果很相似

红帽是个公司;centos8/9可能会2024年收费,所以一般装centos7;云计算含金量最大的公司。
金融,政府,医疗在系统安全方面华为认证全国第一,
三种职业:黑帽骇客,攻击;白帽防御;灰帽两者之间,给钱就干,攻击和防御;
在Linux系统中,拥有最大权限的账户名为: root(超级管理员root用户拥有 最大的系统操作权限,而普通用户在许多地方的权限是受限的普通用户的权限,一般在其HOME目录内是不受限的;一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。

结构
树形结构,没有诸多盘符,所有文件在根目录 / 下。windows 层级关系用 \ 表示,linux 层级关系还是 / 符号。
命令提示符:【】是边界符号,没有实质意义root是登陆当前机器的用户名,可以任何用户名;~飘号【tab键上面的符号,是一个泛称,随着用户名改变而改变】#当前用户是管理员;$当前用户是普通用户
[root    @               localhost       ~    ]                          #
用户    分隔符(无意义)        主机名    当前用户root家目录(登录者用户名)   管理员用户

增加用户useradd tony 查看用户id tony 删除用户userdel  [-r] tony


3查看服务器时间


[root@qfedu.com ~]# date 
[root@qfedu.com ~]# date +%F  #只显示当前年月日
[root@qfedu.com ~]# date +%X  #只显示当前时间到秒
[root@qfedu.com ~]# pwd   #显示当前工作路径
pwd ---Print working directory
命令基础
命令通用语法:command [-option] [parameter] ,options 表示参数细节,parameter 表示具体执行目标。
如 ls -l /home ,就是以列表形式列出 home 下所有文件。和ll作用类似。

切换用户su -
添加单个用户:useradd tony
添加多个用户:for i in {1..10} ;do useradd -m tony$i ;done
添加四个用户
[root@localhost ~]# for m in {1..4} ; do useradd -m  tony$m ; done
[root@localhost ~]# ls /home
tony1  tony2  tony3  tony4
[root@localhost ~]# ls /var/spool/mail
tony1  tony2  tony3  tony4
当创建/删除一个用户的时候会同时创建/删除一个用户的家目录和邮箱目录

4删除用户时 -r


【-r】删除用户时需要添加-r,此时可以同时删除邮箱目录,如果不加-r,此时不会删除home中的普通用户,邮箱中的普通用户不会被删除掉,只是把用户给删除掉了【home还在】
[root@localhost ~]# userdel tony3
[root@localhost ~]# userdel -r tony2
[root@localhost ~]# ls /home
tony1  tony3  tony4
[root@localhost ~]# ls /var/spool/mail
tony1  tony3  tony4
[root@localhost ~]# id tony2
id: tony2: no such user
[root@localhost ~]# id tony3
id: tony3: no such user

退出普通用户到root的命令用exit或者CTRL+D;此时断开连接,点击回车键即可重连;
ctrl+c可以取消正在执行或者输出(按下回车)之前的操作;
root可以凌驾于基本权限之上,但不是所有权限;

tab键自动补全失败原因缺乏插件解决方法
[root@localhost ~]# yum -y install bash-completion
已加载插件:fastestmirror

passwd作为主命令修改密码【系统会判断是否主用户】如果是主用户,就用passwd 用户名;如果是普通用户,只需要passwd即可
普通用户的密码至少八位,需要大小写字母,数字,特殊符号,和不能包含用户名的规则;
当前普通用户如果没有密码则不能修改自己的密码;

查看普通用户的家目录home下的普通用户 ls /home 或者ll /home
查看当前用户所在目录 pwd
从主账户切换到普通用户 su - tony2
可以从主账户和普通用户之间相互切换,但是此时不能普通用户之间相互切换,因为此时会提示你要普通用户tony2的密码。


5.su[switch user]  用户名和su - 用户名 sudo

su/su- 切换用户时可以执行多个命令;切换时不需要输入密码;知道登出,权限才消除;

sudo 切换用户时每次执行单条指令;切换时需要输入密码;一般情况下5分钟【ubantu15分钟】

su 切换用户时,切换当前登陆用户名,但是不改变家目录;/root
su - 切换用户时,不仅切换当前用户名,也改变其家目录 /home/tony1
[root@localhost ~]# su - tony1
[tony1@localhost ~]$ pwd
/home/tony1
[tony1@localhost ~]$ exit
登出
[root@localhost ~]# su tony1
[tony1@localhost root]$  pwd
/root
 

6.ls -l -h -d -a -t

ls:平铺形式列出当前文件夹下所有文件。 主命令 【选项】 参数
[root@localhost ~]# ls           【不加任何,显示当前家目录下的所有文件】
1.txt  a  anaconda-ks.cfg  b  c  qianfeng
[root@localhost ~]# ls -a  【root家目录下的所有文件】
.   1.txt  anaconda-ks.cfg  .bash_history  .bash_profile  c       qianfeng
..  a      b                .bash_logout   .bashrc        .cshrc  .tcshrc
[root@localhost ~]# cd /
[root@localhost /]# ls -a  【根目录下的所有文件】
.   bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
..  boot  etc  lib   media  opt  root  sbin  sys  usr

/只有在目录文件下面才能添加,【是否加不影响结果,方便计算机识别】

[root@localhost /]# ls /home
tony1  tony2  tony3  tony4
[root@localhost /]#  ls /home/
tony1  tony2  tony3  tony4

options -a: 列出所有文件包括隐藏文件。【linux中隐藏文件都以点开头】
options -l:每个文件一行,一列表形式展现,并且还会展现每个文件的详细信息(如创建日期)。
options -a -l 或 -al 或 -la:同时应用 -a -l。
options -h:【必须和 -l 一起使用】。在以列表形式列出全部文件的前提下,每个文件的文件大小缩写(K M G)。

-t时间排序
-d[仅针对目录文件下进行显示,显示文件的家目录]
parameter:要列出的目录路径,默认为当前工作目录。
打开系统时默认用户目录为当前工作目录。linux 里是 /home/usrname, windows 里是C:\Users\Admin具体是 c:\用户\Admin


-rw-r--r--          1       root       root     10086   May 7 12:15:16      alan.txt        
文件类型\权限    硬链接个数   所有者      所属组      大小    修改时间              名字

[root@localhost ~]# ll -d /home/  #显示目录的详细信息

[root@localhost ~]# ls /home     【显示的是当前家目录的下的详细信息】#查看目录下面文件的详细信息
tony1  tony2  tony3  tony4
[root@localhost ~]# ls -d /home  【显示的是当前家目录的名称】#查看目录详细信息
/home

7文件类型

-普通文件d[dictionary]目录文件c[char]字符文件b[block]块文件s[socket]通信套接字文件p[piping]管道文件l[link]链接文件


#ls -lh     //-h 人性化显示 (显示文件大小)
#ls -a      //all 显示所有文件 (包括隐藏文件)
案例:ls a.txt b.txt c.txt
#ls ./file*    #以file开头的所有文件    *通配符。表示所有字符(隐藏文件除外)
#ls ./*.txt     #以任意开头以.txt结尾的所有文件
[root@qfedu.com ~]# ll -t  #按最新的修改时间排序

8rm -rf:强制删除


[root@localhost ~]# #代表注释;touch创建普通文件;mkdir创建目录文件;删除目录文件必须 加-r;如果强制删除rm -rf
[root@localhost ~]#  #删除成功时有提示用 -v
[root@localhost ~]# touch /home/tony1/qf.txt
[root@localhost ~]#  mkdir /home/tony1/qfeng
[root@localhost ~]# ls /home/tony1/
a  qfeng  qf.txt
[root@localhost ~]# rm -rf /home/tony1/
[root@localhost ~]#  ls /home/tony1
ls: 无法访问/home/tony1: 没有那个文件或目录
[root@localhost ~]#  ls /home
tony2  tony3  tony4
[root@localhost ~]# #删除的是从/home家目录下的tony1文件所有信息,包含tony1文件本身

[root@localhost ~]# rm -rv /home/tony2/qf
rm:是否删除目录 "/home/tony2/qf"?y
已删除目录:"/home/tony2/qf"    【-v删除成功时会提示已删除成功】
[root@localhost ~]# rm -rvf /home/tony2/1.txt
已删除"/home/tony2/1.txt"      【-v删除成功时会提示已删除成功】

9.快照备份

【为防止删根,可利用虚拟机的拍摄快照功能,(蓝色扳手闹钟)】月光宝盒恢复数据功能可以点击蓝色闹钟转到节点或者【红色箭头闹钟】进行恢复。


 Linux 主要目录速查表
/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始
当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录
/bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
/boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有
/etc/inittab
/etc/fstab
/etc/init.d
/etc/X11
/etc/sysconfig
/etc/xinetd.d
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下
~ 表示当前用户的家目录
~edu 表示用户 edu 的家目录
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
/opt:给主机额外安装软件所摆放的目录
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/root:系统管理员root的家目录
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
/usr:应用程序存放目录
/usr/bin:存放应用程序
/usr/share:存放共享数据
/usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
/usr/local:存放软件升级包
/usr/share/doc:系统说明文件存放目录
/usr/share/man:程序说明文件存放目录
/var:放置系统执行过程中经常变化的文件
/var/log:随时更改的日志文件
/var/spool/mail:邮件存放的目录
/var/run:程序或服务启动后,其 PID 存放在该目录下

1.命令行的帮助命令 命令 --help
2.-d指定家目录;创建用户时自动创建其默认为用户同名的家目录,也可以加-d指定其家目录;
[root@localhost ~]# useradd jack
[root@localhost ~]# useradd rose -d /home/soldier
[root@localhost ~]# ls /home
alan1  jack  soldier
[root@localhost ~]# id jack
uid=1007(jack) gid=1007(jack) 组=1007(jack)
[root@localhost ~]# id rose
uid=1008(rose) gid=1008(rose) 组=1008(rose)

3.删除用户时,必须加-r,否则只会删除用户,其家目录和邮箱目录还存在;如果此时添加其他新用户,会覆盖其原来的家目录,uid不变,但是用户名已经改变了。
4.目录后面都加/,是因为只有目录文件才能存储文件(含普通文件和目录文件)
5.-v删除或创建文件时可视化效果,当操作成功时会有提示;
6.反引号`内容`优先执行或者用$(内容)符号,会优先执行里面内容,并将输出的结果放到对应的位置;

10.日期时间保留空格`` 和$()

%X显示的时中文的格式时间%x 显示带中文的日期

[root@localhost ~]# date +%x--%X
2023年08月14日--17时17分21秒


[root@localhost ~]# #年月日和时分秒之间用连接符不可用空格,Linux中空格代表分隔。可以用-@等。否则时间和日期会相连;当百分号在命令中第一次出现时,必须加+号;
[root@localhost ~]# date +%F---%X
2023-08-10---11时41分37秒
[root@localhost ~]#  date `+%F  %x`
2023年 08月 10日 星期四 11:42:58 CST
[root@localhost ~]#  date $(+%F  %x)
在当前目录下创建一当下日期为结尾的txt文件,此时年份和日期之间不可用空格。当一级任务时反引号相当于优先执行的任务,此时还没转义,touch 反引号内容时作为二级任务,随后进行。
[root@localhost ~]# touch `date +%F--%X`.txt
[root@localhost ~]# ls /root
1.txt  2023-08-10--15时05分01秒.txt  a  anaconda-ks.cfg  b  c  qianfeng
[root@localhost ~]# touch `date +%F  %X`.txt
date: 额外的操作数 "%X"
Try 'date --help' for more information.

11.别名alias


[root@localhost ~]# #--color=auto 查看文件时自动颜色显示
[root@localhost ~]# type ll 【查看命令的类型,是否有别名】
ll 是 `ls -l --color=auto' 的别名
[root@localhost ~]# ls /
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
[root@localhost ~]# #--color=auto 查看文件时自动颜色显示
[root@localhost ~]# ls /root
1.txt  2023-08-10--15时05分01秒.txt  a  anaconda-ks.cfg  b  c  qianfeng
[root@localhost ~]# alias tony="rm -rvf"
[root@localhost ~]# tony /root/2023-08-10--15时05分01秒.txt 
已删除"/root/2023-08-10--15时05分01秒.txt"
#别名只有在系统预启动时才生效,当reboot后先前设置的别名就会失效。
取消别名,unalias 当前设置的别名。【在Linux中好多命令取反un就是取消原命令】
[root@localhost ~]# unalias   tony
[root@localhost ~]# type tony
-bash: type: tony: 未找到

df -Th  查询系统磁盘使用率功能


通配符:


12集合  : {1..5}  {1..100..15}

[root@localhost ~]# echo {1..5} >tony.txt; echo {1..100..15}>>tony.txt; cat tony.txt
1 2 3 4 5
1 16 31 46 61 76 91
 


[root@localhost ~]# ls /home
alan1  heihei  tony1  tony2  tony4
[root@localhost ~]# touch /home/heihei-{1..4} /home/heihei-{o..z}
[root@localhost ~]# ls /home/
alan1     heihei-2  heihei-o  heihei-r  heihei-u  heihei-x  tony1
heihei    heihei-3  heihei-p  heihei-s  heihei-v  heihei-y  tony2
heihei-1  heihei-4  heihei-q  heihei-t  heihei-w  heihei-z  tony4

 #-p如果发现上层目录不存在,可以自动帮忙创建目标文件的上层目录;和-v配合可以显示创建成功
 扩展符可以是单独规律的数字集合或者是字母集合不能是字母数字结合的集合比如{2a..4a}
[root@localhost ~]# mkdir -pv /tmp/{alan2,tony}/{1..4}
mkdir: 已创建目录 "/tmp/alan2"
mkdir: 已创建目录 "/tmp/alan2/1"
mkdir: 已创建目录 "/tmp/alan2/2"
mkdir: 已创建目录 "/tmp/alan2/3"
mkdir: 已创建目录 "/tmp/alan2/4"
mkdir: 已创建目录 "/tmp/tony"
mkdir: 已创建目录 "/tmp/tony/1"
mkdir: 已创建目录 "/tmp/tony/2"
mkdir: 已创建目录 "/tmp/tony/3"
mkdir: 已创建目录 "/tmp/tony/4"
*号,通配符。
[root@localhost ~]# mkdir -v  /root/{1..4}@tony
mkdir: 已创建目录 "/root/1@tony"
mkdir: 已创建目录 "/root/2@tony"
mkdir: 已创建目录 "/root/3@tony"
mkdir: 已创建目录 "/root/4@tony"
[root@localhost ~]# ls /root
1@tony  2@tony  3@tony  4@tony  anaconda-ks.cfg  c  root_a
[root@localhost ~]# rm -rvf /root/*tony
已删除目录:"/root/1@tony"
已删除目录:"/root/2@tony"
已删除目录:"/root/3@tony"
已删除目录:"/root/4@tony"
[root@localhost ~]# ls -d /root  【-d命令会显示其家目录】
/root
[root@localhost ~]# ls /root
anaconda-ks.cfg  c  root_a

13. cd / ;cd . ;cd ; cd -

快速回到家目录cd,快速回到上一次所在目录cd -绝对路径以/【根目录】开头,相对路径cd 后面不跟命令直接回到当前用户家目录   
[root@localhost /]# cd /home
[root@localhost home]# cd   【快据返回其家目录】
[root@localhost ~]# cd -     【返回到上一次所在目录】
/home

14.swap交换分区

 1.Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。swap作用:实际磁盘空间 分区一般给内存的1-1.5倍 如果内存大于8G 最多给8G内存不够时,临时充当内存用(速度慢)Linux操作系统自我保护机制(当系统内存不够时会自动杀死占用内存最高的进程)
 

15.删除虚拟机


 右键管理--->管理  --》从磁盘中删除才是真正的删除虚拟机【必须在关闭虚拟机额的条件下才能进行删除】

16.>覆盖>>追加

.linux中>表示覆盖原文件内容(文件的日期也会自动更新),>>表示追加内容(会另起一行,文件的日期也会自动更新)。

17和&&或||与;


[root@localhost ~]# ls /root/A ; touch /root/a.txt 【;分号前面是否执行成功,不影响后面执行】
ls: 无法访问/root/A: 没有那个文件或目录
[root@localhost ~]# echo $?【判断上调指令是否执行成功过】
0
[root@localhost ~]# ls /root/b && touch /root/b.txt【&&分号前面是否执行成功,影响后面执行,前面必须执行成功,后面语句才能执行】
ls: 无法访问/root/b: 没有那个文件或目录
[root@localhost ~]# echo $?
2
[root@localhost ~]# ls /root
a.txt

;分号前后是否执行,互不影响;
&&和的作用前面执行成功,后面才能执行,否则短路,后面无论命令是否能够执行成功都不执行
||前面执行成功,后面就不执行;如果前面不执行成功,后面才会执行;
[root@localhost ~]# ls /root/c || touch /root/c.txt
ls: 无法访问/root/c: 没有那个文件或目录
[root@localhost ~]# echo $?
0
[root@localhost ~]# ls /root/
a.txt  c.txt
[root@localhost ~]#  ls /root/a.txt || touch /root/a2.txt
/root/a.txt
[root@localhost ~]# ls /root/
2c.txt  a2.txt  a.txt  c.txt


18.不能直接递进创建目录和文档,创建文档和目录分开进行执行;


[root@localhost ~]# touch -p /root/a/b/{1..5}
touch:无效选项 -- p
Try 'touch --help' for more information.
[root@localhost ~]# mkdir -p /root/a/b/c ; touch /root/a/b/c/{iiu,fei,yang,l}
[root@localhost ~]# ls /root/a/b/c/
fei  iiu  l  yang

输入文字cat ; > 单大于号覆盖内容 ;>> 双大于号,追加,另起一行,
[root@localhost ~]#  echo "keyan is a wild floosh donkey" > /root/a.txt
[root@localhost ~]# cat /root/a.txt
keyan is a wild floosh donkey
[root@localhost ~]# echo "it's a truth" >> /root/a.txt
[root@localhost ~]# cat /root/a.txt
keyan is a wild floosh donkey
it's a truth
[root@localhost ~]# echo "it's a lie" > /root/a.txt
[root@localhost ~]# cat /root/a.txt
it's a lie

19快捷键的使用:【记忆宫殿联想记忆法】


esc . 打印出上一条命令的所有参数
ctrl a  光标回行首;【左手小指移动】【可以无名指按a,左小拇指固定按CTRL】
ctrl e 光标会行尾【左手中指移动】
ctrl u  光标左侧删掉ctrl 【右手食指删除】  
ctrl k光标右侧删除【右手中指删除】
ctrl w 删除单词(以空格界,如果是路径,删掉成串)
向上方向键 打印上一条命令 【CTRL P 也可以实现其效果】

20查看历史命令三种方式和删除历史命令


a.查看历史命令 history [历史所有命令]

history -c 删除所有历史命令记录
b.执行具体单条命令 !具体行号【中间不可以加空格,否则不能执行,识别不出来】
 c. (reverse-i-search)`': 【ctrl r 模糊查询包含当前内容的命令,最近的一条】
 Cat 查看文件内容信息,ls查看文件的权限等属性信息
 head/tail -行数 :查看内容前n行或者或n行信息
 more/less 从前到后查看更多内容回车另起一行,空格另起一屏

which 命令名称 查看命令所在的路径;

whoami 查看当前登陆用户的用户名

[root@localhost /]# su - tony1
上一次登录:三 8月  9 16:42:27 CST 2023pts/0 上
[tony1@localhost ~]$ whoami
tony1

21tab键自动补全功能【命令或者路径补全】

yum -y install bash-completion 

22.移动同名文件或者目录

移动同名普通文件,目标文件内容会被源文件内容所覆盖,原先文件已移除;
移动同名目录文件,源文件这个目录文件会被放到同名的目标文件的同名目录文件中,目录文件的特性就是容纳目录文件和普通文件,不会被覆盖。
[root@localhost ~]#  mkdir  /root/tony
[root@localhost ~]#  touch  /home/tony.txt
[root@localhost ~]#  mkdir /home/tony
[root@localhost ~]#  touch  /home/tony.txt
[root@localhost ~]# echo "home-tony2 " > /home/tony.txt
[root@localhost ~]# echo "root-tony1 " > /root/tony.txt
[root@localhost ~]# cat /root/tony.txt
root-tony1 
[root@localhost ~]# cat /home/tony.txt
home-tony2 
[root@localhost ~]# mv /root/tony.txt /home/tony.txt
mv:是否覆盖"/home/tony.txt"? y
[root@localhost ~]# cat /home/tony.txt
root-tony1 
[root@localhost ~]# mv /root/tony /home/tony
[root@localhost ~]# ls /home/tony
tony


集合间隔序号创建文件或目录
[root@localhost ~]# mkdir -pv  /root/a/a1/a2/{1..20..4}
mkdir: 已创建目录 "/root/a/a1"
mkdir: 已创建目录 "/root/a/a1/a2"
mkdir: 已创建目录 "/root/a/a1/a2/1"
mkdir: 已创建目录 "/root/a/a1/a2/5"
mkdir: 已创建目录 "/root/a/a1/a2/9"
mkdir: 已创建目录 "/root/a/a1/a2/13"
mkdir: 已创建目录 "/root/a/a1/a2/17"

23vim 三种命令模式【命令模式/编辑(插入)模式/尾行(底线命令)模式】

yum -y install vim  安装插件:
通过vim 文件名 进入的是命令模式
输入i【光标位置不变】a[光标右移一位]A[光标当前行尾]o[光标下一行]O[光标上一行] 进入文档编辑插入模式
通过ESC切换三种模式
通过输入:进入底线命令模式
w保存wq保存并退出,此时root下的root/alan.txt.swp交换文件会被覆盖,alan.txt和al,
an.txt.swp会被更改。该文件时隐藏文件。如果此时输入q此时会退出,alan.txt.swp文件会被释放删除掉。反复用vi或vim进入为了避免 出现交换文件提示,此时删除当前查看目标文件家目录下的以.swap结尾同名交换文件例如alan.txt的备份aln.txt.swp。删除命令为  rm -rf ./*swp

!是强制退出,完整命令是:wq!【必须是英文状态】:10    #进入第10行 【输入完毕后切换回命令模式】
:set list 显示出控制字符$    :set nu显示行号 set nolist/set nonu
命令行模式:gg文档行首 G文档尾行首0行首 $行尾  yG复制到文档尾部;ygg光标从此处复制到文档行首
 插入编辑模式:yy复制,p[粘贴到下面一行]P[粘贴到当前光标上面一行]dd删除当前行;撤销上个操作。
 模糊查询【底线命令模式下输入/和需要搜索的字符串回车键就会高亮显示所要查询的内容,此时取消高亮,在底线命令模式下:noh就会取消高亮(no high bright方便联想记忆)】
 如果光标要定位到具体某一行【底线命令模式下,输入:查询的行号第二种命令模式下输入行号G]
 3yy,10p/10P 复制三行,粘贴10行【p粘贴当前行到下一行;P粘贴到当前行到上一行】
 d^ 删除光标位置到行首; d$删除光标位置到行尾【或者shift+d或者D】
 在命令模式下 x删除当前字符;r替换光标所在位置

24liunu中shell中循环用法

((表达式))用来扩展Shell中的算术运算,以及赋值运算,扩展for,while,if条件测试运算.
两个小括号表示其中以C语言方式的语法解析
注意点:
1.在双括号结构中,所有的表达式可以像c语言一样,如a++,b--
2.在双括号结构中,所有变量必须加入$符号前缀
3.在双括号可以进行逻辑运算,四则运算,而且运算符合数值之间可以没有空格,也可以有空格.
4.双括号结构扩展了for,while,if条件测试运算.
5.支持多个表达式运算,各个表达式之间用逗号,分开.
6.使用[]时必须保证运算符与数值之间有空格,而(())时数值与运算符可以没有空格.

小技巧:
1.新建(()).sh文件vim "(()).sh",因为()在shell中有特殊含义,只能用"括起来,用单引号也是不行的.
2.使用文件时:vim \(\(\)\).sh,可以在要使用的含有特殊符号的文件前面添加一个转义符号\然后可以按提示按补全.
使用循环时,变量处必须加$,小括号都是双小括号。
num=10; while((num<100)); do echo $num;  ((num+=10));done

25 tail -f

tail 【-f 仅限于追加产生提示所在位置;起到动态监控查看文件位置;如果覆盖的话会报错,提示内容已截断;-n 查看尾部行数,默认十行】

[root@localhost ~]# echo "覆盖原有内容" > a;echo yangailin >>a ;tail -f a
覆盖原有内容
yangailin
​
​
26一次性把五个文件顺次放到五个目录中
[root@localhost ~]# rm -rf * /home/*; mkdir -p /home/{1..5} ;touch {1..5}.txt;for ((i=1;i<=5;i++)); do cp -r $i.txt  /home/$i; done; ls /home /home/*
/home:
1  2  3  4  5
​
/home/1:
1.txt
​
/home/2:
2.txt
​
/home/3:
3.txt
​
/home/4:
4.txt
​
/home/5:
5.txt
​
27把五个目录文件都放到每一个目录中
 rm -rf * /home/*; mkdir -p /home/{1..5} ;touch {1..5}.txt;for ((i=1;i<=5;i++)); do cp -r {1..5}.txt  /home/$i; done; ls /home /home/*
​
/home:
1  2  3  4  5
​
/home/1:
1.txt  2.txt  3.txt  4.txt  5.txt
​
/home/2:
1.txt  2.txt  3.txt  4.txt  5.txt
​
/home/3:
1.txt  2.txt  3.txt  4.txt  5.txt
​
/home/4:
1.txt  2.txt  3.txt  4.txt  5.txt
​
/home/5:
1.txt  2.txt  3.txt  4.txt  5.txt
28替换[-g %]

语法----> :范围 s/old[匹配域]/new【替换域】/选项 
:s/world/nice/         #替换当前光标所在行
:3s/sbin/nice/         #替换指定行
:1,5 s/nologin/soso/   #从1-5行的nologin 替换为soso
:%s/bin/soso/          #替换所有行【仅第一次出现替换】
:%s/sbin/nice/g        #替换行内所有关键字【每行全局替换】
​
注释:%表示替换所有行  g表示行内所有关键字
​

29行号和控制字符$显示

cat 查看文件时

-n 显示行号 -A  显示以$控制字符结尾的符号$.

:set nu    #设置行号 
:set list  #显示控制字符[高亮显示$结尾字符]
: set nolist #取消控制字符 
:set nonu  #取消设置行号 
30.vim 中另存为或创建文件



将文件另存(另存为) 语法----> :w 存储到当前文件 :w /tmp/aaa.txt    #另存为/tmp/aaa.txt 【假设当前tmp下没有文件会自动创建aaa.txt文件】 :1,3 w /tmp/2.txt  #从1-3行的内容另存为/tmp/2.txt【假设当前tmp下有2.txt文件,选中的内容会把2.txt中原来的文件覆盖掉。】

31.stat 查看文件信息

stat【state文件状态】命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。stat命令可以查看的信息包括:

File:显示文件名
Size:显示文件大小
Blocks:文件使用的数据块总数
IO Block:IO块大小
regular file:文件类型(常规文件)
Device:设备编号
Inode:Inode号
Links:链接数
Access:文件的权限
Gid、Uid:文件所有权的Gid和Uid
access time:表示我们最后一次访问(仅仅是访问,没有改动)文件的时间
modify time:表示我们最后一次修改文件的时间
change time:表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等

[root@linux-server ~]# ls -l passwd 
-rw-r--r--. 1 root root 839 Oct 31 21:29 passwd

[root@linux-server ~] stat /etc/passwd
  文件:"/etc/passwd"
  大小:1142            块:8          IO 块:4096   普通文件
设备:fd00h/64768d      Inode:17332717    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2023-08-15 15:45:06.925733483 +0800
最近更改:2023-08-15 15:45:06.915733497 +0800
最近改动:2023-08-15 15:45:06.915733497 +0800

32文件,用户,组改名

cp 移动时需要-r; mv移动时不需要-r.

mv/cp 文件改名时, mv 源文件名字 新名;

usermod 改名时 -l ,新名在前,旧名在后;usermod    -l ailin tony;【tony用户名改为ailin】

groupmod改名时-n,新名在前,旧名在后。[用户和组改名有点像创建硬链接的命令ln]

33一个用户必须有一个主组

账户为分三类:
超级用户(管理员):享有最高权限,具备系统中的所有权限(一般为root),UID为0
系统用户 :别称“伪用户”,无法登录系统,其主要作用是支撑系统运行,方便系统管理。uid号码小于1000.
普通用户:有权限限制,只能对自己目录下的文件进行操作,可以登录系统。uid 大于1000,登陆shell是bin/bash。
任何一个账户在创建的同时都会在系统里面创建一个同名的组。一个用户必须有一个主组,可能有多个附属组或者没有附属组。【组名和用户名在同名时需要加-g】如果有个组叫yunwei,此时添加用户时yunwei如果没有进行指定主组。会有提示,此时已存在。因为创建用户时会默认创建一个同名的家目录和主组。
[root@localhost ~]# groupadd yunwei; 
[root@localhost ~]# useradd yunwei;
useradd:yunwei 组已经存在 - 如果您想将此用户加入到该组,请使用 -g 参数。
[root@localhost ~]# useradd yunwei -g;
useradd:选项需要一个参数 -- g

root@localhost ~]# groupadd YUNWEI
[root@localhost ~]# useradd yunwei -g yunwei -G YUNWEI -u 10604 -c ailin -s /usr/bin/bash
[root@localhost ~]# grep 'yunwei' /etc/passwd ;grep 'yunwei' /etc/group ; id yunwei;
yunwei:x:10604:8897:ailin:/home/yunwei:/usr/bin/bash
yunwei:x:8897:
YUNWEI:x:8898:yunwei
uid=10604(yunwei) gid=8897(yunwei) 组=8897(yunwei),8898(YUNWEI)

34创建用户

[root@linux-server ~]# useradd user01   //创建用户
指定用户uid
useradd  tony  -u 1111
或者useradd  alan  ;usermod  alan -u 1111

 -u[uid]g-[/主组】 G【附加组】s[shell信息]-c[详细信息】
 查看组信息:cat /etc/group
[root@localhost ~]# useradd alan -u 6666 -g root -G QF 【确保组名存在】
[root@localhost ~]# grep 'QF' /etc/group
QF:x:1006:alan
组名:组密码占位符:组id;附加组成员
 id alan
uid=6666(alan) gid=0(root) 组=0(root),1006(QF)
用户id; 主组id;            组描述【主组,附属组】
grep 'alan' /etc/passwd  【查看用户基本信息】
alan:x:6666:0::/home/alan:/bin/bash
用户名:密码占位符【有无密码均可】:用户uid;主组id;注释信息:该用户及目录的绝对路径:shell信息【解释翻译器sh或bash#/usr/bin/bash 和/sbin/nologin】
[root@localhost ~]# which bash
/usr/bin/bash
[root@localhost ~]# useradd tom -u 8888 -g root -G QF -s /usr/bin/bash
[root@localhost ~]# grep 'tom' /etc/passwd ;id tom;
tom:x:8888:0::/home/tom:/usr/bin/bash
uid=8888(tom) gid=0(root) 组=0(root),1006(QF)
[root@localhost ~]# su - tom
[tom@localhost ~]$ 【tom登陆成功,则证明Tom有登陆权限】
切换到主用户
[tom@localhost ~]$ su 【输入后输入密码切换回root 用户】
密码:
[root@localhost tom]# cd /root/ 【切换回root 家目录。】
[root@localhost ~]# 
 
组名不能是纯数字或者中文,否则会报错
[root@localhost ~]# groupadd 1111; grep '1111' /etc/group
1111:x:1007:
[root@localhost ~]# adduser ailin -u 1991 -g root  -G 1111 -c in87 -s /usr/bin/bash
adduser:“1111”组不存在

用户的主组和家目录没有关系
[root@localhost ~]# adduser ailin -u 1991 -g root  -G QF -c in87 -s /usr/bin/bash;grep 'QF' /etc/group ; grep 'ailin' /etc/passwd
QF:x:1006:alan,tom,ailin
ailin:x:1991:0:in87:/home/ailin:/usr/bin/bash

【给用户改名 -l 新名 原用户名 (组改名 -n 新名  -g 组id  旧组名;旧组名必须在最后不可调整顺序)】
[root@localhost ~]# usermod  -u 6868  -g root -G QF  -l  ALAN alan;grep 'QF' /etc/group ;grep 'ALAN' /etc/passwd
QF:x:1006:tom,ailin,root,ALAN
ALAN:x:6868:0::/home/alan:/bin/bash

[root@localhost ~]# groupmod -n  QF2307   -g 7788 QF;grep 'QF2307' /etc/group
QF2307:x:7788:tom,ailin,root,ALAN

删除用户 userdel -r 用户名; 删除组【groupdel 组名】
/etc/group文件
用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下:
组名:口令:组标识号:组内用户列表1
组名:组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令:口令字段存放的是用户组加密后的口令。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
组标识号:组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组,别称GID。
组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
/etc/passwd  ---->查看账户是否存在的文件
/home/  ---->用户的家目录,每创建一个用户会在/home目录下面创建对应的家目录
/etc/shadow   --->用户的密码文件

etc/passwd文件详解--
此文件里面除了密码字段能删除不能直接修改之外,其他字段全部都能直接修改
[root@linux-server ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
分隔符::
第一列:用户名
第二列:密码
第三列:用户标识号--->(uid)是一个整数,系统内部用它来标识用户。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号
第四列:gid
第五列:描述信息。
第六列:家目录
第七列:是用户登陆到界面的第一个命令,开启一个shell。登陆shell

35附加(附属)组添加用户和删除组成员

1.给组添加账户
-a  【追加方式】
[root@linux-server ~]# gpasswd -a user10 grp2
Adding user user10 to group grp2
2.同时添加多个用户到组[可以同时添加多个用户到组,但不能同时创建多个用户]
-M:members成员的缩写【覆盖添加,添加时需要先查原来的附属组成员,其次添加原附加组成员和现在需要添加的成员;】
[root@linux-server ~]# gpasswd -M tom,alice it

创建用户jack和tom属于hr,wc组
第一种单个添加(追加);
groupadd hr; groupadd wc; useradd jack;useradd tom; 
gpasswd -a tom  hr; gpasswd -a tom wc;
gpasswd -a jack hr; gpasswd -a jack wc;
grep 'wc' /etc/group ; grep 'hr' /etc/gruop
第二种覆盖添加
userdel -r tom ;userdel -r jack; groupdel hr;group wc;
grep 'wc' /etc/group ; grep 'hr' /etc/gruop  ;
gpasswd -M (原wc附加组成员,)jack,tom wc;gpasswd  -M  (原wc附加组成员,)jack,tom hr;
grep 'wc' /etc/group ; grep 'hr' /etc/gruop  ;
3.从组删除用户
-d
[root@linux-server ~]# gpasswd -d user07 hr【可以vim进入文件批量删除】
Removing user user07 from group hr

36vim中可视化块批量更改文字内容

默认命令模式下进入此时场景
批量更改文字
ctrl+v     #进入可视块模式
o下一行行首。
移动到光标起始位置;上下键移动【选中行数】;输入大写I;输入光标处需要修改的内容;按两次esc[进行内容覆盖]

shift+v    #进入可视行模式

37.权限设置【文件读写权限和所属权限】

chown:改变文件或目录的所属主以及所属组【用户名和附加组】
chown -R[目录中递归修改文件夹的权限] 【用户名/.附属组/用户名.附属组】 文件名

递归修改文件夹

[root@localhost ~]# du .|head -1
0       ./a/b/c/1

[root@localhost ~]# ll a a/b a/b/c;
a:
总用量 0
drwxr-xr-x. 3 jack tom 15 8月  15 20:30 b

a/b:
总用量 0
drwxr-xr-x. 3 jack tom 15 8月  15 20:30 c

a/b/c:
总用量 0
drwxr-xr-x. 2 jack tom 6 8月  15 20:30 1
[root@localhost ~]# chown  -R tony.tony4 a/b/c/1;ll a a/b a/b/c a/b/c/1
a:
总用量 0
drwxr-xr-x. 3 jack tom 15 8月  15 20:30 b

a/b:
总用量 0
drwxr-xr-x. 3 jack tom 15 8月  15 20:30 c

a/b/c:
总用量 0
drwxr-xr-x. 2 tony tony4 6 8月  15 20:30 1

a/b/c/1:
-------------------------------------------------

[root@localhost ~]# grep 'tony*' /etc/passwd; grep 'tony*' /etc/group
tony4:x:1003:1003::/home/tony4:/bin/bash
tony1:x:1004:1004::/home/tony1:/bin/bash
tony2:x:1005:1005::/home/tony2:/bin/bash
tony:x:8894:8896::/home/tony:/bin/bash
tony4:x:1003:
tony1:x:1004:
tony2:x:1005:
hr:x:8894:tom,jack,tony
tony:x:8896:

[root@localhost ~]# chown tony1.tony4 ./ailin.txt ;l ailin.txt 【修改用户名和附属组】
-rw-r--r--. 1 tony1 tony4 35 8月  16 10:00 ailin.txt
[root@localhost ~]# chown tony ailin.txt ;ll ailin.txt 【修改用户名(文件拥有者)】
-rw-r--r--. 1 tony tony4 35 8月  16 10:00 ailin.txt
[root@localhost ~]# chown .tony ailin.txt ; ll ailin.txt 【修改附加组】
-rw-r--r--. 1 tony tony 35 8月  16 10:00 ailin.txt
chmod:为文件或目录设置访问权限

---------------------------------
[root@localhost ~]# #直接赋予权限= ;【+/-】,数字赋予;同时增加/减少权限【a可省略】
[root@localhost ~]# chmod 776 ailin.txt;【数字直接赋予权限】
[root@localhost ~]# chmod a-r ailin.txt ;ll ailin.txt 【给所有人同时削减权限】
--wx-wx-w-. 1 tony tony 35 8月  16 10:00 ailin.txt
[root@localhost ~]# chmod +r ailin.txt ;ll ailin.txt 【给所有人同时添加权限,a可以省略】
-rwxrwxrw-. 1 tony tony 35 8月  16 10:00 ailin.txt
[root@localhost ~]# chmod u=wr, o=r ailin.txt ; ll ailin.txt 【并列权限之间不可加空格】
chmod: 无效模式:"u=wr,"
-rwxrwxrw-. 1 tony tony 35 8月  16 10:00 ailin.txt
[root@localhost ~]# chmod u=wr,o=r ailin.txt ; ll ailin.txt  【用等号直接赋予权限】
-rw-rwxr--. 1 tony tony 35 8月  16 10:00 ailin.txt
[root@localhost ~]# chmod u+x,g-w ailin.txt ;ll ailin.txt 【通过+/-在原有权限上调整】
-rwxr-xr--. 1 tony tony 35 8月  16 10:00 ailin.txt
[root@localhost ~]# chmod u=rw,g-x ailin.txt; ll ailin.txt ;【赋予和调整混合】
-rw-r--r--. 1 tony tony 35 8月  16 10:00 ailin.txt
 

38.rwx权限对普通文件和目录文件的影响
对普通文件对目录文件
r用户是否可以使用cat\grep...这一类命令查看文件的内容。用户是否可以使用ls查看目录内文件的属性信息。最好同时拥有该文件的x权限,否则会提示:权限不足(是因为没有x权限)。
w用户是否可以在文件内写入内容。验证方式最好使用echo+重定向的方式。用户是否可以在目录内创建、删除、修改文件(修改的是文件属性); 但是,如果没有该目录的X权限,则无法进行创建、删除、修改文件。w-X【前提】
x用户是否可以针对文件内的每一行内容,进行命令的执行。但是,如果用户没有该文件的r权限,是不能执行的 x-R【前提】用户是否可以切换(进入)到这个目录内。

对目录有w权限,可以在目录中创建新文件,可以删除目录中的文件(跟文件权限无关)
注意事项
文件: x 权限小心给予
目录: w 权限小心给予

39.su【使用逻辑错误,不可在使用切换用户后,分号后执行其他语句会不起效果。】

su切换用户后,不会继续执行接下来的命令,系统无法确认是root还是切换后的用户执行命令,会提醒权限不够,【逻辑错误】

40sudo提权

visudo 文档中92Go【进入92行并将光标移到下行】 输入需要提权的用户【tony 】主机【ALL=(ALL)】需要提权命令的路径【/usr/bin/touch】(which 进行查找命令)

普通用户提升权限前需要输入密码,所以预先设置密码 passwd tony

然后提权临时获得root权限【此时文件拥有者仍然是root】;切换到tony用户后执行命令 sudo touch -v /D/E/F/1.txt;

此外创建目录时,必须要esc登出当前普通用户不能 su - 否则此root非彼root

上一次登录:四 8月 17 10:05:01 CST 2023pts/0 上

[tony@localhost ~]$ sudo touch ./D/E/F/1.txt touch:

无法创建"./D/E/F/1.txt": 没有那个文件或目录

[tony@localhost ~]$ 登出

[root@localhost ~]# 登出

[tony@localhost ~]$ 登出

[root@localhost ~]# exit

[tony@localhost ~]$ 登出

41文件和目录掩码

针对cnetOS中root 用户或者其他用户权限的初始最高权限

权限掩码的计算不得使用加减法

root用户的默认掩码022普通用户002

初始最高权限:rwx __rwx ___rwx

掩码:--- -w- -w-

有的话被消除:rwx r-x r-x 【钢琴大师,数学加减算法,但逻辑上不能这么讲】

目录文件
root初始最高权限777666
root掩码022755644
其他用户初始最高权限777666
其他用户掩码002775664

查看掩码

[tony@localhost ~]$ umask 0002 [tony@localhost ~]$ 登出【ctrl+d;exit;logout三种方式切换到root用户】 [root@localhost ~]# umask 0022

42.创建文件三种方式

创建文件三种方式【touch, echo[输出正确指令]重定向到目录,vim 文件名保存】

echo 1 >11.txt 2>22.txt;ll . 【结果是11.txt;22.txt.只要能输出,经过两次重定向,会创建两个目录,正确内容存到11.txt中;没有错误内容。】

实现换行的两种方式:

【转义-e】echo -e "1\n22" >1.txt; cat 1.txt;

【锚点 EOF(可替换其他字符)】

(交互式命令vim,中途操作停下无法继续执行,无法进行自动化操作命令。

43.EOF使用场景:

1.不用保存到路径中
[root@localhost ~]# cat <<tony
> EOF可以替换为tony,仅作为锚点。
> tony
EOF可以替换为tony,仅作为锚点。
2.保存到指定路径中【内容不会被输出在页面】,创建脚本
比如把两条命令重定向到1.txt中;[ls /  ;cat 1.txt]
[root@localhost ~]# cat >1.txt <<EOF
> ls /
> cat 1.txt
> EOF
[root@localhost ~]# cat 1.txt
ls /
cat 1.txt
[root@localhost ~]# chmod  +x 1.txt;【给文件执行权限或其他人权限 o+x】
[root@localhost ~]# 1.txt【需要完整的相对路径或绝对路径】
-bash: 1.txt: 未找到命令
[root@localhost ~]# ./1.txt
A    boot  disk1  etc   lib    media  opt   QF    run   srv  tmp  var
bin  dev   duck   home  lib64  mnt    proc  root  sbin  sys  usr  yunwei
ls /
cat 1.txt
 

43重定向

echo $? 判断上述指令是否成功,成功返回0否则返回非0.
标准输入、标准正确输出、标准错误输出
process代表进程。下载的资料磁盘【磁盘的io速率较低1G/s】---内存[100G/s] ---CPU运算;不跨越调用原因,内存具有的效果缓存,缓冲。
内存:凡是从磁盘中,放到内存中就是程序转化为进程的过程。
进程在运行的过程中根据需要会打开多个文件,每打开一个文件会有一个数字标识。这个标识叫文件描述符。
进程使用文件描述符来管理打开的文件(FD----file descriptors).
文件描述符:每打开一个程序都会有文件描述
0,标准输入(键盘)
1,标准输出
2,标准错误,
3+,进程在执行过程中打开的其他文件。  
&:表示正确错误混合输出

[root@qfedu.com ~]# date >> date.txt #正确输出--追加

echo 1  2> 1.txt :错误输出 不会放到1.txt ,会原文输出到屏幕上;
ll /  /abcde >1.txt  2>no.txt;[分流]目录下文件存到1.txt; /abcde没有这个目录错误输出存到no.txt
ll /  /abcde &>1.txt ;[合流]正确错误混合存到1.txt;
/dev/null [黑洞文件:空设备文件,屏幕和cat查找不到]
混合输出时,&和>之间不可以用空格。l
[root@localhost ~]# ls /home ddd> /dev/null
ls: 无法访问ddd: 没有那个文件或目录
正确输入时:正确保存到黑洞文件,不正确在页面提示
[root@localhost ~]# ls /home ddd &> /dev/null
混合输出是正确错误都保存到空设备文件

44.管道

复习主组和附属组;

主组【用户】附属组

文件组【方便权限控制,灵活设置文件权限的范围】 创建者 附属组:让工作中有需求的人获得权限;主组与附属组对文件的权限是相同的都具有G【组】权限。

alan G QF -g[多个] 附属组qf,wc

alan 创建的文件,alan是拥有者; 这个文件的属组默认是该用户的主组【】

查漏补缺:相同点,联系,学习的本质不是背,培养思路

将命令1的命令结果,通过管道符传输给管道符右侧的命令的【结尾】作为【参数】使用;
ls查看的是文件名【文字信息】
当查看文件ls或删除文件时需要用到扩展参数xargs[扩展参数]
移动文件 -i {}在哪里,参数传递到哪里。
用法:command1 | command2 |command3 |...
[root@localhost ~]# mkdir cc{1..4};
[root@localhost ~]# vim test0
cc1
cc2
cc3
cc4
【test0 文件内容必须换行单条命令依次执行;如果卸载一行无法当作命令来执行】            
[root@localhost ~]# cat test0 |xargs -i mv {} /opt
[root@localhost ~]# ls /opt
cc1  cc2  cc3  cc4

45参数args

 

语法:
 cat a.txt | xargs  -i cp {} /目录  
 {}:前面传过来的内容[传递的目录或普通文件(必须时已经创建出来的文件)]
 -i :为了让大括号生效
 目录时  -r
 解释:前面传过来的东西交给大括号
 
 cat file.txt |xargs ls -l          
 前面是目录或者目录的路径。  ls - l  后面可以不加大括号,直接执行。

46sort

[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd  #以: 分隔,将第三列按字数升序
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd -r #以: 分隔,将第三列按字数降序
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd |head #以: 分隔,将第三列按字数升序看前十行
[root@qfedu.com ~]# sort -t":" -k3 -n /etc/passwd |tail #以: 分隔,将第三列按字数升序看后十行
参数详解:
sort 排序,默认升序
-t 指定分隔符
-k 指定列
-n 按数值[第一列不是数字,]
-r 降序reverse
-u 去重unique
-o : output 将排序结果输出到源文件
sort -r number.txt > number.txt
head 默认输出前十行
tail 默认输出后十行
查看文件内容命令:cat vim  stat head tail less more ln tac sort

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_45442261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值