Linux基础学习3
- [root@www ~]# read [-pt] variable
- 选项不参数:
- -p :后面可以接提示字符!
- -t :后面可以接等待的秒数!
- 范例:提示使用者15 秒内输入自己的大名,将输入的字符串作为named的变量内容
- zhenxiang@ubuntu:~$ read -p 'please keyin your name:' -t named
- please keyin your name:zhenxiang
- zhenxiang@ubuntu:~$ echo $named
- zhenxiang
- zhenxiang@ubuntu:~$ echo $path
- /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo ${path#*lig*}
- htdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo ${path#*dm:}
- /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- #和##比较:
zhenxiang@ubuntu:~$ echo $path- /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo ${path##/*:}
- /usr/games
- zhenxiang@ubuntu:~$ echo ${path#/*:}
- /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo $path
- /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo ${path%:*}
- /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- %和%%比较:
zhenxiang@ubuntu:~$ echo $path- /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo ${path%:*}
- /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- zhenxiang@ubuntu:~$ echo ${path%%:*}
- /usr/lib/lightdm/lightdm
- 两种比较范例:
zhenxiang@ubuntu:~$ echo $path- /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo ${path/lightdm/mm}
- /usr/lib/mm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo ${path//lightdm/mm}
- /usr/lib/mm/mm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- 两种范例比较
- zhenxiang@ubuntu:~$ echo $path
- /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo ${path/*lightdm/mm}
- mm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- zhenxiang@ubuntu:~$ echo ${path#*lightdm}
- /lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
总结:对变量的修改格式:${变量|操作符|匹配字符};其中“|”是没有的;操作符有:匹配最少字符的 从左到右删除"#",从右到左删除"%",和匹配最多字符的 "##“ ”%%“ ;和只替换一个的 ”/“ 全部替换的 "//"
- 范例一:找出 /etc/ 底下以 cron 为开头的档名
- [root@www ~]# ll -d /etc/cron* <==加上 -d 是为了仅显示目录而已
- 范例二:找出 /etc/ 底下文件名『刚好是五个字母』的文件名
- [root@www ~]# ll -d /etc/????? <==由于 ? 一定有一个,所以五个 ? 就对了
- 范例三:找出 /etc/ 底下文件名中有数字的文件名
- [root@www ~]# ll -d /etc/*[0-9]* <==记得中括号左右两边均需 *
- 范例四:找出 /etc/ 底下,档名开头非为小写字母的文件名:
- [root@www ~]# ll -d /etc/[^a-z]* <==注意中括号左边没有 *
- 范例五:将范例四找到的档案复制到 /tmp 中
- [root@www ~]# cp -a /etc/[^a-z]* /tmp
- 范例一:用 cat 指令来建立一个档案的简单流程
- [root@www ~]# cat > catfile
- testing
- cat file test
- <==这里按下 [ctrl]+d 来离开
- [root@www ~]# cat catfile
- testing
- cat file test
- 范例二:用 stdin 来代键盘的输入以建立新档案的简单流程
- [root@www ~]# cat > catfile < ~/.bashrc
- [root@www ~]# ll catfile ~/.bashrc
- -rw-r--r-- root root Sep : /root/.bashrc
- -rw-r--r-- root root Feb : catfile
- # 注意看,这两个档案的大小会一模一样!几乎像是使用 cp 来复制一般!
> This is a test.
> OK now stop
> eof <==输入这关键词,立刻就结束而不需要输入 [ctrl]+d
[root@www ~]# cat catfile
This is a test.
选项与参数:
- 范例:
- [root@localhost ~]# who | tee who.out
- root pts/ -- : (123.123.123.123)
- [root@localhost ~]# cat who.out
- root pts/ -- : (123.123.123.123)
- [root@www ~]# head -n /etc/passwd
- root:x:::root:/root:/bin/bash <==等一下做为底下说明用
- bin:x:::bin:/bin:/sbin/nologin
- daemon:x:::daemon:/sbin:/sbin/nologin
- adm:x:::adm:/var/adm:/sbin/nologin
- [root@www ~]# head -n /etc/shadow
- root:$$/30QpE5e$y9N/D0bh6rAACBEz.hqo00::::::: <==底下说明用
- bin:*:::::::
- daemon:*:::::::
- adm:*:::::::
- 范例一:建立一个名为 agetest的账号,该账号第一次登入后使用默认密码,
- 但必须要更改过密码后,使用新密码才能够登入系统使用 bash 环境
- [root@www ~]# useradd agetest
- [root@www ~]# echo "" | passwd --stdin agetest
- [root@www ~]# chage -d agetest
- # 此时此账号的密码建立时间会被改为 // ,所以会有问题!
- 范例二:尝试以 agetest 登入的情况
- You are required to change your password immediately (root enforced)
- WARNING: Your password has expired.
- You must change your password now and login again!
- Changing password for user agetest.
- Changing password for agetest
- (current) UNIX password: <==这个账号被强制要求必须要改密码!
问题:
要使用户登陆,则立刻需要更改密码;用到密码过期系统强行要求更改密码;这样自然想到更改第5个字段,密码需要重新变更的天数到了天数就会过期,那么为什么将第五字段设置为与第三字段一样,达不到立即失效的效果呢?
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
[dmtsai@www ~]$ groups
- [root@www ~]# useradd -u -g users vbird2
- [root@www ~]# ll -d /home/vbird2
- drwx------ vbird2 users Feb : /home/vbird2
- [root@www ~]# grep vbird2 /etc/passwd /etc/shadow /etc/group
- /etc/passwd:vbird2:x::::/home/vbird2:/bin/bash
- /etc/shadow:vbird2:!!:::::::
[root@www ~]# useradd -r vbird3
/etc/passwd:vbird3:x:100:103::/home/vbird3:/bin/bash
- 范例三:使用 standard input 建立用户的密码
- [root@www ~]# echo "abc543CC" | passwd --stdin vbird2
- Changing password for user vbird2.
- passwd: all authentication tokens updated successfully.
[root@www ~]# useradd agetest
[root@www ~]# echo "agetest" | passwd --stdin agetest
WARNING: Your password has expired.
You must change your password now and login again!
[root@www ~]# finger vbird1
Login: vbird1 Name: (null)
Directory: /home/vbird1 Shell: /bin/bash
Never logged in.
No mail.
[root@www ~]# groupadd group1
[root@www ~]# grep group1 /etc/group /etc/gshadow
/etc/group:group1:x:702:
- 范例一:将刚刚上个指令建立的 group1 名称改为 mygroup,GID 为
- [root@www ~]# groupmod -g -n mygroup group1
- [root@www ~]# grep mygroup /etc/group /etc/gshadow
- /etc/group:mygroup:x::
- /etc/gshadow:mygroup:!::
[root@www ~]# gpasswd [-A user1,...] [-M user3,...] groupname
[root@www ~]# ll acl_test1
-rw-r--r-- 1 root root 0 Feb 27 13:28 acl_test1
[root@www ~]# setfacl -m u:vbird1:rx acl_test1
[root@www ~]# ll acl_test1
- 使用chown命令可以修改文件或目录所属的用户:
命令:chown 用户 目录或文件名
例如:chown qq /home/qq (把home目录下的qq目录的拥有者改为qq用户)
使用chgrp命令可以修改文件或目录所属的组:
命令:chgrp 组 目录或文件名
例如:chgrp qq /home/qq (把home目录下的qq目录的所属组改为qq组)
chown 还可以将所属群组和所属用户一起改了
chown newuser:newgroup /home/qq
- read:读取键盘输入
- read -p 'please keyin your name:' -t 15 named
- ulimit
- user limit 限制用户的某些系统资源,可开启的档案数,使用CPU的时间,使用内存的总量
- 变量内容的删除
- #:从左往右删除第一个匹配;且是删除符合条件的最短的那一个;
- echo ${path#*lig*}
- ##:从左往右删除第一个匹配;且是删除符合条件的最长的哪一个
- %:从右往左删除第一个匹配,且是删除符合条件的最短的哪一个
- %%:从右 往左 删除第一个匹配;且是删除符合条件的最长的哪一个
- #:从左往右删除第一个匹配;且是删除符合条件的最短的那一个;
- 变量内容的替换
- ${变量/旧字符串/新字符串}: 若变量内容符合『旧字符串』则『第一个旧字符串会被新字符串取代』
- ${变量//旧字符串/新字符串}: 若发量内容符合『旧字符串』则『全部的旧字符串会被新字符串取代』
- #和/匹配区别
- #删除第一个匹配的,且删除最短的那个;
- /替换第一个匹配的,且匹配最长的那个;
- history
- -c ,清楚当前history全部内容
- !command 执行history最近的指令。
- !number 执行第number行的history指令。
- 通配符
- * 代表0个到无穷多个任意字符
- ? 代表一定有一个任意字符
- [] 代表一定有一个在括号内的字符
- [-]代表在编码顺序内的所有字符,如[0-9]代表0-9之间的所有数字
- [^]表示反向选择,[^abc],一定有一个非abc的字符
- 除* - 以外,都是针对一个字符来说的。
- 数据重定向覆盖于累加分别是
- > 覆盖,>> 累加
- 2>;2>> 错误数据的重定向覆盖与累加
- << 结束的输入字符
- 常用命令
- cut
- cut -d '分隔字符' -f field ====用于有特定分隔字符
- grep
- grep [-acinv] [--color=auto] '搜寻字符串' filename
- tee 双向重导向,同时将数据流分送到档案与屏幕
- who | tee who.out
- cut
- /etc/passwd档案结构
- 账号名:密码:UID:GID:说明:家目录:shell
- root:x:0:0:root:/root:/bin/bash
- /etc/shadow档案结构
- 账户名称:密码:最近更改密码时间:密码不可变动时间:密码需要重新变动时间:密码需要变更期限前警告天数:密码过期后的账号宽限时间(密码失效日):账号失效日期:保留
- root:$1$/30QpE5e$y9N/D0bh6rAACBEz.hqo00:14126:0:99999:7:::
- 创建一个账户,设置初始密码000,当用户登录时,强制更改密码、
- useradd agetest;echo "000000" | passwd --stdin agetest
- chage -d 0 agetest;#此时此账号的密码建立时间会被改为 1970/1/1 ,所以会有问题!
- /etc/group档案结构
- 组名:群组密码:GID:此群组支持的账号名称
- bin:x:1:root,bin,daemon
- 有效群组与初始群组
- 初始群组,就是/etc/passwd第四字段GID;当用户登录之后就会获得初始群组的相关权限。
- 而如果需要切换成其他群组,获得其他群组的权限时。需切换;
- 例子:
- [dmtsai@www ~]$ groups
- dmtsai users
- #第一个便是有效群组
- [dmtsai@www ~]$ newgrp users
- [dmtsai@www ~]$ groups
- users dmtsai
- [dmtsai@www ~]$ groups
- 账号管理
- useradd
- useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名
- useradd默认配置文件/etc/default/useradd
- userdel
- passwd
- echo "abc543CC" | passwd --stdin vbird2
- groupadd
- groupdel
- gpasswd 群组管理员功能
- root动作
- gpasswd groupname 给群组一个密码
- gpasswd -A user 任命群管理员
- gpasswd -M user1,user2 将某些账号加入群组
- gpasswd -r groupname 将群组密码移除
- gpasswd -R groupname 将群组密码失效
- 群管理员动作
- gpasswd [-ad] user groupname 增加/移除群组成员
- root动作
- chown、chgrp
- chown newuser:newgrop /home/qq 同时更改属主和群组
- useradd
Linux基础学习3的更多相关文章
- linux基础学习之软件安装以及常用命令
linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...
- Linux基础学习系列目录导航
Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...
- linux基础学习路线&review
linux基础学习网址: https://www.runoob.com/linux/linux-tutorial.html 比较重点的是这个启动过程的介绍学习:https://www.runoob.c ...
- Linux 基础学习1
目录 Linux 基础学习 用户登录 终端 交互式接口 bash 修改ssh连接慢的步骤 命令提示符 显示提示符格式 命令 别名 命令格式 获取命令的帮助信息 man bash 快捷键 tab 键 引 ...
- Linux 基础学习2
目录 Linux 基础学习2 文件目录结构 文件命名规范 文件系统结构 linux应用程序的组成 绝对路径和相对路径 目录名和基名 切换目录 切换到家目录 切换到上一次的目录 显示当前的工作目录 列出 ...
- Linux基础学习(全)
使用的Linux发行版本为Redhat 1.Linux(RedHat)基础学习-命令行使用入门 2.Linux(RedHat)基础学习-文件寻址与管理 3.Linux(RadHat)基础学习-vim编 ...
- Linux基础学习(1)--Linux系统简介
第一章——Linux系统简介 1.UNIX和Linux发展史: 1.1 unix发展史: (1)1965年,美国麻省理工学院(MIT).通用电气公司(GE)及AT&T的贝尔实验室联合开发Mul ...
- Linux 基础学习(第二节)
free命令用于显示当前系统中内存的使用量信息,格式为:“free [-h]”. 为了保证Linux系统不会突然卡住宕机,因此内存使用量应该是运维人员时刻要关注的数据啦,咱们可以使用-h参数来以更人性 ...
- Linux基础学习(二)
前言: 我们在上一节了解了一下linux的硬件组成,虽然也许对具体的东西还不甚了解,但是我们知道了linux下一切皆文件这一特性 我们装好了CentOS7的虚拟机(这个可以看别人教程来装起来,比较简单 ...
- Linux基础学习(一)
前言:这个学习笔记是为了督促自己能够更好的学习Linux的有关知识. 参考书目 鸟哥的linux私房菜 Chapter 1:入门建议 新手建议:重点 基础一定一定要学好 那么什么是基础呢? 先从Lin ...
随机推荐
- Python接口测试之封装requests
首先安装requests库: pip install requests test_requests.py 首先在TestRequest类中封装get与post方法, import requests i ...
- Careercup - Microsoft面试题 - 5188169901277184
2014-05-12 06:12 题目链接 原题: Write a function to retrieve the number of a occurrences of a substring(ev ...
- Couchbase I
Couchbase第一印象(架构特性) 面向文档 保存的字节流总有一个 DOCUMENT ID(Object_ID) 高并发性,高灵活性,高拓展性,容错性好 面向文档的集群存储系统 每个文档用一个唯一 ...
- 微服务学习笔记——Spring Boot特性
1. 创建独立的Spring应用程序 2. 嵌入的Tomcat,无需部署WAR文件 3. 简化Maven配置 4. 自动配置Spring 5. 提供生产就绪型功能,如指标,健康检查和外部配置 6. 开 ...
- day05_07 标志位讲解
continue: 需求:大于5才打印 for i in range(10): if i<6 : continue print(i) continue作用:结束本次循环,继续下次循环 break ...
- dib build ipa image Injection password
针对dib制作的deploy image,注入密码有两种方式: devuser/dynamic-login .对应 dib 添加密码,是通过 dynamic-login element 来完成的. 首 ...
- 04 JVM是如何执行方法调用的(上)
重载和重写 重载:同一个类中定义名字相同的方法,但是参数类型或者参数个数必须不同. 重载的方法在编译过程中就可完成识别.具体到每一个方法的调用,Java 编译器会根据所传入参数的生命类型来选取重载方法 ...
- python re 模块小结
前言: 本人环境windows 7 64位,python2.7 re是什么: regular expression缩写,意为正则表达式,是python的众多模块之一 re用途: 从文本中有选择的批量抽 ...
- 在windows64位上安装Python3.0
1.下载安装包 下载地址:https://www.python.org/downloads/ 如果要下载帮助文件:Download Windows help file 如果要下载基于网页的安装程序: ...
- [openjudge6043]哆啦A梦的时光机
[openjudge6043]哆啦A梦的时光机 试题描述 哆啦A梦有一个神奇的道具:时光机.坐着它,大雄和他的伙伴们能穿越时空,回到过去或者去到未来. 有一天,大雄和他的伙伴们想穿越时空进行探险,可是 ...