1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
cp命令:实现文件复制
源文件:目标文件:
AME
COPY - copy data between a file and atable
SYNOPSIS
COPY table_name [ ( column_name [, ...]) ]
FROM { 'filename' | STDIN }
[ [ WITH ] ( option [, ...] ) ]
COPY { table_name [ ( column_name [,...] ) ] | ( query ) }
TO { 'filename' | STDOUT }
[ [ WITH ] ( option [, ...] ) ]
单源复制:cp 【option】….【-T】SOURCE DEST
如果DEST不存在,则事前创建此文件,并复制源文件的数据流至DEST中。
如果DEST存在:
(1)如果DEST是非目录文件,可能有数据,结果是原来文件的内容会被覆盖;则会覆盖目标文件;
(2)如果DEST是目录文件,则先在DEST目录下创建一个与源文件同名的文件,并复制其数据;
多源复制:cp 【option】…SOURCE
….Directory
Cp 【option】…-t Directory SOURCE….
(1)如果DEST不存在,错误;
(2)如果DEST存在,
如果DEST是非目录文件,错误;
如果DEST是目录文件:分别复制每个文件至目录中,并保持原名;
NAME
cp - copy files and directories
SYNOPSIS
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t
DIRECTORY
SOURCE...
参数:
-i:交互式复制:即覆盖之前提醒用户确认
-f:强制覆盖目标文件
-r:或-R:递归复制目录;
-d:复制符号链接文件本身,而非其指向的源文件
-a:-dR 归档实现归档;
--preserv=
mode:权限
ownership:属主和属组
timestamp:时间戳
comntext:安全标签
xatter:扩展属性;
links:符号链接
all:上述所有属性
范例1:
[root@gz01-sys-sdn-test01 mytest3]# cp /etc/issue ./
[root@gz01-sys-sdn-test01 mytest3]# ll
total 4
-rw-r--r-- 1 root root 23 Dec 18 16:48 issue
[root@gz01-sys-sdn-test01 mytest3]# cp /etc/issue hi.txt
[root@gz01-sys-sdn-test01 mytest3]# ll
total 8
-rw-rw-rw- 1 root root 0 Dec 18 16:00 1.txt
-rw-r--r-- 1 root root 23 Dec 18 16:49 hi.txt
范例2:
#
cp -r /var/log ./
范例3:
[root@gz01-sys-sdn-test01 mytest3]# cp /etc/issue
./abc
[root@gz01-sys-sdn-test01 mytest3]# cp -a
/etc/issue ./abc
cp: overwrite ‘./abc’? y
[root@gz01-sys-sdn-test01 mytest3]#
[root@gz01-sys-sdn-test01 mytest3]#
[root@gz01-sys-sdn-test01 mytest3]# ll -l abc
-rw-r--r-- 1 root root 23 Dec 9 2015abc
[root@gz01-sys-sdn-test01 mytest3]# ll -l
/etc/issue
-rw-r--r-- 1 root root 23 Dec 9 2015/etc/issue
mv命令:用于移动文件或目录
NAME
mv - move (rename) files
SYNOPSIS
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i:交互式
-f:force
rm命令:remove 删除文件
NAME
rm - remove files or directories
SYNOPSIS
rm [OPTION]... FILE...
# rm -rf
常用选项:
-i:interactive 交互式
-f:force
-r:recursive
删除目录:rm -rf /PATH/TO/DIR
危险命令:rm -rf /
注意:所有不用的文件建议不要直接删除,mv到某个目录
2、使用命令行展开功能,创建/tmp/a1,/tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
mkdir -pv
/tmp/{a1/{a,b},a2}
tree /tmp/
3、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
1.文件的元数据是指文件的属性、大小、创建时间、访问时间、属主属组等信息。
文件的数据分两种:一种元数据,既属性数据;一种就是数据本身;可使用stat命令查看文件的元数据:
]# stat /etc/passwd
文件:"/etc/passwd"
大小:2483 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:136755684 硬链接:1
权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:(
0/ root)
环境:systemu:objectr:passwdfilet:s0
最近访问:2016-09-22 22:07:14.897045766 +0800
最近更改:2016-09-20 18:10:23.223086880 +0800
最近改动:2016-09-20 18:10:23.227086888 +0800
创建时间:-
其中:
file:文件名;
size:文件大小
block:文件占了多少个数据块
IO
Block:文件所占数据块的块大小
Device:硬件,既说明该文件在硬盘的那个柱面
Inode:节点号
links:链接
Access(第一个):权限
Uid:该文件所属的属主
Gid:该文件所属的属组
context:安全上下文
Access(第二个):文件上一次的访问时间
Modify:文件上一次修改的时间
Change:文件上一次属性更改的时间
2)修改文件的时间戳信息:
可以使用touch命令更改文件的时间戳:
状态信息有3个时间戳:
Access time:访问时间:atime:通过cat,more等读取其文件内容
Modify time:修改时间:mtime:即:改变文件内容
Change time:改变时间:ctime:即:元数据发生改变
touch命令:文件的时间戳管理工具
NAME
touch - change file timestamps
SYNOPSIS
touch [OPTION]... FILE...
修改时间戳;
-c:指定的文件路径不存在时不予创建
-a:仅修改access time
-m:仅修改modify time
-t:STAMP:
[[CC]YY]MMDDhhmm[.ss]
4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
#
touch tfile-$(date +%F-%H-%M-%S)
5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
# mkdir /tmp/mytest1
# cp -r
/etc/p*[^0-9] /tmp/mytest1
6、创建用户tom,指定UID为5001,指定家目录为/tmp/tom,
指定shell为/bin/zsh, 指定基本组为tom,附加组为jack
[root@gz01-sys-sdn-test01
test1]# useradd tom -u 5001 -d /tmp/tom -s /bin/zsh -G jack
[root@gz01-sys-sdn-test01
test1]# tail -1 /etc/passwd
tom:x:5001:5004::/tmp/tom:/bin/zsh
[root@gz01-sys-sdn-test01
test1]# grep jack /etc/group
jack:x:5003:tom
7、常用的用户以及文件管理命令有哪些,并演示命令以及用法。
相关命令:useradd;userdel;usermod;passwd
groupadd;groupdel;groupmod;gpasswd;
chage;chsh;id;su
1、groupadd命令:添加组:
NAME
groupadd - create a new group
SYNOPSIS
groupadd [options] group
groupadd 【选项】group_name
groupadd [选项] 组
创建一个新的组。Groupadd命令使用命令行中指定的值加上系统默认值创建新的组账户。新组将根据需要输入系统。
groupadd [-g gid] [-o]]
[-r] [-f] groupname
-g gid:指定组ID号。
-o:允许组ID号,不必惟一。
-r:加入组ID号,低于499系统账号。
-f:加入已经有的组时,发展程序退出
-g GID:指定 GID:默认是上一个组的GID+1
-r:创建系统组
范例1:
[root@gz01-sys-sdn-test01
test1]# groupadd leader
[root@gz01-sys-sdn-test01
test1]# tail -2 /etc/group
mytest1:x:3007:
leader:x:3008:
范例2:
参数:-g- 指定GID
建立组ID(GID)是344的新组,会在/etc/passwd文件中显示
[root@gz01-sys-sdn-test01
test1]# groupadd -g 314 mysql
[root@gz01-sys-sdn-test01
test1]# tail -2 /etc/group
leader:x:3008:
mysql:x:314:
2、groupmod命令:修改组属性:
NAME
groupmod - modify a group definition onthe system
SYNOPSIS
groupmod [options] GROUP
参数:groupmod【选项】GOUP
-g:GID:修改组的GID;
-n:new_name:修改组名;
groupmod
用于修改系统已存在的组账号。格式如下:groupmod [options] GROUP
范例1:
将
leader 组更名为 leaders
#
groupmod -n leaders leader
#
grep leader /etc/group
leaders:x:504:
将
leaders 组的 GID 改为 3000
groupmod -g 3000 leaders
grep leader /etc/group
leaders:x:3000:
3、groupdel命令:删除组:
groupdel 用于删除系统已存在的组账号。格式如下:groupdel GROUP
其中:GROUP 为要删除的组账户名
参数:groupdel【选项】GOUP
范例1:
[root@gz01-sys-sdn-test01
test1]# groupdel mysql1
[root@gz01-sys-sdn-test01
test1]# tail -2 /etc/group
mysql:x:314:
cjh:x:344:
[root@gz01-sys-sdn-test01
test1]# grep mysql1 /etc/group
[root@gz01-sys-sdn-test01
test1]# grep mysql1 /etc/gshadow
4、useradd命令:创建用户
useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。
NAME
useradd - create a new user or updatedefault new user information
SYNOPSIS
useradd [options] LOGIN
useradd -D
useradd -D [options]
格式:
useradd [-d home] [-s shell] [-c
comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名
useradd参数:
Useradd【选项】登录名
-u,--uid UID:指定UID:
-g,--gid Goup :指定基本组ID;此组需要事先存在;否则创建可能会失败
-c,--comment:指明注释信息,
-G,--groups GOUP1【,GROUP2,….[GROUP n]]]:指明用户所属的附加组,多个组之间使用逗号 进行分隔;
-d:--home HOME_DIR:以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
-s:--shell SHELL:指定用户的默认shell,可用的所有shell列表/etc/shell文件
-r:--system:创建系统用户;
Useradd -D:线上创建用户的默认配置
Useradd -D 选项:修改默认选项的值
]#
cat /etc/login.defs
注意:创建用户时的诸多默认配置文件为/etc/login.defs
修改的结果保存于/etc/default/useradd 文件中;
范例1:新增用户docker1
[root@gz01-sys-sdn-test01
shell]# useradd docker1
[root@gz01-sys-sdn-test01
shell]# tail -1 /etc/passwd
docker1:x:1005:2001::/home/docker1:/bin/bash
[root@gz01-sys-sdn-test01
shell]# tail -1 /etc/group
docker1:x:2001:
范例2:指定用户的-u,--uid UID:指定UID
[root@gz01-sys-sdn-test01
shell]# useradd -u 3000 openstack
[root@gz01-sys-sdn-test01
shell]# tail -1 /etc/passwd
openstack:x:3000:3000::/home/openstack:/bin/bash
范例3:-g,--gid Goup :指定基本组ID;此组需要事先存在;否则创建可能会失败
-g:新账户主组的名称或ID,需要存在;
备注:-g :后面接的那个组名就是我们上面提到的 initial group ,该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。
[root@gz01-sys-sdn-test01
test1]# useradd -g cloud cloudstack
useradd: group 'cloud'
does not exist
[root@gz01-sys-sdn-test01
test1]# groupadd cloud
[root@gz01-sys-sdn-test01
test1]# tail -1 /etc/group
cloud:x:3012:
[root@gz01-sys-sdn-test01
test1]# useradd -g cloud cloudstack
[root@gz01-sys-sdn-test01
test1]# tail -5 /etc/passwd
cloudstack:x:3010:3012::/home/cloudstack:/bin/bash
[root@gz01-sys-sdn-test01
test1]# useradd test2
[root@gz01-sys-sdn-test01
test1]# grep 'test2' /etc/passwd
test2:x:3013:3015::/home/test2:/bin/bash
[root@gz01-sys-sdn-test01
test1]# grep 'test2' /etc/group
test2:x:3015:
-G会覆盖现有组,所以如果追加附加组通常使用-aG,a表示append
范例4:
-G,--groups GOUP1【,GROUP2,….[GROUP n]]]:指明用户所属的附加组,多个组之间使用逗号 进行分隔;
备注:-G:是用户加入到现有的组中;
注意:乍一看,-g与-G没有什么区别,其实-g是会在你的passwd的第四项当中写入你指定的组,但是在/etc/group当中不会新建一个关于你的用户名的内容项,而-G则不同,它会在useradd
visitor的基础上再把你加入到-G后面指定的群组当中,这是在/etc/group当中存在你的用户名的内容项,这就是两者之间的差别。
[root@gz01-sys-sdn-test01
shell]# useradd -G mygrp archlinux
[root@gz01-sys-sdn-test01
shell]# tail -1 /etc/passwd
archlinux:x:3003:3003::/home/archlinux:/bin/bash
[root@gz01-sys-sdn-test01
shell]#
[root@gz01-sys-sdn-test01
shell]# tail /etc/group
gentoo:x:1002:
slackware:x:1003:
centos:x:1004:
leader:x:1005:
grp1:x:2000:
docker1:x:2001:
openstack:x:3000:
mogilefs:x:3001:
mygrp:x:3002:archlinux
archlinux:x:3003:
范例5:
-d:--home HOME_DIR:以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
[root@gz01-sys-sdn-test01shell]# useradd -d /tmp/moosefs moosefs
[root@gz01-sys-sdn-test01
shell]# tail -1 /etc/passwd
moosefs:x:3005:3005::/tmp/moosefs:/bin/bash
[root@gz01-sys-sdn-test01
shell]# ls /tmp
conf.d sysstat-10.1.5-12.el7.x86_64.rpm
cpumhz systemd-private-a3a3085122b84598a500b5a2f8eaa7a7-named.service-ZaohWv
fstab.out systemd-private-a3a3085122b84598a500b5a2f8eaa7a7-ntpd.service-e0WWcC
function system.rel
functions.out system-release
issue2.txt test
issue3.err tmux-0
issue3.out x
issue.tee yum_save_tx.2018-12-05.05-01.k8GBRj.yumtx
issue.txt yum_save_tx.2018-12-06.04-46.3T93JG.yumtx
kernel_log_push.flag yum_save_tx.2018-12-07.04-53.Zvevik.yumtx
kernel_log_push.log yum_save_tx.2018-12-08.05-00.cixgHM.yumtx
log yum_save_tx.2018-12-09.04-44.W5JTzT.yumtx
magedu.com yum_save_tx.2018-12-10.04-44.YUEuI_.yumtx
man yum_save_tx.2018-12-11.04-54.hUw76e.yumtx
moosefs yum_save_tx.2018-12-12.04-59.mCTZSh.yumtx
mysysroot yum_save_tx.2018-12-13.04-47.AoSog_.yumtx
Scripts yum_save_tx.2018-12-14.05-00.NWZsr6.yumtx
[root@gz01-sys-sdn-test01
shell]# ls /tmp/moosefs/ -a
. .. .bash_logout .bash_profile .bashrc .mozilla .zshrc
范例6:-s:--shell SHELL:指定用户的默认shell,可用的所有shell列表/etc/shell文件
[root@gz01-sys-sdn-test01
shell]# useradd -s /bin/csh keystone
[root@gz01-sys-sdn-test01
shell]# tail -1 /etc/passwd
keystone:x:3007:3007::/home/keystone:/bin/csh
5、usermod命令:修改用户属性
NAME
usermod - modify a user account
SYNOPSIS
usermod [options] LOGIN
参数:usermod【选项】登录
-u,--uid UID:修改用户的ID为此处指定的新UID
-g,--gid GROUP:修改用户所属的基本组;
-G,---G, --groups
GROUP1[,GROUP2,...[,GROUPN]]]
修改用户所属的附加组,原来的附加组会被覆盖,如果不覆盖,则使用-a选项
-a,--append:与G一起使用,用于为用户追加新的附加组;
-c,--comment
COMMENT:修改注释信息;
-d,--home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
-m,--move-home,只能与-d选项一起使用,用于将原来的家目录移动为新的家目录;
-l,--login
NEW_LOGIN:修改用户名;
-s,--shell SHELL:修改用户的默认shell;
-L,--lock:锁定用户密码;
-U,--unlock:解锁用户的密码:
范例1:
-G,---G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
修改用户所属的附加组,原来的附加组会被覆盖,如果不覆盖,则使用-a选项
[root@gz01-sys-sdn-test01
test1]# usermod -G sudo tester2
[root@gz01-sys-sdn-test01
test1]# grep 'sudo' /etc/group
sudo:x:3021:tester5,tester2
范例2:-l,--login NEW_LOGIN:修改用户名;
[root@gz01-sys-sdn-test01
test1]# usermod -l testuser22 tester2
[root@gz01-sys-sdn-test01
test1]# grep 'testuser22' /etc/passwd
testuser22:x:3019:100::/home/tester2:/bin/bash
范例3:
-G,---G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
修改用户所属的附加组,原来的附加组会被覆盖,如果不覆盖,则使用-a选项
[root@gz01-sys-sdn-test01
test1]# grep 'sudo' /etc/group
sudo:x:3021:tester5,testuser22
[root@gz01-sys-sdn-test01
test1]# usermod tester5 -G mysql
[root@gz01-sys-sdn-test01
test1]# grep 'mysql' /etc/group
mysql:x:314:tester5
[root@gz01-sys-sdn-test01
test1]# grep 'sudo' /etc/group
sudo:x:3021:testuser22
范例4:
[root@gz01-sys-sdn-test01
test1]# usermod -a -G sudo tester3
[root@gz01-sys-sdn-test01
test1]# grep 'sudo' /etc/group
sudo:x:3021:testuser22,tester3
6、userdel命令:删除用户
Userdel 【选项】登录
-r:删除用户时一并删除其家目录
范例1:-r:删除用户时一并删除其家目录
#
userdel -r tester10
6、passwd命令:密码管理命令
NAME
passwd - update user's authenticationtokens
SYNOPSIS
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-nmindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1)passwd:修改用户自己的密码,
(2)passwd USERNAME:修改指定用户的密码,仅root有此权限
-l, -u:锁定和解锁用户;
-d:清除用户密码串;
-e:过期期限;日期;
-i:非活动期限;
-n:密码的最短使用期限;
-w:警告期限;
--stdin:
echo "password" | passwd --stdin username
范例1:
[root@gz01-sys-sdn-test01
shell]# echo "magedu" | passwd --stdin docker
Changing
password for user docker.
passwd:
Authentication token manipulation error
7、gpasswd命令:组密码管理命令
组密码文件:
]#
cat /etc/gshadow
gpasswd【选项】group
-a USENAME:向组中添加用户;
-d USERNAME:从组中移除用户
8、newgrp命令:临时切换指定的组为基本组
Newgrp【-】【group】
-:会模拟用户重新登录以实现重新初始化其工作环境
9、chage命令:更改用户密码过期信息
Chage【选项】登录
-d:
-w:
-E:
-m
-M
10、id命令:显示用户的真实有效ID
Id【选项】。。。【user】
-u:仅显示有效的ID
-g:仅仅显示用户的基本组ID
-G:仅显示用户所属的所有组的ID
-n:显示名字而非ID
11、su命令:swtich user:切换用户
登录式切换:会通过读取目标用户的配置文件来重新初始化
Su - username
Su -l username
非登录式切换:不会读取目标用户的配置文件进行初始化
Su usename
注意:管理员可无密码切换至其他任何用户
-c 'command' :仅以指定用户的身份运行此处指定的命令
[root@gz01-sys-sdn-test01
shell]# su - docker -c 'whoami'
网友评论