文章目录
前言
本文是我阅读了《linux命令行大全》之后做的读书笔记,目的在于方便自己的复习回顾,如果有朋友想复习一下linux的内容,也可以按照我博客的内容过一遍,此外,我认为没写过linux的朋友也可以看这篇博客作为入门
LINUX命令行大全
学习shell
基本的
date
显示日期
cal
显示日历
df
查看磁盘驱动器当前的可用空间
free
显示可用内存
exit
结束终端会话
pwd
打印当前工作目录
ls
列出目录的内容,ls /usr
可以显示/usr的目录内容,ls -l
会显示更加详细的内容·
cd /usr/bin
cd表示更改工作目录
.
符号.
表示工作目录,..
表示父目录,以.
开头的文件名是隐藏的,除非输入ls-a
才能显示
cd ..
将工作目录改为当前目录的父目录
-
-命令表示选项,有很多种选项:
-a 列出所有文件
-d 作为d和l的组合,即可查看当前目录的详细信息
-F 在名字之后加上一个类型指示符
-l 长格式显示
-r 以相反的顺序显示(字母逆序)
-S 按文件大小对结果进行排序
-t 按修改时间排序
file
打印文件内容的简短说明
less filename
查看文本文件
G 跳转到文本结尾
g 跳转到文本开头
/character 查找character字符串
n 查找下一个出现的字符
q 退出less
操作文件与目录
通配符
*
匹配任意多个字符
?
匹配任意一个单字符
[character]
匹配任意一个属于character中的字符
[!character]
匹配任意一个不属于character中的字符
[[:class:]]
匹配任意一个属于指定字符类的字符(alnum, alpha, digit, lower, upper)\
mkdir
创建目录
cp
复制文件和目录 例: cp file1 file2 dir1
-i
提示用户确认 -u
表示仅仅复制目标文件中不存在的文件
mv
移除和重命名文件,mv item1 item2
将item1移到item2
rm
删除文件和目录
-i 删除前提示用户确认
-r 删除一个目录的时候使用,递归的删除
-f 忽略不存在的文件且无需提醒
ln file link
创建硬连接 不能引用自身文件系统之外的文件,无法引用目录
ln -s item link
创建符号连接 连接指向的文件不会随着连接删除而删除
命令
命令包含四种:可执行程序,shell内置命令,shell函数,alias命令(可以在其基础上定义的自己的命令)
type
显示命令的类型
which
显示可执行程序的位置
help
获取帮助文档,显示命令的使用信息;两种使用方法help ls
和ls --help
man
显示程序的手册页
whatis
显示命令的简要描述
info
显示程序的info目录,在这样的页面中一般按q退出
创建一个alias命令:
首先查看命令名称是否存在 type foo
alias foo=‘cd /usr; ls; cd -’ foo命令就创建好了
unalias foo 命令就删除了
重定向
>
重定向操作符>可以用于后接文件名,把标准输出重定向到另一个文件中去;举例来说ls -l /usr/bin > ls-output.txt
,在我的电脑中就会出现ls-output.txt文件。如果重定向符之前的操作是一个错误信息,产生的文件就是一个空文件;
>>
使输出内容添加到文件的最后面
2>
标准错误等同于文件描述符2,使用2>实现将标准重定向到后面的文件中,举例来说:ls -l /bin/usr 2> ls-error.txt
&>
将标准输出和标准错误都重定向到同一个文件,举例来说:ls -l /bin/usr &> ls-output.txt
/dev/null
这个文件位置可以接受输入但是不对输入进行任何处理,举例来说:ls -l /bin/usr 2> /dev/null
cat
cat有很多种用途,首先cat可以显示短的文本文件,并且cat可以将多个文件作为参数,将他们合并起来。
显示操作:cat ls-output.txt
合并操作:cat movie.mpeg.0* > movie.mpeg
除此之外,cat还可以创建短文本文件:cat > lazy_dog.txt
i am a lazy dog!
,这样的结果就是创建好了一个内容为i am a lazy dog!的lazy_dog.txt文件
|
管道操作符,把一个命令的标准输出传送到另一个命令的标准输入中,举例来说:ls -l /usr/bin | less
,这可以方便的检查任意一条生成标准输出的命令的运行结果;ls /bin /usr/bin | sort | less
,把两个目录下的所有可执行程序合并成一个列表,并按照顺序排序,最后再查看
uniq
可以忽略文件中重复的行,后面加上-d表示查看重复的行,举例来说:ls /bin /usr/bin | sort | uniq-d | less
wc
打印行数,字数,字节数wc ls-output.txt
,用wc -l
可以只打印行数,同理,可以把wc加在管道里:ls /bin /usr/bin | sort | uniq | wc -l
grep
用管道的方式打印含有zip的匹配的行:ls /bin /usr/bin | sort | uniq | grep zip
,-i表示搜索时忽略大小写,- v表示输出和模式不匹配的行
head/tail
打印文件的开头,结尾部分,-n表示显示多少行。可以使用管道的方式:ls /bin | head -n 5
和直接输出的方式:tail -n 5 ls-output.txt
tee
获取,输出:ls /usr/bin |tee ls.txt|grep zip
将内容输出到ls.txt中,然后再用grep进行过滤
echo
echo命令本身只是将文本参数内容打印到屏幕
echo hello world
echo *
这会打印*的扩展结果
扩展包括很多:
*就是一种任意字符的拓展,~会拓展为用户的主目录名,$(())表示算术拓展,
{}表示花括号拓展,举例:echo {2009..2011}--{1..9}-
,$USER称之为参数拓展,
引用的方式也很多
""双引号中引用的特殊字符都将被看作是普通字符,$,\,'除外,参数拓展,算术拓展,命令替换在双引号中仍然成立。
''单引号中所有拓展都被抑制
\转义字符可以实现引用单个字符,\\实现引用反斜杠
高级键盘技巧
Ctrl+A:移动光标到行首
Ctrl+E:移动光标到行尾
Ctrl+K:复制光标到行尾的内容
Ctrl+U:复制光标到行首的内容
Ctrl+Y:粘贴到光标位置
tab
在输入字符之后按tab可以实现自动补齐,
history
可以实现搜索历史命令,例如我想寻找输入的包含ls的历史命令行:history | grep ls
会得到结果173 ls Desktop
输入!173
可以输出173行的命令;按Ctrl+R可以实现逆向递增式搜索,按Ctrl+J实现将内容复制到当前行。
!!
重复最后一个执行的命令
权限
创建用户时,用户将被分配一个称为用户id (uid)的号码,用户还被分配为一个有效组id(gid),超级用户一般uid为0
关于读取,写入和执行:一般会用10个字符来表示文件属性,第一个字符表示文件属性,后面每三个字符分别表示文件所有者,文件所属群组,其他所有用户对该文件的读写执行操作权限。
第一个字符:- 表示普通文件,d 表示目录文件,l 表示符号连接,c 表示字符设备文件,b 表示块设备文件
后面的字符:r表示可以打开和读取文件,w表示可以写入或者截短文件,x表示允许把文件当作程序一样来执行
举例:drwxr-xr-x,d表示这是一个目录文件,所有者拥有读,写,执行的权限,组成员拥有读和执行的权限,其他用户也拥有读和执行的权限。
chmod
可以实现更改文件模式,有两种方法,第一种是用八进制数字表示,第二种是符号表示法,八进制对应的如下:
举例来说:
chmod 600 foo.txt
可以实现对foo.txt的权限更改
符号表示法中,u,g,o分别表示用户,群组和其他用户
chmod u+x foo.txt
chmod o-rw foo.txt
chmod u+x,go=rx foo.txt
# 为文件所有者添加可执行权限,同时设置群组和其他用户具有读权限和可执行权限
umask
一般可以用来设置默认权限,默认掩码值一般为0022
除了常用的rwx权限之外,还存在setuid,setgid,sticky位;setuid可以将一个实际用户id设置为程序所有者id,setgid可以把有效组id从该用户的实际组id更改为该文件所有者的组id,sticky可以阻止用户删除或者重命名文件(除非用户为程序所有者或root)
su -l
-l表示指定用户,后面输入user即可以其他用户和组id的身份来运行shell,不输入名称默认为r