में तिथि (वर्तमान समय से एक दिन पहले) प्राप्त करें, मैं बैश में वर्तमान समय से पहले एक दिन कैसे प्रिंट कर सकता हूं?बैश
बैश
उत्तर
आप जीएनयू तारीख है और मैं तुम्हें सही ढंग से समझ में आ
$ date +%Y:%m:%d -d "yesterday"
2009:11:09
या
अगर$ date +%Y:%m:%d -d "1 day ago"
2009:11:09
मुझे सबसे अधिक सुझाव दिया गया है लेकिन डीडी स्विच सोलारिस की तारीख – conandor
में नहीं मिला है यह नहीं सोचें कि यह फ्रीबीएसडी या ओएस एक्स पर काम करेगा। –
उबंटू पर डेट फ़ंक्शन के साथ उपयोग के लिए: $ (दिनांक +% वाई:% एम:% डी-डी "1 दिन पहले"), आउटपुट है: 2013: 04: 21। और अगर आप 10 दिनों से पहले की तारीख चाहते हैं, आप उपयोग कर सकते हैं $ (तारीख +% Y:% मीटर:% d -d "10 दिन पहले") या $ (तारीख +% Y:% मीटर: % d -d "10 दिन पहले") – zhihong
date --date='-1 day'
मैकोज़ सिएरा पर एरोस:' दिनांक: अवैध विकल्प - - – kuanb
मैकोज़ पर इस वाक्यविन्यास को काम करने के लिए, आपको 'कोर्यूटिल्स' पैकेज के माध्यम से उपलब्ध 'डेट' के जीएनयू संस्करण को स्थापित करने की आवश्यकता है। यदि आप होमब्रू का उपयोग कर रहे हैं, तो आप इसे 'ब्रू इंस्टॉल कोर्यूटिल्स' के माध्यम से इंस्टॉल कर सकते हैं, जिसके बाद आप 'gdate' कमांड के माध्यम से जीएनयू डेट का उपयोग करने में सक्षम होना चाहिए। देखें: https://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/ – Sumitsu
मैकोज़ के लिए आप 'date का उपयोग कर सकते हैं -v -1d' ('मैन डेट' देखें) – silent
#!/bin/bash
OFFSET=1;
eval `date "+day=%d; month=%m; year=%Y"`
# Subtract offset from day, if it goes below one use 'cal'
# to determine the number of days in the previous month.
day=`expr $day - $OFFSET`
if [ $day -le 0 ] ;then
month=`expr $month - 1`
if [ $month -eq 0 ] ;then
year=`expr $year - 1`
month=12
fi
set `cal $month $year`
xday=${$#}
day=`expr $xday + $day`
fi
echo $year-$month-$day
सुधार, रोचक विधि के लिए +1, भले ही यह थोड़ा वर्बोज़ हो। –
हाय मेडिक्स, मुझे $ {$ #} का अर्थ नहीं मिल रहा है। मुझे पता है कि $ # एक स्क्रिप्ट/फ़ंक्शन में तर्कों की संख्या के लिए खड़ा है। लेकिन मैं इससे संबंधित नहीं हूं। कृपया मदद करे। –
यह महीने के बदलाव पर प्रीवीस दिवस के लिए काम नहीं करता है। उदाहरण के लिए आज '1 जुलाई, 2013 'है, परिणाम मुद्रित किया जा रहा है' 2013-6-1347', जबकि अपेक्षित परिणाम' 2013-6-30' – misguided
yesterday=`date -d "-1 day" %F`
डालता है चर में YYYY-MM-DD प्रारूप में कल की तारीख $yesterday
।
date --date='-1 day'
date +%Y:%m:%d|awk -vFS=":" -vOFS=":" '{$3=$3-1;print}'
2009:11:9
आज 1 जनवरी क्या है? –
उपयोग पर्ल बजाय शायद आदमी पेज देखें?
perl -e 'print scalar localtime(time - 86400) . "\n";'
या, उपयोग nawk और (ab) का उपयोग/usr/bin/एशियाई विकास बैंक:
nawk 'BEGIN{printf "0t%d=Y\n", srand()-86400}' | adb
भर this भी ... पागल आया!
/usr/bin/truss /usr/bin/date 2>&1 | nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);printf "0t%d=Y\n", $2-86400}' | adb
क्षमा करें मैं सोलारिस सिस्टम पर उल्लेख नहीं कर रहा हूं। इस प्रकार, -डेट स्विच सोलारिस बैश पर उपलब्ध नहीं है।
मुझे पता चला कि मैं टाइमज़ोन पर छोटी चाल के साथ पिछली तारीख प्राप्त कर सकता हूं।
DATE=`TZ=MYT+16 date +%Y-%m-%d_%r`
echo $DATE
यदि आप डेलाइट सेविंग टाइम का उपयोग करके किसी स्थान पर रहते हैं तो यह विधि 100% विश्वसनीय (लगभग 98% वास्तव में नहीं) है। – jlliagre
आप बीएसडी (OSX) date
है, तो आप इस तरह यह कर सकते हैं:
date -j -v-1d
Wed Dec 14 15:34:14 CET 2011
या आप एक मनमाना तारीख पर तारीख गणना करने के लिए चाहते हैं:
date -j -v-1d -f "%Y-%m-%d" "2011-09-01" "+%Y-%m-%d"
2011-08-31
--date
या -d
विकल्प केवल जीएनयू तिथि में उपलब्ध है।
$ date --date 'yesterday' +%F
date: illegal time format
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]
अच्छा यह एक देर का जवाब है, लेकिन ऐसा लगता है !!
YESTERDAY=`TZ=GMT+24 date +%d-%m-%Y`;
echo $YESTERDAY;
नीचे दिए गए कोड को आजमाएं, जो डीएसटी भाग का भी ख्याल रखता है।
if [ $(date +%w) -eq $(date -u +%w) ]; then
tz=$((10#$gmthour - 10#$localhour))
else
tz=$((24 - 10#$gmthour + 10#$localhour))
fi
echo $tz
myTime=`TZ=GMT+$tz date +'%Y%m%d'`
Courtsey Ansgar Wiechers
डीएसटी बारे में पता समाधान:
समय-क्षेत्र से छेड़छाड़ घड़ी कुछ घंटे बदलने के लिए संभव है। डेलाइट सेविंग टाइम के कारण, 24 घंटे पहले कल या दिन पहले हो सकता है।
आपको यकीन है कि कल 20 या 30 घंटे पहले है। कौनसा? खैर, सबसे हालिया जो आज नहीं है।
echo -e "$(TZ=GMT+30 date +%Y-%m-%d)\n$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
ईको कमांड में उपयोग किया गया पैरामीटर बैश के साथ आवश्यक है, लेकिन ksh के साथ काम नहीं करेगा। Ksh में आप बिना किसी ध्वज के एक ही कमांड का उपयोग कर सकते हैं।
जब आपकी स्क्रिप्ट विभिन्न वातावरणों में उपयोग की जाएगी, तो आप स्क्रिप्ट को #!/Bin/ksh या #!/Bin/bash के साथ प्रारंभ कर सकते हैं। कल की तारीख के लिए
echo "$(TZ=GMT+30 date +%Y-%m-%d)
$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
मैक OSX
: तुम भी एक नई पंक्ति द्वारा \ N बदल सकते
date -v-1d +%F
जहां 1 दिन को परिभाषित करता है वर्तमान दिन शून्य से 1 दिन। इसी तरह,
तारीख -v-1 माह +% एफ - पिछले सप्ताह तारीख के लिए
तारीख -v-1m +% एफ - पिछले महीने की तारीख
के लिए यदि आपके पास जीएनयू, DATE ,
date --date="1 day ago"
और जानकारी: https://www.cyberciti.biz/tips/linux-unix-get-yesterdays-tomorrows-date.html
कोशिश की गई तारीख लेकिन ऐसा लगता है कि सोलारिस 10 के बश – conandor
में कोई-डी स्विच नहीं है, मुझे सनफ्रूवेयर से gnu date (coreutil पैकेज) इंस्टॉल करके एक और अच्छा समाधान मिला। – conandor
और न ही AIX की तारीख – frankster