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
- 账号管理
- 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 ...
随机推荐
- day38--MySQL基础二
1.数据库连表 1.1, 一对多 使用外键做约束.注意:外键列的数据类型要一致. 命令的方式创建外键CREATE table part1( nid int not null auto_incremen ...
- 【正则】对RegExp执行typeof运算的结果
对RegExp执行typeof运算的结果并不统一,在有些浏览器中返回“function”,在有些中返回“object”. 谷歌: 火狐 IE: **
- IOS开发---菜鸟学习之路--(二十四)-iOS7View被导航栏遮挡问题的解决
(此文为复制帖,原文地址为:http://blog.sina.com.cn/s/blog_a8192bdd0101af40.html) self.navigationController.naviga ...
- web访问流程
客户端发送请求—->httpd得到请求—->httpd解析请求的格式(html,css,jsp)—->请求相应的PHP解析—->PHP解析程序执行完毕—–>db(数据库) ...
- schema.xml属性概念
# schema 定义逻辑库 checkSQLschema 当该值设置为 true 时,如果我们执行语句**select * from TESTDB.travelrecord;**则 MyCat 会 ...
- Mybatis通过接口实现一对一及一对多的查询
实现一对一是采用association方法: <resultMap type="testId" id="users"> <associatio ...
- BZOJ 1036: [ZJOI2008]树的统计Count(树链剖分)
树的统计CountDescription一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改 ...
- Mail.Ru Cup 2018 Round 2 Problem C Lucky Days
设在第 $x$ 天二人都 lucky,则有 $\DeclareMathOperator{\lcm}{lcm}$ $ x = y_a t_a + R_a $ $ x= y_b t_ b + R_b$ 约 ...
- 本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop、Storm以及Spark。
本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop.Storm以及Spark. 当前的高性能PC机.中型机等机器在处理海量数据时,其计算能力.内存容量等指标都远远无法达到要求.在大数 ...
- RTSP会话基本流程
RTSP会话基本流程 RTSP交互流程: C表示RTSP客户端,S表示RTSP服务端 ① C->S: OPTION request //询问S有哪些方法可用 S->C: OPTION re ...