文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Linux命令、文件管理

2023-06-05 20:18

关注

Linux命令  文件管理 用户管理

一、linux命令

    命令语法通用格式    #COMMAND OPTION ARGUMENTS
1、命令的含义:发起一命令:就是请求内核将某个二进制程序运行为一个进程; 命令是一个可执行的二进制程序文件,有可能会调用共享文件库。
[root@localhost tmp]# file /bin/ls   -----查看ls文件类型/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0xec333a104e045327c5e3d0ca6dda16c610a210f3, stripped
     程序-->进程     静态-->动态 (有生命周期)
    file  文件: 查询文件类型信息;    ldd:可以查看一个可执行程序依赖的共享库;
[root@localhost tmp]# ldd /bin/lslinux-vdso.so.1 =>  (0x00007fffb81fe000)libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f7882e89000)libcap.so.2 => /lib64/libcap.so.2 (0x00007f7882c84000)libacl.so.1 => /lib64/libacl.so.1 (0x00007f7882a7a000)libc.so.6 => /lib64/libc.so.6 (0x00007f78826b9000)libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f7882458000)libdl.so.2 => /lib64/libdl.so.2 (0x00007f7882253000)/lib64/ld-linux-x86-64.so.2 (0x00007f78830c3000)libattr.so.1 => /lib64/libattr.so.1 (0x00007f788204e000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7881e32000)
    库: 别人写好的现有的,成熟的,可以复用的代码,可以使用但要遵守许可协议;      静态库的后缀是.a;      动态库(共享库)的后缀是.so,它由gcc加特定参数编译产生;

 如何定位共享库文件?新安装一个库之后如何让系统识别?Linux中如何创建静态库和动态库,以及使用它们?

            详细可参考:https://www.cnblogs.com/yangg518/p/5842651.html

   

2、系统程序存放路径:   /bin; /sbin; /usr/bin; /usr/sbin; /usr/local/bin; /usr/local/sbin;   普通命令:/bin; /usr/bin; /usr/local/bin;    管理命名:/sbin;  /usr/sbin; /usr/local/sbin;   共享库文件: /lib; /lib64; /usr/lib;/usr/lib64; /usr/local/lib; /usr/local/lib64;   注意:并非所有的命令都有一个在某个目录与之对应的可执行程序文件。

    3、命令的类别:以是否有可执行文件来区分。

   查看命令的类型及位置:type COMMAND    内置命令: 由shell程序自带的命令; builtin   [root@localhost bin]# type printf    printf is a shell builtin
      外部命令: 独立的可执行程序文件,文件即命令:    [root@localhost bin]# type zip    zip is /bin/zip

shell

       shell程序是独特的程序,负责解析用户提供的命令;

        环境变量:PATH

[root@localhost bin]# echo $PATH/usr/java/jdk1.6.0_45/bin:/bin:/usr/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
PATH:从路径中查找用户键入的命令字符串所对应的命令文件:查找的顺序是,自左向右,以第一次查找到的命令为止。    OPTIONS:     两种表现形式:     短选项; 如  -l  -d (注意有些选项没有-);可合并,如 -ld;     长选项: 如  --word  ; 不能合并;
    ARGUMENTS: 命令作用对象,对何生效      部分可以带多个参数,以空白字符分开,如
[root@localhost bin]# ls /tmp /etc/ssh/etc/ssh:moduli       ssh_host_ecdsa_key      ssh_host_ed25519_key.pubssh_config   ssh_host_ecdsa_key.pub  ssh_host_rsa_keysshd_config  ssh_host_ed25519_key    ssh_host_rsa_key.pub/tmp:2004-02-29 16:21:42  script2017-02-29 16:21:42  sort.txt2017-4-5      systemd-private-1f0c154d3be34ae4bc6670cd76168c21-colord.service-NOKmzLcat        systemd-private-1f0c154d3be34ae4bc6670cd76168c21-rtkit-daemon.service-ekYjoAfatabmy      vmware-rootfunctions     yum_save_tx.2019-06-24.08-11.VV74Ze.yumtxglfstab      yum_save_tx.2019-06-25.16-52.9YerbK.yumtxmagedu.com
语法格式:尖括号< >:必选参数,实际使用时应将其替换为所需要的参数大括号{ }:必选参数,内部使用,包含此处允许使用的参数方括号[ ]:可选参数,在命令中根据需要加以取舍小括号( ):指明参数的默认值,只用于{ }中竖线|:a|b|C ;用于分隔多个互斥参数,含义为“或”,使用时只能选择一个。省略号...:任意多个参数。

    5、获取命令帮助

   内置命令:  help COMMAND   所有命令:     1) 命令自带简要格式的使用帮助       # COMMAND --help
[root@localhost bin]# mke2fs --helpmke2fs: invalid option -- '-'Usage: mke2fs [-c|-l filename] [-b block-size] [-C cluster-size][-i bytes-per-inode] [-I inode-size] [-J journal-options][-G flex-group-size] [-N number-of-inodes][-m reserved-blocks-percentage] [-o creator-os][-g blocks-per-group] [-L volume-label] [-M last-mounted-directory][-O feature[,...]] [-r fs-revision] [-E extended-option[,...]][-t fs-type] [-T usage-type ] [-U UUID] [-jnqvDFKSV] device [blocks-count]
 2) 手册查询帮助:  manual COMMAND   或者  man COMMAND              手册位于: /usr/share/man      ----需要有手册      手册为压缩格式文件,有章节CHAPTER之分: man1;  man2;  man3......        1:  用户命令        2: 系统调用        3: C库调用        4: 设备文件及特殊文件        5: 文件格式(配置文件格式)        6: 游戏使用帮助;        7: 杂项        8: 管理工具及守护进程;系统管理员手册。
       # whatis COMMAND      ---查询命令有哪个CHAPTER手册        # man CHAPTER COMMAND ---指定查询CHAPTER的手册;         -M /PATH/         ---到指定目录查找手册;
[root@localhost bin]# whatis passwdsslpasswd (1ssl)     - compute password hashespasswd (1)           - update user's authentication tokenspasswd (5)           - password file[root@localhost bin]# man 5 passwdPASSWD(5)   Linux Programmer's Manual   PASSWD(5)NAMEpasswd - password file
    手动更新man的数据库:   # makewhatis
   # info COMMAND   查看该命令的info帮助文档
      应用程序自带文档: /usr/share/doc/APP-VERSION
google 搜索查询:    keyword  filetype :pdf    指定文档类型;    keyword  site:domain       指定网站;

    6、命令别名

  外部命令可以起别名,可以与原名相同,若相同,则原名被隐藏。
[root@localhost dev]# type ls      ls is aliased to `ls --color=auto'       -----ls是ls --color=auto的别名[root@localhost dev]# alias         -----查询别名alias cp='cp -i'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias mv='mv -i'alias rm='rm -i'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'[root@localhost dev]# unalias ls   -----撤销别名[root@localhost dev]# aliasalias cp='cp -i'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias mv='mv -i'alias rm='rm -i'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'[root@localhost dev]# type ls    ----看到了ls是外部命令,ls is hashed (/bin/ls)[root@localhost dev]# alias ls='ls --color=auto'  -----加回去
   要执行别名的原命令,使用\COMMAND;    别名设置是对当前的shell有效

常用命令

 pwd: 当前目录
 cd:  cd 或者 cd ~  切换到家目录  cd -  切换到上一个目录     隐含了两个变量: $PWD; $OLDPWD
[root@localhost tmp]# echo $PWD/tmp[root@localhost tmp]# echo $OLDPWD/bin[root@localhost tmp]# cd -/bin[root@localhost bin]# cd -/tmp

        

        ls:ls [OPTION]... [FILE]... 

           -l

               如:

               -rw-r--r--. 1 root  root    18281 Jun  4 06:08 functions

               文件类型: -; d; b; c; l; s; p

               -rw-rwxr--:   权限

                      左: user; 宿主;

                      中: group  宿组;

                      右: other  其它用户;

               18281: 字节;(注意,目录的大小不代表它下一级所有文件的大小之和,谨代表它自己)

               4:    硬连接数;       

           -h  文件大小换算;

           -d  查看目录自身

               [root@localhost tmp]# ls -ld /tmp

   drwxrwxrwt. 13 root root 4096 Jul  7 01:29 /tmp

           -r 逆序显示;

           -R 递归显示所有;

        cat:查看文本文件(去看二进制文件,乱码一堆)

           cat [OPTION]... [FILE]...

           -n: 编行号显示;

           -E: 显示结束符;

        tac:cat的逆序;

        file: 查看文件类型;

        echo:

            echo [SHORT-OPTION]... [STRING]...

               -e 显示转义字符   \n 换行    \t 制表符

                STING 用单引号和双引号

                      单引号: 强引用 变量引用不执行替换;

                      双引号: 弱引用 变量引用会被替换

        

        wall : 发消息

        日期命令:

            date 

             显示系统时间 

              +FORMAT

                +%F  ;full date; same as %Y-%m-%d

                +%T  : time; same as %H:%M:%S

                +%S  :seconds since 1970-01-01 00:00:00 UTC

                 -       : (hyphen) do not pad the field

[root@localhost script]# dateSun Jul  7 02:00:35 PDT 2019[root@localhost script]# date +%F2019-07-07[root@localhost script]# date +%T02:05:31[root@localhost script]# date +%s1562490341

             设定系统时间 

               date [MMDDhhmm[[CC]YY][.ss]

        Linux系统启动从硬件读取时间和日期,读取完成后,这日期时间就不再与硬件项相关联了。

            系统时钟:

            硬件时钟:

        hwclock : query or set the hardware clock 显示或设置硬件时钟

          -s :   Set the System Time from the Hardware Clock   硬为准

          -w :   Set the Hardware Clock to the current System Time  系统为准

        cal;   display a calendar

           cal [options] [[[day] month] year]

    练习:在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

[root@localhost mk]# echo "tfile-/date"       -----命令date无执行,引用命令结果要$(COMMAND)tfile-/date[root@localhost mk]# echo "tfile-$(date)"      ----- date的格式要处理tfile-Sun Jul  7 07:24:53 PDT 2019[root@localhost mk]# echo "tfile-$(date +%F-+%H-+%M-+%S)"  ----- 这个+一个就足够了tfile-2019-07-07-+07-+25-+45[root@localhost mk]# echo "tfile-$(date +%F-%H-%M-%S)" ----- 结果快出来了tfile-2019-07-07-07-25-59[root@localhost mk]# touch "tfile-$(date +%F-%H-%M-%S)"[root@localhost mk]# lsmydir  tfile-2019-07-07-07-26-18

          

二、文件管理

文件类型

    -常规文件,即file

d目录文件

bblock device 即块设备文件,如硬盘;支持以block为单位进行随机访问

ccharacter device 即字符设备文件,如键盘支持以character为单位进行线性访问

    major number: 主设备号,用于标识设备类型,加载驱动;

    minor number: 次设备号,用于标识同一设备类型的不同设备.

[root@localhost dev]# ls -l /dev |grep sdabrw-rw----. 1 root disk      8,   0 Jul  3 07:14 sdabrw-rw----. 1 root disk      8,   1 Jul  3 07:14 sda1brw-rw----. 1 root disk      8,   2 Jul  3 07:14 sda2brw-rw----. 1 root disk      8,   3 Jul  3 07:14 sda3

lsymbolic link 即符号链接文件,又称软链接文件

ppipe 即命名管道文件

ssocket 即套接字文件,用于实现两个进程进行通信   -----这个套接字当时写TCP通讯程序非常熟悉,现在全忘了!

常用命令

    mkdir: make directories创建目录

      -p : 自动创建父目录

[root@localhost tmp]# mkdir /tmp/mk/mydirmkdir: cannot create directory ‘/tmp/mk/mydir’: No such file or directory[root@localhost tmp]# mkdir -p /tmp/mk/mydir   -----创建成功

      -v :  verbose 显示创建过程

      -m : 设置权限

    rmdir:  remove empty directories 删除目录

      -P :  删除某目录,若父辈为空,则一并删除;rmdir -p a/b/c' is similar to 'rmdir a/b/c a/b a'

    tree : 显示目录层次

      -L level 显示指定层组,如 tree -L 3 

    

    练习:

        1)创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b。

          利用{}分组,可承载以逗号为分割的路径列表

[root@localhost mk]# mkdir /tmp/a{1{a,b},2}[root@localhost mk]# cd /tmp/[root@localhost tmp]# tree ├── a1a├── a1b├── a2 [root@localhost tmp]# mkdir -pv /tmp/a{1/{a,b},2}     ----r若不带p,则显示mkdir:cannotcreate directory ‘/tmp/a1/a’: No such file or directormkdir: created directory ‘/tmp/a1’mkdir: created directory ‘/tmp/a1/a’mkdir: created directory ‘/tmp/a1/b’mkdir: created directory ‘/tmp/a2

2)在/tmp目录下创建目录:x_y, x_z, q_y, q_z

[root@localhost tmp]# mkdir -pv /tmp/{x,q}/{y,z}mkdir: created directory ‘/tmp/x’mkdir: created directory ‘/tmp/x/y’mkdir: created directory ‘/tmp/x/z’mkdir: created directory ‘/tmp/q’mkdir: created directory ‘/tmp/q/y’mkdir: created directory ‘/tmp/q/z’[root@localhost tmp]# mkdir -pv /tmp/{x,q}_{y,z}mkdir: created directory ‘/tmp/x_y’mkdir: created directory ‘/tmp/x_z’mkdir: created directory ‘/tmp/q_y’mkdir: created directory ‘/tmp/q_z’

文件的数据信息及查询

    文件查看工具:

        cat;tac; less; more; head; tail;

        tail : - output the last part of files 显示文件尾部n行,默认10行。 

           tail -20  somefile

           -f : output appended data as the file grows;  -----通常用于追踪转化为后台应用程序的日志;

    文件包含两类数据: 元数据+正文实际数据

        元数据Metadata:描述数据的数据,即数据属性(property)信息,

                                    如大小、权限、宿主宿组、时间戳、数据块的分布信息(inode)等

            时间戳:

                access time :  ATime    数据最后一次读取时间;

                modify time :  MTime    数据最后一次更改时间;

(当实际数据更改了,并不一定会产生读取!,如重定向>>输入)

                change time :   CTime    元数据最后一次更改时间;

(实际数据更改了,这个就一定会跟着变,但是如果你是用touch去修改数据戳,就不会跟着变)

     查看文件数据信息: stat file

[root@localhost tmp]# stat glfstab File: ‘glfstab’Size: 0               Blocks: 0          IO Block: 4096   regular empty fileDevice: 803h/2051d      Inode: 103529576   Links: 1Access: (0644/-rw-r--r--)  Uid: ( 1002/   user1)   Gid: ( 1002/   user1)Context: unconfined_u:object_r:user_tmp_t:s0Access: 2019-06-23 06:31:29.863083244 -0700Modify: 2019-06-23 06:31:29.863083244 -0700Change: 2019-06-23 08:40:41.242916831 -0700 Birth: -

    修改文件时间戳的信息: 

          touch [OPTION]... FILE...   改变时间戳,默认为当下,CTime无法指定更换,文件不存在则创建文件

                  -a  ATime;

                  -m  MTime;    

                        human readable date string such as "Sun, 29 Feb2004 16:21:42 -0800" or "2004-02-29 16:21:42" or

 even "next Thursday"

                   -c  CTime  do not create any files

                    -t  指定时间;  [[CC]YY]MMDDhhmm[.ss]

                    

[root@localhost tmp]# touch -t 201707070707 glfstab [root@localhost tmp]# stat glfstab File: ‘glfstab’Size: 0        Blocks: 0    IO Block: 4096   regular empty fileDevice: 803h/2051d      Inode: 103529576   Links: 1Access: (0674/-rw-rwxr--)  Uid: ( 1002/   user1)   Gid: ( 1002/   user1)Context: unconfined_u:object_r:user_tmp_t:s0Access: 2017-07-07 07:07:00.000000000 -0700Modify: 2017-07-07 07:07:00.000000000 -0700Change: 2019-07-06 22:38:48.310288863 -0700 Birth: -[root@localhost tmp]# echo "be a test" >> glfstab   (用vim修改,Atime必然跟着MTime而变,用>>,ATim不变)[root@localhost tmp]# stat glfstab File: ‘glfstab’Size: 28       Blocks: 8     IO Block: 4096   regular fileDevice: 803h/2051d      Inode: 103529576   Links: 1Access: (0674/-rw-rwxr--)  Uid: ( 1002/   user1)   Gid: ( 1002/   user1)Context: unconfined_u:object_r:user_tmp_t:s0Access: 2019-07-06 22:40:43.228353962 -0700Modify: 2019-07-06 22:42:30.142275224 -0700Change: 2019-07-06 22:42:30.142275224 -0700 Birth: -

文件管理工具

    cp: 

       单--->单(可重命名) ----通常用来备份文件

       多(用{})--->目录

       -i :交互

       -n : do not overwrite an existing file

       -f :强制复制,不询问覆盖性的复制

       -R -r: 递归复制目录

    mv: move (rename) files    -----你说这东西拷到一半出故障了,目录两边各一部分内容,怎么还原呢?

                                                     ctrl+c ctrl+V 比直接ctrl+X安全

       -b :  like --backup but does not accept an argument    -----这个也安全

    

    rm:remove files or directories    -----危险动作,还是先mv到临时文件夹,过段时间在临时文件夹rm安全

       -i : 交互

       -f : force

       -R -r : recursive;递归删除

       删除目录 rm -rf   

       严重警告 :

              在root的权限下输入此命令,极容易出现rm -rf / 的操作,所有都没有了,因此最后对其限制或者用别名。

              root权限危险,rm危险,两者结合很危险。

    练习:复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

[root@localhost tmp]# cp -rv  /etc/[p]*[^[[:digit:]]] /tmpcp: cannot stat ‘/etc/[p]*[^[[:digit:]]]’: No such file or directory[root@localhost tmp]# cp -rv  /etc/[p]*[^[:digit:]] /tmp  ‘/etc/pam.d’ -> ‘/tmp/pam.d’‘/etc/pam.d/config-util’ -> ‘/tmp/pam.d/config-util’‘/etc/pam.d/other’ -> ‘/tmp/pam.d/other’‘/etc/pam.d/chfn’ -> ‘/tmp/pam.d/chfn’‘/etc/pam.d/chsh’ -> ‘/tmp/pam.d/chsh。。。。。
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯