linux 常用命令

read -p 换行

read可以读取键盘输入的字符,并赋值给指定的变量。
语法规则:
read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [var_name1 var_name2 ...]
read命令用于从标准输入中读取输入单行,并将读取的单行根据IFS变量分裂成多个字段,并将分割后的字段分别赋值给指定的变量列表var_name。第一个字段分配给第一个变量var_name1,第二个字段分配给第二个变量var_name2,依次到结束。如果指定的变量名少于字段数量,则多出的字段数量也同样分配给最后一个var_name,如果指定的变量命令多于字段数量,则多出的变量赋值为空。

如果没有指定任何var_name,则分割后的所有字段都存储在特定变量REPLY中。
具体选项含义:

选项说明:
-a:将分裂后的字段依次存储到指定的数组中,存储的起始位置从数组的index=0开始。
-d:指定读取行的结束符号。默认结束符号为换行符。
-n:限制读取N个字符就自动结束读取,如果没有读满N个字符就按下回车或遇到换行符,则也会结束读取。
-N:严格要求读满N个字符才自动结束读取,即使中途按下了回车或遇到了换行符也不结束。其中换行符或回车算一个字符。
-p:给出提示符。默认不支持"\n"换行,要换行需要特殊处理,见下文示例。例如,"-p 请输入密码:"
-r:禁止反斜线的转义功能。这意味着"\"会变成文本的一部分。
-s:静默模式。输入的内容不会回显在屏幕上。
-t:给出超时时间,在达到超时时间时,read退出并返回错误。也就是说不会读取任何内容,即使已经输入了一部分。

使用-p选项给出输入提示

[root@VM_0_15_centos ~/scripts]# read -p 'input your name: ' uname
input your name: sliusf
[root@VM_0_15_centos ~/scripts]# echo $uname
sliusf

但是-p不支持换行,也不支持\n。需要输入的信息跟在提示信息后面,不能另起一行。
但通过$'string'的方式特殊处理,就可以实现换行的功能。例如

[root@VM_0_15_centos ~/scripts]# read -p $'input your name : \n' uname
input your name :
liushijun
[root@VM_0_15_centos ~/scripts]# echo $uname
liushijun

ls -l 显示说明

输入 ls -al 显示当前目录下所有文件和文件夹详细信息

可以看到显示的信息由七部分组成,那么这七个字段具体上什么含义呢

第一列代表这个文档的类型和权限

仔细看第一列,其实由十个字符组成,第一个表示文件类型,后面9个字符表示权限,每三个字符一组,分别标识所有者,所有者群组以及其他人对该文件所拥有的权限。

第一个字符代表这个文档的类型,是文件?目录?或者链接文档等。

  • 若为「d」,则是目录,例如上面的 csvFiles
  • 若为「-」,则是文件
  • 若为「l」,则是链接文件
  • 若为「b」,则表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)
  • 若为「c」,则表示文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节
  • 若为「p」,表示该文件为命令管道文件。与shell编程有关的文件。
  • 若为「s」,表示该文件为sock文件。与shell编程有关的文件。

后面的9个字符,以三个为一组,均为「rwx」的组合,其中 r 代表可读(read)、w 代表可写(write)、x代表可执行(execute),如果没有权限,则用 - 表示

  • 第一组表示文档拥有者的权限,例如上面都 .bashrc,文档拥有者拥有可读,可写权限
  • 第二组表示同群组的权限
  • 第三组表示其他非本群组的权限

另外权限不仅可用rwx表示,有时候也会用数字来表示,4:可读(read), 2:可写(write), 1:可执行(execute)
所以我们经常会看到这种 chmod 761 a.txt
7=4+2+1 ,6=4+2,所以上面都chmod 761 a.txt 表示将a.txt的权限修改为rwxrw---x,即拥有者可读可写可执行,同群组可读可写,非本群组则只能执行了。
其中目录与档案的权限含义并不相同,具体如何不同我会单写一篇说明,请参考

第二列代表文档硬链接数

第三列代表文档的拥有者账户名,如果该用户已经被删除,那么将显示一个代表用户存在前ID的数字

第四列代表文档的拥有者所属的主群组

第五列代表文档的容量大小,以字节(byte)为单位

第六列代表文档的建立日期或者最新修改日期

第七列代表文档名

chown 修改文件所有者

语法:
chown [-R] 账号名称 档案或目录
chown [-R] 账号名:组名 档案或目录
-R 表示是否递归地修改该目录及其子目录、文件的所有者

chgrp 修改文件所属群组

语法:
chgrp [-R] 组名 档案或目录

chmod 修改文件权限

chmod 修改文件权限,是我们经常会用到的一个命令,它语法多样.例如我们经常看到的 chmod 755 file 还有 chmod u+x file
这是什么意思呢?现在来解释一下。
文件的权限共有九个,分别是文件所有者,文件群组以及其他各有自己的 read(r)、write(w)、execute(x)权限。例如我们用 ls -l 命令查看文件
显示的 -rwxr-xr-x表示文件所有者有可读(r)、可写(w)、可执行(x)权限,文件所属群组和其他拥有可读,可执行权限。

  • 使用数字改变权限
    这里我们给每种权限一个分数。 r=4, w=2, x=1
    把权限对应的数字累加起来,例如 rwx=4+2+1=7, r-x=4+0+1=5, rw-=4+2+0=6
    那么如果需要把文件的权限改为rxwr-xrw-,命令就是 chmod 756 file (file表示需要修改的文件或目录)
    chmod 777 表示将文件权限全部修改为可读可写可执行。chmod 764 表示将文件权限修改为拥有者可读可写可执行,所属群组可读可写,其他只可读
  • 使用符号改变文件权限
    由上面我们知道,文件的权限对应所有者(user),群组(group),其他(other) 三种身份。那么我们可以用u,g,o,a 来代表这三种身份,a(all) 即表示所有的身份。那么我们可以用这样的形式修改文件权限

实例操作一下:
例如要把 test.txt 文件的权限修改为 rwxr-xr-x 时
chmod u=rwx,go=rx test.txt (u=rwx,go=rx 是连在一起的,中间没有空格)

如果我们不知道文件原来的权限,只想给所有人执行的权限,使用命令: chmod a+x test.txt
如果给拥有者增加执行的权限呢,命令: chmod u+x test.txt
去掉所有人的执行权限,命令: chmod a-x test.txt
+-只会增加和删除指定的权限,没有指定的不做变动。

cd 与 cd - ,cd ~

cd (change directory) 变换目录,
语法格式 :cd 目录,这里目录可以为绝对路径,也可以为相对路径。
比较有趣的是
仅输入 cd ,相当于 cd ~ ,变换目录为家目录
输入 cd - 相当于 cd / ,变换目录为根目录

mkdir 创建目录

语法 : mkdir [-mpZ] 目录名称
-m : 指定目录权限,例如:mkdir -m 755 test 。如果不加 -m 选项,则给新创建的目录使用默认的权限,具体默认权限是什么,怎么设置,略过再说。
-p :递归创建上层目录。默认情况下,需要创建的目录的父目录要已经存在,才能成功创建改目录。例如 mkdir test/shell/20190626 , 如果上级目录test/shell目录不存在的话,这样是没法创建20190626目录的,
加上 -p 选项之后,会将所需的上级目录一起创建好。

rmdir 删除『空的』目录

语法: rm [-p] 目录名称
-p :递归删除『空的』上级目录

posted @ 2019-06-19 00:18  自我更新  阅读(523)  评论(1编辑  收藏  举报