ls -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
ls -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出例如:
dr-xr-x—. 2 root root 135 Dec 16 02:34 .
第一列共10位,第1位表示文档类型,d表示目录,-表示文件,l表示链接文件,d表示可随机存取的设备,如U盘等,c表示一次性读取设备,如鼠标、键盘等。后9位,依次对应三种身份所拥有的权限,身份顺序为:owner、group、others,权限顺序为:readable、writable、excutable。如:-r-xr-x—的含义为当前文档是一个文件,拥有者可读、可执行,同一个群组下的用户,可读、可执行,其他人没有任何权限。
第二列表示链接数,表示有多少个文件链接到inode号码。
第三列表示拥有者
第四列表示所属群组
第五列表示文档容量大小,单位字节
第六列表示文档最后修改时间,注意不是文档的创建时间哦
第七列表示文档名称。以点(.)开头的是隐藏文档
另外 ll 是ls -l 的一个别名
cd命令用于进入不同目录,下面以在/home/jack/a/b/c/c/d文件夹下采用不同方法进入到/home/jack/a文件夹下为例,介绍使用cd命令的不同切入方法。
第一种方法:
采用cd …的方式一点点返回到a文件夹下,参考如下图片。
第二种方法:
采用cd …/…/…/…的方式返回到a文件夹下。
第三种方法:
采用cd ~/a的方法进入到a文件夹下。
第四种方法:
采用绝对路径cd /home/jack/a的方法进入到a文件夹下。
whereis 例如whereis ls 当前可执行文件的路径在哪儿
GNU是“GNU’s Not Unix”的递归缩写
GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。
【历史】
1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。
到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs。GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。以及大部分UNIX系统 GNU操作系统的内核Linux的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。
1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。(尽管如此GNU计划自己的内核Hurd依然在开发中,目前已经发布Beta版本。)
许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。
GNU 包含3个协议条款,
GPL3:GNU通用公共许可证(GNU General Public License)
LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License), ) ,现在的apache license 也是基于它发展而来的 。
GFDL : GNU自由文档许可证(GNU Free Documentation License )的缩写形式。
bash与coreutils的下载与安装(该处内容不重要)
在终端输入命令后会去环境变量中寻找执行路径,然后去内核中调用相关的api(该处不重要,可作为参考了解)
关闭用户图形界面,使用tty登录。
sudo systemctl set-default multi-user.target
sudo reboot
注意:
关闭图形界面重启后, 需要 Ctrl+Alt+F1 切换到命令行模式,否则重启之 后会停在黑屏状态,实际上系统是已经启动完成的,通过ssh也能连接上
开启用户图形界面。
sudo systemctl set-default graphical.target
sudo reboot
进入到tty终端模式:ctrl+alt+f2
返回到图形桌面:ctrl+alt+f1 然后在可视化界面的时候可以 ctrl+alt+t 快捷打开可视化的terminal
简单的搜索terminal终端,一般常用CTRL+ALT+T打开终端,使用ALT+F1~F6功能键打开tty控制台
tty
tty 为Ubuntu的纯文本串行终端,通常用作访问计算机以修复内容的方式登录,没有实际登录到可能的图像界面.tty一般为tty3-tty6 可以通过 按ctrl +alt + F1- F6 实现,通过tty可以控制程序,杀死进程,完成在terminal上完成的大部分命令.
注意大小写识别
通配符 例如:ls .txt ?.txt(一个问号代表一个位置符) [a-z].txt(字符取值范围)[.]*
管道 Pipe : 吧前面进程的输出作为后面进程的输入 , 把前面文件的输出做为后面进程的输入
例如:ps -aux | grep *.txt
输入/输出重定向,注意:>后跟完整路径表示如果不存在将建立,并且以覆盖的方式添加上去,>>则表示以追加的方式添加在文末
例如:ls > show.txt 、ls >> show.txt 、cat
Man工具就是系统帮助手册
查看官方的命令帮助手册:man +命令如 man ls
Info工具是一个基于菜单的超文本系统,由GNU项目开发并由Linux发布。info工具包括一些关于Linux shell、工具、GNU项目开发程序的说明文档。
alias 给命令或者字符取个别名alias name=“command”
例如 alias hejinqiu=“ls -l”
pwd 查找当前的路径
Linux file命令用于辨识文件类型
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>…][文件或目录…]
echo 结果显示在屏幕上
mkdir(英文全拼:make directory)命令用于创建目录。
-p 确保目录名称存在,不存在的就建一个。
rmdir(英文全拼:remove directory)命令删除空的目录
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
touch 命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件
-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
mv(英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置。
命令格式 | 运行结果 |
---|---|
mv source_file(文件) dest_file(文件) | 将源文件名 source_file 改为目标文件名 dest_file |
mv source_file(文件) dest_directory(目录) | 将文件 source_file 移动到目标目录 dest_directory 中 |
mv source_directory(目录) dest_directory(目录) | 录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory mv source_directory(目录) dest_file(文件) 出错 |
cp(英文全拼:copy file)命令主要用于复制文件或目录。
cp 将当前目录 test/ 下的所有文件复制到新目录 newtest 下
$ cp –r test/ newtest
rm(英文全拼:remove)命令用于删除一个文件或者目录。
删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:
rm -r homework
rm test.txt
常用 rm -r \ rm -f或者rm -rf表示强制删除
chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。注意:chown 需要超级用户 root 的权限才能执行此命令
使用方法:chown [-cfhvR] [–help] [–version] user[:group] file…
把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid
将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者:
chown :512 /home/runoob
chgrp(英文全拼:change group)命令用于变更文件或目录的所属群组。注意:与 chown 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。
使用方法:chgrp [-cfhRv][–help][–version][所属群组][文件或目录…] 或 chgrp [-cfhRv][–help][–reference=<参考文件或目录>][–version][文件或目录…]
例如:改变文件的群组属性:
chgrp -v bin log2012.log
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
语法:chmod [-cfvR] [–help] [–version] mode file…
[ugoa…][[±=][rwxX]…][,…]
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:
who | 用户类型 | 说明 |
---|---|---|
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
a | all | 所用用户, 相当于 ugo |
operator 的符号模式表: | ||
Operator | 说明 | |
:----: | :----: | |
+ | 为指定的用户类型增加权限 | |
- | 去除指定用户类型的权限 | |
= | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 | |
permission 的符号模式表: |
模式 | 名字 | 说明 |
---|---|---|
r | 读 | 设置为可读权限 |
w | 写 | 设置为可写权限 |
x | 执行权限 | 设置为可执行权限 |
X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
八进制语法 | ||
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。 |
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
例如, 765 将这样解释: | |||
所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。 | |||
用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。 | |||
其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。 | |||
实例 | |||
将文件 file1.txt 设为所有人皆可读取 : |
chmod ugo+r file1.txt
将文件 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
为 ex1.py 文件拥有者增加可执行权限:
chmod u+x ex1.py
将目前目录下的所有文件与子目录皆设为任何人可读取 :
chmod -R a+r *
此外chmod也可以用数字来表示权限如 :
chmod 777 file
grep 命令用于查找文件里符合条件的字符串
示例(grep应用场景较多,后面会做专门补充):
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法:find path -option [ -print ] [ -exec -ok command ] {} ;
参数说明:find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
locate 命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。一般情况我们只需要输入 locate your_file_name 即可查找指定文件。
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:
updatedb
默认情况下 updatedb 每天执行一次。
ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间
语法
ln [参数][源文件或目录][目标文件或目录]其中参数的格式为
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[–help] [–version] [–]
命令功能 :
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软链接:
1. 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2. 软链接可以 跨文件系统 ,硬链接不可以
3. 软链接可以对一个不存在的文件名进行链接
4. 软链接可以对目录进行链接
硬链接:
1. 硬链接,以文件副本的形式存在。但不占用实际空间。
2. 不允许给目录创建硬链接
3. 硬链接只有在同一个文件系统中才能创建
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
实例
给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
ln -s log2013.log link2013
给文件创建硬链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
ln -h log2013.log link2013
tar(英文全拼:tape archive )命令用于备份文件。tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
常用记住:
压缩:tar -czvf [desfile] [sourcefile]
解压缩:tar -xzvf [sourcefile]
实例
习题:排除目录中的某些文件,然后进行压缩。
命令格式如下:
tar --exclude=目录名/* 或者 文件名 -zcvf 备份文件名.tgz 目录名
#创建一个名为 abc 的目录
mkdir abc
#进入 abc 这个目录
cd abc
#创建两个文件,文件名为1.txt 2.txt
touch 1.txt 2.txt
#切换到 abc 的父目录
cd …
#将文件 abc 进行压缩时,排除1.txt,压缩后的文件名为 abc.tar
tar --exclude=abc/1.txt -zcvf abc.tgz abc
#解压文件
tar -zxvf abc.tgz
#删除压缩文件
rm abc.tgz
#删除解压后的文件,并删除文件夹
rm -rf abc
gzip命令用于压缩文件。
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
压缩:gzip [filename]
解压缩:gzip -d [filename]
示例:
[[email protected] a]# ls //显示当前目录文件
a.c b.h d.cpp
[[email protected] a]# gzip * //压缩目录下的所有文件
[[email protected] a]# ls //显示当前目录文件
a.c.gz b.h.gz d.cpp.gz
diff 命令用于比较文件的差异。
diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
常用:
diff -y [file1] [file2]
diff -u [file1] [file2]
制作补丁文件
diff -Nu [file1] [file2] > [patchfile]
语法
diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][–help][–left-column][–suppress-common-line][文件或目录1][文件或目录2]
实例1:比较两个文件
[root@localhost test3]# diff log2014.log log2013.log
实例2:并排格式输出
[root@localhost test3]# diff log2014.log log2013.log -y -W 50
patch命令用于修补文件。
patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。
常用:patch -p[n] < [patchfile]
示例:
使用patch指令将文件"testfile1"升级,其升级补丁文件为"testfile.patch",输入如下命令:
$ patch -p0 testfile1 testfile.patch #使用补丁程序升级文件
使用该命令前,可以先使用指令"cat"查看"testfile1"的内容。在需要修改升级的文件与原文件之间使用指令"diff"比较可以生成补丁文件。具体操作如下所示:
$cat testfile1 查看testfile1的内容
Hello,This is the firstfile!
$ cat testfile2 查看testfile2的内容
Hello,Thisisthesecondfile!
$ diff testfile1 testfile2 比较两个文件
1c1
Hello,Thisisthefirstfile!
Hello,Thisisthesecondfile!
#将比较结果保存到tetsfile.patch文件
$ diff testfile1 testfile2>testfile.patch
$ cat testfile.patch #查看补丁包的内容
1c1
Hello,Thisisthefirstfile!
Hello,Thisisthesecondfile!
#使用补丁包升级testfile1文件
$ patch -p0 testfile1 testfile.patch
patching file testfile1
$cat testfile1 #再次查看testfile1的内容
#testfile1文件被修改为与testfile2一样的内容
Hello,This is the secondfile!
习题:
21集:df、du
df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
语法
df [选项]… [FILE]…
实例
显示文件系统的磁盘使用情况统计:
#df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 29640780 4320704 23814388 16% /
第一列指定文件系统的名称,第二列指定一个特定的文件系统1K-块1K是1024字节为单位的总内存。用和可用列正在使用中,分别指定的内存量。
使用列指定使用的内存的百分比,而最后一栏"安装在"指定的文件系统的挂载点。
df也可以显示磁盘使用的文件系统信息:
#df test
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 29640780 4320600 23814492 16% /
h选项,通过它可以产生可读的格式df命令的输出:
#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 29G 4.2G 23G 16% /
du (英文全拼:disk usage)命令用于显示目录或文件的大小。
du 会显示指定的目录或文件所占用的磁盘空间。
语法:
du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][–block-size][–exclude=<目录或文件>][–max-depth=<目录层数>][–help][–version][目录或文件]
实例:
显示目录或者文件所占空间:
#du
608 ./test6
只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小
显示指定文件所占空间
#du log2012.log
300 log2012.log
方便阅读的格式显示test目录所占空间情况:
#du -h test
608K test/test6
fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。
常用:fdisk -l
语法:
fdisk [必要参数][选择参数]
必要参数:
-l 列出素所有分区表
-u 与 -l 搭配使用,显示分区数目
选择参数:
-s<分区编号> 指定分区
-v 版本信息
实例
显示当前分区情况:
#fdisk -l
显示SCSI硬盘的每个分区情况
#fdisk -lu
习题:
先说说现在要了解的设备符号 hd*[IDE] sd* [SCSI]
hda ,hdb , hdc 的关系
hda1,hda2,hda3 的关系
对磁盘进行分区:
mkfs(英文全拼:make file system)命令用于在特定的分区上建立 linux 文件系统。
语法:
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
实例
在 /dev/hda5 上建一个 msdos 的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来 :
mkfs -V -t msdos -c /dev/hda5
将sda6分区格式化为ext3格式,
mkfs -t ext3 /dev/sda6
如何对Linux下磁盘进行分区可以借助此处
mount 命令是经常会使用到的命令,它用于挂载Linux系统外的文件。
查看当前mount信息
mount
装载设备
mount -t [dev] [path]
卸载设备
umount [path]
/etc/fstab
再说说最简单的vmware和windows共享hgfs(vmare的一个文件系统)
实验一:挂载硬盘
实验二:挂载usb
实验三:挂载img
passwd命令用来更改使用者的密码
了解
/etc/passwd
注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序
注册名:加密后口令:密码最近更改天数(1970.1.1为参照):多少天内不能更改:多少天内必须更改:提前提醒修改密码的天数
实例
修改用户密码
#passwd runoob //设置runoob用户的密码
Enter new UNIX password: //输入新密码,输入的密码无回显
Retype new UNIX password: //确认密码
passwd: password updated successfully
显示账号密码信息
#passwd -S runoob
runoob P 05/13/2010 0 99999 7 -1
删除用户密码
#passwd -d lx138
passwd: password expiry information changed.
useradd命令用于建立用户帐号。建立一个新用户时也会建立一个同名的新用户组
常用命令:
注意,默认情况不会添加home目录
useradd -m [username]
useradd -p
useradd -g
习题:
添加一个新用户,然后删除
给大家讲一个故事 :
现在程序安装有时候是需要系统管理员授权的
授权后,我们编写一个shell执行一下:
useradd -u 0 -o -g root -p [password] [username]
usermod 命令用于修改用户帐号。
实例
更改登录目录
#usermod -d /home/hnlinux root
改变用户的uid
#usermod -u 777 root
userdel命令用于删除用户帐号。
语法
userdel [-r][用户帐号]
参数说明:
-r 删除用户登入目录以及目录中所有文件。
groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
实例
创建一个新的组,并添加组 ID。
#groupadd -g 344 runoob
id命令用于显示用户的ID,以及所属群组的ID。
id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
语法
id [-gGnru][–help][–version][用户名称]
参数说明:
-g或–group 显示用户所属群组的ID。
-G或–groups 显示用户所属附加群组的ID。
-n或–name 显示用户,所属群组或附加群组的名称。
who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。
使用权限:所有使用者都可使用。
语法
who - [husfV] [user]
whoami命令用于显示自身用户名称。
显示自身的用户名称,本指令相当于执行"id -un"指令。
su(英文全拼:switch user)命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。(切换用户)
实例
变更帐号为 root 并在执行 ls 指令后退出变回原使用者
su -c ls root
变更帐号为 root 并传入 -f 参数给新执行的 shell
su root -f
变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)
su - clsung
切换用户
[email protected]:~$ whoami //显示当前用户
hnlinux
[email protected]:~$ pwd //显示当前目录
/home/hnlinux
[email protected]:~$ su root //切换到root用户
密码:
sudo 超级用户使用
export 命令用于设置或显示环境变量。
仅限于本次登录
export PATH= P A T H : / h o m e / s u n d y 变量,特别是环境变量,比如 P A T H 那什么是 PATH:/home/sundy 变量,特别是环境变量,比如PATH 那什么是 PATH:/home/sundy变量,特别是环境变量,比如PATH那什么是PATH呢? shell中的变量调用符号
举例…
实例
列出当前所有的环境变量
#export -p //列出当前的环境变量值
declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
关机命令 shutdown / poweroff / halt / reboot;注意如果不保存此次运行的任务很多时候Ubuntu会发生再次启动时出问题的情况,因此建议采用sudo root+init;init;init 0或者sudo init;init;init 0与sudo init;init;init 1来关机或者重启
参考:
shutdown -h now
shutdown -r now
ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
常用:
ps -ef
ps -aux 显示所有包含其他使用者的进程
实例
查找指定进程格式:
ps -ef | grep 进程关键字
kill 命令用于删除执行中的程序或工作。
kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看。
实例
杀死进程
#kill 12345
强制杀死进程
#kill -KILL 123456
发送SIGHUP信号,可以使用一下信号
#kill -HUP pid
彻底杀死进程
#kill -9 123456
注意:linux 的 kill 命令是向进程发送信号,kill 不是杀死的意思,-9 表示无条件退出,但由进程自行决定是否退出,这就是为什么 kill -9 终止不了系统进程和守护进程的原因。
top命令用于实时显示 process 的动态。
实例
显示进程信息
#top
显示完整命令
#top -c
以批处理模式显示程序信息
#top -b
以累积模式显示程序信息
#top -S
设置信息更新次数
top -n 2
//表示更新两次后终止更新显示
设置信息更新时间
#top -d 3
//表示更新周期为3秒
显示指定的进程信息
#top -p 139
//显示进程号为139的进程信息,CPU、内存占用率等
free命令用于显示内存状态。
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:
B = bytes
K = kilos
M = megas
G = gigas
T = teras
uname(英文全拼:unix name)命令用于显示系统信息。
uname 可显示电脑以及操作系统的相关信息。
uptime 这个命令,有两大用处,一个是看您的机器最近有没有被重启,或都由于硬件等原因被重启过,另一个就是看看您的cpu 负载如何?详情
clear命令用于清除屏幕。
cal命令用于显示日历
date / time date 命令可以用来显示或设定系统的日期与时间。time命令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。
例如 CPU 时间、记忆体、输入输出等等。需要特别注意的是,部分资讯在 Linux 上显示不出来。这是因为在 Linux 上部分资源的分配函式与 time 指令所预设的方式并不相同,以致于 time 指令无法取得这些资料。详情
###26集:netstat、ping、ipconfig、ssh、ftp、telnet
netstat 命令用于显示网络状态。
利用 netstat 指令可让你得知整个 Linux 系统的网络情况
常用的网络状态:
LISTEN :在监听状态中。
ESTABLISHED:已建立联机的联机情况。
TIME_WAIT:该联机在目前已经是等待的状态。
常用命令:
netstat -e
显示关于以太网的统计数据
netstat -r
显示关于路由表的信息
netstat -a
显示一个所有的有效连接信息列表
netstat -n
显示所有已建立的有效连接
*ping 命令用于检测主机。
执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。详情
语法:
ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
ifconfig命令用于显示或设置网络设备。
ifconfig可设置网络设备的状态,或是显示目前的设置。
常规操作:
ifconfig eth0 up(down)
ifconfig eth0 [ipaddress] netmask [address]
配置IP,Netmask ,Gateway:
/etc/network/interfaces
配置DNS
/etc/resolv.conf
ssh+ip地址可以连接远程操作
ftp+ip地址可以连接远程操作
我们做过windows下的安装程序么?比如installshell , innosetup
是不是如下步骤:
1,在Program Files文件夹下建立程序文件夹
2,Copy相关动态链接库 (依赖类库)到程序文件夹或者系统文件夹下,比如dll文件
3,Copy可执行文件到程序文件夹下,比如exe文件
4,Copy配置文件到程序文件夹或者系统文件夹下,比如ini文件
5,把启动配置或者程序依赖的配置放到注册表中
6,如果有自定义服务程序的,注册并且启动服务程序
注意:Linux下执行文件不是靠后缀而是权限
Linux下我们如何做呢?
总结:
安装原理:
cp 类库,可执行程序,配置到相应目录,根据需要选择性配置和启动服务
卸载:
与安装原理相反
下载安装包进行安装:
服务程序也被称为守护进程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ot2fpvrU-1662001425184)(:/0d398828fdf948b097807e4dd295b4e1)]
Linux操作系统的运行级别
0 系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。
1 单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。
2 多用户模式,没有NFS网络支持。
3 完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式。
4 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 图形化模式,登陆后进入图形GUI模式,X Window系统。
6 重启模式,默认运行级别不能设为6,否则不能正常启动。运行init 6机器就会重启。
显示当前运行级别命令:
runlevel
进入其它运行级别:
init level
追踪一下Init初始化过程
/sbin/init 涉及到对 /sbin/telinit , /sbin/getty的调用
/etc/init/rc-sysinit.conf
[initab]
/etc/init.d/rcS
/etc/init.d/rc
/etc/rcN.d (指向init.d下面的软连接)
/etc/init.d/rc.local
tty
shell
init文件夹 放启动配置文件
init.d文件夹 放启动守护进程
chkconfig工具介绍
chkconfig --list
chkconfig --level N [Service] on/off
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XZxGPfIk-1662001425185)(:/cca6cd8e6984468ebfc703d00f2ecd38)]
更简易的关闭重启服务的方法
方法一:
1,进入/etc/init.d
2,执行 [service] start/stop/restart/status
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SKNLdYAD-1662001425186)(:/3c86bcd328134fafb2ce15190aa1c294)]
方法二:跟方法一原理是一样的,只是做了一个封装
service [service] start/stop/restart/status
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JVcNputt-1662001425186)(:/40c6c4b7454b4a64b80c6a64ee56f292)]
服务器程序的安装思路
1,apt-get install
学会分析程序安装在哪儿了 ,配置文件安装在哪儿了 。
作为新手可以看帮助:
ex. man vsftpd , man vsftpd.conf
熟悉了之后,就知道一般服务类程序都是安装在/sbin/…
我们可以在/etc/init.d/下找到他的映射
可以在/etc/ 或者在 /etc/[name] 下找到他的类似于[name].conf的配置文件
/etc/vsftpd.conf , /etc/vsftpd/vsftpd.conf
ssh 了解使用
ftp 了解使用
samba 了解使用
命令模式 Command Mode
插入模式(编辑模式) Edit Mode
底行模式 Ex Mode
模式之间的切换:
Command -> Edit (i , a , o)
Edit -> Command (ESC)
Command -> Ex (
Ex -> Command (Enter)
Edit -> Ex (can not)
Ex -> Edit (can not)
常用vi命令掌握
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W68HEC2n-1662001425187)(:/50f090522b9a45f7b3a39781a3f77071)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O7nQToVZ-1662001425187)(:/134d8fca09ff4ce1adbd9a3cf1121f1a)]
实操:
shell基础:
#! 指定sh解释程序
#; 注释
关于空格 , = 不加空格 , 运算符要加空格 ,如果记不住就改为:=不加空格 , 其它都加
shell变量:
expr $m + 1
; let m=m+1 ; m=$(( m + 1 ))关于算数优先级,如何考虑?
预定义变量
环境变量
预处理
gcc -E test.c -o test.i
编译
gcc -S test.i -o test.s
汇编
gcc -c test.s -o test.o
链接
gcc test.o -o test
总结
生成可执行程序过程为成四个步骤:
1、由.c文件到.i文件,这个过程叫预处理。
2、由.i文件到.s文件,这个过程叫编译。
3、由.s文件到.o文件,这个过程叫汇编。
4、由.o文件到可执行文件,这个过程叫链接。
编译单个或多个C文件
如果有多个源文件,基本上有两种编译方法:
[假设有两个源文件为test.c和testfun.c]