linux基本命令学习01-阿里云开发者社区

开发者社区> 开发与运维> 正文

linux基本命令学习01

简介: =============================================================================Unix/Linux最主要的应用领域是基础服务器应用,如DNS服务器(域名系统 )、DHCP服务器(动态主机配置协议)、Web服务器(网站服务器)、FTP服务器(文件传输协议)、防火墙等。

=============================================================================
Unix/Linux最主要的应用领域基础服务器应用,
DNS服务器(域名系统 )DHCP服务器(动态主机配置协议)Web服务器(网站服务器)FTP服务器(文件传输协议)防火墙等。

X Window系统不是Unix/Linux操作系统的必须的构成部分,而只是一个可选的应用程序组件。
纯字符界面又叫文本模式。
=============================================================================
-rwxrwxrwx    所有的用户都可读可写可执行
-rwx------      文件的所属用户可以读写执行,但其他用户都不可读写执行
-rwxrwx---     文件的所属用户组内用户可以读写执行,但其他用户不可读写执行
----------        所有的用户都不可读写执行
第一位表示的文件意义:
“-”表示常规文件“d”表示目录“c”表示字符设备文件“b”表示块设备文件“s”表示管道文件“l”表示链接文件

文件存取权限:从左到右每3位为一组,依次代表文件拥有者、同组用户和其他用户的存取权限。
通常文件共有3个权限:“r”表示只读;“w”表示可写;“x”表示可执行;“-”表示未设置。
=============================================================================
linux文件或者目录名称最长可以有265个字符,.代表当前目录,..代表上一级目录,
.开头的文件为隐藏文件,需要用-a参数才能显示。
-a   显示指定目录下所有子目录与文件,包括隐藏文件。
-l     以长格式显示文件的详细信息。
二者也可以结合使用 ,例如: ls -al
=============================================================================
*     代表文件名中所有字符
?    代表文件名中任意一个字符

ls d*     查找以字母d开头的所有的文件
ls a*b        查找以字母a开头,b结尾的所有文件

ls a?         查找a开头,文件名只有2个字母,第二个字符任意的文件名
ls [abc]*    查找a或者b或者c开头,后面任意的文件名
ls [a-f]*      查找从a到f之间开头的任意文件名
ls [1-7]*     查找从1到7之间开头的任意文件名

注意:当“-”处于方括号之外,或“?”和“*”处于方括号内时不用使用转义字符就已失去通配符的作用。如下:
ls [*]     查找以*开头的文件名
ls a-f    查找文件名叫a-f的文件

如果要使通配符作为普通字符使用,可以在其前面加上转义字符\ 如下:
ls \*1    查找*1这个文件名
=============================================================================
重定向命令
>       输出重定向:将某一命令的执行结果重定向到另外一个文件中去
>>       附加输出重定向
<            输入重定向
ls > a.txt   把ls显示的结果存放入文件a.txt中
ls >> a.txt   追加重定向,如果a.txt已经有内容了,不会覆盖已有内容,而是在a.txt后面追加
=============================================================================
more的功能是:显示文件内容,当文件内容太多时,会出现快速滚屏,使得用户无法看清文件的内容,
此时可以使用more命令,每次只显示一页,按下空格键可以显示下一页,按下q键退出显示,按下h键可以获取帮助。
例如:如果一个目录里面有特别多的文件,现在要把所有的文件名显示出来的话,会出现滚屏,如何解决呢?
答:可以使用一个蠢的方法,把该目录重定向某一个文件里面去,在使用more显示该文件的内容。
但是呢,比较麻烦和啰嗦,我们可以一次性完成,使用 | 管道符即可。

|       管道符:一个命令的输出可以通过管道做为另一个命令的输入
ls | more    把ls显示的结果用分屏来显示,即把ls的输出作为more的输入使用
=============================================================================
cd abc  从当前目录下进入abc子目录
cd ..      返回上一级目录,即父目录
cd .       返回当前目录(跟没有操作是一样的)但也是有意义的(随着后面的学习会发现)
cd              后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。
=============================================================================
查看当前目录命令
pwd      显示当前路径,使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入pwd即可,后面不带参数
=============================================================================
mkdir abc  新建立一个文件夹,名字叫abc
rmdir abc  删除文件夹abc,rmdir只能删除空目录,如果目录里面有文件,那么删除失败
rm a.txt     删除文件a.txt
=============================================================================
ln 源文件 链接文件
ln a.txt a        创建一个链接文件,名字叫a,链接到a.txt,创建的是一个硬链接
ln -s 源文件 链接文件
ln -s a.txt b    创建一个链接文件,名字叫b,链接到a.txt,创建的是一个软链接
硬链接会占用磁盘空间,软链接不会,如果目标文件不存在了,那么硬链接文件还可以访问,但软链接就不行了
=============================================================================
cal 查看当前日历
date     显示或设置时间
date '+%y,%m,%d,%H,%M,%S' 年,月,日,时,分,秒
=============================================================================
cat 该命令可以用来查看或者合并文件内容
cat a.txt   查看文件a.txt的内容,但不会自动分屏
cat a1.txt a2.txt > a3.txt   将a1.txt a2.txt的内容合并为a3.txt
=============================================================================
grep hello a.txt      在a.txt中查找字符串hello(指定文件中搜索指定字符内容)
grep printf stdio.h    在stdio.h中查找包含printf的行
grep -v printf stdio.h   在stdio.h中查找不包含printf的行
grep -n printf stdio.h   在stdio.h中查找所有包含printf的行及行号
grep -i printf stdio.h    在stdio.h中查找包含printf的行(忽略大小写式的查找)
grep '^a ' stdio.h       在stdio.h文件中查找以a开头的行
grep ‘a$' stdio.h          在stdio.h文件中查找以a结尾的行
grep '^a.b ' stdio.h    在stdio.h文件中查找以a、任意一个字符和b开头的行
=============================================================================
wc -l a1.txt      计算文件a.txt的行数
wc -w a1.txt     计算文件a.txt的字数
wc -c a1.txt     计算文件a.txt的字符数
=============================================================================
find ./ -name 1.txt    从当前目录开始查找所有的子目录,名字为1.txt
find / -name 1.txt     从根目录开始查找所有的子目录,名字为1.txt
=============================================================================
rm -i 1.txt      询问是否删除掉文件1.txt
rm -f 1.txt      强制删除掉文件1.txt,忽略不存在的文件,无需提示
rm -r 1.txt     递归地删除目录下的内容
rm -rf *          强制删除当前目录下所有的文件和子目录
=============================================================================
cp [参数] 源文件或目录 目标文件或目录
cp ./2/a.txt ./1/a.txt        拷贝当前目录下2目录下的a.txt到当前目录下的1目录下
mv ./2/a.txt ./1/a.txt       将a.txt从当前目录下2目录下移动到当前目录下1目录下
mv 123.txt 1.txt        把123.txt改名为1.txt(文件改名)
=============================================================================
windows下的文件一般都有扩展名,但linux下很多文件没有扩展名,即linux不依靠扩展名来区分文件类型。
windows下所有的文件类型都是通过文件的扩展名实现的。
linux的扩展名只是一个名而已,不代表文件类型。
-----------------------------------------------------------------------------
file 1.exe 该命令得到文件类型
=============================================================================
clear    linux的清屏
cls             windows的清屏
=============================================================================
ps -a    显示终端上的所有进程,包括其他用户的进程
ps -u    显示进程的详细状态
ps -x    显示没有控制终端的进程
ps -w   显示加宽,以便显示更多的信息
ps -r    只显示正在运行的进程
ps -aux     查看所有的进程,包括前端后台 。注意:参数中的 - 可以有,也可以没有哦
=============================================================================
top命令    该命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。
可以在使用top命令时加上-d <interval>来指定显示信息更新的时间间隔。
=============================================================================
keil 端口号    强行终止一个程序
=============================================================================
思考题:如何把显示的内容显示成我所想要的。
多个命令结合起来用(小技巧)
ls -l | grep '^d'   只把目录显示出来
ls -l | grep '^-'    只把文件显示出来
=============================================================================
whoami 该命令用于查看当前系统当前账号的用户名
使用该命令的原因:
由于系统管理员通常需要使用多种身份登录系统,(因为linux是一个多用户系统)
例如通常使用普通用户登录系统,然后再以su命令切换到root身份对系统进行管理。
这时候就可以使用whoami来查看当前用户的身份
----------------------------------------
who命令
该命令用于查看当前所有登录系统的用户信息
----------------------------------------
w命令
该命令也可以查看登录当前系统的用户信息。
与who命令相比,w命令的功能更强大,它不但可以显示当前有哪些用户登录到系统,
还可以显示这些用户正在进行的操作,并给出更加详细和科学的统计数据。
=============================================================================
tar -cvf a.tar a   将目录a打包为文件a.tar,不压缩(注意:其参数前面可以使用“-”,也可以不使用。)
tar -xvf a.tar      将a.tar还原
tar -t a.tar          列出a.tar中包含的文件
=============================================================================
gzip a.tar      将a.tar进行压缩,得到a.tar.gz(此压缩比很高的)
gzid -d a.tar.gz   解压缩,得到a.tar
tar -xvf a.tar       将a.tar还原,得到里面的文件
=============================================================================
先用tar打包,然后用gzip压缩
先用gzip解压,然后用tar提取文件
=============================================================================
命令行情况下如何同时执行多个程序?怎么做呢?(即后台作业方法)
法一:若该程序想要一开始就放到后台去执行,则使用 命令& 例如:vi & 、top & (但注意top & 会被终止掉)
法二:若该程序已经在执行的话,先使用ctrl+z可以将程序调入后台,再用jobs 查看后台运行的程序,
再通过 fg 编号 回到之前的程序
=============================================================================
man 在通常使用man命令的时候,不用携带选项,即可直接查询命令帮助手册获得查询命令准确的用法。 
=============================================================================
reboot     用于重新启动操作系统
init 6        用于重新启动操作系统

shutdown –r now    立刻重启,但有提示
shutdown –h now   立刻关机,但有提示

init 0    立刻关机,但无提示

init 3    切换到命令行模式
init 5    切换到x windows模式
=============================================================================
df命令     用于检测文件系统的某一磁盘空间占用和空余情况
du命令    用于统计某一目录或文件所占磁盘空间的大小
mkfs命令    该命令相当于DOS/Windows系统中的格式化命令,用于创建指定的文件系统
=============================================================================
用rpm工具安装应用软件(参数组合使用)但不同的linux具有不同的安装卸载软件方法。
rpm -ivh     要安装的安装包文件名
=============================================================================
在Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,
并且对于不同的系统资源拥有不同的使用权限。

标准账号是操作系统安装时,自动建立的用户启动相应的应用程序,超级用户在向系统添加普通用户的时候,
不能和系统中已有的标准用户同名。

在大多数版本的Unix/Linux中,都不推荐直接使用root账号登录系统。

当系统管理员需要从普通用户切换到超级用户时,可使用susu -命令,然后输入root账号的密码即可,而不用重新登录。
=============================================================================
有一个问题:ubuntu下安装的时候默认是不设置root密码的,但切换到root用户的时候又需要提供root密码,如何解决呢?
答:执行命令设置root密码:sudo passwd root回车 后在输入密码即可设置完毕root用户的密码。
若需要返回原来的普通用户账号时,直接输入exit命令即可。
(注意:Centos和RedHat在安装的时候就已经让你设置root密码了)

如果要进入别的普通用户账号,可在su命令后直接加上其他账号,然后输入密码。

如果su命令后没有携带用户名,系统默认从当用户切换到超级用户,并提示用户输入超级用户口令。

su和su –命令不同之处在于,su -切换到对应的用户时会将当前的工作目录自动转换到切换后的用户的主目录。
=============================================================================
添加用户或者组时,只有root用户才有这个权限。
=============================================================================
添加/删除一个组:
groupadd abc    添加一个组,名字叫abc
groupdel abc      删除一个组,
=============================================================================
添加一个用户账号:
-d的意思是:指定用户的主目录,什么是用户主目录呢?就是用户第一次登陆的时候默认的目录。
linux的主目录一般都设置在根目录的home目录下,这不是系统的要求,只是一个规则。(很重要)
-----------------------------------------------------------------------------
要求:增加一个用户,用户名叫aabb,指定用户的主目录在/home/aabb,(注意:主目录的目录名和用户名一般是相同的)
-m意思是:如果-d指定的主目录不存在,那么就自动创建这个主目录。例子如下:
-----------------------------------------------------------------------------
useradd -d /home/aabb aabb -m    添加一个用户,用户名叫aabb。
userdel aabb        将aabb用户删除,注意:指定用户的主目录还在哦。
userdel -r aabb     删除aabb用户,同时自动删除用户的主目录。

useradd -d /home/aabb aabb -m -g abc   添加一个用户aabb,主目录在/home/aabb目录,该用户在组abc中。

-g的意思是:指定组的名称
-----------------------------------------------------------------------------
注意:每添加一个用户账号后需要设置密码。
在Unix/Linux中,超级用户可以使用passwd命令为普通用户设置或修改用户口令。
用户也可以直接使用该命令来修改自己的口令,而无需在命令后面使用用户名。命令如下:
passwd aabb 设置用户aabb的密码
=============================================================================
切换用户的命令
su 用户名
su - 用户名
su的时候不加-,只切换用户,但不改变当前目录。
su的时候加-,切换用户,同时将当前目录切换到目标用户的主目录下。
-----------------------------------------------------------------------------
如果用root su到其他用户,那么不需要输入其他用户密码即可进入。
但如果普通用户之间su的话(即:切换)则必须输入密码。
退出登录exit。
-----------------------------------------------------------------------------
如果要su到root下
su root  但也可以省略root,直接su。
su       只切换用户到root,不改变当前目录。
su -       切换用户到root,同时将当前目录修改为root用户的主目录。
=============================================================================
useradd -d /home/aabb aabb -m    添加一个用户aabb,主目录在/home/aabb目录,该用户在没有指定组名。
如果创建用户的时候没有指定组名,那么系统默认会创建一个和用户名相同的组名,同时把这个用户放到这个组里面。
-----------------------------------------------------------------------------
示例:登录 zhujy 用户 -》 登录 aabbcc 用户-》 登录 root 用户
只有一个用户退出登录后才能删除这个用户,一个已经登录的用户是无法删除。
-----------------------------------------------------------------------------
如何知道(或查看)系统的用户和组?
答:用root登录系统,然后进入根目录下的etc目录,查看shadow文件内容:cat shadow 和 cat passwd。
-----------------------------------------------------------------------------
查看用户最后一次进入系统状态命令 last
不管是哪位用户从哪里登录,管理员都可以通过last命令查出,以及是否有人非法登录。
-----------------------------------------------------------------------------
注意:linux下命令“ll”是“ls -l"的别名。别名相当于windows里的快捷方式。 所以"ll"和“ls -l”的功能是相同的。
所以"ll"和"ls"的区别其实是“ls”和"ls -l"的区别。”ls“是显示当前目录下文件,”ls -l“是显示当前目录下文件详细信息。
=============================================================================

我的GitHub地址:https://github.com/heizemingjun
我的博客园地址:http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址:http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章