查看: 53908|回复: 72

Linux新手常用命令(值得收藏)

[复制链接]
  • TA的每日心情
    开心
    2017-8-20 11:43
  • 签到天数: 81 天

    [LV.6]常住居民II

    发表于 2015-3-30 11:32:56 来自手机 | 显示全部楼层 |阅读模式
    收集了一些最常用的命令及解释。
    当然每个人工作内容不同,常用命令也不同,这只是我的个人经验,而且要考虑到接受者的基础。
    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 (目录好深啊,还真不容易找呢),以后再进到这个目录cd /xxx/a/b/c/xxx ,ls看到的就是新硬盘的内容了。(当然此处我假定新硬盘的编号是/dev/sdb1,至于为什么是这个编号,由于复杂度问题在此就不解释了)
    那么如果细点心,你会提出这样的疑问——假设我原来的目录/xxx/a/b/c/xxx 不是一个新目录,而且里面有内容。
    那么当我在这个目录下挂载新硬盘的时候,原来的东西怎么办呢?——答案是“确实看不见了”。
    不用吃惊,因为并没有丢,只是看不见了而已。当我们卸载这个设备,它们就又回来了
    umount: 卸载设备
    umount /dev/sdb1 ,卸载掉了,简单吧。
    所以可以有这样一个加密小技巧,对要加密的目录挂载一个设备(不过为了加密一个目录买块硬盘,这个代价有点高。
    而且别人一但发现了,umount一下就暴露了)
    也许有人说干嘛弄这么复杂,象windows那样自动识别,一块硬盘(分区)一个盘符不挺好的吗?事实上这种多根目录可能会更麻烦。
    Linux“继承”了unix的传统,多用于服务器上,在服务器上增加、替换(坏)、乃至交换硬盘都很平常。
    想像一下,如果在这台机器上是d:盘,拿到另外一台机器变e:盘了,很多程序跑不起来了,那怎么办?即便是我们个人电脑,如果你经常装机做系统的话,也不少有这些困扰呢。
    而挂载到目录下就容易多了,只要把目录树搞一致了,随便怎么增、删、换硬盘都没关系。
    想象一下这个场景,/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一定要慎用啊,否则悔之晚矣)
    前面提到,别人很容易发现你新加载的硬盘,那么是如何发现的呢?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就是当前用户名对应的家目录了;还可以这样,~/a.sh,别忘了~就是我们的家目录;还可以这样./a.sh,别忘了.就是指当前目录(忘了往前翻翻)
    这回提示不一样了,显示“权限不够”,至少说明找到文件了。但权限又是怎么回事呢?还是来看一下现有什么权限吧。
    Ls-l ,列出详细信息。注意看a.sh一行,最前面的字符
    -rw-rw-r– ,去除掉头一个-,剩下是9个,分三组来看分别是 rw- 、rw- 、r– ,这表示针对三种角色的权限。
    三种角色是所有者、同组人、其他人
    (角色划分的确有点不够精细,但也基本够用,关键是角色多了老麻烦了,有兴趣参考windows的文件系统的各类角色)。
    r表示读,w表示写,x表示执行。那么综合来看,权限是这样划分的:所有者拥有读和写权限,同组人拥有读和写(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 。
    有时候命令记不清楚了怎么办?——如果只记起命令的前几个字母,按tab键系统会自动补齐;如果补齐的命令不是我们想要的,连续按两次tab键,会把这几个字母开头的命令全列出来,这个时候差不多也该想起来了。
    回复

    使用道具 举报

    头像被屏蔽

    该用户从未签到

    发表于 2015-3-30 17:12:53 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-7-28 16:16
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-3-30 17:35:05 | 显示全部楼层
    gan xie feng xiang ...........
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-21 21:48
  • 签到天数: 40 天

    [LV.5]常住居民I

    发表于 2015-4-10 08:53:43 来自手机 | 显示全部楼层
    学习,永无止境
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-21 21:48
  • 签到天数: 40 天

    [LV.5]常住居民I

    发表于 2015-4-10 08:53:56 来自手机 | 显示全部楼层
    学习,永无止境
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-11-4 22:42
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    发表于 2015-5-6 08:45:51 | 显示全部楼层
    谢谢了.。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-29 01:19:40 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-10-21 10:32
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2015-6-29 11:04:21 | 显示全部楼层
    支持,看起来不错呢!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2015-10-24 10:52
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2015-6-29 17:05:31 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-29 19:16:51 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-11-22 01:20 , Processed in 0.029286 second(s), 14 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部