给老婆写了一份速成培训教材——最经常使用的命令及解释。当然每一个人工作内容不同,经常使用命令也不同,这仅仅是我的个人经验,并且要考虑到接受者的基础。
ls :列出文件夹下的内容,类似于 dos 下的 dir 。
经常使用參数有:
ls –l ,逐行显示具体内容;
ls –a, 显示隐藏的文件或文件夹;—— linux 下,前缀为 . 的文件名称和文件夹名即被默觉得是隐藏文件
參数也能够组合 ls –al ,具体显示包括隐藏文件在内的内容。
当加上 -a 时,会看到两个特殊的文件夹 . 和 .. , . 表示当前文件夹; .. 表示父文件夹
cd :切换文件夹
那么能够想象, cd . 不会有不论什么变化,由于切换到当前文件夹等于没说对吧; cd .. 切换到父文件夹(此时能够看到命令提示符前面的路径是有变化的)
有关 cd 使用还有几个常见使用方法:
cd / 直接一步到“根”( linux 文件系统里根就类似 windows 的 c: d: 等等,仅仅只是不管多少块硬盘和分区, linux 仅仅有唯一的根 / ),那么就不用一次一次的 cd .. 往上退了对么
cd ~ 一步到“家”文件夹。什么是家文件夹呢?在 linux 下,每创建一个用户会自己主动为这个用户安排一个家文件夹,用户对自己的家文件夹拥有全然的读写权限,用户登录之后的默认工作文件夹也是在自己的“家”里( windows 也一样,不信你用一个新帐号登录,立即会看到 c 盘的“用户”文件夹下多出一个和这个帐号名同样的文件夹,里面是“我的文档”“我的图片”“我的视频”之类的东西)
普通使用方法就是 cd a/b/c 这样了,当然此时的 a/b/c 三级文件夹是在当前文件夹下的,这就是相对路径;假设恰好不在当前文件夹下,那就找不到了。仅仅能从“根”写起 cd /xxx/a/b/c ,这就是绝对路径。
上面说了,不管有多少块硬盘多少个分区,都仅仅有一个根,那么假设加一块硬盘,它会放到哪去呢?——答案是你爱放哪就放哪。操作是这种,首先
mkdir : 创建文件夹
使用 mkdir 创建文件夹,用起来相当简单,非常少加參数。 mkdir xxx 就是在当前文件夹下创建一个 xxx 文件夹,假设不在当前文件夹下创建呢?一种方法是用 cd 切换过去;一种方法是用绝对路径 mkdir /xxx/a/b/c/xxx
下一步:把这个新硬盘的某个分区“附加”到我们刚才创建的文件夹下去
mount :挂载设备
mount /dev/sdb1 /xxx/a/b/c/xxx (文件夹好深啊,还真不easy找呢),以后再进到这个文件夹 cd /xxx/a/b/c/xxx , ls 看到的就是新硬盘的内容了。(当然此处我假定新硬盘的编号是 /dev/sdb1 ,至于为什么是这个编号,因为复杂度问题在此就不解释了)
那么如果细点心,你会提出这种疑问——如果我原来的文件夹 /xxx/a/b/c/xxx 不是一个新文件夹,并且里面有内容。那么当我在这个文件夹下挂载新硬盘的时候,原来的东西怎么办呢?——答案是“确实看不见了”。不用惊讶,由于并没有丢,仅仅是看不见了而已。当我们卸载这个设备,它们就又回来了
umount : 卸载设备
umount /dev/sdb1 ,卸载掉了,简单吧。
所以能够有这样一个加密小技巧,对要加密的文件夹挂载一个设备(只是为了加密一个文件夹买块硬盘,这个代价有点高。并且别人一但发现了, umount 一下就暴露了)
或许有人说干嘛弄这么复杂,象 windows 那样自己主动识别,一块硬盘(分区)一个盘符不挺好的吗?其实这样的多根文件夹可能会更麻烦。 Linux “继承”了 unix 的传统,多用于server上,在server上添加、替换(坏)、乃至交换硬盘都非常寻常。想像一下,假设在这台机器上是 d :盘,拿到另外一台机器变 e :盘了,非常多程序跑不起来了,那怎么办?即便是我们个人电脑,假设你常常装机做系统的话,也不少有这些困扰呢。而挂载到文件夹下就easy多了,仅仅要把文件夹树搞一致了,随便怎么增、删、换硬盘都没关系。
想象一下这个场景, /xxx/a/b/c/xxx 文件夹是存放某数据库文件的,据观察增长非常快,硬盘空间告急。不用操心,能够这样做,先把新硬盘 mount 到某个暂时文件夹下 mount /dev/sdb1 /temp ,拷贝或移动原有文件(当然为了保持数据一致性,这会儿停一下数据库) cp/xxx/a/b/c/xxx/* /temp –R ,拷贝完毕后,把硬盘又一次 mount 一个位置 mount /dev/sdb1 /xxx/a/b/c/xxx ,启动数据库,喔,新硬盘用上了,并且对全部的程序、用户全然感知不到变化。假设是 windows 得折腾好久吧 :) 所以还是单根文件夹简单好用。君不见微软如今也提倡磁盘单分区了吗 :)
提到拷贝和移动了——
cp : 拷贝命令
cp a.sh /tmp 拷贝当前文件夹下的 a.sh 文件到 /tmp 文件夹下一份
cp /tmp/a.sh /xxx/a/b/c/c.sh 拷贝 /tmp 文件夹下的 a.sh 到 /xxx/a/b/c 下,而且改名成 c.sh
最经常使用的參数 –R ,表示循环递归操作以下全部子文件夹,大写字母
mv : 移动命令
mv /tmp/a.sh /xxx/a/b/c 移动 /tmp 下的文件 a.sh 到 /xxx/a/b/c 文件夹下,不改名字
mv 的另外使用方法,改名字: mv a.sh b.sh 把 a.sh 改名为 b.sh
不变文件夹,那就是改名字(由于在同一个文件夹下移动嘛)
发现拷贝错了或者拷贝多了,删除呗
rm : 删除文件或文件夹
rm a.sh 删除当前文件夹下的文件 a.sh
rm * -R 删除当前文件夹下全部内容,包含循环递归子文件夹( -R 一定要慎用啊,否则悔之晚矣)
前面提到,别人非常easy发现你新载入的硬盘,那么是怎样发现的呢? df 命令
df : 显示文件系统
df 一下,看,哪块硬盘挂在哪个文件夹下,占用多少空间,剩余多少空间,一目了然。假设想仔细了解倒底那个文件夹或文件占用了我们宝贵的磁盘空间呢, du 命令
du : 查看文件磁盘空间
让我们 cd / 来到根文件夹, du 一下,哇,这哪看的清。逐级列出全部文件和文件夹,好敬业啊。但我们不须要看这么多,仅仅须要知道某一级文件夹占了多少空间即可了,加个參数-- max-depth=1 是显示 1 级, =2 那就是显示两级了。再仔细的使用方法就看帮助吧。顺便提一句,大部分命令后面加參数-- help ,就能够其帮助信息了。
这么多文件,假设想找当中某一个怎么办? find 搜索
find : 查找文件
find 查找能够按名称、按类型、按日期等等,总之强大到让人无法直视。相同,深入学习请看帮助。最经常使用的按名称查找: find–name xxx.sh ,当前文件夹及子文件夹下查找 xxx.sh 文件
为什么我一再拿 .sh 的文件作演示样例呢?由于依照习惯, xxx.sh 的文件是一个 shell 文件(类似于 dos 里的批处理文件 .bat )可以被运行。但它倒底是不是个真的 sh 文件呢?——等等,这话什么意思,难道还有假的 shell 文件吗?当然有可能。 Linux 里不是依照扩展名来区分文件类型的,甚至都不应该用扩展名这个概念。之所以写成 xxx.xxx 是为了迎合 windows 用户的表示方法(当然这样的表示方法也确实不错)。系统是不限制你要不要“扩展名”、写什么字母的。当然,假设硬要把 凤凰传奇 .mp3 改名成 haha.sh ,你肯定是运行不起来的。反过来说,假设把一个 a.sh 改名成 a.xxoo ,一样是能够运行的。那么岂不是文件类型乱作一团?所以嘛,採用大家约定俗成的命名方法还是利人利己的。另外,还能够用命令 file 来查看其真实的文件类型。
file : 查看文件类型
file a.sh ,假设确实是一个 shell 文件,会显示类型为: ASCII text ——是个文本文件(批处理本来就是文本文件, bat 也一样)。那么能够用命令 cat 来查看文件内容
cat : 查看文件内容
cat a.sh 就可以显示内容。假设是用 凤凰传奇 .mp3 改名改成的 a.sh ,那肯定就乱码了。
当然我们还能够用编辑命令编辑它
vi : 编辑文件—— vi 实际上是个编辑软件,限于篇幅不具体介绍,自行 google
好了,说了不少了,做个小样例吧
cd ~ ——来到自己的家文件夹
vi a.sh ——新建并编辑一个 a.sh 文件。按一下字母 i ,进入编辑状态。此时能够输入了。输入 echo $PATH (注意大写和小写),好,加上空格就输入这 10 个字符即可。按 ESC 键,接着输入 :wq
ls –l ——看看是否已经存在 a.sh 这个文件了,假设存在就对了,假设没有,把电脑砸了并大声质问它
这样,我们第一个 shell 脚本文件就写好了。试着运行一下,输入 a.sh 显示“未找到命令”。这是怎么回事呢?明明在的嘛,先别急着砸电脑并质问它。这是由于在 windows 下,系统默认的情况是——先在当前文件夹下查找并运行文件,假设没有,那么就依次到 path 环境变量指定的文件夹去查找并运行。而 linux 由于安全的原因,不在当前文件夹下查找,仅到 PATH 环境变量指定的文件夹去查找。所以,眼看着在这里还显示“未找到命令”。如今我们要运行了,怎么办呢?当然第一种方法就是把当前文件夹加到 PATH 环境变量里,只是这也太麻烦了。另外一种方法就是指定绝对路径(你找不到我就告诉你确切位置),能够这样 /home/xxx/a.sh , xxx 就是当前username相应的家文件夹了;还能够这样, ~/a.sh ,别忘了 ~ 就是我们的家文件夹;还能够这样 ./a.sh ,别忘了 . 就是指当前文件夹(忘了往前翻翻)
这回提示不一样了,显示“权限不够”,至少说明找到文件了。但权限又是怎么回事呢?还是来看一下现有什么权限吧。 Ls-l ,列出具体信息。注意看 a.sh 一行,最前面的字符
-rw-rw-r-- ,去除掉头一个 - ,剩下是 9 个,分三组来看各自是 rw- 、 rw- 、 r-- ,这表示针对三种角色的权限。三种角色是全部者、同组人、其它人(角色划分的确有点不够精细,但也基本够用,关键是角色多了老麻烦了,有兴趣參考 windows 的文件系统的各类角色)。 r 表示读, w 表示写, x 表示运行。那么综合来看,权限是这样划分的:全部者拥有读和写 (rw-) 权限 ,同组人拥有读和写 (rw-) 权限,其它人拥有读权限 (r--) 。看看,大家都没有运行权限。那么怎么加上运行权限呢?命令 chmod
chmod : 改变文件权限
运行 chmod +x a.sh ,表示为 a.sh 文件加上运行权限。这次再看一下 ls -l ,权限变成了 rwxrwxr-x ,分三组就是自己读、写、可运行,同组人读、写、可运行,其它人读、可运行。每一个角色都加上可运行权限了。实际上这样不太安全,相当于全部人都能够运行它,假设想更精细的控制,那么看帮助了解 chmod 具体使用方法。
如今再来运行一下 ./a.sh ,应该能够显示一串字符了。我们输入的命令是 echo $PATH ,所以运行结果是显示 PATH 环境变量里的文件夹,注意是用 : 分隔的, windows 里是 ; 分隔的。能够检查一下,当前文件夹肯定不在里面,否则就不会“未找到命令”了
正在执行的程序在系统里叫做进程。查看有哪些程序在执行中呢?
ps : 查看进程
ps aux 具体显示全部用户进程, PID 表示进程号。当某个进程占用资源太多或陷入失控,我们能够杀掉它, kill
kill : 杀死进程
kill PID
ps 显示的资源信息是静态的,假设想实时观測一下系统资源占用情况,使用 top 命令监控
top : 监控系统资源,显示各进程 cpu 占用,内存占用等信息。默认 5 秒刷新一次,按 q 退出。
好了,这篇粗略 + 速成教程就到此为止了。之所以介绍的不非常具体,命令也不多,并且没有按部就班,是希望看的人知其然更要知其所以然。至于命令的具体操作,事实上帮助是最好的參考资料。何况还有这个更强大 man 命令,想看某个命令的详解和使用方法: man xxx 。
更多文章、技术交流、商务合作、联系博主
微信扫码或搜索:z360901061
微信扫一扫加我为好友
QQ号联系: 360901061
您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。
【本文对您有帮助就好】元