Linux开发有关知识汇集
ps命令
bash
ksh
csh
sh
tcsh
ps
一个终端至少有一个shell,用来和用户打交道
登陆shell,管理员指定登陆是什么shell,平常用就用什么shell
exec ksh切换shell,切换shell之后原来的shell就没用了。可以通过ps来验证
date
操作系统要管理文件
目录
子目录
文件
文件系统
树
移动文件系统
/
/etc/hosts
linux严格区分大小写;
pwd=print working directory打印出当前的工作目录
ps=process status打印出进程的状态
clear=ctrl+l
每个程序每运行一次有一个状态
tty是终端编号,每个终端都有一个编号
pid进程的id;内核在管理对象的时候,一般采用一个整数来分配和识别
cmd是命令
time是利用的cpu的时间
cd=change direcotry改变当前工作目录
绝对路径
相对路径
管理员在创建账户的时候会指定shell,和主目录home directory
cd /etc/alsa/cards
/~.分别表示根目录、主目录、当前目录
..表示上一级目录
../..表示上一级的上一级
ls=list列出
telnet
passwd更改密码
用户名和密码存在于/etc/passwd文件中
soft01:x:500:50::/home/soft01:/bin/bash
用户名:密码:
密码实际上都放到了shadow文件中了
group
ps -l
ps -e
ps -f
ps -p pid
ls
ls /usr
ls /usr /mnt
case-sensitive
命令 【选项】....【参数】...
man
more
man date
date +%D
date +%F
date +%T
date 08011020
问题:
etc下的passwd、shadow、group等文件及文件格式解释
id
id username
文件系统
从/开始的树状结构
绝对路径:/打头
相对路径:当前目录之下开始
当前目录:cd .
cd ..
主目录
~用户名:本用户的主目录
username,passwd,uid,gid,,home,shell:/etc/passwd,x--->/etc/shadow
每个命令都对应一个可执行文件;shell会支持一些内部命令,没有文件。
ls /bin 可执行文件
如bash ,csh,tcsh,ksh等;
clear命令,清屏幕;
sleep 5睡觉
ls -l 利用长格式显示出相关信息
ls -F打标记(*表示可执行文件,@表示软连接或者符号连接,)---快捷方式
ls -a显示全部文件. .. 包含隐藏文件一起显示.开头的是隐藏文件,其中包含.和..
ls -A 除了.和..之外都显示
ls -l
-打头普通文件
d打头目录文件
l打头链接文件
x结尾可执行文件
p打头管道
ls -t -l与ls -l两者的区别,两者之间一个按字母一个是按时间来排序显示
ls -R,列出当前目录开始的目录树
ls -r
ls -F
mkfifo abc
ln -s /bin/date da
ls -l
echo hello>ghi.jk
软链接:快捷方式;存放的是路径 ln -s
硬链接:同一文件对应多个名字 ln
硬链接 跨设备不行
cp == copy
cp /bin/zsh ~/Desktop/
当硬链接数量为0的时候,则真正的删除该文件;
硬链接一旦建立后,硬链接之间是相互平等的
rwx= read write execute
drwxrwxrwx
权限===》
自己|同组人|其他人
rm abc
rm bs da
如何更改权限
chmod ugo
u代表自己
g代表同组人
o代表其他人
chmod o-rx z删除其他人的rx权限
chmod o+rx z增加其他人的rx权限
chmod o=rwx z设置其他组人的rwx权限
chmod o=- z 设置其他组人的rwx权限为空
chmod u-w,o+r,g+w z
chmod a+x z,给所有人增加x权限
chmod 0644 z;注意:在c和c++中,以0开头的是一个8进制数
r----4 w----2 x---1 ----0权限数字化
权限可以用一个3位的8进制数来表示---》如700==》c语言编程中可以借鉴这种模式
文件的创建、删除、修改、复制
创建目录:
mkdir da db dc建立3个并排的目录
mkdir dd/de XX
mkdir dd
mkdir dd/de
==>mkdir -p dd/de/dc创建多层的目录
ls -R显示所有的目录文件
touch创建空文件
touch f1 f2 f3同时创建3个空文件
touch da/f4 db/f5在不同的目录下创建不同的文件
touch db/f6 db/f7 db/f8
===>cd db
touch f6 f7 f8
cd ..
date命令
date > xyz重定向;将左边命令产生的输出写到右边的文件中去;会清空文件中的原有内容;
date >>xyz把左边命令产生的输出追加到右边的文件中,不会清空原文件中的原有内容;
cat xyz用命令来查看xyz的内容或者用vi来查看xyz的内容
pwd > abc
cal显示当月的日历
cal 2012
cal 11 2010
echo 大家好
echo 大家好 >> f10
echo 大家好才是真的好 >> f10;cat f10=====>重要在编辑脚本时很有效
date;sleep 5;date===>在设置识别裸设备时,速度可能比较慢,最好是init过程之前等待识别30秒
/dev/tty表示的是终端鼠标\键盘\显示器
date > /dev/tty===>编辑脚本时常用
date > /dev/null==>黑洞文件,永远的空文件,空设备文件
如:ls -l > /dev/null
ls -l
mv f1 dc 将f1文件移动到dc下
mv f1 da dc将f1,da目录移动到dc下
mv db dc/d2将db移动到dc下并修改为d2;只有移动一个目录或文件的时候才能改名,如果移动多个是不能改名的
cp -r 包含目录一起复制
cp -i interactive交互; 目录覆盖的时候无提示,有文件覆盖的时候才提示
rm -r可以删除文件和非空目录;但是删除目录时比较危险
rm本身是不删除目录的
rmdir只能用来删除空目录
rm -ri
字符链接软
ln -s:通过文件系统链接一个文件或者目录
link1-->inode 3561(data blocks/file2)-->file2--->inode 1282(data blocks)
硬链接
ln
在同一个文件系统上去链接文件
多个文件被硬性的链接到相同的inode number,涉及硬盘上的相同数据
如file1,file===》inode1282 (data blocks)
dir1====>inode 4221(data blocks file1=inode1282;file2=inode 1282)
ls
rm dc/f1 dc/f2 dc/f3
rm dc/f*
rm dc/*
通配符号
ls -l dc/*2
ls -l -d dc/*2
rm -r a*b*c
命令本身并不能处理通配符,是通过shell来处理的
?只能匹配一个任意字符
[]匹配指定范围内的一个字符,如[b-j] [135abj]
[4-12]====>[4-1,2]
cat
man
head /etc/passwd;head可以看前10行,或者head -5,显示前5行
tail 默认看后10行,看后5行,tail -5
more分屏显示
less可以上下左右的任意翻看文件内容,也是分屏显示
vi
wc===word count统计数量;行数,单词数,字符数
wc -l只要行数,-w只要单词数 -c只要字符数
grep 字符串 文件
id
grep -i 忽略大小写i=ignore case
grep -v查找不包含指定字符串的行
grep -v 01 /etc/passwd >tempxxx
more tempxxx
rm tempxxx
grep -v 01 /etc/passwd | more 把左边命令的输出当作一个文件直接交给右边的命令来处理。这就是管道
grep nologin /etc/passwd | wc -l
gedit全屏幕的编辑器
kate
vi==vim
有两种工作状态;1、初始的命令状态;2、插入状态
命令状态(初始)----i,a,o--->插入状态---<ESC>--->命令状态
----->底行模式---->:/?
vi
k上
h左 l右
j下
^行首 $行尾
G文件尾 1G文件首
第N行 NG
屏幕头H,屏幕中M,屏幕底L
下翻:ctrl+f 上翻 ctrl+b
w下一个单词开头
b上一个单词开头
e下一个单词末尾
i在光标当前位置插入
a在光标所在位置后插入
o在光标所在行下插入一空行
O在光标所在行上插入一空行
:set nu显示行号代码
: no nu 不显示行号
I跑行首添加
A跑行尾追加
x删除一个字符3x
dw删除当前词
3dw删除3个词
dd删除当前行
5dd删除5行
:5,10d删除5-10行
删除之后如果想恢复的话,使用u,undo
p粘贴在光标位置之后
P粘贴在光标位置之前
r替换一个字符
cw替换一个单词
cc替换一行
C替换从光标至行尾
yw拷贝词
yy 拷贝行
dw剪切词
dd剪切行
p当前行下粘帖
:1,2co3 拷贝行1,行2在行3之后
:4,5m6 移动行4,5在行6之后
复制某一个字符,yl
ps -l
S=status
S睡眠状态 T挂起状态 R运行 Z 僵尸状态
挂起状态不会分时间片,只是一个后台任务摆着;
sleep 10
sleep 10 &可以后台执行
ps只显示本终端的进程+e可以显示所有的进程
ps -e -l | grep Z
ps -f 显示完整的命令
ps -p 3846根据进程的PID来跟踪进程
init进程,其PID总是为1;父进程为0(LINUX中是不存在的;UNIX中是存在的叫总调度)
jobs专门用来查看后台任务
调出后台任务到前台fg,不带参数表示把带+号的调用到前面来执行
也可以带fg+
把stopped的任务用bg在后台执行起来
终止一个任务ctrl+c也可以用kill
kill发送的是一个sigterm信号
如果是后台任务,kill也可以删除
jobs
kill %1为了区分进程和任务编号,进程直接写数字,任务编号需要加%号
熟悉vi
grep
> | ; * ? [] / ~ . ..
find可以搜索文件或目录
find 目录 条件 【命令,如何处理;默认print】----在指定的目录中进行搜索;
find . -name f1 在当前目录下搜索
find / -name f1(name后面只能包含一个文件名)
find . -name f*这句是错误的。
eacho find . -name f*
find . -name "f*"
eacho find . -name "f*"
find . -name "*.cpp" -exec cp{} d6 \;
这命令的意思是
find . -name "*.cpp" 找到所有的cpp文件
\;表示转义就表示符号本身; ;号是命令的结束标志
-exec表示后面有个执行命令
{}表示前面的内容
find d6 -name "*.cpp" -exec rm {} ";"
who当前谁在线
who am i
users只关心用户的名字的情况下 users
who | grep 192.168.24. 显示出在24网段登录的用户
w可以知道谁在做什么?
who where when what
history显示出用过的所有的命令的列表
!编号即可以执行相关命令
history其命令存储在.bash_history中
du显示磁盘空间的使用情况
du -k
du -h
du -s只有综合
df查看剩余多少空间
ping
ifconfig
ifconfig -a
ftp
!ls -l
!ls
!lcd
!表示本地的
put
mput
get
mget
prompt把交互方式打开或者关闭;
asc表示传递模式设置成字符模式;尤其是在跨平台传输文本文件时
bin按照二进制模式来传输
locale设置编码语言
write聊天
mesg n不想聊天
env环境命令(环境变量)
PS1是来指定命令提示符的
path环境变量---为shell指定可查找命令的目录
命令不是在当前目录下找,而是在path指定的目录下去找
假设在path路径下有多个路径指向了同名的命令的话,可以用which来查看
如果像查询哪里有某个命令,可以通过whereis cal
PATH=$PATH:.
初始化文件:系统级和用户级
系统级/etc---可以针对所有用户
用户级----只针对自己,不同的shell用不同的初始化文件,看man bash或man csh
~/.bashrc
vi ~/.bashrc
source ~/.bashrc在当前终端必须先source下才能生效,其他终端自动生效
alias起一个别名如
alias c=clear
alias pl=‘ps -l’
vi my.sh
#!/bin/bash
echo 大家好
sleep 5
echo I love u,baby。
sleep 5
date
source my.sh
chmod u+x my.sh