网络常用的单位为Mbit/s,是每秒多少Mbit,光纤传播速度为20M,即每秒2.5MB

CPU频率就是CPU每秒钟可以进行的工作次数
不同的CPU之间不能单纯的以频率来判断运算效能喔!这是因为每颗CPU的微指令集不相同,架构也不见得一样,可使用的二级缓存及其运算机制可能也不同, 每次频率能够进行的工作指令数也不同,所以,频率目前仅能用来比较同款CPU的速度

所谓的外频指的是CPU与外部组件进行数据传输时的速度,倍频则是 CPU 内部用来加速工作效能的一个倍数, 两者相乘才是CPU的频率速度。

所谓的超频指的是: 将CPU的倍频或者是外频通过主机板的设定功能更改成较高频率的一种方式。但因为CPU的倍频通常在出厂时已经被锁定而无法修改, 因此较常被超频的为外频。
举例来说,像上述3.0GHz的CPU如果想要超频, 可以将他的外频333MHz调整成为400MHz,但如此一来整个主机板的各个组件的运作频率可能都会被增加成原本的1.333倍(4/3), 虽然CPU可能可以到达3.6GHz,但却因为频率并非正常速度,故可能会造成宕机等问题。
CPU运算的数据都是由主内存提供的,,主内存与CPU的沟通速度靠的是外部频率。

北桥的系统总线称为系统系统总线,因为是内存传输的主要通道,所以速度较快。 南桥就是所谓的输入输出(I/O)系统总线,主要在联系硬盘、USB、网络卡等周边设备。
北桥所支持的频率我们称为前端系统总线速度(Front Side Bus, FSB), 而每次传送的位数则是系统总线宽度。那所谓的系统总线频宽则是:『FSBx系统总线宽度』亦即每秒钟可传送的最大数据量。 目前常见的系统总线宽度有32/64位(bits)。

[vbird@www ~]$ command [-options] parameter1 parameter2 ... 命令     选项      参数(1)    参数(2)

说明:

  1. 一行命令中第一个输入的部分绝对是『命令(command)』或『可运行文件案』
  2. command 为命令的名称,例如变换路径的命令为 cd 等等;
  3. 中刮号[]并不存在于实际的命令中,而加入选项配置时,通常选项前会带 - 号,
    例如 -h;有时候会使用选项的完整全名,则选项前带有 – 符号,例如 --help
  4. parameter1 parameter2… 为依附在选项后面的参数,或者是 command 的参数;
  5. 命令, 选项, 参数等这几个咚咚中间以空格来区分,不论空几格 shell 都视为一格;
  6. 按下[Enter]按键后,该命令就立即运行。[Enter]按键代表着一行命令的开始启动。
  7. 命令太长的时候,可以使用反斜杠 (\) 来跳脱[Enter]符号,使命令连续到下一行。
    注意!反斜杠后就立刻接特殊字符,才能跳脱!
    其他:
    a. 在 Linux 系统中,英文大小写字母是不一样的。举例来说, cd 与 CD 并不同。
    b. 更多的介绍等到第十一章 bash 时,再来详述。
[vbird@www ~]$ ls -al ~/.bash[tab][tab]
.bash_history  .bash_logout   .bash_profile  .bashrc
[Tab] 接在一串命令的第一个字的后面,则为命令补全;
[Tab] 接在一串命令的第二个字以后时,则为『文件补齐』

[Ctrl]-c 按键:让当前的程序『停掉』
[Ctrl]-d 按键:相当于exit

[syt@localhost ~]$ history 1  mkdir dir12  ls -a3  touch dir1/file14  ls -a dir15  su6  ls7  ls -a8  pwd9  ls -l10  ls -s11  ls -l -a -s12  clear13  ls --help14  ls -las15  ls -a16  ls -al17  data18  date19  # cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime20  date21  # mv /etc/localtime /etc/localtime.bak  22  # ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 23  date24  cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime25  date26  echo $LANG27  cal28  ls -al ~/.bash29  man date30  bc31  history
[syt@localhost ~]$ !9
ls -l
总用量 0
drwxr-xr-x. 2 syt syt  6 7月  19 23:27 Desktop
drwxrwxr-x. 2 syt syt 19 7月  19 18:19 dir1
drwxr-xr-x. 2 syt syt  6 7月  19 18:12 Documents
drwxr-xr-x. 2 syt syt  6 7月  19 18:12 Downloads
drwxr-xr-x. 2 syt syt  6 7月  19 18:12 Music
drwxr-xr-x. 2 syt syt  6 7月  19 18:12 Pictures
drwxr-xr-x. 2 syt syt  6 7月  19 18:12 Public
drwxr-xr-x. 2 syt syt  6 7月  19 18:12 Templates
drwxr-xr-x. 2 syt syt  6 7月  19 18:12 Videos

whoami:查看当前登录用户
date
history ctrl+p :在历史记录的类表中向上移动
history ctrl+n :在历史记录的类表中向下移动
光标的移动:
Ctrl+a:跳到头
Ctrl+e:跳到尾
Ctrl+←,Ctrl+→:一个单词一个单词的跳
tab:自动补齐路径和命令

Ctrl+u:从光标前位置删,删到开头
Ctrl+k:从光标覆盖位置删,删到结尾
tab键填充命令,按一次没反应的话,就按两次,因为可能是因为不止一个HI开头的
ls / 系统根目录
cd . 当前目录
cd … 当前的上一级目录
cd - 在临近的两个目录切换
syt:当前登录用户
@:at 在

[syt@localhost ~]$
syt:当前登录用户
@:at 在
localhost :主机名
~:用户的家目录(宿主目录)
cd ~:进入家目录,或者cd 或者cd /home/aaa
~相当于/home/syt
pwd:当前路径
$:代表当前用户是个普通用户
root #:超级用户

ls -a:隐藏文件也显示出来
mkdir :创建目录
mkdir dir/dir1/dir2 -p 一下子创建多个
rmdir :删除空目录(不实用)
rm -rf * r是递归的意思
rm -ri * r是递归的意思,删除时会有提示是否删除
touch +文件名:如果文件不存在创建一个文件,如果文件存在修改文件的时间
cat:查看文件内容,适合文件内容比较少的
cp file1.txt file2.txt 将file1.txt中的内容拷贝到file2.txt,文件不存在创建文件,文件存在,覆盖原文件
cp aa bb -r:当bb目录不存在时,创建bb目录,并把aa目录下的文件拷贝到bb目录下,当bb目录存在时,把aa目录以及aa下的文件拷贝到bb目录下
cp sort/* mytest/ 两个目录都存在,仅将sort的内容复制到mytest下
rm -r mytest/* 将mytest目录下内容全部删除,保留目录

cat  由第一行开始显示文件内容,加一个-n,可以显示行号,会给空白行加上行号,适用于查看小文件,
如果不想要编排空白行的行号,可以使用cat -b
tac  从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
nl   显示的时候,顺道输出行号!
nl -b a 文件:给空白行加上行号,跟cat -n功能差不多
more 一页一页的显示文件内容,按回车一行一行显示,按空格是一屏一屏显示。缺陷是只能一直向下浏览,不能回退
空白键 (space):代表向下翻一页;
Enter         :代表向下翻『一行』;
/字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f            :立刻显示出档名以及目前显示的行数;
q或ctrl+c      :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
man more 查找more的参数
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
空白键    :向下翻动一页;
Enter         :代表向下翻『一行』;
[pagedown]:向下翻动一页;
[pageup]  :向上翻动一页;
ctrl+p或向上箭头:滚动到上一行
ctrl+n或向上箭头:滚动到下一行
/字串     :向下搜寻『字串』的功能;
?字串     :向上搜寻『字串』的功能;
n         :重复前一个搜寻 (与 / 或 ? 有关!)
N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q         :离开 less 这个程序;
按q退出less命令
end键是Fn+end
head 只看头几行 head -n 数字 文件,查看前“数字”行,或者head -数字 文件
eg:head -5 hello.c 表示查看hello.c文件前五行的内容
如果没有指定行数,默认显示前10行内容tail 只看尾巴几行
eg:tail -5 hello.c 表示查看hello.c文件后五行的内容
如果没有指定行数,默认显示前10行内容mv laowang wangfei 将文件老王的文件名改为王菲,老王和王菲都是文件
mv wangfei mytest 其中,王菲是文件名,mytest是目录,将王菲文件移动到mytest目录下软连接:相当于快捷键,创建软连接,源文件要使用绝对路径
软连接大小:源文件+路径的总字节数
目录可以创建软连接
eg:ln -s /home/a.txt(源文件名+绝对路径) a.test(软连接的名字)
ln -s target source​​解释下:​​ln -s​​:表示创建一个软连接;​​target​​:表示目标文件(夹)【即被指向的文件(夹)】​​source​​:表示当前目录的软连接名。【源文件(夹)】
文件:
ln -s ~/1Day/hello.c hello.soft 绝对路径下软连接在哪里都可以用
ln -s hello.c hello.soft 相对路径下软连接移动到上一目录就不可以用
目录:
ln -s ~/1Day/ day.soft
持续侦测/var/log/messages的内容
[root@www ~]# tail -f /var/log/messages<==要等到输入[crtl]-c之后才会离开tail这个命令的侦测!
od   以二进位的方式读取文件内容!

硬链接:以文件副本的形式存在,并不占用存储空间,可以将它理解为一个“指向原始文件block的指针”。目录不可以创建硬链接,只有文件可以。硬链接只有在同一个文件系统中才能创建。
linux下每一个文件都对应一个Inode,创建硬链接后,两个文件的Inode是相同的
查看文件的Inode:stat a.txt
文件创建硬链接后,硬链接计数+1,删除一个硬链接,硬链接计数-1
df -h :查看磁盘的使用情况
du :查看某个目录的大小
od:查看二进制文件信息
which:查看指令命令所在的路径
which指令会在PATH变量指定的路径中,搜索某个系统命令位置,并且返回第一个搜索结果
由于cd是bash内建命令,所以which搜索不到

[root@localhost ~]# which ls
alias ls='ls --color=auto'/bin/ls
[root@localhost ~] # touch cangls
[root@localhost ~ ]# ln /root/cangls /tmp/# 建立硬链接文件,目标文件没有写文件名,会和原合一致
# 也就是/root/cangls和/tmp/cangls 是硬链接文件
# 新创建一个文件abc,查看abc文件的硬连接数
[root@192 ~]# touch abc
[root@192 ~]# ls -il abc
1043285 -rw-r--r--. 1 root root 0 12月 29 18:18 abc
# 可以看到abc文件的硬连接数为1。# 在tmp目录中给abc文件创建一个硬连接文件,然后查看这两个文件硬连接数。
[root@192 ~]# ln abc /tmp/abc_h
[root@192 ~]# ls -il abc /tmp/abc_h
1043285 -rw-r--r--. 2 root root 0 12月 29 18:18 abc
1043285 -rw-r--r--. 2 root root 0 12月 29 18:18 /tmp/abc_h
# 可以看到abc文件的引用计数(硬连接数)增加了1。
# 同时还可以看到,上边的两个文件的i节点号是一样的。

选中想要引用的参数,按Esc后再按.,可以实现快速引用。

选中需要复制粘贴的命令行,然后点鼠标的转轴,直接粘贴
查找与检索
(1) 按文件属性查找
1、文件名:find 查找的目录 -name “文件的名字”
2、文件大小:find 查找的目录 -size +10K K要大写
find ~ -size +10K 查找大于10K的文件 要大写
find ~ -size +10M 查找大于10M的文件
find ~ -size +10M -size -100K 查找大于100K,小于10M的文件
3、文件类型:find 查找目录 -type d/f/b/c/s/p/l 普通文件是f
(2) 按文件内容查找:
grep -r “查找内容” + 查找路径 (-r递归查找)

[syt@localhost ~]$ whatis ls
ls (1)               - list directory contents
ls (1p)              - list directory contents
su - :到root下

sync:数据同步写入磁盘

-:普通文件,eg:initial-setup-ks.cfg
d:目录,eg:.config
b:设备文件里面可供存储的周边设备(可按块随机读写的设备)
c:设备文件(字符文件,不能用来存储文件,但是也是设备文件,如鼠标、键盘)
l:软连接(快捷方式),链接文件,link file
文件所有者:u
文件所有组:g
其他人:o
所有的人:a
+:添加权限
-:减少权限
=:覆盖原来的权限
mode:
read:读
write:写
execute:执行
chmod:修改文件的权限
chown:修改文件拥有者
目录必须有执行权限

[root@www ~]# chown [-R] 账号名称 文件或目录
[root@www ~]# chown [-R] 账号名称:用户组名称 文件或目录
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更范例:将install.log的拥有者改为bin这个账号:
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log范例:将install.log的拥有者与群组改回为root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

chgrp:修改文件所属用户组

要被改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误!
假设你是以root的身份登入Linux系统的,那么在你的家目录内有一个install.log的文件, 如何将该文件的群组改变一下呢?假设你已经知道在/etc/group里面已经存在一个名为users的群组, 但是testing这个群组名字就不存在/etc/group当中了,此时改变群组成为users与testing分别会有什么现象发生呢?

[root@www ~]# chgrp [-R] dirname/filename ...
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l
-rw-r--r--  1 root users 68495 Jun 25 08:53 install.log
[root@www ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 发生错误讯息啰~找不到这个群组名~

在我们Linux系统当中,默认的情况下,所有的系统上的账号与一般身份使用者,还有那个root的相关信息, 都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录在/etc/shadow这个文件下。 此外,Linux所有的组名都纪录在/etc/group内!这三个文件可以说是Linux系统里面账号、密码、群组信息的集中地啰! 不要随便删除这三个文件啊!

使用su - 进入root,离开root则使用exit
ls -al :表示列出所有的文件详细的权限与属性(包含隐藏文件,就是文件名第一个字符为.的文件)

要被改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误!
假设你是以root的身份登入Linux系统的,那么在你的家目录内有一个install.log的文件, 如何将该文件的群组改变一下呢?假设你已经知道在/etc/group里面已经存在一个名为users的群组, 但是testing这个群组名字就不存在/etc/group当中了,此时改变群组成为users与testing分别会有什么现象发生呢?

[root@www ~]# chgrp [-R] dirname/filename ...
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l
-rw-r--r--  1 root users 68495 Jun 25 08:53 install.log
[root@www ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 发生错误讯息啰~找不到这个群组名~

因为vbird具有r的权限,因为是r乍看之下好像就具有可以进入此目录的权限,其实那是错的。 能不能进入某一个目录,只与该目录的x权限有关啦!此外, 工作目录对于指令的执行是非常重要的,如果你在某目录下不具有x的权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的r的权限。

cd:直接跳回到根目录,等同于cd ~
cd ~ tom/:切换到tom的家目录
cd ~/tom:切换到当前目录的家目录root下面的tom文件夹里去
cd - :切换回上次目录

mkdir -p
rmdir -p
echo $PATH
ls -ld --time=atime /boot/ 最近一次访问时间
ls -ld --time=ctime /boot/ 创建时间
ls /:显示根目录里的东西

cp /etc/services /mnt:将services复制到mnt文件夹下
cp /etc/passwd /mnt/xx:将passwd复制到mnt文件夹下,并命名为xx
cp /etc/services /mnt/yy/:将services复制到yy文件夹下

[root@localhost /]# cp /etc/services /mnt/
[root@localhost /]# ls -l /mnt/services
-rw-r--r--. 1 root root 670293 Jul 25 16:06 /mnt/services
[root@localhost /]# rm -rf /mnt/services
[root@localhost /]# cp /etc/services /mnt
[root@localhost /]# ls -l /mnt/services
-rw-r--r--. 1 root root 670293 Jul 25 16:08 /mnt/services   #没有将属性信息复制过来
[root@localhost /]# rm -rf /mnt/services
[root@localhost /]# cp /etc/services /mnt -p
[root@localhost /]# ls -l /mnt/services
-rw-r--r--. 1 root root 670293 Jun  7  2013 /mnt/services   #将属性信息复制过来了[root@localhost /]# cp -a /etc/ /mnt #也可以将目录和属性复制过来

-rf:r是递归的意思,f是强制
cp -u /etc/services /mnt/services :加-u后,如果前比后新就覆盖,如果前没后新就不复制
cp /etc/services /mnt/services :不加-u的话就直接覆盖。
mv /path1/xx /path2/yy 如果yy是文件夹的话,将xx裁剪到path2下的yy文件里去,并重命名为yy,如果yy不是文件夹或者不存在的情况下,将xx裁剪到path2下,并重命名为yy
mv xx yy 把xx重命名为yy

cat  由第一行开始显示文件内容,加一个-n,可以显示行号,会给空白行加上行号,适用于查看小文件,
如果不想要编排空白行的行号,可以使用cat -b
tac  从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
nl   显示的时候,顺道输出行号!
nl -b a 文件:给空白行加上行号,跟cat -n功能差不多
more 一页一页的显示文件内容,按回车一行一行显示,按空格是一屏一屏显示。
空白键 (space):代表向下翻一页;
Enter         :代表向下翻『一行』;
/字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f            :立刻显示出档名以及目前显示的行数;
q             :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
man more 查找more的参数
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
空白键    :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup]  :向上翻动一页;
/字串     :向下搜寻『字串』的功能;
?字串     :向上搜寻『字串』的功能;
n         :重复前一个搜寻 (与 / 或 ? 有关!)
N         :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q         :离开 less 这个程序;
按q退出less命令
end键是Fn+end
head 只看头几行 head -n 数字 文件,查看前“数字”行,或者head -数字 文件
tail 只看尾巴几行
持续侦测/var/log/messages的内容
[root@www ~]# tail -f /var/log/messages<==要等到输入[crtl]-c之后才会离开tail这个命令的侦测!
od   以二进位的方式读取文件内容!

touch xx:如果文件本身存在,意味着将xx文件的创建时间或修改时间改为当前,若果不存在,则创建一个新文件叫xx
ll等同于ls -l

观察文件类型:file

[root@www ~]# file ~/.bashrc
/root/.bashrc: ASCII text  <==告诉我们是 ASCII 的纯文字档啊!
[root@www ~]# file /usr/bin/passwd
/usr/bin/passwd: setuid ELF 32-bit LSB executable, Intel 80386, version 1
(SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for
GNU/Linux 2.6.9, stripped
# 运行档的数据可就多的不得了!包括这个文件的 suid 权限、兼容於 Intel 386
# 等级的硬件平台、使用的是 Linux 核心 2.6.9 的动态函式库连结等等。
[root@www ~]# file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data  <== 这是 data 文件!

通过这个命令,我们可以简单的先判断这个文件的格式为何喔!

x权限对于目录是非常重要的

which (查找『执行文件』)

[root@www ~]# which [-a] command
选项或参数:
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称范例一:分别用root与一般帐号搜寻 ifconfig 这个命令的完整档名
[root@www ~]# which ifconfig
/sbin/ifconfig            <==用 root 可以找到正确的运行档名喔!
[root@www ~]# su - vbird <==切换身份成为 vbird 去!
[vbird@www ~]$ which ifconfig
/usr/bin/which: no ifconfig in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
:/home/vbird/bin)         <==见鬼了!竟然一般身份帐号找不到!
# 因为 which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,
# 不同的 PATH 配置内容所找到的命令当然不一样啦!因为 /sbin 不在 vbird 的
# PATH 中,找不到也是理所当然的啊!了乎?
[vbird@www ~]$ exit      <==记得将身份切换回原本的 root范例二:用 which 去找出 which 的档名为何?
[root@www ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot '/usr/bin/which
# 竟然会有两个 which ,其中一个是 alias 这玩意儿呢!那是啥?
# 那就是所谓的『命令别名』,意思是输入 which 会等於后面接的那串命令啦!
# 更多的数据我们会在 bash 章节中再来谈的!范例三:请找出 cd 这个命令的完整档名
[root@www ~]# which cd
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin
:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
# 瞎密?怎么可能没有 cd ,我明明就能够用 root 运行 cd 的啊!
locate
[root@www ~]# locate [-ir] keyword
选项与参数:
-i  :忽略大小写的差异;
-r  :后面可接正规表示法的显示方式范例一:找出系统中所有与 passwd 相关的档名
[root@www ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd
....(底下省略)....
find
[root@www ~]# find [PATH] [option] [action]
选项与参数:
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明-mtime  n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。-newer file :file 为一个存在的文件,列出比 file 还要新的文件档名范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
[root@www ~]# find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!范例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
[root@www ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的!
[root@localhost mnt]# touch aa
[root@localhost mnt]# ls
aa  xx
[root@localhost mnt]# ln -s aa aa1
[root@localhost mnt]# ls
aa  aa1  xx
[root@localhost mnt]# ll
total 4
-rw-r--r--. 1 root root  0 Jul 27 15:12 aa
lrwxrwxrwx. 1 root root  2 Jul 27 15:12 aa1 -> aa
-rw-r--r--. 1 root root 12 Jul 26 10:57 xx

分区:
q离开,不保存
w保存并退出

root@localhost ~]# mount /dev/cdrom /mnt
[root@www ~]# compress [-rcv] 文件或目录  <==这里是压缩
[root@www ~]# uncompress 文件.Z           <==这里是解压缩
选项与参数:
-r  :可以连同目录下的文件也同时给予压缩呢!
-c  :将压缩数据输出成为 standard output (输出到萤幕)
-v  :可以秀出压缩后的文件资讯以及压缩过程中的一些档名变化。范例一:将 /etc/man.config 复制到 /tmp ,并加以压缩
[root@www ~]# cd /tmp
[root@www tmp]# cp /etc/man.config .
[root@www tmp]# compress -v man.config
man.config:  -- replaced with man.config.Z Compression: 41.86%
[root@www tmp]# ls -l /etc/man.config /tmp/man*
-rw-r--r-- 1 root root 4617 Jan  6  2007 /etc/man.config   <==原有文件
-rw-r--r-- 1 root root 2684 Nov 10 17:14 /tmp/man.config.Z <==经过压缩的文件
范例二:将刚刚的压缩档解开
[root@www tmp]# uncompress man.config.Z
[root@www tmp]# ll man*
-rw-r--r-- 1 root root 4617 Nov 10 17:14 man.config
范例三:将 man.config 压缩成另外一个文件来备份
[root@www tmp]# compress -c man.config > man.config.back.Z
[root@www tmp]# ll man*
-rw-r--r-- 1 root root 4617 Nov 10 17:14 man.config
-rw-r--r-- 1 root root 2684 Nov 10 17:24 man.config.back.Z
# 这个 -c 的选项比较有趣!他会将压缩过程的数据输出到萤幕上,而不是写入成为
# *.Z 的压缩档。所以,我们可以透过数据流重导向的方法将数据输出成为另一个档名。
# 关於数据流重导向,我们会在第十一章 bash 详细谈论的啦!
root@www ~]# gzip [-cdtv#] 档名
[root@www ~]# zcat 档名.gz
选项与参数:
-c  :将压缩的数据输出到萤幕上,可透过数据流重导向来处理;
-d  :解压缩的参数;
-t  :可以用来检验一个压缩档的一致性~看看文件有无错误;
-v  :可以显示出原文件/压缩文件的压缩比等资讯;
-#  :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6范例一:将 /etc/man.config 复制到 /tmp ,并且以 gzip 压缩
[root@www ~]# cd /tmp
[root@www tmp]# cp /etc/man.config .
[root@www tmp]# gzip -v man.config
man.config:      56.1% -- replaced with man.config.gz
[root@www tmp]# ll /etc/man.config /tmp/man*
-rw-r--r-- 1 root root 4617 Jan  6  2007 /etc/man.config
-rw-r--r-- 1 root root 2684 Nov 10 17:24 /tmp/man.config.back.Z
-rw-r--r-- 1 root root 2057 Nov 10 17:14 /tmp/man.config.gz  <==gzi
范例二:由於 man.config 是文字档,请将范例一的压缩档的内容读出来!
[root@www tmp]# zcat man.config.gz
# 由於 man.config 这个原本的文件是是文字档,因此我们可以尝试使用 zcat  去读取!
# 此时萤幕上会显示 man.config.gz 解压缩之后的文件内容!范例三:将范例一的文件解压缩
[root@www tmp]# gzip -d man.config.gz
# 不要使用 gunzip 这个命令,不好背!使用 gzip -d 来进行解压缩!
# 与 gzip 相反, gzip -d 会将原本的 .gz 删除,产生原本的 man.config 文件。范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件
[root@www tmp]# gzip -9 -c man.config > man.config.gz
[root@www ~]# bzip2 [-cdkzv#] 档名
[root@www ~]# bzcat 档名.bz2
选项与参数:
-c  :将压缩的过程产生的数据输出到萤幕上!
-d  :解压缩的参数
-k  :保留原始文件,而不会删除原始的文件喔!
-z  :压缩的参数
-v  :可以显示出原文件/压缩文件的压缩比等资讯;
-#  :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!范例一:将刚刚的 /tmp/man.config 以 bzip2 压缩
[root@www tmp]# bzip2 -z man.config
# 此时 man.config 会变成 man.config.bz2 !范例二:将范例一的文件内容读出来!
[root@www tmp]# bzcat man.config.bz2
# 此时萤幕上会显示 man.config.bz2 解压缩之后的文件内容!!范例三:将范例一的文件解压缩
[root@www tmp]# bzip2 -d man.config.bz2范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件
[root@www tmp]# bzip2 -9 -c man.config > man.config.bz2
[root@www ~]# tar [-j|-z] [cv] [-f 创建的档名] filename... <==打包与压缩
[root@www ~]# tar [-j|-z] [tv] [-f 创建的档名]             <==察看档名
[root@www ~]# tar [-j|-z] [xv] [-f 创建的档名] [-C 目录]   <==解压缩
选项与参数:
-c  :创建打包文件,可搭配 -v 来察看过程中被打包的档名(filename)
-t  :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;
-x  :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开特别留意的是, -c, -t, -x 不可同时出现在一串命令列中。
-j  :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-z  :透过 gzip  的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
-v  :在压缩/解压缩的过程中,将正在处理的档名显示出来!
-f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项罗!指定压缩文件的名字
-C 目录    :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
tar:不使用z/j参数,该命令只能对文件或目录打包
压缩:
tar zcvf 生成的压缩包的名字(xxx.tar.gz)要压缩的文件和目录
tar jcvf 生成的压缩包的名字(xxx.tar.bz2)要压缩的文件和目录
解压缩:
tar jxvf 压缩包的名字(解压到当前目录)
tar jxvf 压缩包名字 -C 压缩的目录
其他后续练习会使用到的选项介绍:
-p  :保留备份数据的原本权限与属性,常用於备份(-c)重要的配置档
-P  :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
--exclude=FILE:在压缩的过程中,不要将 FILE 打包!
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# ls mnt
ls: cannot access mnt: No such file or directory
[root@localhost ~]# ls /mnt
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
[root@localhost ~]# gedit /etc/yum.repos.d/aa.repo[root@localhost ~]# yum list ncompress[root@localhost ~]# gedit /etc/yum.repos.d/aa.repo
[root@localhost ~]# yum list ncompress
[root@localhost ~]# yum install ncompress -y
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
rh
[root@localhost opt]# cp /etc/services .
[root@localhost opt]# ls
rh  services
[root@localhost opt]# compress -v services
services:  -- replaced with services.Z Compression: 68.12%
[root@localhost opt]# ls
rh  services.Z
[root@localhost opt]# ucompress services.Z
bash: ucompress: command not found...
Similar command is: 'compress'
[root@localhost opt]# uncompress services.Z
[root@localhost opt]# ls
rh  services
[root@localhost opt]# compress -c -v services > services.Z
[root@localhost opt]# ls
rh  services  services.Z
[root@localhost opt]# man compress
[root@localhost opt]# compress --help[root@localhost opt]# gzip -d hosts.gz
[root@localhost opt]# ls
hosts
[root@localhost opt]# gzip -c hosts > hosts.gz
[root@localhost opt]# ls
hosts  hosts.gz
[root@localhost opt]# zcat hosts,gz
gzip: hosts,gz.gz: No such file or directory
[root@localhost opt]# zcat hosts.gz
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@localhost opt]#
[root@localhost opt]# ll -lh
total 8.0K
-rw-r--r--. 1 root root 158 Jul 28 10:47 hosts
-rw-r--r--. 1 root root  80 Jul 28 10:53 hosts.gz
[root@localhost opt]# ll
total 8
-rw-r--r--. 1 root root 158 Jul 28 10:47 hosts
-rw-r--r--. 1 root root  80 Jul 28 10:53 hosts.gz[root@localhost opt]# rm -rf hosts.gz
[root@localhost opt]# ls
hosts
[root@localhost opt]# bzip2 hosts
[root@localhost opt]# ls
hosts.bz2
[root@localhost opt]# bzip2 -d hosts.bz2
[root@localhost opt]# ls
hosts
[root@localhost opt]# bzip2 -c hosts > hosts.bz2
[root@localhost opt]# ls
hosts  hosts.bz2
[root@localhost opt]# bzcat hosts.bz2
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@localhost opt]# ls
hosts  hosts.bz2
[root@localhost opt]# rm -rf hosts.bz2
[root@localhost opt]# ls
hosts
[root@localhost opt]# zip hosts.zip hostsadding: hosts (deflated 65%)
[root@localhost opt]# ls
hosts  hosts.zip
[root@localhost opt]# ll
total 8
-rw-r--r--. 1 root root 158 Jul 28 10:47 hosts
-rw-r--r--. 1 root root 216 Jul 28 11:14 hosts.zip[root@localhost opt]# ls
hosts  hosts.zip
[root@localhost opt]# tar cvf hosts.tar hosts
hosts
[root@localhost opt]# ls
hosts  hosts.tar  hosts.zip
[root@localhost opt]# ll -h
total 20K
-rw-r--r--. 1 root root 158 Jul 28 10:47 hosts
-rw-r--r--. 1 root root 10K Jul 28 13:54 hosts.tar
-rw-r--r--. 1 root root 216 Jul 28 11:14 hosts.zip
[root@localhost opt]# ls
hosts  hosts.tar  hosts.zip
[root@localhost opt]# rm -rf hosts.tar
[root@localhost opt]# ls
hosts  hosts.zip
[root@localhost opt]# rm -rf hosts.zip
[root@localhost opt]# ls
hosts
[root@localhost opt]# tar cvf hosts.tar hosts --remove-files
hosts
[root@localhost opt]# ls
hosts.tar
[root@localhost opt]# tar xvf hosts.tar
hosts
[root@localhost opt]# ls
hosts  hosts.tar
[root@localhost opt]# rm -rf hosts
[root@localhost opt]# ls
hosts.tar
[root@localhost opt]# mkdir aa
[root@localhost opt]# ls
aa  hosts.tar
[root@localhost opt]# tar xvf hosts.tar -C /aa
tar: /aa: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
[root@localhost opt]# tar xvf hosts.tar -C aa/
hosts
[root@localhost opt]# ls
aa  hosts.tar
[root@localhost opt]#
[root@localhost opt]# cd aa
[root@localhost aa]# ls
hosts
[root@localhost aa]# rm -rf *
[root@localhost aa]# ls
[root@localhost aa]# cd ..
[root@localhost opt]# ls
aa  hosts.tar
[root@localhost opt]# rm -rf *
[root@localhost opt]# ls
[root@localhost opt]# cp /etc/services /etc/passwd /etc/hosts .
[root@localhost opt]# ls
hosts  passwd  services
[root@localhost opt]# tar cvf xx.tar --remove-files
tar: Cowardly refusing to create an empty archive
Try `tar --help' or `tar --usage' for more information.
[root@localhost opt]# tar cvf xx.tar * --remove-files
hosts
passwd
services
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# tar tvf xx.tar
-rw-r--r-- root/root       158 2022-07-28 15:51 hosts
-rw-r--r-- root/root      2307 2022-07-28 15:51 passwd
-rw-r--r-- root/root    670293 2022-07-28 15:51 services
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# tar xvf xx.tar
hosts
passwd
services
[root@localhost opt]# ls
hosts  passwd  services  xx.tar
[root@localhost opt]# rm -rf hosts passwd services
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# tar tvf xx.tar
-rw-r--r-- root/root       158 2022-07-28 15:51 hosts
-rw-r--r-- root/root      2307 2022-07-28 15:51 passwd
-rw-r--r-- root/root    670293 2022-07-28 15:51 services
[root@localhost opt]# tar xvf xx.tar hosts
hosts
[root@localhost opt]# ls
hosts  xx.tar
[root@localhost opt]# rm -rf hosts
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# tar xvf xx.tar
hosts
passwd
services
[root@localhost opt]# ls
hosts  passwd  services  xx.tar
[root@localhost opt]# rm -rf xx.tar
[root@localhost opt]# ls
hosts  passwd  services
[root@localhost opt]# tar cvf xx.tar
tar: Cowardly refusing to create an empty archive
Try `tar --help' or `tar --usage' for more information.
[root@localhost opt]# tar cvf xx.tar *
hosts
passwd
services
[root@localhost opt]# ls
hosts  passwd  services  xx.tar
[root@localhost opt]# rm -rf hosts passwd services
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# tar cvf xx.tar
tar: Cowardly refusing to create an empty archive
Try `tar --help' or `tar --usage' for more information.
[root@localhost opt]# tar cvf xx.tar *
tar: xx.tar: file is the archive; not dumped
[root@localhost opt]# tar xvf xx.tar *
tar: xx.tar: Not found in archive
tar: Exiting with failure status due to previous errors
[root@localhost opt]# tar xvf xx.tar
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# tar zcvf xx.tar.gz * --remove -files
tar: Multiple archive files require `-M' option
Try `tar --help' or `tar --usage' for more information.
[root@localhost opt]# tar xcf xx.tar *
tar: You may not specify more than one `-Acdtrux' or `--test-label' option
Try `tar --help' or `tar --usage' for more information.
[root@localhost opt]# tar xcf xx.tar
tar: You may not specify more than one `-Acdtrux' or `--test-label' option
Try `tar --help' or `tar --usage' for more information.
[root@localhost opt]# tar xvf xx.tar
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# tar xvf xx.tar *
tar: xx.tar: Not found in archive
tar: Exiting with failure status due to previous errors
[root@localhost opt]# tar xvf xx.tar
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# tar xvf xx.tar
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# cd ..
[root@localhost /]# cd opt
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# tar xvf xx.tar
[root@localhost opt]# ls
xx.tar
[root@localhost opt]# ll
total 12
-rw-r--r--. 1 root root 10240 Jul 28 16:06 xx.tar
[root@localhost opt]# rm -rf xx.tar
[root@localhost opt]# ls[root@localhost opt]# cp /etc/services /etc/hosts /etc/passwd .
cp: overwrite ‘./services’? q
[root@localhost opt]# ls
hosts  passwd  services[root@localhost opt]# tar zcvf xx.tar.gz * --remove-files
hosts
passwd
services
[root@localhost opt]# ls
xx.tar.gz
[root@localhost opt]# tar zxvf xx.tar.gz
hosts
passwd
services
[root@localhost opt]# ls
hosts  passwd  services  xx.tar.gz
[root@localhost opt]# rm -rf xx.tar.gz
[root@localhost opt]# ls
hosts  passwd  services
[root@localhost opt]# tar jcvf xx.tar.bz2 * --remove-files
hosts
passwd
services
[root@localhost opt]# ls
xx.tar.bz2
[root@localhost opt]# tar jxvf xx.tar.bz2
hosts
passwd
services
[root@localhost opt]# ls
hosts  passwd  services  xx.tar.bz2
[root@localhost opt]# ll -h
total 788K
-rw-r--r--. 1 root root  158 Jul 28 16:22 hosts
-rw-r--r--. 1 root root 2.3K Jul 28 16:22 passwd
-rw-r--r--. 1 root root 655K Jul 28 16:21 services
-rw-r--r--. 1 root root 123K Jul 28 16:29 xx.tar.bz2
[root@localhost opt]# ls
hosts  passwd  services  xx.tar.bz2
[root@localhost opt]# rm -rf hosts passwd services
[root@localhost opt]# ls
xx.tar.bz2
[root@localhost opt]# mkdir aa
[root@localhost opt]# ls
aa  xx.tar.bz2
[root@localhost opt]# tar jxvf xx.tar.bz2 -C aa
hosts
passwd
services
[root@localhost opt]# ls
aa  xx.tar.bz2
[root@localhost opt]# ls aa/
hosts  passwd  services

先通过lsblk找到磁盘,再用parted/dev/sda print找出内部的分区表类型,之后采用fdisk来操作系统。使用 fdisk 这支程序是完全不需要背命令的!如同上面的表格中,你只要按下 m 就能够看到所有的动作! 比较重要的动作在上面已经用底线画出来了,你可以参考看看。其中比较不一样的是『q 与 w』这两个玩意儿! 不管你进行了什么动作,只要离开 fdisk 时按下『q』,那么所有的动作『都不会生效!』相反的, 按下『w』就是动作生效的意思。所以,你可以随便玩 fdisk ,只要离开时按下的是『q』即可。 _! 好了,先来看看分割表信息吧!

[syt@localhost ~]$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 17.7G  0 part /
sr0     11:0    1 1024M  0 rom
[root@localhost ~]# parted /dev/sda print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: Number  Start   End     Size    Type     File system     Flags1      1049kB  316MB   315MB   primary  xfs             boot2      316MB   2463MB  2147MB  primary  linux-swap(v1)3      2463MB  21.5GB  19.0GB  primary  xfs[root@localhost ~]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c4b13Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4810751     2097152   82  Linux swap / Solaris
/dev/sda3         4810752    41943039    18566144   83  Linux[root@localhost ~]# fdisk /dev/sda    <==仔细看,不要加上数字喔!
Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help): m
Command actiona   toggle a bootable flagb   edit bsd disklabelc   toggle the dos compatibility flagd   delete a partition           <==删除一个partitiong   create a new empty GPT partition tableG   create an IRIX (SGI) partition tablel   list known partition typesm   print this menun   add a new partition  <==新增一个partitiono   create a new empty DOS partition tablep   print the partition table <==在屏幕上显示分割表q   quit without saving changes <==不储存离开fdisk程序s   create a new empty Sun disklabelt   change a partition's system idu   change display/entry unitsv   verify the partition tablew   write table to disk and exit  <==将刚刚的动作写入分割表x   extra functionality (experts only)
Command (m for help): pDisk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c4b13Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4810751     2097152   82  Linux swap / Solaris
/dev/sda3         4810752    41943039    18566144   83  Linux
[root@localhost ~]# groupadd lduan #添加用户
[root@localhost ~]# cat /etc/group[root@localhost ~]# grep syt /etc/passwd
syt:x:1000:1000:sunyuting:/home/syt:/bin/bash
[root@localhost ~]# grep syt /etc/shadow
syt:$1$y7.rjRqV$42AEmmTGQofKV/gH.f9ef0:19193:0:99999:7:::
[root@localhost ~]# groups syt
syt : syt
[root@localhost ~]# gpasswd -a syt lduan
Adding user syt to group lduan
[root@localhost ~]# groups syt
syt : syt lduan
[syt@localhost ~]$ newgrp lduan   #临时将lduan组改成默认组
[syt@localhost ~]$ groups
lduan syt
[syt@localhost ~]$ touch zzzz
[syt@localhost ~]$ ll
-rw-r--r--. 1 syt lduan   0 Aug  5 14:51 zzzz
[syt@localhost ~]$ exit
exit
[syt@localhost ~]$ groups
syt

如何对账户进行管理:

[root@www ~]# useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM]\
>  [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名
选项与参数:
-u  :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号;
-g  :后面接的那个组名就是我们上面提到的 initial group 啦~该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。
-G  :后面接的组名则是这个账号还可以加入的群组。这个选项与参数会修改 /etc/group 内的相关数据喔!
-M  :强制!不要创建用户家目录!(系统账号默认值)
-m  :强制!要创建用户家目录!(一般账号默认值)
-c  :这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们配置的啦~
-d  :指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径!
-r  :创建一个系统的账号,这个账号的 UID 会有限制 (参考 /etc/login.defs)
-s  :后面接一个 shell ,若没有指定则默认是 /bin/bash 的啦~
-e  :后面接一个日期,格式为『YYYY-MM-DD』此项目可写入 shadow 第八字段,亦即账号失效日的配置项目啰;
-f  :后面接 shadow 的第七字段项目,指定口令是否会失效。0为立刻失效,-1 为永远不失效(口令只会过期而强制于登陆时重新配置而已。)范例一:完全参考默认值创建一个用户,名称为 vbird1
[root@www ~]# useradd vbird1
[root@www ~]# ll -d /home/vbird1
drwx------ 4 vbird1 vbird1 4096 Feb 25 09:38 /home/vbird1
# 默认会创建用户家目录,且权限为 700 !这是重点![root@www ~]# grep vbird1 /etc/passwd /etc/shadow /etc/group
/etc/passwd:vbird1:x:504:505::/home/vbird1:/bin/bash
/etc/shadow:vbird1:!!:14300:0:99999:7:::
/etc/group:vbird1:x:505:    <==默认会创建一个与账号一模一样的群组名

添加用户:

[root@localhost ~]# useradd boob
[root@localhost ~]# grep boob /etc/passwd
boob:x:1002:1003::/home/boob:/bin/bash
[root@localhost ~]#  useradd -c "Im booob" -s /sbin/nologin -d /booob -g syt -G lduan -u 1004 booob
[root@localhost ~]# grep booob /etc/passwd
booob:x:1004:1000:Im booob:/booob:/sbin/nologin
[root@localhost ~]# groups booob
booob : syt lduan
[root@localhost ~]# su - booob
This account is currently not available.

更改用户:

[root@localhost ~]# usermod -s /bin/bash booob
[root@localhost ~]# grep booob /etc/passwd
booob:x:1004:1000:Im booob:/booob:/bin/bash
[root@localhost ~]# su - booob
Last login: Fri Aug  5 16:10:53 CST 2022 on pts/0
[booob@localhost ~]$ pwd
/booob
[booob@localhost ~]$ su -
Password:
Last login: Fri Aug  5 15:35:58 CST 2022 on pts/0
[root@localhost ~]# grep booob /etc/passwd
booob:x:1004:1000:Im booob:/booob:/bin/bash
[root@localhost ~]# usermod -c "xxxxxxx" booob
[root@localhost ~]# grep booob /etc/passwd
booob:x:1004:1000:xxxxxxx:/booob:/bin/bash
[root@localhost ~]# passwd booob #给用户设置一个密码
Changing password for user booob.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd -S booob #查看密码设置成功
booob PS 2022-08-05 0 99999 7 -1 (Password set, MD5 crypt.)
[root@localhost ~]# passwd -d booob #删除一个用户的密码
Removing password for user booob.
passwd: Success
[root@localhost ~]# passwd -S booob  #删除用户密码成功
booob NP 2022-08-05 0 99999 7 -1 (Empty password.)

删除用户

[root@localhost ~]# userdel -r bob

如何改变用户的密码账户信息

[root@www ~]# chage [-ldEImMW] 账号名
选项与参数:
-l :列出该账号的详细口令参数;
-d :后面接日期,修改 shadow 第三字段(最近一次更改口令的日期),格式 YYYY-MM-DD
-E :后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD
-I :后面接天数,修改 shadow 第七字段(口令失效日期)
-m :后面接天数,修改 shadow 第四字段(口令最短保留天数)
-M :后面接天数,修改 shadow 第五字段(口令多久需要进行变更)
-W :后面接天数,修改 shadow 第六字段(口令过期前警告日期)范例一:列出 vbird2 的详细口令参数
[root@www ~]# chage -l vbird2
Last password change                               : Feb 26, 2009
Password expires                                   : Apr 27, 2009
Password inactive                                  : May 07, 2009
Account expires                                    : never
Minimum number of days between password change     : 0
Maximum number of days between password change     : 60
Number of days of warning before password expires  : 7
[root@www ~]# passwd [--stdin]  <==所有人均可使用来改自己的口令
[root@www ~]# passwd [-l] [-u] [--stdin] [-S] \
>  [-n 日数] [-x 日数] [-w 日数] [-i 日期] 账号 <==root 功能
选项与参数:
--stdin :可以透过来自前一个管线的数据,作为口令输入,对 shell script 有帮助!
-l  :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使口令失效;
-u  :与 -l 相对,是 Unlock 的意思!
-S  :列出口令相关参数,亦即 shadow 文件内的大部分信息。
-n  :后面接天数,shadow 的第 4 字段,多久不可修改口令天数
-x  :后面接天数,shadow 的第 5 字段,多久内必须要更动口令
-w  :后面接天数,shadow 的第 6 字段,口令过期前的警告天数
-i  :后面接『日期』,shadow 的第 7 字段,口令失效日期范例一:请 root 给予 vbird2 口令
[root@www ~]# passwd vbird2
Changing password for user vbird2.
New UNIX password: <==这里直接输入新的口令,屏幕不会有任何反应
BAD PASSWORD: it is WAY too short <==口令太简单或过短的错误!
Retype new UNIX password:  <==再输入一次同样的口令
passwd: all authentication tokens updated successfully.  <==竟然还是成功修改了!
finger
finger 的中文字面意义是:『手指』或者是『指纹』的意思。这个 finger 可以查阅很多用户相关的信息喔! 大部分都是在 /etc/passwd 这个文件里面的信息啦!我们就先来检查检查用户信息吧![root@www ~]# finger [-s] username
选项与参数:
-s  :仅列出用户的账号、全名、终端机代号与登陆时间等等;
-m  :列出与后面接的账号相同者,而不是利用部分比对 (包括全名部分)范例一:观察 vbird1 的用户相关账号属性
[root@www ~]# finger vbird1
Login: vbird1                           Name: (null)
Directory: /home/vbird1                 Shell: /bin/bash
Never logged in.
No mail.
No Plan.
由于 finger 类似指纹的功能,他会将用户的相关属性列出来!如上表所示,其实他列出来的几乎都是 /etc/passwd 文件里面的东西。列出的信息说明如下:Login:为使用者账号,亦即 /etc/passwd 内的第一字段;
Name:为全名,亦即 /etc/passwd 内的第五字段(或称为批注);
Directory:就是家目录了;
Shell:就是使用的 Shell 文件所在;
Never logged in.:figner 还会调查用户登陆主机的情况喔!
No mail.:调查 /var/spool/mail 当中的信箱数据;
No Plan.:调查 ~vbird1/.plan 文件,并将该文件取出来说明!不过是否能够查阅到 Mail 与 Plan 则与权限有关了!因为 Mail / Plan 都是与使用者自己的权限配置有关, root 当然可以查阅到用户的这些信息,但是 vbird1 就不见得能够查到 vbird3 的信息, 因为 /var/spool/mail/vbird3 与 /home/vbird3/ 的权限分别是 660, 700 ,那 vbird1 当然就无法查阅的到! 这样解释可以理解吧?此外,我们可以创建自己想要运行的预定计划,当然,最多是给自己看的!可以这样做:范例二:利用 vbird1 创建自己的计划档
[vbird1@www ~]$ echo "I will study Linux during this year." > ~/.plan
[vbird1@www ~]$ finger vbird1
Login: vbird1                           Name: (null)
Directory: /home/vbird1                 Shell: /bin/bash
Never logged in.
No mail.
Plan:
I will study Linux during this year.范例三:找出目前在系统上面登陆的用户与登陆时间
[vbird1@www ~]$ finger
Login     Name       Tty      Idle  Login Time   Office     Office Phone
root      root       tty1           Feb 26 09:53
vbird1               tty2           Feb 26 15:21
在范例三当中,我们发现输出的信息还会有 Office, Office Phone 等信息,那这些信息要如何记录呢? 底下我们会介绍 chfn 这个命令!来看看如何修改用户的 finger 数据吧!chfn
chfn 有点像是: change finger 的意思!这玩意的使用方法如下:[root@www ~]# chfn [-foph] [账号名]
选项与参数:
-f  :后面接完整的大名;
-o  :您办公室的房间号码;
-p  :办公室的电话号码;
-h  :家里的电话号码!范例一:vbird1 自己更改一下自己的相关信息!
[vbird1@www ~]$ chfn
Changing finger information for vbird1.
Password:                        <==确认身份,所以输入自己的口令
Name []: VBird Tsai test         <==输入你想要呈现的全名
Office []: Dic in Ksu. Tainan    <==办公室号码
Office Phone []: 06-2727175#356  <==办公室电话
Home Phone []: 06-1234567        <==家里电话号码Finger information changed.
[vbird1@www ~]$ grep vbird1 /etc/passwd
vbird1:x:504:505:VBird Tsai test,Dic in Ksu. Tainan,06-2727175#356,06-1234567:
/home/vbird1:/bin/bash
# 其实就是改到第五个字段,该字段里面用多个『 , 』分隔就是了![vbird1@www ~]$ finger vbird1
Login: vbird1                           Name: VBird Tsai test
Directory: /home/vbird1                 Shell: /bin/bash
Office: Dic in Ksu. Tainan              Office Phone: 06-2727175#356
Home Phone: 06-1234567
On since Thu Feb 26 15:21 (CST) on tty2
No mail.
Plan:
I will study Linux during this year.
# 就是上面特殊字体呈现的那些地方是由 chfn 所修改出来的!
这个命令说实在的,除非是你的主机有很多的用户,否则倒真是用不着这个程序!这就有点像是 bbs 里头更改你『个人属性』的那一个数据啦!不过还是可以自己玩一玩!尤其是用来提醒自己相关数据啦! ^_^
chsh
这就是 change shell 的简写!使用方法就更简单了![vbird1@www ~]$ chsh [-ls]
选项与参数:
-l  :列出目前系统上面可用的 shell ,其实就是 /etc/shells 的内容!
-s  :配置修改自己的 Shell 啰范例一:用 vbird1 的身份列出系统上所有合法的 shell,并且指定 csh 为自己的 shell
[vbird1@www ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin  <==所谓:合法不可登陆的 Shell 就是这玩意!
/bin/tcsh
/bin/csh       <==这就是 C shell 啦!
/bin/ksh
# 其实上面的信息就是我们在 bash 中谈到的 /etc/shells 啦![vbird1@www ~]$ chsh -s /bin/csh; grep vbird1 /etc/passwd
Changing shell for vbird1.
Password:  <==确认身份,请输入 vbird1 的口令
Shell changed.
vbird1:x:504:505:VBird Tsai test,Dic in Ksu. Tainan,06-2727175#356,06-1234567:
/home/vbird1:/bin/csh[vbird1@www ~]$ chsh -s /bin/bash
# 测试完毕后,立刻改回来![vbird1@www ~]$ ll $(which chsh)
-rws--x--x 1 root root 19128 May 25  2008 /usr/bin/chsh
不论是 chfn 与 chsh ,都是能够让一般用户修改 /etc/passwd 这个系统文件的!所以你猜猜,这两个文件的权限是什么? 一定是 SUID 的功能啦!看到这里,想到前面! 这就是 Linux 的学习方法~ ^_^
id
id 这个命令则可以查询某人或自己的相关 UID/GID 等等的信息,他的参数也不少,不过, 都不需要记~反正使用 id 就全部都列出啰~ ^_^[root@www ~]# id [username]范例一:查阅 root 自己的相关 ID 信息!
[root@www ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),
10(wheel) context=root:system_r:unconfined_t:SystemLow-SystemHigh
# 上面信息其实是同一行的数据!包括会显示 UID/GID 以及支持的所有群组!
# 至于后面那个 context=... 则是 SELinux 的内容,先不要理会他!范例二:查阅一下 vbird1 吧~
[root@www ~]# id vbird1
uid=504(vbird1) gid=505(vbird1) groups=505(vbird1) context=root:system_r:
unconfined_t:SystemLow-SystemHigh[root@www ~]# id vbird100
id: vbird100: No such user  <== id 这个命令也可以用来判断系统上面有无某账号!
[syt@localhost ~]$ groups syt
syt : syt
[root@localhost ~]# gpasswd -a syt bob
Adding user syt to group bob
[root@localhost ~]# gpasswd -d syt bob
Removing user syt from group bob
[root@localhost ~]# gpasswd -A syt bob
[root@localhost ~]# exit
logout
[syt@localhost ~]$ gpasswd -a boob bob
正在将用户“boob”加入到“bob”组中
[syt@localhost ~]$ groups boob
boob : boob bob
[syt@localhost ~]$ gpasswd -d boob bob
正在将用户“boob”从“bob”组中删除
[syt@localhost ~]$ groups boob
boob : boob
ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限配置。ACL 可以针对单一使用者,单一文件或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。那 ACL 主要可以针对哪些方面来控制权限呢?他主要可以针对几个项目:使用者 (user):可以针对使用者来配置权限;
群组 (group):针对群组为对象来配置其权限;
默认属性 (mask):还可以针对在该目录下在创建新文件/目录时,规范新数据的默认权限;
getfacl:取得某个文件/目录的 ACL 配置项目;
setfacl:配置某个目录/文件的 ACL 规范。
[root@www ~]# setfacl [-bkRd] [{-m|-x} acl参数] 目标文件名
选项与参数:
-m :配置后续的 acl 参数给文件使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除所有的 ACL 配置参数;
-k :移除默认的 ACL 参数,关于所谓的『默认』参数于后续范例中介绍;
-R :递归配置 acl ,亦即包括次目录都会被配置起来;
-d :配置『默认 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
aa  bb  services
[root@localhost mnt]# touch x
[root@localhost mnt]# ls
aa  bb  services  x
[root@localhost mnt]# getfacl x
# file: x
# owner: root
# group: root
user::rw-
group::r--
other::r--[root@localhost mnt]# setfacl -m u:syt:rw- x
[root@localhost mnt]# getfacl x
# file: x
# owner: root
# group: root
user::rw-
user:syt:rw-
group::r--
mask::rw-
other::r--[root@localhost mnt]# exit
logout
[syt@localhost ~]$ cd /mnt
[syt@localhost mnt]$ ls
aa  bb  services  x
[syt@localhost mnt]$ vim x    给syt用户授权后,就可以编辑
[syt@localhost mnt]$ cat x
hdjdjksdhak:
[root@localhost mnt]# setfacl -x u:syt x
[root@localhost mnt]# getfacl x
# file: x
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
对组改权限的话就把u换成g
[root@localhost mnt]# setfacl -m g:syt:rw- x
[root@localhost mnt]# getfacl x
# file: x
# owner: root
# group: root
user::rw-
group::r--
group:syt:rw-
mask::rw-
other::r--
[root@localhost mnt]# setfacl -m g:syt:rw- x
[root@localhost mnt]# getfacl x
# file: x
# owner: root
# group: root
user::rw-
group::r--
group:syt:rw-
mask::rw-
other::r--
[root@localhost ~]# gpasswd -a boob syt
Adding user boob to group syt
[root@localhost ~]# groups boob
boob : boob syt
[root@localhost ~]# su - boob
Last login: Mon Aug  8 14:36:14 CST 2022 on pts/0
[boob@localhost ~]$ cd /mnt
[boob@localhost mnt]$ ls
aa  bb  services  x
[boob@localhost mnt]$ vim x
[boob@localhost mnt]$ cat x
hdjdjksdhaksjksjkljaljflkaj;lKJ;L;
[root@localhost mnt]# mkdir rhce
[root@localhost mnt]# ls -ld rhce
drwxr-xr-x. 2 root root 6 Aug  8 14:51 rhce[boob@localhost rhce]$ touch yy #权限不够不可创建
touch: cannot touch ‘yy’: Permission denied
[root@localhost mnt]# setfacl -m u:boob:rwx rhce/
[root@localhost mnt]# getfacl rhce/
# file: rhce/
# owner: root
# group: root
user::rwx
user:boob:rwx
group::r-x
mask::rwx
other::r-x
[boob@localhost rhce]$ touch xx #可创建
[root@localhost mnt]# setfacl -m d:u:boob:rwx rhce/ #只要在rhce下创建的文件,boob都有rwx权限。
[root@localhost rhce]# touch xx
[root@localhost rhce]# getfacl xx
# file: xx
# owner: root
# group: root
user::rw-
user:boob:rwx           #effective:rw-
group::r-x          #effective:r--
mask::rw-
other::r--
[root@localhost mnt]# setfacl -x d:u:boob rhce/
[root@localhost mnt]# getfacl rhce/
# file: rhce/
# owner: root
# group: root
user::rwx
group::r-x
mask::r-x
other::r-x
default:user::rwx
default:group::r-x
default:mask::r-x
default:other::r-x[root@localhost rhce]# touch xx
[root@localhost rhce]# ls
xx
[boob@localhost rhce]$ getfacl xx
# file: xx
# owner: root
# group: root
user::rw-
group::r-x          #effective:r--
mask::r--
other::r--

用户身份切换:

[root@localhost ~]# whoami
root
[root@localhost ~]# pwd
/root
[root@localhost ~]# su syt #su直接接用户名,用户切换过来了,家目录没有切换过来,此时的环境还是root环境
[syt@localhost root]$ whoami
syt
[syt@localhost root]$ pwd
/root
[root@localhost ~]# su - syt #用户和家目录都切换过来了
Last login: Mon Aug  8 15:38:55 CST 2022 on pts/0
[syt@localhost ~]$ whoami
syt
[syt@localhost ~]$ pwd
/home/syt
范例三:vbird1 想要运行『 head -n 3 /etc/shadow 』一次,且已知 root 口令
[vbird1@www ~]$ head -n 3 /etc/shadow
head: cannot open `/etc/shadow' for reading: Permission denied
[vbird1@www ~]$ su - -c "head -n 3 /etc/shadow"
Password: <==这里输入 root 的口令喔!
root:$1$/30QpEWEBEZXRD0bh6rAABCEQD.BAH0:14126:0:99999:7:::
bin:*:14126:0:99999:7:::
daemon:*:14126:0:99999:7:::
[vbird1@www ~]$ <==注意看,身份还是 vbird1 喔!继续使用旧的身份进行系统操作!

更新资源,终端输入:sudo apt update
更新软件,终端输入:sudo apt upgrade
对系统进行一次重启:sudo reboot
SSH命令:ssh user@hostname
例如:ssh biowin@192.168.1.143
传输文件:
从远程主机下载文件 scp user@hostname:/path/filename(远程主机文件) /var/www/local_dir(本机地址)
从远程主机下载文件夹 scp -r -p user@hostname:/path/folder(远程主机文件夹) /var/www/local_dir(本机地址)
从本地主机发送数据给远程主机 scp /path/filename(本机文件) username@servername:/path(远程主机地址)
从本地主机发送文件夹给远程主机 scp -r /path/filefolder(本机文件夹)username@servername:/path (远程主机地址)

关于挂载的作用一直不是很清楚,今天在阅读教材时看见了mount这个命令,发现它的用处很隐晦但非常强大。奈何教材说的不明朗,因此在网上整合了一些优秀的解释,看完之后豁然开朗。

1.提一句Windows下,mount挂载,就是给磁盘分区提供一个盘符(C,D,E,…)。比如插入U盘后系统自动分配给了它I:盘符其实就是挂载,退优盘的时候进行安全弹出,其实就是卸载unmount。

2.Linux下,不像Windows可以有C,D,E,多个目录,Linux只有一个根目录/。在装系统时,我们分配给linux的所有区都在/下的某个位置,比如/home等等。

3.提问者插入了新硬盘,分了新磁盘区sdb1。它现在还不属于/。

4.我们虽然可以在一些图形桌面系统里找到他的位置,浏览管理里面的文件,但在命令行却不知怎么访问它的目录,比如无法使用cd或者ls。也无法在编程时指定一个目录对它操作。

5.这时提问者使用了 mount /dev/sdb1 ~/Share/ ,把新硬盘的区sdb1挂载到工作目录的/Share/文件夹下,之后访问这个/Share/文件夹就相当于访问这个硬盘2的sdb1分区了。对/Share/的任何操作,都相当于对sdb1里文件的操作。

6.所以Linux下,mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录上。访问这个目录就是访问该存储设备。

7.linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。挂载就是把设备放在一个目录下,让系统知道怎么管理这个设备里的文件,了解这个存储设备的可读写特性之类的过程。

8.我们不是有/dev/sdb1 吗,直接对它操作不就行了?这不是它的目录吗?

9.这不是它的目录。虽然/dev是个目录,但/dev/sdb1不是目录。可以发现ls/dev/sdb1无法执行。/dev/sdb1,是一个类似指针的东西,指向这个分区的原始数据块。mount前,系统并不知道这个数据块哪部分数据代表文件,如何对它们操作。

10.插入CD,系统其实自动执行了 mount /dev/cdrom /media/cdrom。所以可以直接在/media/cdrom中对CD中的内容进行管理。

并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。

根目录下的 /dev/ 目录文件负责所有的硬件设备文件,事实上,当 U 盘插入 Linux 后,系统也确实会给 U 盘分配一个目录文件(比如 sdb1),就位于 /dev/ 目录下(/dev/sdb1),但无法通过 /dev/sdb1/ 直接访问 U 盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)。

总之,Linux 系统使用任何硬件设备,都必须将设备文件与已有目录文件进行挂载。

df 命令:用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。

df 命令的基本格式为:[root@localhost ~]# df [选项] [目录或文件名]df命令常用选项及作用-a: 显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统;-m: 以 MB 为单位显示容量;-k: 以 KB 为单位显示容量,默认以 KB 为单位;-h: 使用人们习惯的 KB、MB 或 GB 等单位自行显示容量;-T: 显示该分区的文件系统名称;-i: 不用硬盘容量显示,而是以含有 inode 的数量来显示。
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hdc2 9920624 3823112 5585444 41% /
/dev/hdc3 4956316 141376 4559108 4% /home
/dev/hdc1 101086 11126 84741 12% /boot
tmpfs 371332 0 371332 0% /dev/shm
不使用任何选项的 df 命令,默认会将系统内所有的文件系统信息,以 KB 为单位显示出来。本例中,由 df 命令显示出的各列信息的含义分别是:Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;1K-blocks:此列表示文件系统的总大小,默认以 KB 为单位;Used:表示用掉的硬盘空间大小;Available:表示剩余的硬盘空间大小;Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行;Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hdc2 9.5G 3.7G 5.4G 41% /
/dev/hdc3 4.8G 139M 4.4G 4% /home
/dev/hdc1 99M 11M 83M 12% /boot
tmpfs 363M 0 363M 0% /dev/shm
这里使用了 -h 选项,因此文件系统的各种容量数据,会以人们习惯的单位(通常使用 GB 或 MB)显示出来。
[root@localhost ~]# df -h /etc
Filesystem Size Used Avail Use% Mounted on
/dev/hdc2 9.5G 3.7G 5.4G 41% /这里在 df 命令后添加了目录名,在这种情况下,df 命令会自动分析该目录所在的分区,并将所在分区的有关信息显示出来。由此,我们就可以知道,该目录下还可以使用多少容量。[root@localhost ~]# df -aT
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/hdc2 ext3 9920624 3823112 5585444 41% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/hdc3 ext3 4956316 141376 4559108 4% /home
/dev/hdc1 ext3 101086 11126 84741 12% /boot
tmpfs tmpfs 371332 0 371332 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
du 命令是统计目录或文件所占磁盘空间大小的命令。需要注意的是,使用"ls -r"命令是可以看到文件的大小的。但是大家会发现,在使用"ls -r"命令査看目录大小时,
目录的大小多数是 4KB,这是因为目录下的子目录名和子文件名是保存到父目录的 block(默认大小为 4KB)中的,
如果父目录下的子目录和子文件并不多,一个 block 就能放下,那么这个父目录就只占用了一个 block 大小。在统计目录时,不是想看父目录下的子目录名和子文件名到底占用了多少空间,而是想看父目录下的子目录和子文件的总磁盘占用量大小,这时就需要使用 du 命令才能统计目录的真正磁盘占用量大小。
du 命令的格式如下:[root@localhost ~]# du [选项] [目录或文件名]选项:-a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量-h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;-s:统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量【例 1】[root@localhost ~]# du
#统计当前目录的总磁盘占用量大小,同时会统计当前目录下所有子目录的磁盘占用量大小,不统计子文件
#磁盘占用量的大小。默认单位为KB
20 ./.gnupg
#统计每个子目录的大小
24 ./yum.bak
8 ./dtest
28 ./sh
188
#统计当前目录总大小【例 2】[root@localhost ~]# du -a
#统计当前目录的总大小,同时会统计当前目录下所有子文件和子目录磁盘占用量的大小。默认单位为 KB
4 ./.bashjogout
36 ./install.log
4 ./.bash_profile
4 ./.cshrc
…省略部分输出…
188【例 3】[root@localhost ~]# du -sh
#只统计磁盘占用量总的大小,同时使用习惯单位显示
188K .
du命令和df命令的区别有时我们会发现,使用 du 命令和 df 命令去统计分区的使用情况时,得到的数据是不一样的。那是因为df命令是从文件系统的角度考虑的,通过文件系统中未分配的空间来确定文件系统中已经分配的空间大小。也就是说,在使用 df 命令统计分区时,不仅要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)。而 du 命令是面向文件的,只会计算文件或目录占用的磁盘空间。也就是说,df 命令统计的分区更准确,是真正的空闲空间。挂载分区[root@localhost ~]# mkdir /mnt/disk1
#建立挂载点目录
[root@localhost ~]# mount /dev/sdb1 /mnt/disk1
#挂载分区
umount 命令命令的基本格式如下:[root@localhost ~]# umount 设备文件名或挂载点注意,卸载命令后面既可以加设备文件名,也可以加挂载点,不过只能二选一,比如:[root@localhost ~]# umount /mnt/usb
#卸载U盘
[root@localhost ~]# umount /mnt/cdrom
#卸载光盘
[root@localhost ~]# umount /dev/sr0
#命令加设备文件名同样是可以卸载的
压缩tar –cvf jpg.tar *.jpg       // 将目录里所有jpg文件打包成 tar.jpg
tar –czf jpg.tar.gz *.jpg    // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg   // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg     // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg          // rar格式的压缩,需要先下载 rar for linux
zip jpg.zip *.jpg            // zip格式的压缩,需要先下载 zip for linux
解压tar –xvf file.tar         // 解压 tar 包
tar -xzvf file.tar.gz     // 解压 tar.gz
tar -xjvf file.tar.bz2    // 解压 tar.bz2
tar –xZvf file.tar.Z      // 解压 tar.Z
unrar e file.rar          // 解压 rar
unzip file.zip            // 解压 zip
总结1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
更新软件源: apt update搜索软件: apt search package_name软件列表: apt list已安装软件: apt list --installed安装软件: apt install package_name修复软件依赖: apt install -f升级软件: apt upgrade package_name卸载软件: apt remove package_name卸载软件及依赖: apt autoremove package_name删除配置: apt purge package_name设置软件包为手动安装(这样autoremove就不会自动卸载该软件): apt-mark manual package_name重新配置软件: dpkg-reconfigure package_name安装本地软件包: dpkg -i your_deb_file.deb
显示PATH环境变量:echo $PATH显示当前用户家目录:echo $HOME

查看计算机名:hostname
修改计算机名:vim /etc/sysconfig/network
指定共享文件夹,虚拟机中对应的目录是 mnt/hgfs

网络配置:
VMNet8(NAT)
1、子网 192.168.2.0
2、更改设置-DHCP设置
起始:192.168.2.128
结束:192.168.2.254
3、NAT设置:网关 192.168.2.1


一、临时生效

export PATH=$PATH:/root/.config/composer/vendor/bin

使用 export 设置的变量,只对当前终端 Shell 有效,也就是说如果新打开一个终端,那这个 export 设置的变量在新终端中是无法读取到的。适合设置一些临时变量。

二、通过修改配置文件

首先是设置全局环境变量,对所有用户都会生效:

1、/etc/profile: 此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从 /etc/profile.d 目录的配置文件中搜集shell 的设置。一般用于设置所有用户使用的全局变量。
2、/etc/bashrc: 当 bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。

对单个用户生效:

1、~/.bash_profile 或 ~/.profile: 只对单个用户生效,当用户登录时该文件仅执行一次。用户可使用该文件添加自己使用的 shell 变量信息。另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是 ~/.bash_profile, ~/.bash_login 或 ~/.profile 其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如 Ubuntu 系统一般是 ~/.profile 文件。
2、~/.bashrc: 只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取。

此外,修改 /etc/environment 这个文件也能实现环境变量的设置。
/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
注:系统是先执行/etc/environment,再执行/etc/profile

以修改/etc/profile 为例:

PATH=“$PATH:/root/.config/composer/vendor/bin”
export PATH

执行

source /etc/profile

使其立即生效。
如果想多加个路径yourpath1,在将“:yourpath1” 加载path后面,如:
PATH=”$PATH:/root/.config/composer/vendor/bin:yourpath1”

最新文章

  1. Kotlin 协程:简单理解 runBlocking, launch ,withContext ,async,doAsync
  2. Linux下rpm包x86、i386、i486、i586、i686和x86_64 后缀含义
  3. Centos-Glassfish安装
  4. json C库源码地址
  5. MongoDB的高级语法
  6. HTTP/2 协议入门
  7. Leetcode--283. 移动零
  8. 局域网聊天关心他们的教育
  9. Python电话本系统(添加、修改、删除、查询)
  10. linux自动输入sudo密码_用大写字母输入 Linux 命令,实现以 sudo 用户权限运行
  11. ip命令手册: 使用iproute2工具进行路由表管理和路由策略管理
  12. 浅谈javascript的面向对象(OOP)
  13. 【面试】JavaEE基础
  14. 超详细的Java入门到精通完整学习教程,学Java一定得收藏。
  15. 看看老外是怎么对待免费软件的。
  16. 大公司比较习惯问及的97道问题附答案
  17. Apache自带的ab压力测试工具用法详解
  18. PHP - 收藏集 - 掘金
  19. Integer与Int
  20. L1-8 雀魂majsoul (20 分)

热门文章

  1. 计算机中的right函数,excel的right函数的使用教程
  2. 为什么今年的苹果手机不支持5G?原因有四点,网友:错怪库克了
  3. python修改文件内容_Python之文件处理-批量修改md文档内容-Go语言中文社区
  4. String spilt的使用和常见的坑以及平替方案性能比较
  5. 小鸟云服务器怎么修改密码?
  6. 正则表达式,和python re模块
  7. python系统运维工程师_系统运维工程师的工作职责
  8. wow服务器合并信息,WOW魔兽世界5月21日大服务合并维护 二区合并至电信区
  9. 最优传输论文(二十六):Sliced Wasserstein Discrepancy for Unsupervised Domain Adaptation论文原理
  10. php怎么做地图源代码,php直播源码百度地图坐标拾取系统自定义页面