ubuntu,day 2 ,退出当前用户,创建用户,查找,su,sudo,管道符,grep,alias,mount,tar解压

本节内容:

  1,文件权限的控制,chmod,chown

  2,用户的增删和所属组,useradd,userdel

  3,用户组的增删,groupadd,groupdel

  4,su,sudo的介绍

  5,别名的使用,alias

  6,管道符|,重定向

  7,comtab,计划任务

  8,locat,find查找的使用

  9,df,显示所有空间的使用情况

  10,mount硬盘的挂载和卸载

  11,tar解压

  12,grep正则表达

1,文件权限,chmod,chown

r:可读——4

w:可写—–2

x:可执行—1,普通文件可以直接通过./来执行

-:代表没有权限

chmod o+w filename

chmod g+w filename

chmod u+w filename

chmod u=rwx filename

#  其中:
#  u 代表所有者(user)
#  g 代表所有者所在的组群(group)
#  o 代表其他人,但不是u和g (other)
#  a 代表全部的人,也就是包括u,g和o
 

 2,useradd添加用户,usermod改变用户的信息

# -c 备注 加上备注。并会将此备注文字加在/etc/passwd中的第5项字段中         
#  -d 用户主文件夹。指定用户登录所进入的目录,并赋予用户对该目录的的完全控制权        
#  -e 有效期限。指定帐号的有效期限。格式为YYYY-MM-DD,将存储在/etc/shadow         
#  -f 缓冲天数。限定密码过期后多少天,将该用户帐号停用       
#  -g 主要组。设置用户所属的主要组  www.cit.cn           
#  -G 次要组。设置用户所属的次要组,可设置多组         
# -M 强制不创建用户主文件夹         
#  -m 强制建立用户主文件夹,并将/etc/skel/当中的文件复制到用户的根目录下         
#  -p 密码。输入该帐号的密码         
#  -s shell。用户登录所使用的shell         
#  -u uid。指定帐号的标志符user id,简称uid

useradd user1 # 添加用户 user1
useradd  -d /home/userTT user2 
sudo mkdir user1 # 在/home目录下新建用户文件目录
sudo chown user1:user1 user1 # 改变目录的所有者和组的权限
cp /etc/skel/.bash* /home/user1  # 将目录下.bash开始的文件复制到家目录
source /home/user1/.bash* # 可以使家目录下的环境变量生效

  userdel删除用户

userdel  user1  #
userdel -r user1

#  -r, --remove   用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
#    -f, --force    此选项强制删除用户账户,甚至用户仍然在登录状态。它也强制删除用户的主目录和邮箱,即使其它用户也使用同一个主目录或邮箱不属于指定的用户

  usermod用法:

chmod o+w  file1
chmod g-w file1
chmod go-w file1
chmod u=rwx file1

chmod 755  file1  # -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
chmod 644  #  -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限

#  其中:
#  u 代表所有者(user)
#  g 代表所有者所在的组群(group)
#  o 代表其他人,但不是u和g (other)
#  a 代表全部的人,也就是包括u,g和o

3,groupadd,groupdel,chown

groupadd group  # 添加用户组
groupadd -u 1000 group1 #指定gid的用户组

  groupdel  # 删除组

groupdel group  # 删除组

  chown  # 改变文件的所属组所有者

chown root:root  file
chown root   file  
chown :root   file

4,su与 sudo

su  : 切换用户,没有参数时,默认切换为root用户;

su   # 切换为root

## 推荐
su -   # 切换为root 并加载root的环境配置
su -  user1 # 切换为user1 并加载user1的环境配置

  sudo让当前用户暂时以管理员的身份root来执行命令。

sudo的配置文件:/etc/sudoers;可以通过修改它配置sudo命令

5,alias : 给命令起别名

alias  ll=\'ls -l\'  
alias la=\'ls -a\'

 关于各个文件的作用域,在网上找到了以下说明:
(1) /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
(2) /etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取(即每次新开一个终端,都会执行bashrc)。
(3) ~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件。
(4) ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
(5) ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是”父子”关系。(6) ~/.bash_profile: 也可能是 .profile  是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。 

6,管道符,重定向,标准输出

管道符 就是 |  :他的作用是 将前一个命令的结果 交给后一个命令使用

 

>ww.txt  # 文件ww.txt会变为空的

>   重定向,则覆盖文件内容,没有该文件就创建(需要有创建的权限)

>> 重定向,则向文件追加内容,没有该文件就创建(需要有创建的权限)

 

1>  标准正确输出,则覆盖文件内容,没有该文件就创建(需要有创建的权限)

1>> 标准正确输出,则向文件追加内容,没有该文件就创建(需要有创建的权限)

2> 标准错误输出,则覆盖文件内容,没有该文件就创建(需要有创建的权限)

2>> 标准错误输出,则向文件追加内容,没有该文件就创建(需要有创建的权限)

&> 标准正确输出和标准错误输出,文件中保存了写入的东西,报错信息也会出现在文件中,没有该文件就创建(需要有创建的权限)

 7,crontab,计划任务

crontab -e # 修改计划配置* * * * * command to be executed

-  -   -  -  -  -
|  |   |  |   |   |
|  |   |  |   |   --- 预执行的命令
|  |   |  |   ----- 表示星期0~7(其中星期天可以用0或7表示)
|  |   |   ------- 表示月份1~12
|  |    --------- 表示日期1~31
|   ----------- 表示小时1~23(0表示0点)
------------- 表示分钟1~59 每分钟用*或者 */1表示
---------- 表示小时1~23(0表示0点)

1,crontab -e 进行编辑操作,选择是用vim,下次不需要选择,自动默认vim,在最下边加入:
*/1**** /bin/bash /tmp/cron.sh
# /bin/bash 指定运行的路径
# cron.sh是自定义的一个文件内容下方
date >> /tmp/date.txt # 这样是防止配置文件中字符超过60个会执行错误
2,crontab -l 显示当前客户的crontab内容

8,locate,find查询命令

locate /etc/sh  # 所有包含/etc/sh路径的文件
locate -i ~/a # 所有主目录下所有以开头的文件,忽略大小写
因为是本地更新,据说是每天凌晨的4点进行更新
可以使用sudo updatedb更新数据库来实现更新

find

使用方法: 
find   path   -option   [-print ]   [ -exec  -ok  command ]  {} \;

######  根据文件名查找 #######
find / -name filename 再根目录里面搜索文件名为filename的文件
find /home -name "*.txt"
find /home -iname "*.txt"  # 忽略大小写


######  根据文件类型查找 #######
find /home/wuzhenhu/Desktop/ . -type 类型参数,有点的时候是可以查找到隐藏文件,没有点的时候不能查到隐藏文件
f 普通文件
l 符号连接 
d 目录 
c 字符设备 
b 块设备 
s 套接字 
p Fifo


######  根据目录深度查找 #######
find . -maxdepth 3 -type f  # 最大深度为3
find . -mindepth 2 -type f  # 最小深度为2

-o:逻辑或,两个条件只要满足一个即可。
-a:逻辑与,两个条件必须同时满足。

find  /etc -size +2M -a -size -10M
+代表大于,-代表小于 ######### 对查找结果进行处理 ############# -exec shell命令 {} \; -ok shell命令 {} \; 其中-exec就是代表要执行shell命令,后面加的是shell指令,再后面的“{}”表示的是要对前面查询到的结果进行查询,最后的“\;”表示命令结束。需要注意的是“{}”和“\”之间是要有空格的。
而-ok选项与-exec的唯一区别就是它在执行shell命令的时候会事先进行询问,-print选项是将结果显示在标准输入上 find /home -name “*.txt” -ok ls -l {} \; find /home -name “*.txt” -ok rm {} \; 

9,df显示所有空间的使用

df -Th  # 
h以能显示的最大单位显示
T:显示文件系统类型

10,mount/mount3挂载和卸载设备

mount # 查询挂在设备及属性

# 挂载光盘
mount /dev/sr0 /mnt  

# 重新挂载设备
mount -o remount,rw /mnt  # 重新挂载设备并设置rw属性

# 挂载iso文件
mount  a.iso -o loop /mnt 
umount /mnt # 卸载设备 umount -l /mnt # 强制卸载

 11,tar解压,压缩命令

-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意  c/x/t 同时仅能存在一个,因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接文件名
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!


# 将当前目录下所有.txt文件打包并压缩归档到文件this.tar.gz
tar czvf this.tar.gz ./*.txt 
# 将当前目录下的this.tar.gz中的文件解压到当前目录
tar xzvf this.tar.gz ./


# 将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
tar -cvf /tmp/etc.tar /etc  # 仅打包,不压缩!
tar -zcvf /tmp/etc.tar.gz /etc  # 打包后,以 gzip 压缩
tar -jcvf /tmp/etc.tar.bz2 /etc  # 打包后,以 bzip2 压缩

# 解压文件
tar -xf  a.tar.gz   # 
tar -xf  a.tar.gz  -C /tmp  # 指定解包路径

12,grep匹配正则表达式

正则表达式:

初识正则表达式
^ : 匹配开头
$ : 匹配结尾
[] : 范围匹配
[a-z] : 匹配有小写字母
[A-Z] : 匹配所有大写字母
[0-9] : 匹配所有数字
. : 匹配单个字符
* : 表示*前面的内容出现0次或多次
+ : 表示+前面的内容出现1次或多次
? : 表示?前面的内容出现0次或1次

cat a.txt |grep hat$ # 匹配以hat结尾的行
cat a.txt |grep ^hat # 匹配以hat开头的行
cat a.txt | grep -E "[0-9]*"  # 匹配有0到多个数字的行
cat a.txt | grep -E "[0-9]+"  # 匹配有至少有1个数字的行
cat a.txt | grep -E "[0-9]?"  # 匹配有0到1个数字的行

版权声明:本文为wuzhenhu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wuzhenhu/p/8085732.html