目录
20. tar指令(重要):打包/解包,不打开它,直接看内容
23.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
Linux下基本指令
1.is指令
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-d 将目录像文件一样显示,而不是显示其下的文件。 如: ls –d 指定目录-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件-k 以 k 字节的形式表示文件的大小。 ls –alk 指定文件-l 列出文件的详细信息。-n 用数字的 UID,GID 代替名称。 (介绍 UID , GID )-F 在每个文件名后附上一个字符以说明该文件的类型, “*” 表示可执行的普通文件; “/” 表示目录; “@” 表示符号链接;“|” 表示 FIFOs ; “=” 表示套接字 (sockets) 。(目录类型识别)-r 对目录反向排序。-t 以时间排序。-s 在 l 文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)-R 列出所有子目录下的文件。 ( 递归 )-1 一行只输出一个文件。
ls -a 显示Linux系统中的隐藏文件
创建一个隐藏文件,只有通过ls -a才能看到。.表示当前路径,..表示上级路径
2.pwd命令
3.cd指令
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~:进入用户家目
cd -:返回最近访问目录
4.touch指令
-a 或 --time=atime 或 --time=access 或 --time=use 只更改存取时间。-c 或 --no-create 不建立任何文档。-d 使用指定的日期时间,而非现在的时间。-f 此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题。-m 或 --time=mtime 或 --time=modify 只更改变动时间。-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。-t 使用指定的日期时间,而非现在的时间。
在文件mytest.c中编写程序:最后还要加上./a.out指令来执行编写的程序
*5.touch指令
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在 , 加上此选项后 , 系统将自动建立好那些尚不存在的目录, 即一次可以建立多个目录 ;
mkdir –p test/test1 : 递归建立多个目录
*6.rmdir指令&&rm指令
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
常用选项:
-f 即使文件属性为只读 ( 即写保护 ) ,亦直接删除-i 删除前逐一询问确认-r 删除目录及其下所有文件
*7.man指令
-k 根据关键字搜索联机帮助num 只在第 num 章节找-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用 a 选项,当按下q 退出,他会继续往后面搜索,直到所有章节都搜索完毕。解释一下 , 面手册分为 8 章1 是普通的命令2 是系统调用 , 如 open,write 之类的 ( 通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)3 是库函数 , 如 printf,fread4 是特殊文件 , 也就是 /dev 下的各种设备文件5 是指文件的格式 , 比如 passwd, 就会说明这个文件中各个字段的含义6 是给游戏留的 , 由各个游戏自己定义7 是附件还有一些变量 , 比如向 environ 这种全局变量在这里就有说明8 是系统管理用的命令 , 这些命令只能由 root 使用 , 如 ifconfifig
*8.cp指令
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在-i 或 --interactive 覆盖文件之前先询问用户-r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理-R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
*9.mv指令
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
举例
将rm改造成mv
vim ~/.bashrc #修改这个文件
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile() {
mv -i ~/.trash/\$@ ./
}
trash() {
mv $@ ~/.trash/
}
10.cat
-b 对非空输出行编号-n 对输出的所有行编号-s 不输出多行空行
11.more指令
-n 对输出的所有行编号q 退出 more
[atong@LiWenTong ~]$ ls -l / | more
total 162
drwxr-xr-x 2 root root 4096 Apr 25 05:39 bin
drwxr-xr-x 4 root root 1024 Apr 25 04:11boot
drwxr-xr-x 9 root root 3820 May 4 23:20 dev
drwxr-xr-x 84 root root 4096 May 5 00:37 etc
*12.less指令(重要)
ess 工具也是对文件或其它输出进行分页显示的工具,应该说是 linux 正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
语法: less [参数] 文件
功能: less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
选项:
-i 忽略搜索时的大小写-N 显示每行的行号/ 字符串:向下搜索 “ 字符串 ” 的功能? 字符串:向上搜索 “ 字符串 ” 的功能n :重复前一个搜索(与 / 或 ? 有关)N :反向重复前一个搜索(与 / 或 ? 有关)q:quit
13.head指令
-n< 行数 > 显示的行数
14.tail指令
-f 循环读取-n< 行数 > 显示行数
举例:(简单讲解重定向和管道)
有一个文件共有100行内容,请取出第50行内容<br>
seq 1 100 > test # 生成1到100的序列装入test
方法1 head -n50 test > tmp #将前50行装入临时文件tmp
tail -n1 tmp #得到中建行
方法2 head -n50 test | tail -n1
15.时间相关的指令
%H : 小时 (00..23)%M : 分钟 (00..59)%S : 秒 (00..61)%X : 相当于 %H:%M:%S%d : 日 (01..31)%m : 月份 (01..12)%Y : 完整年份 (0000..9999)%F : 相当于 %Y-%m-%d
date -s // 设置当前时间,只有 root 权限才能设置,其他只能查看。date -s 20080523 // 设置成 20080523 ,这样会把具体时间设置成空 00:00:00date -s 01:01:01 // 设置具体时间,不会对日期做更改date -s “01:01:01 2008-05-23″ // 这样可以设置全部时间date -s “01:01:01 20080523″ // 这样可以设置全部时间date -s “2008-05-23 01:01:01″ // 这样可以设置全部时间date -s “20080523 01:01:01″ // 这样可以设置全部时间
16.cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
-3 显示系统前一个月,当前月,下一个月的月历-j 显示在当年中的第几天(一年日期按天算,从 1 月 1 号算起,默认显示当前月在一年中的天数)-y 显示当前年份的日历
Cal –y 2018
*17.find指令:-name
Linux 下 fifind 命令在目录结构中搜索文件,并执行指定的操作。Linux 下 fifind 命令提供了相当多的查找条件,功能很强大。由于 fifind 具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统 ( NFS) , fifind 命令在该文件系统中同样有效,只你具有相应的权限。在运行一个非常消耗资源的 fifind 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间( 这里是指 30G 字节以上的文件系统 ) 。
-name 按照文件名查找文件
18.grep指令
linux grep命令详解 - ggjucheng - 博客园
-i :忽略大小写的不同,所以大小写视为相同-n :顺便输出行号-v :反向选择,亦即显示出没有 ' 搜寻字符串 ' 内容的那一行
19.zip/unzip指令
将test2目录压缩:zip test2.zip test2/*
解压到 tmp 目录: unzip test2.zip -d /tmp
20. tar指令(重要):打包/解包,不打开它,直接看内容
-c :建立一个压缩文件的参数指令 (create 的意思 ) ;-x :解开一个压缩文件的参数指令!-t :查看 tarfifile 里面的文件!-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!-C : 解压到指定目录
案例:
范例一:将整个 /etc 目录下的文件全部打包成为 `/tmp/etc.tar`
[root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
上述指令在执行的时候,会显示一个警告讯息:
『`tar: Removing leading `/" from member names`』那是关於绝对路径的特殊设定。
范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,就得要加上 z 这个参数了!这很重要的!
范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,
我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,
则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc
则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!
范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,
就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!
范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!
范例六:在 /home 当中,比 2005/06/01 新的文件才备份
[root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home
范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
这分别代表 standard output, standard input 与管线命令啦!
解压到指定路径
21.bc指令
22.uname -r指令
-a 或 –all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
23.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
[Tab] 按键 --- 具有『命令补全』和『档案补齐』的功能[Ctrl]-c 按键 --- 让当前的程序『停掉』[Ctrl]-d 按键 --- 通常代表着:『键盘输入结束 (End Of File, EOF 戒 End OfInput) 』的意思;另外,他也可以用来取代exit
24.关机
-h : 将系统的服务停掉后,立即关机。-r : 在将系统的服务停掉之后就重新启动-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
扩展命令
◆ 安装和登录命令 : login 、 shutdown 、 halt 、 reboot 、 install 、 mount 、 umount 、 chsh 、 exit 、 last ;◆ 文件处理命令: fifile 、 mkdir 、 grep 、 dd 、 fifind 、 mv 、 ls 、 diffff 、 cat 、 ln ;◆ 系统管理相关命令 : df 、 top 、 free 、 quota 、 at 、 lp 、 adduser 、 groupadd 、 kill 、 crontab ;◆ 网络操作命令 : ifconfifig 、 ip 、 ping 、 netstat 、 telnet 、 ftp 、 route 、 rlogin 、 rcp 、 fifinger 、 mail 、 nslookup ;◆ 系统安全相关命令: passwd 、 su 、 umask 、 chgrp 、 chmod 、 chown 、 chattr 、 sudo ps 、 who ;◆ 其它命令: tar 、 unzip 、 gunzip 、 unarj 、 mtools 、 man 、 unendcode 、 uudecode 。
shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
将使用者的命令翻译给核心( kernel )处理。同时,将核心的处理结果翻译给使用者。