بایگانی دسته: بش اسکریپتینگ

بش اسکریپت آب خوردی

#!/usr/bin/bash
while true 
do
    zenity --question --no-wrap  --text="آب خوردی؟" --ok-label="ها" --cancel-label="دو دقه واسا"
    status=$?
    while [ $status -eq 1 ]
    do
        sleep 3m
        zenity --question --no-wrap  --text="آب خوردی؟" --ok-label="ها" --cancel-label="دو دقه واسا"
        status=$?
    done
    sleep 30m;
done
cat /home/saeb/.config/autostart/sbs.saeb.water.desktop 
[Desktop Entry]
Name=DrinkWater
GenericName=Drink water
Comment=Some description about your script
Exec=/home/saeb/.local/bin/drinkwater.bash
Terminal=true
Type=Application
X-GNOME-Autostart-enabled=true
پسندها(1)شاکی(0)

kvm qemu libvirt

sudo pacman -S libvirt nftables
 ✘  ~  cat br10.xml 
<network>
  <name>br10</name>
  <uuid>4c2ce191-a0e3-4916-842e-a7cdc2012332</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='br10' stp='on' delay='0'/>
  <mac address='52:54:00:5f:d2:40'/>
  <ip address='172.18.0.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='172.18.0.100' end='172.18.0.200'/>
    </dhcp>
  </ip>
</network>
sudo virsh net-define br10.xml
sudo virsh net-list --all
 sudo virsh net-start br10
 sudo virt-install --name debian11 --memory 2048 --disk size=4 --cdrom Downloads/debian-11.0.0-amd64-netinst.iso --network bridge=br10
sudo virsh start debian11

پسندها(0)شاکی(0)

دکوراتورها تو پایتون

دکوراتورها یه متد رو میگیرن و قبل از اجرای اون یه سری بلا سرش میارن. البته این برداشت منه که ایشالله درسته

دکوراتور به عنوان متد
به صورت کلاس و به صورت فانکشن میشه نوشت


def saeb(func: Callable) -> Callable:
    def b(*arg, **kwarg):
        func(*arg, kwarg)

    return b


@saeb
def a(*args, **kwargs):
    print(args, kwargs)


پسندها(0)شاکی(0)

کوتاه کردن لینک از طریق خط فرمان

Fish shell

Python

#!/usr/bin/env python
# coding: utf-8

# In[1]:


from json import loads
from requests import post
from pprint import pprint


# In[ ]:


API="x0x6KYOk6WjuLBbA3Vwxl1rE5l9VuiMd0Yci88il0"
headers = {"X-API-key":API}
data = {"target":"https://sae13.ir"}


# In[6]:


response=post("https://kutt.it/api/url/submit",data=data,headers=headers)

js=loads(response.content.decode())

pprint(js)
پسندها(0)شاکی(0)

نصب روتر پیازی بر روی رسپری پای ۳ و رسپیان ۹ stretch

 

قبلن یه آموزش ساخت روتر پیازی گذاشته بودم که روی رسپیان ۹ stretch جواب نمی ده . لذا قایل های کانفیگم رو برای رسپیان ۹ اینجا قرار میدم. لکن یه نگاه بهش بندازید یکم توضیح دادم چی به چیه اونجا.

آموزش قبلی اینجاست

نرم‌افزاریی که نیاز هست الان نصب کنید :

sudo apt install tor torsocks hostapd dnsmasq

برای فعال کردنشون هم که از دستورای زیر استفاده می‌کنیم:

 

sudo systemctl enable tor

sudo systemctl enable hostapd

sudo systemctl enable dnsmasq

برای آی پی استاتیک کابل اترنت فایل زیر رو باید ویرایش کنیم :

sudo nano /etc/dhcpcd.conf

 

# Example static IP configuration:
interface wlan0
static ip_address=172.24.1.1/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=172.24.1.1
#static domain_name_servers=127.0.10.1 , 208.67.222.222


# Example static IP configuration:
interface eth0
static ip_address=192.168.1.13/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

البته قسمت دوم که مربوط به کابل شبکه eth0 هست، اجباری نیست ولی خوب خودم برای این که بتونم داخل شبکه خودم دسترسی ssh داشته باشم ترجیحم اینه که آی پی کابل شبکه هم استاتیک باشه.

 

کار پکیج hostapd اینه که یه هات اسپات بسازه و براش دوتا تنظیم نیاز داریم.

یک ساخت یه فایل توی آدرس زیر با این مشخصات :

 

nano /etc/hostapd/hostapd.conf

 

interface=wlan0
# Use the nl80211 driver with the brcmfmac driver
driver=nl80211
# This is the name of the network
ssid=Tor
# Use the 2.4GHz band
hw_mode=g
# Use channel 6
channel=6
# Enable 802.11n
ieee80211n=1
# Enable WMM
wmm_enabled=1
# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
# Accept all MAC addresses
macaddr_acl=0
# Use WPA authentication
auth_algs=1
# Require clients to know the network name
ignore_broadcast_ssid=0
# Use WPA2
wpa=2
# Use a pre-shared key
wpa_key_mgmt=WPA-PSK
# The network passphrase
wpa_passphrase=1234567890-+
# Use AES, instead of TKIP
rsn_pairwise=CCMP

 

بعد هم توی فایل زیر

 

sudo nano /etc/default/hostapd

دنبال دستور

#DAEMON_CONF=""

بگردید و به صورت زیر تغییرش بدید:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

بریم سراغ فایل dnsmasq

اول از کانفیگ اصلیش یه بک آپ بگیریم

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.org

حالا یه فایل جدید بسازیم با داستانای زیر:

sudo nano /etc/dnsmasq.conf

interface=wlan0      # Use interface wlan0
listen-address=172.24.1.1 # Explicitly specify the address to listen on
#bind-interfaces      # Bind to the interface to make sure we aren't sending things elsewhere
no-resolv
port=53
server=127.0.10.1 # Forward DNS requests to Google DNS
domain-needed        # Don't forward short names
bogus-priv           # Never forward addresses in the non-routed address spaces.
dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time

 

 

داخل فایل زیر

sudo nano /etc/sysctl.conf

یه خط هست به صورت

#net.ipv4.ip_forward=1

که باید از حالت نظر بیرونش بیاریم و # اولش رو پاک می‌کنیم.

مونده فایل کانفیگ تور

sudo nano /etc/tor/torrc

که من فعلا فقط دستورای زیر رو توش دارم. تا برم پل بهش اضافه کنم بعدن و سرورترنسپورت meek و  obfs4 رو هم دستی کامپایل کنم و تعریف کنم:

 

Log notice file /var/log/tor/notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 172.24.1.1
DNSPort 127.0.10.1:53
#DNSListenAddress 127.0.10.1

بیاید به محکم کاری فایل لاگ تور رو خودمون دستی بسازیم:

sudo touch /var/log/tor/notices.log

بریم سراغ تنظیمات فایروالمون:

sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22
sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040

همانطور که مستحضرید دستورای فایروال با هر ری‌استارت پاک می‌شن. لذا پکیج iptables-persistent رو هم نصب می‌کنیم.

sudo apt install iptables-persistent

پسندها(4)شاکی(1)

بات پاک کننده فایل های APK از گروه ها

سلام این روزا نمیدونم چطور یه اسپمر اومده توی گروه‌ها فایل نصبی اندرویدی میزاره و از گروه لفت میده. یه بات نوشتم که اگه به جز مدیر کسی فایل نصبی اندروید بفرسته فایل رو پاک کنه و دسترسی طرف رو هم ببینده

برای استفاده از بات فقط لازمه مدیر گروهش کنید و دسترسی پاک کردن و بن کردن پیام ها رو بهش بدید.

http://t.me/apkdelbot

 

سورس بات  :

 

 

 

 

پسندها(1)شاکی(1)

ارسال فایل‌های حجیم یک پوشه توسط SSH+telegram-cli+pytg به تلگرام

کاری که امروز میخوام بکنم اینه که از طریق  SSH وصل بشم به ماشین مجازیم، تمام ویدیو‌های جادی توی یوتیوب رو دانلود کنم و با تلگرام تحت خط فرمان و کتابخونه پایتونی pytg ویدیو‌ها رو ارسال کنم کانال تلگرامم.

خوب با دستور SSH وارد VPSم شدم و توی پوشه /tmp یه پوشه jadi ساختم بعد با دستور زیر همه ویدیو های کانال یوتیوب جادی رو دانلود کردم.

youtube-dl -i https://www.youtube.com/user/jadi19jadi19/videos

 

آرگومان   -i    میگه که اگه توی دانلود ویدیویی به مشکل بر خوردی برو سراغ ویدیو بعدی و کلا از برنامه خارج نشو.

اگه youtube-dl رو نصب ندارید می‌تونید به راحتی با دستور زیر آخرین نسخه شو نصب کنید.

python3 -m pip install --upgrade --user youtube-dl

آرگومان –user می‌گه که فایل‌ها و کتابخونه های مورد نیاز رو برای همین یوزر نصب کن فقط. که نیاز به دسترسی های مدیری نداره.

برای آشنایی با سایر قابلیت‌های youtube-dl می‌تویند گیت نرم‌افزار رو مطالعه کنید.

https://github.com/rg3/youtube-dl/blob/master/README.md#format-selection

خوب کل ویدیو‌های جادی دانلود شدن.

حالا اگه تلگرام کلای رو نصب ندارید از آدرس زیر نصب کنید:

https://github.com/vysheng/tg

بعد از نصب با یه پورت دلخواه و به صورت خروجی جیسون اجراش می‌کنیم.

 /tmp /home/saeb/App/tg/bin/telegram-cli --json -P 4667

برای ارسال به یک کانال تلگرام نیاز داریم که یونیک آی دی کانال رو بدونیم. توی تلگرام کلای دستور زیر رو اول می‌نویسیم

channel_list

بعد با دستور زیر اطلاعات کانال مورد نظرمون رو می‌گیریم.

channel_info اطراف_من
{"id": "$050000007d208f3f0115b300fb607ab4", "print_name": "اطراف_من", "flags": 65603, "peer_type": "channel", "title": "اطراف من", "peer_id": 1066344573, "participants_count": 8, "admins_count": 3, "kicked_count": 0}

خوب یونیک آی‌دی کانال ما میشه "$050000007d208f3f0115b300fb607ab4"

حالا تلگرام کلای رو باز می‌زاریم و میریم سراغ پایتون

اول از همه کتابخونه pytg رو نصب می‌کنیم.

python3 -m pip install pytg --upgrade --user

حالا پایتون رو اجرا میکنیم و کتابخونه های مورد نیازمون رو توش صدا می‌زنیم.

saeb@Fujitsu  ~  python3

import subprocess
from pytg.sender import Sender
from time import sleep
sender = Sender(host="localhost", port=4667)

 

خوب فایل‌های پوشه ای که توش ویدیوها رو ریختیم که به من پوشه

/tmp/jadi

هست رو به صورت یه لیست ذخیره می‌کنیم.

ls=subprocess.getoutput('find /tmp/jadi -name "*.*"').splitlines()

خوب حالا فایل‌هامون رو می‌فرستیم به کانال

for i in ls:
        try:
                sent=sender.send_video("$050000007d208f3f0115b300fb607ab4",i,i.split('/')[3])
                if sent:
                        subprocess.run('mv',i,'/tmp')
        except:
                sleep(400)

 

توی دستور sender.send_video ورودی اول همون یونیک آی‌دی جایی هست که می‌خوایم بهش فایل‌ها رو بفرستیم. ورودی دوم ادرس فایل هست و ورودی سوم کپشن زیر ویدیو هست.

چند تا نکته : یک دستورا رو کپی پیست نکنید  تو رفتگی شون رعایت نشده پایتون دندون میگیره. دو اون اسلیپ ۴۰۰ برای اینه که پیش‌فرض ارسال فایل پای‌تی‌جی یک دقیقه هست و اگه بیشتر از یک دقیقه طول بکشه هشدار میده ولی ویدیو رو تلگرام کلای می‌فرسته . به من بر حسب تجربه هر فایلی بیشتر از چارصد ثانیه طول نمی‌کشه.اگه کسی بلده چطور زمان تایم اوت پای‌تی‌جی رو میشه عوض کرد بگه بزارم همیجا.

پسندها(1)شاکی(0)

نصب فونت های صابر راستی‌‌کردار بر روی توزیع‌های لینوکس

صابر راستی کردار یه پنج شیش تا فونت داره که برای کارهای روزمره کفایت می‌کنه. از جمله فونت همین متن که اسمش وزیر هست.

هر دفعه یه توزیع لینوکسی نصب می‌کنم ک زیاد هم اتفاق میفته مجبورم فونت ها رو از اول دونه دونه دانلود کنم. خوب چه کاریه. بیاین براش یه اسکریپت بنویسیم که همه رو یه جا بهمون نصب کنه.

برای نصب فونت‌ها دستور زیر رو توی ترمینال اجرا کنید. نیاز نداره دسترسی مدیری داشته باشه.

bash -c "$(wget http://bit.ly/2uRyGaT -O -)"

اینم سورس اسکریپت :

پسندها(7)شاکی(0)

لینک دانلود ویدیوهای پروژه بستون جادی

جزییات پروژه بستون توی وبلاگ جادی موجوده.

توی چند پست قبل پرسیدم آیا ایده ای دارین که بشه باهاش یک استارتاپ راه انداخت؟ خب چرا نمی گین که راه بندازیم (: آخرش هم رفتم سراغ نیاز اصلی خودم در مورد یک سیستم که توش بتونم دقیقا داشته باشم چقدر پول خرج کردم و چقدر پول درآوردم و احتمالا چقدر به کی قرض داده ام و این تیپ چیزها. چنین سیستمی الان هم هست ولی خب راه انداختنش فان است و به خیلی آدم ها نشون می ده که چقدر ساده و سریع می تونن ایده هاشون رو پیاده کنن. الزاما از استارتاپ حرف نمی زنم، علاقمندی من مدیر شدن و شرکت عظیم و رشد انفجاری و سید اولیه و انجل پول و اینوستور و فروختن و اینها نیست. علاقمندی من یک زندگی فان است با خروجی های جذاب (: چیزی که بعضی ها بهش می گن «لایف استایل پروگرمر». شیوه کارمون هم «دو آپ» است و شخصا همه چیز رو می چرونیم. از راه اندازی اولیه و دیپلوی کردن روی سرور تا ساپورت و دیباگ و بک آپ و … و دوست دارم شما شاهد همه مراحلش باشین.

 

برای خودم  لینک های دانلود ویدیوهای آموزشی رو جمع کردم  که با نرم افزار مدیریت دانلود آریاطوسی ویدیوها رو دانلود کنم. گفتم شاید به کار بقیه هم بیاد.

اسکریپت رو توی یه فایل متنی  به اسم bestoon.sh داخل پوشه ای ک میخواید ویدیوها دانلود بشه ،ذخیره کنید و از ترمینال توی همون پوشه ای که فایل رو ذخیره کردید بزنید.

 

bash bestoon.sh

 

پسندها(4)شاکی(2)

تعمیر زیرنویس فارسی در مدیریت فایل تونار

خوب بیاین به کلیک راست مدیریت فایل یه گزینه اضافه کنیم که زیرنویس فارسی مون رو تعمیر کنه.

screenshot_2016-10-20_12-53-36

اول از همه یه نرم افزار ویرایشگر متن رو باز کنیم.اگه مدیریت فایلتون توناره احتمالا ویرایشگر متنتون موسپد Mousepad هست.و فایل زیر رو داخلش کپی کنیم.

 

خوب حالا فایل رو به هر اسمی که دوست دارید هرجا دلتون خواست ذخیره کنید.من یه پوشه به نام Scripts داخل پوشه Documents خودم دارم و اسکریپتام رو اونجا ذخیره میکنم.

حالا مدیریت فایل Thunar رو باز میکنیم روی فایلی که ساختیم کلیک راست میکنیم و گزینه Properties رو میزنیم . بعد از تب Permissions فایل رو به عنوان برنامه قابل اجرا تنظیم میکنیم.

screenshot_2016-10-20_13-06-20

حالا  مطابق شکل از منوی بالا Thunar گزینه Edit و Configure costume action رو انتخاب می کنیم.

screenshot_2016-10-20_13-14-55

 

گزینه + رو بزنید.

تو قسمت کامند روی پوشه کلیک کنید و فایل متنی یی که ساختیم رو انتخاب میکنیم . توجه کنید که خودکار آخر فایل یه %f اضافه شده. اگه خودکار اضافه نشد..که بعیده.. خودتون دستی اضافش کنید.

screenshot_2016-10-20_13-19-50

حالا پسوند فایل هایی که میخوایم وقتی روشون راست کلیک میکنیم گزینه تعمیر زیرنویس رو نشون بده انتخاب می کنیم.

*.srt;*.SRT

screenshot_2016-10-20_13-24-42

 

 

خوب دیگه غذا آمادست.

پسندها(3)شاکی(0)

پشتیبان گیری از پایان نامه

اگه انگلیسیتون بد نیست اول این آموزشا رو ببینید:

تنظیم mutt برای جیمیل

https://www.linux.com/blog/setup-mutt-gmail-centos-and-ubuntu

تنظیم ssmtp برای ارسال از جیمیل

https://wiki.archlinux.org/index.php/SSMTP

چند مثال برای crontab

https://www.pantz.org/software/cron/croninfo.html

ویکی آرچ درباره cron

https://wiki.archlinux.org/index.php/Cron

 

خوب.بریم سراغ آموزشمون

اول نصب Crontab

pacman -S cronie

sudo systemctl enable cronie

دوم نصب سرویس ایمیل و سرویس ارسال ایمیل

pacman -S mutt ssmpt

سوم ست سرویس ارسال ایمیل

sudo nano /etc/ssmtp/ssmtp.conf

#
# /etc/ssmtp.conf -- a config file for sSMTP sendmail.
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
[email protected]
# The place where the mail goes. The actual machine name is required
# no MX records are consulted. Commonly mailhosts are named mail.domain.com
# The example will fit if you are in domain.com and you mailhub is so named.
mailhub=sv2.byethost2.org:290
UseTLS=YES
[email protected]
AuthPass=********
FromLineOverride=YES
# Where will the mail seem to come from?
#rewriteDomain=y
# The full hostname
hostname=saeb.id.ir

برای ذخیره با ویرایشگر نانو بعد از اعمال تغییرات کلید کنترل ایکس رو میزنیم. بعد میپرسه آیا میخواهید تغییرات ذخیره شوند؟ میزنیم y 

چهارم انجام تنظیمات سرویس کلاینت ایمیل mutt

mkdir -p ~/.mutt/cache/headers
mkdir ~/.mutt/cache/bodies
touch ~/.mutt/certificates
nano ~/.mutt/certificates

قراره این شکلی بشه فایل های داخل پوشه .mutt

 

[saeb@my-pi ~]$ tree -d .mutt/
.mutt/
└── cache
    ├── bodies
    └── headers

3 directories
[saeb@my-pi ~]$ tree  .mutt/
.mutt/
├── cache
│   ├── bodies
│   └── headers
├── certificates
└── muttrc

3 directories, 2 files
[saeb@my-pi ~]$ cat .mutt/certificates 
[saeb@my-pi ~]$ cat .mutt/muttrc 
set ssl_starttls=yes
set ssl_force_tls=yes
set imap_user = '[email protected]'
set imap_pass = '**********'
set from='[email protected]'
set realname='Raspberry Thesis'
set folder = imaps://sv2.byethost2.org/
#set spoolfile = imaps://imap.gmail.com/INBOX
#set postponed="imaps://imap.gmail.com/[Gmail]/Drafts"
set header_cache = "~/.mutt/cache/headers"
set message_cachedir = "~/.mutt/cache/bodies"
set certificate_file = "~/.mutt/certificates"
set smtp_url = 'smtps://[email protected]@sv2.byethost2.org:290'
set smtp_pass = '**********'
set move = no
set imap_keepalive = 900
set editor = nano

این هم اسکریپتی که من نوشتم برای پشتیبان گیری از فایل هام. توجه کنید این اسکریپت به شما کاربردی نداره و باید برای خودتون شخصی سازی کنید.

[saeb@my-pi ~]$ cat Document/Scripts/backAPP 
#!/bin/bash
#first compare two folder if they have same file or not
diff /run/media/saeb/ftp/proposal /run/media/saeb/new/.proposal/latest/proposal >/dev/null 2>&1 
#if they have some diffrence isnotdiff variable will be anythung but 0
isnotdiff=$?
#echo $isnotdiff
if [ $isnotdiff != "0" ];then
#	echo "they have some diffrence"
	rm -r /run/media/saeb/new/.proposal/latest/*
	zip -r -j  /run/media/saeb/new/.proposal/backup/`jdate +%h%y%m%d%H%M-%S`.zip /run/media/saeb/ftp/proposal
	cp -r  /run/media/saeb/ftp/proposal/ /run/media/saeb/new/.proposal/latest
	echo `jdate +%E`|mutt -s "backup of proposal" [email protected] -a /run/media/saeb/new/.proposal/backup/`jdate +%h%y%m%d%H%M-%S`.zip
	echo -e `jdate +%E`" پشتیبان تهیه شد""\n" >>/tmp/proposalbackup.log
else
        echo -e `jdate +%E`" بک آپ نیاز نشد.خاک تو سرت""\n" >>/tmp/proposalbackup.log


fi

مرحله آخر تنظیمات کرونتب برای مشخص کردن ساعات پشتیبانی

crontab

بعد این که دستور رو زدید این ماسماسک چشمک زن یه خط میپره پایین دستورمون رو مینویسیم.یه Enter میزنیم و بعد ctrl +d رو میگیریم که ذخیره بشه و خارج بشه

0 0,3,9,13,16,18,20,22 * * * /home/saeb/Document/Scripts/backAPP

خوب این دستور میگه دقیقه صفر ساعات ۰(۱۲شب).سه شب نه صبح یک ظهر(۱۳) چهارظهر شیش بعد از ظهر و هشت و ده شب هر روز هفته و ماه فلان اسکریپت رو اجرا کن. این آدرس

 /home/saeb/Document/Scripts/backAPP

 

آدرس همون اسکریپتیه که پشتیبان میگیره از پایان نامه من.

سوال از کجا بفهمیم crontab ذخیره کرده دستور رو؟ جواب : دستور crontab -l لیست تمامی دستورای کرونی که ساختیم نشون میده.

 

[saeb@my-pi ~]$ crontab -l
0 0,3,9,13,16,18,20,22 * * * /home/saeb/Document/Scripts/backAPP
[saeb@my-pi ~]$ 

 

پسندها(4)شاکی(0)

دستورات ترمینال برای کاربران تازه کار

این مطلب هر چندوقت یبار به روز میشه

 

یه جدول خوب هم از دستورا محیط شل هم تو آدرس زیر موجوده :  

 

http://soshaw.net/1395/06/20/commands/

 

 

جزییات کاملتر دستورات اینجا موجودن: http://linuxcommand.org

 

 

اگه همه اینارو بلدید به وبلاگ علیرضاامیرصمیمی سر بزنید و از اسکریپت نوشتن لذت ببرید

 

http://amirsamimi.ir/category/linux/bash/

 

 

 

همه ما وقتی به اولین بار گنولینوکس نصب میکنیم خیلی درباره محیط ترمینال کنجکاویم و دلمون میخواد دربارش یاد بگیریم.الان محیط های گرافیکی گنولینوکس ایقد کامل هستن که که نیاز نشه برای استفاده خونگی سمت ترمینال نیایم ولی به هر حال نیاز میشه.

من خودم تازه کارم بخاطر همین این پست رو سعی میکنم هرچندوقت یبار به روز کنم و دستورای جدیدی که یاد میگیرم رو اینجا بنویسم.

و اما دستورات ترمینال.

 

اول از همه من الان کجا هستم ؟

pwd

pwd

 

 

 

دوم چیا اینجا هستن ؟

ls

ls

 

برای این که یه دستور رو بگیم با دسترسی مدیری اجرا کن از دستور sudo قبل از دستور خودمون استفاده میکنیم. از ما رمز رو میخواد رمز رو میزنیم اگه دسترسی مدیری داشته باشیم با دسترسی مدیری اجرا میشه.

یه نکته مهم : داخل ترمینال وقتی رمز عبور میزنیم ستاره نمیزنه. عملا چیزی نمینویسه ولی داره پسورد رو میگیره. پس وقت پسورد زدن نگران نباشید که چرا ستاره نشون نمیده

برای این که دستور قبلی رو مجدد بنویسیم !! مینویسیم.مثلا یه دستور دسترسی مدیری میخواد وقتی میزنیم خطا میده برای این که اون دستور رو با دسترسی مدیری اجرا کنیم مینویسیم sudo !! سودو دوتا علامت تعجب یعنی اول همون دستور قبلی sudo اضافه کن

 

 

sudo

 

خوب حالا که فهمیدیم کجاییم بزار وارد یه پوشه بشیم.

cd

cd

 

 

چندتا نکته

داخل ترمینال خودش اسما رو بازدن کلید تب tab رو پیدا میکنه

مثلا اگه اسم یه پوشه هست manjaro-deepin-16.06.1-x86_64 برای ورود به پوشه هم اسم رو نمینویسیم مینویسیم

cd manj

و کلید تب رو میزنیم.خودش اگه فقط یه پوشه باشه که اولش man باشه خود به خود اسم رو کامل میکنه و اگه بیشتر از یه پوشه با man شروع بشه یبار دیگه تب رو میزنیم و همه پوشه هایی که اول اسمشون مشابه هست رو نشون میده

tab

 

 

 

 

 

 

 

 

 

برای ورود به پوشه خونه فقط مینویسیم cd یا  ~ cd  هرجا باشیم میبرتمون خونه.

برای ورود به شاخه روت یا شاخه ریشه میزنیم  سی دی بک اسلش

/ cd

cd

 

 

 

برای برگشتن به پوشه قبلی هم مینویسیم سی دی دوتا نقطه

cd ..

cd dot dot

 

 

 

صفحه شلوغ شد خلوتش کنیم

clear

وارد پوشه Documents بشیم و یه فایل به اسم test بسازیم

cd

cd Documents

touch test

touch

 

برای تغییر نام و یا جا به جایی فایل از mv استفاده میکنیم

خوب اول اسم فایلمون رو تغییر بدیم

mv test test2

rename

 

خوب حالا جا به جاش کنیم بفرستیمش یه جای دیگه

 mv test2 /run/media/saeb/old

یعنی فایل test2 رو از اینجا ببر به  پوشه ریشه(اون اسلش قبل از run)به ادرس پوشه run بوشه media پوشه saeb پوشه old

 

mv

 

سوال. اگه بخوایم جا به جا نکنیم و کپی کنیم چکار میکنیم ؟

سادست مثل همین دستور بالا به جای mv مینویسیم cp

سوال دوم اگه بخوایم پوشه ای که داخلش فایل هست رو بخوایم کپی کنیم باید چ کنیم؟

به جای cp  مینویسیم

cp -r

از کجا میدونستم باید جلوش فلان بنویسم ؟ هر دستوری یه راهنما داره که میشه با دستور man اون راهنما رو خوند.

man cp

man mv

man cd

man ls

برای خروج کلید q رو بزنید.

برای ساختن پوشه از دستور mkdir و ساختن پوشه داخل پوشه از mkdir -p  استفاده میکتیم.

برای پاک کردن یه فایل هم از دستور rm استفاده میکنیم.

برای پاک کردن یه پوشه از دستور rm -r استفاده میکنیم.

rm-r

 

بیاید یه فایل متنی به نام test.sh درست کنیم و داخل یه چیزی بنویسیم  و ذخیرش کنیم.

 

nano test.sh

nano

 

برای ذخیره فایل ctrl+x رو میگیریم.میپرسه ذخیرش کنم ؟ میزنیم y

 

saveNano

خوب حالا یه فایل متنی ساختیم و ذخیره کردیم . چطور متنش رو بخونیم؟

cat test.sh

cat

 

خوب بیایید یه برنامه نصب کنیم.

برای نصب یه پکیج باید لیست پکیج های موجود رو دانلود کنیم. برای این کار تو هر توزیع یه شکله

توی خونواده دبیان . مثل اوبونتو و رسپبیان و مینت مینویسیم:

sudo apt update

2

 

توی خونواده عزیز آرچ مثل مانجارو آرچ بنگ اپرسیتی و … میزنیم

sudo pacman -Sy

pacman-Sy

 

توی خونواده فدورا مثل سنت او اس یا ردهت میزنیم

sudo dnf update

 

 

خوب حالا لیست پکیج ها رو داریم چطور یه پکیج نصب کنیم.پکیجها میتونن گرافیکی باشن مثل نرم افزار ویرایش عکسgimp یا متنی باشه مث مدیریت دانلود aria2

برای مثال بیاید نرم افزار مدیریت دانلود aria2 رو نصب کنیم.

توی خونواده دبیان . مثل اوبونتو و رسپبیان و مینت مینویسیم:

sudo apt install aria2

بعد از پسورد میپرسه که ایا مطمئنید همین رو میخواید نصب کنید که کلید y  رو فشار میدیم.

photo_2016-09-07_11-15-39

 

 

توی خونواده عزیز آرچ مثل مانجارو آرچ بنگ اپرسیتی و … میزنیم

sudo pacman -S aria2

بعد از پسورد میپرسه که ایا مطمئنید همین رو میخواید نصب کنید که کلید y  رو فشار میدیم.

pacman-S

 

توی خونواده فدورا مثل سنت او اس یا ردهت میزنیم

sudo dnf install aria2

 

بیایید با مدیریت دانلودی که نصب کردیم یه فایل دانلود کنیم. مثلا یه فیلم از اپارات

bash1aparat

خوب لینک دانلود فیلم رو گرفتیم بزنیم دانلود بشه

 

aria2c -d ~/Downloads/Video http://hw3.asset.aparat.com/aparat-video/a_b40d70f9gdhgghg91d5f65h7d11f4187h96790404365-497s__37516.mp4

aria2c aria2c22

سوال از کجا فهمیدم که دستور aria2c هست نه aria2

جواب سادست از بهترین دوستم گوگل پرسیدم:دی. یا مینویسی aria و دوبار تب tab میزنی همه دستورایی که با aria شروع میشن رو نشون میده.

سوال از کجا فهمیدم که برای مشخص کردن مکان ذخیره باید بزنم -d ؟

جواب همونطور که قبلا گفته بودم توی man aria2c خونده بودم.

البته خود توزیع های لینوکس یه ابزار مدیریت دانلود پیش فرض به نام wget داره .دلیلی که ما ازش استفاده نمیکنیم اینه که فقط یه خط ارتباط به دانلود میده که بخاطر سرعت افتضاح اینترنت جمهوری اسلامی ما آریا۲ رو ترجیح میدیم

 

بیایید یه دستور رو امتحان کنیم.

دستور dmesg گزارش دقیق بوت کامپیوتر میده و زمان اتفاق هر پردازش

dmesg

dmesg

یا خدا کلی چیزمیز اومد چطو اینارو بخونم؟اگه داخل محیط گرافیکی نبودیم و محیط شل بودیم حتی نمیشد خط هایی که از کادر خارج شدن رو خوند!

این یه مثال بود که چند چیز کاربردی رو یادتون بدم.

اول میخوایم خروجی یه دستور رو داخل یه فایل متنی ذخیره کنیم. برای این کار اسم فایل متنی رو بعد از دستور و بعد از < قرار میدیم

dmesg > test.txt

خوب حالا خروجی رو داخل یه فایل ذخیره کردیم چطور اون رو کم کم بخونیم؟

more test.txt

یا

less test.txt

 

more

 

برای خروج کلید q رو بزنید.

 

یه مفهوم خیلی مهم داریم به نام پایپ کردن . خروجی یه دستور رو میدیم به وروردی یه دستور دیگه. مثال

dmesg | less

 

این |     آی یا اِل نیست . کلیدیه که بدون گرفتن شیفت \ هست . با شیفت میشه |

 

حالا بیاید فایلی که قبلا با دستور

dmesg > test.txt

ساخته بودیم پایپ کنیم.

cat test.txt | more

pipe

پسندها(2)شاکی(1)